On 2015/1/7 18:02, Hillf Danton wrote:
>>>>
>>>> +struct early_kprobe_slot {
>>>> +  struct optimized_kprobe op;
>>>> +};
>>>> +
>>> [...]
>>>>
>>>>  /* Free optimized instructions and optimized_kprobe */
>>>> +static int ek_free_early_kprobe(struct early_kprobe_slot *slot);
>>>
>>> [2] How is it implemented? In subsequent patches?
>>>
>>
>> It is implemented using macro. Please see patch 7/11 and
>>
>> DEFINE_EKPROBE_ALLOC_OPS(struct early_kprobe_slot, early_kprobe, static);
>>
> What is the reason that it is listed in C file, given that it is done in H 
> already?
> 

This macro defines an array and a bitmap, not only declare them. In addition,
the functions defined by it are used only in this specific .c file.

If there are not only one .c files use it, I think patch 7 can be improved:

#define DEFINE_EKPROBE_AREA(__t, __static)                              \
__static __t __ek_##__name##_slots[NR_EARLY_KPROBES_SLOTS];             \
__static unsigned long __ek_##__name##_bitmap[EARLY_KPROBES_BITMAP_SZ];

#define DEFINE_EKPROBE_ALLOC_OPS(__t, __name, __static)                 \
DEFINE_EKPROBE_AREA(__t, __static)                                      \
__DEFINE_EKPROBE_ALLOC_OPS(__t, __name)                                 \
static inline __t *ek_alloc_##__name(void)                              \
{                                                                       \
...

In .h file(s):
DEFINE_EKPROBE_ALLOC_OPS(struct early_kprobe_slot, early_kprobe, extern)

In .c file:
DEFINE_EKPROBE_AREA(__t, )

What do you think?

--
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/

Reply via email to