On 2015/5/23 1:24, Jiri Olsa wrote:
On Sun, May 17, 2015 at 10:56:55AM +0000, Wang Nan wrote: SNIP+#define DEFINE_PRINT_FN(name, level) \ +static int libbpf_##name(const char *fmt, ...) \ +{ \ + va_list args; \ + int ret; \ + \ + va_start(args, fmt); \ + ret = veprintf(level, verbose, pr_fmt(fmt), args);\ + va_end(args); \ + return ret; \ +} + +DEFINE_PRINT_FN(warning, 0) +DEFINE_PRINT_FN(info, 0) +DEFINE_PRINT_FN(debug, 1) + +static bool libbpf_inited = false; + +#define MAX_OBJECTS 128 + +struct { + struct bpf_object *objects[MAX_OBJECTS]; + size_t nr_objects; +} params;apart from that we dont like this kind of static stuff, this seems like nice case for having simple handler like 'struct bpf_objects' carrying the above data.. what do I miss?
I want to avoid fragmented memory allocation for storing bpf_object pointers. Storing them together into an array can make code simpler. I think I can made
something like 'struct bpf_object *bpf_next_object(obj)' in libbpf so we can iterate over each loaded bpf objects, then this array and nr_objects can be hidden.
also params should actually be static right? jirka
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

