40 static void (*serialize_lock) (void);
41 static void (*serialize_unlock) (void);
58 res = hdb_handle_get (&schedwrk_instance_database,
68 res = instance->schedwrk_fn (instance->context);
74 hdb_handle_destroy (&schedwrk_instance_database, handle);
76 hdb_handle_put (&schedwrk_instance_database, handle);
84 void (*serialize_lock_fn) (
void),
85 void (*serialize_unlock_fn) (
void))
87 serialize_lock = serialize_lock_fn;
88 serialize_unlock = serialize_unlock_fn;
91 static int schedwrk_internal_create (
100 res = hdb_handle_create (&schedwrk_instance_database,
105 res = hdb_handle_get (&schedwrk_instance_database, *handle,
112 &instance->callback_handle,
120 instance->lock =
lock;
122 hdb_handle_put (&schedwrk_instance_database, *handle);
127 hdb_handle_destroy (&schedwrk_instance_database, *handle);
143 return schedwrk_internal_create (handle,
schedwrk_fn, context, 1);
151 return schedwrk_internal_create (handle,
schedwrk_fn, context, 0);
156 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(* schedwrk_fn)(const void *)
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)
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
The totem_callback_token_type enum.