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
|
#endif
|
||||||
|
|
||||||
|
#define COND_STMT(key, stmt) \
|
||||||
|
do { \
|
||||||
|
__label__ jl_enabled; \
|
||||||
|
JUMP_LABEL(key, jl_enabled); \
|
||||||
|
if (0) { \
|
||||||
|
jl_enabled: \
|
||||||
|
stmt; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -903,21 +903,13 @@ extern atomic_t perf_task_events;
|
||||||
|
|
||||||
static inline void perf_event_task_sched_in(struct task_struct *task)
|
static inline void perf_event_task_sched_in(struct task_struct *task)
|
||||||
{
|
{
|
||||||
JUMP_LABEL(&perf_task_events, have_events);
|
COND_STMT(&perf_task_events, __perf_event_task_sched_in(task));
|
||||||
return;
|
|
||||||
|
|
||||||
have_events:
|
|
||||||
__perf_event_task_sched_in(task);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next)
|
void perf_event_task_sched_out(struct task_struct *task, struct task_struct *next)
|
||||||
{
|
{
|
||||||
JUMP_LABEL(&perf_task_events, have_events);
|
COND_STMT(&perf_task_events, __perf_event_task_sched_out(task, next));
|
||||||
return;
|
|
||||||
|
|
||||||
have_events:
|
|
||||||
__perf_event_task_sched_out(task, next);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int perf_event_init_task(struct task_struct *child);
|
extern int perf_event_init_task(struct task_struct *child);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче