40 static void (*serialize_lock) (void);
41 static void (*serialize_unlock) (void);
57 void2handle (
const void *v) {
union u u; u.
v =
v;
return u.
h; }
67 res = hdb_handle_get (&schedwrk_instance_database,
68 hdb_nocheck_convert (handle),
83 hdb_handle_destroy (&schedwrk_instance_database, hdb_nocheck_convert (handle));
85 hdb_handle_put (&schedwrk_instance_database,
86 hdb_nocheck_convert (handle));
94 void (*serialize_lock_fn) (
void),
95 void (*serialize_unlock_fn) (
void))
97 serialize_lock = serialize_lock_fn;
98 serialize_unlock = serialize_unlock_fn;
101 static int schedwrk_internal_create (
110 res = hdb_handle_create (&schedwrk_instance_database,
115 res = hdb_handle_get (&schedwrk_instance_database, *handle,
126 handle2void (*handle));
132 hdb_handle_put (&schedwrk_instance_database, *handle);
137 hdb_handle_destroy (&schedwrk_instance_database, *handle);
148 return schedwrk_internal_create (handle,
schedwrk_fn, context, 1);
156 return schedwrk_internal_create (handle,
schedwrk_fn, context, 0);
161 hdb_handle_destroy (&schedwrk_instance_database, handle);
Totem Single Ring Protocol.
void schedwrk_init(void(*serialize_lock_fn)(void), void(*serialize_unlock_fn)(void))
void schedwrk_destroy(hdb_handle_t handle)
int schedwrk_create_nolock(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
int totempg_callback_token_create(void **handle_out, enum totem_callback_token_type type, int delete, int(*callback_fn)(enum totem_callback_token_type type, const void *), const void *data)
int(* schedwrk_fn)(const void *)
DECLARE_HDB_DATABASE(schedwrk_instance_database, NULL)
int schedwrk_create(hdb_handle_t *handle, int(schedwrk_fn)(const void *), const void *context)
totem_callback_token_type