Go to the source code of this file.
|
always_inline void * | clib_smp_vm_base_for_cpu (clib_smp_main_t *m, uword cpu) |
|
always_inline void * | clib_smp_stack_top_for_cpu (clib_smp_main_t *m, uword cpu) |
|
always_inline uword | os_get_cpu_number_inline (void) |
|
always_inline void | os_sched_yield (void) |
|
always_inline uword | clib_smp_lock_header_is_equal (clib_smp_lock_header_t h0, clib_smp_lock_header_t h1) |
|
always_inline clib_smp_lock_header_t | clib_smp_lock_set_header (clib_smp_lock_t *l, clib_smp_lock_header_t new_hdr, clib_smp_lock_header_t old) |
|
void | clib_smp_lock_init (clib_smp_lock_t **l) |
|
void | clib_smp_lock_free (clib_smp_lock_t **l) |
|
void | clib_smp_lock_slow_path (clib_smp_lock_t *l, uword my_cpu, clib_smp_lock_header_t h, clib_smp_lock_type_t type) |
|
void | clib_smp_unlock_slow_path (clib_smp_lock_t *l, uword my_cpu, clib_smp_lock_header_t h, clib_smp_lock_type_t type) |
|
always_inline void | clib_smp_lock_inline (clib_smp_lock_t *l, clib_smp_lock_type_t type) |
|
always_inline void | clib_smp_unlock_inline (clib_smp_lock_t *l, clib_smp_lock_type_t type) |
|
always_inline void | clib_smp_lock (clib_smp_lock_t *l) |
|
always_inline void | clib_smp_lock_for_writer (clib_smp_lock_t *l) |
|
always_inline void | clib_smp_lock_for_reader (clib_smp_lock_t *l) |
|
always_inline void | clib_smp_unlock (clib_smp_lock_t *l) |
|
always_inline void | clib_smp_unlock_for_writer (clib_smp_lock_t *l) |
|
always_inline void | clib_smp_unlock_for_reader (clib_smp_lock_t *l) |
|
uword | os_smp_bootstrap (uword n_cpus, void *bootstrap_function, uword bootstrap_function_arg) |
|
void | clib_smp_init (void) |
|
#define clib_exec_on_global_heap |
( |
|
body | ) |
|
Value: void * __clib_exec_on_global_heap_saved_heap; \
\
\
\
\
body; \
\
} while (0)
static void(BVT(clib_bihash)*h, BVT(clib_bihash_value)*v)
always_inline void * clib_mem_set_heap(void *heap)
clib_smp_main_t clib_smp_main
Definition at line 325 of file smp.h.
#define clib_smp_atomic_add |
( |
|
addr, |
|
|
|
increment |
|
) |
| __sync_fetch_and_add(addr,increment) |
#define clib_smp_compare_and_swap |
( |
|
addr, |
|
|
|
new, |
|
|
|
old |
|
) |
| __sync_val_compare_and_swap(addr,old,new) |
#define clib_smp_pause |
( |
| ) |
do { asm volatile ("pause"); } while (0) |
#define clib_smp_swap |
( |
|
addr, |
|
|
|
new |
|
) |
| __sync_lock_test_and_set(addr,new) |
Enumerator |
---|
CLIB_SMP_LOCK_TYPE_READER |
|
CLIB_SMP_LOCK_TYPE_WRITER |
|
CLIB_SMP_LOCK_TYPE_SPIN |
|
Definition at line 132 of file smp.h.
Enumerator |
---|
CLIB_SMP_LOCK_WAIT_EMPTY |
|
CLIB_SMP_LOCK_WAIT_DONE |
|
CLIB_SMP_LOCK_WAIT_READER |
|
CLIB_SMP_LOCK_WAIT_WRITER |
|
Definition at line 138 of file smp.h.
Definition at line 82 of file smp.c.
Definition at line 96 of file smp.c.
Definition at line 84 of file smp.h.
Definition at line 78 of file smp.h.
Definition at line 91 of file smp.h.
uword os_smp_bootstrap |
( |
uword |
n_cpus, |
|
|
void * |
bootstrap_function, |
|
|
uword |
bootstrap_function_arg |
|
) |
| |