jump_label: Add COND_STMT(), reducer wrappery
The use of the JUMP_LABEL() construct ends up creating endless silly wrappers, create a higher level construct to reduce this clutter. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Jason Baron <jbaron@redhat.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Paul Mackerras <paulus@samba.org> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
7e54a5a0b6
Коммит
ebf31f5024
|
@ -61,4 +61,14 @@ static inline int jump_label_text_reserved(void *start, void *end)
|
|||
|
||||
#endif
|
||||
|
||||
#define COND_STMT(key, stmt) \
|
||||
do { \
|
||||
__label__ jl_enabled; \
|
||||
JUMP_LABEL(key, jl_enabled); \
|
||||
if (0) { \
|
||||
jl_enabled: \
|
||||
stmt; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -903,21 +903,13 @@ extern atomic_t perf_task_events;
|
|||
|
||||
static inline void perf_event_task_sched_in(struct task_struct *task)
|
||||
{
|
||||
JUMP_LABEL(&perf_task_events, have_events);
|
||||
return;
|
||||
|
||||
have_events:
|
||||
__perf_event_task_sched_in(task);
|
||||
COND_STMT(&perf_task_events, __perf_event_task_sched_in(task));
|
||||
}
|
||||
|
||||
static inline
|
||||
void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next)
|
||||
{
|
||||
JUMP_LABEL(&perf_task_events, have_events);
|
||||
return;
|
||||
|
||||
have_events:
|
||||
__perf_event_task_sched_out(task, next);
|
||||
COND_STMT(&perf_task_events, __perf_event_task_sched_out(task, next));
|
||||
}
|
||||
|
||||
extern int perf_event_init_task(struct task_struct *child);
|
||||
|
|
Загрузка…
Ссылка в новой задаче