Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/subr_epoch.c
Show First 20 Lines • Show All 573 Lines • ▼ Show 20 Lines | #endif | ||||
er = epoch_currecord(epoch); | er = epoch_currecord(epoch); | ||||
ck_epoch_call(&er->er_record, cb, (ck_epoch_cb_t *)callback); | ck_epoch_call(&er->er_record, cb, (ck_epoch_cb_t *)callback); | ||||
critical_exit(); | critical_exit(); | ||||
return; | return; | ||||
boottime: | boottime: | ||||
callback(ctx); | callback(ctx); | ||||
} | } | ||||
void | |||||
epoch_call_drain(epoch_t epoch) | |||||
{ | |||||
int cpu; | |||||
CPU_FOREACH(cpu) { | |||||
gtaskqueue_drain_all( | |||||
(DPCPU_ID_PTR(cpu, epoch_cb_task))->gt_taskqueue); | |||||
} | |||||
} | |||||
static void | static void | ||||
epoch_call_task(void *arg __unused) | epoch_call_task(void *arg __unused) | ||||
{ | { | ||||
ck_stack_entry_t *cursor, *head, *next; | ck_stack_entry_t *cursor, *head, *next; | ||||
ck_epoch_record_t *record; | ck_epoch_record_t *record; | ||||
epoch_record_t er; | epoch_record_t er; | ||||
epoch_t epoch; | epoch_t epoch; | ||||
ck_stack_t cb_stack; | ck_stack_t cb_stack; | ||||
▲ Show 20 Lines • Show All 83 Lines • Show Last 20 Lines |