[PATCH 0/2] jump label: 2.6.38 updates

From: Jason Baron
Date: Wed Jan 05 2011 - 10:43:54 EST


The first patch uses the storage space of the jump label key address
as a pointer into the update table. In this way, we can find all
the addresses that need to be updated without hashing.

The second patch introduces:

static __always_inline bool static_branch(struct jump_label_key *key);

instead of the old JUMP_LABEL(key, label) macro.

In this way, jump labels become really easy to use:


struct jump_label_key jump_key;

Can be used as:

if (static_branch(&jump_key))
do unlikely code

enable/disale via:


that's it!

For perf, which also uses jump labels, I've left the reference counting
out of the jump label layer, thus removing the 'jump_label_inc()' and
'jump_label_dec()' interface. Hopefully, this is a more palatable solution.

Thanks to H. Peter Anvin for suggesting the simpler 'static_branch()'



Jason Baron (2):
jump label: make enable/disable o(1)
jump label: introduce unlikely_switch()

arch/sparc/include/asm/jump_label.h | 25 ++++---
arch/x86/include/asm/jump_label.h | 22 ++++---
arch/x86/kernel/jump_label.c | 2 +-
include/linux/dynamic_debug.h | 24 ++-----
include/linux/jump_label.h | 66 ++++++++++--------
include/linux/jump_label_ref.h | 36 +++-------
include/linux/perf_event.h | 28 ++++----
include/linux/tracepoint.h | 8 +--
kernel/jump_label.c | 129 +++++++++++++++++++++++++++--------
kernel/perf_event.c | 24 ++++--
kernel/tracepoint.c | 22 ++----
11 files changed, 226 insertions(+), 160 deletions(-)

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/