X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Fhook.h;h=197184a6d4ce9333be659c31ecb5a5408b0e0add;hb=f4b88a7dd49bfb6b88ea579410d7e4b59faaf73c;hp=1227203514dd20a18d51cffded051b56fcb73bcd;hpb=2eef04b5f3234a4e303bd6162eb20d055b7d44cf;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/hook.h b/ltt/branches/poly/lttv/lttv/hook.h index 12272035..197184a6 100644 --- a/ltt/branches/poly/lttv/lttv/hook.h +++ b/ltt/branches/poly/lttv/lttv/hook.h @@ -123,8 +123,14 @@ gboolean lttv_hooks_call_check_merge(LttvHooks *h1, void *call_data1, /* Sometimes different hooks need to be called based on the case. The case is represented by an unsigned integer id */ -typedef GPtrArray LttvHooksById; +typedef struct _LttvHooksById { + GPtrArray *index; + GArray *array; +} LttvHooksById; +/* macro to calculate the hook ID of a facility/event pair. */ +#define GET_HOOK_ID(fac_id, ev_id) \ + ( (guint)fac_id | ((guint)ev_id << FACILITIES_BITS) ) /* Create and destroy a hooks by id list */ @@ -148,7 +154,7 @@ unsigned lttv_hooks_by_id_max_id(LttvHooksById *h); static inline LttvHooks *lttv_hooks_by_id_get(LttvHooksById *h, unsigned id) { LttvHooks *ret; - if(likely(id < h->len)) ret = h->pdata[id]; + if(likely(id < h->index->len)) ret = h->index->pdata[id]; else ret = NULL; return ret;