lkml.org 
[lkml]   [2015]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC PATCH v3 12/37] bpf tools: Collect version and license from ELF sections
Em Mon, May 18, 2015 at 11:27:17AM -0700, Alexei Starovoitov escreveu:
> On 5/17/15 3:56 AM, Wang Nan wrote:
> >Expand bpf_obj_elf_collect() to collect license and kernel version
> >information in eBPF object file. eBPF object file should have a section
> >named 'license', which contains a string. It should also have a section
> >named 'version', contains a u32 LINUX_VERSION_CODE.
> >
> >bpf_obj_validate() is introduced to validate object file after loaded.
> >Currently it only check existance of 'version' section.
> >
> >Signed-off-by: Wang Nan <wangnan0@huawei.com>
> ...
> >+#ifdef min
> >+# undef min
> >+#endif
> >+#define min(x, y) ({ \
> >+ typeof(x) _min1 = (x); \
> >+ typeof(y) _min2 = (y); \
> >+ (void) (&_min1 == &_min2); \
> >+ _min1 < _min2 ? _min1 : _min2; })
> >+
>
> copy-paste from lib traceevent?
> there is another container_of copy-paste later in the patches.
> please use something like tools/lib/bpf/utils.h file for such
> things, so we can consolidate and share this code later.

Better, ask what the kernel does, find out where it does and replicate
that in tools/include/, i.e. a min function?!? This looks like useful
stuff! ;-)

So, the kernel has this one, in include/linux/kernel.h:

/*
* min()/max()/clamp() macros that also do
* strict type-checking.. See the
* "unnecessary" pointer comparison.
*/
#define min(x, y) ({ \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })

Looks a lot like that one above, no? :-)

So, lets take a look at: tools/include/linux/kernel.h... bummer, that
one wasn't yet moved from tools/perf/util/include/linux/kernel.h there.
Will do, and then it has this:

#ifndef min
#define min(x, y) ({ \
typeof(x) _min1 = (x); \
typeof(y) _min2 = (y); \
(void) (&_min1 == &_min2); \
_min1 < _min2 ? _min1 : _min2; })
#endif

We should minimize this mess :-)

- Arnaldo


\
 
 \ /
  Last update: 2015-05-18 23:21    [W:0.071 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site