Changeset View
Changeset View
Standalone View
Standalone View
head/sys/sys/gtaskqueue.h
Show First 20 Lines • Show All 71 Lines • ▼ Show 20 Lines | |||||
int grouptaskqueue_enqueue(struct gtaskqueue *queue, struct gtask *task); | int grouptaskqueue_enqueue(struct gtaskqueue *queue, struct gtask *task); | ||||
void taskqgroup_attach(struct taskqgroup *qgroup, struct grouptask *grptask, | void taskqgroup_attach(struct taskqgroup *qgroup, struct grouptask *grptask, | ||||
void *uniq, device_t dev, struct resource *irq, const char *name); | void *uniq, device_t dev, struct resource *irq, const char *name); | ||||
int taskqgroup_attach_cpu(struct taskqgroup *qgroup, | int taskqgroup_attach_cpu(struct taskqgroup *qgroup, | ||||
struct grouptask *grptask, void *uniq, int cpu, device_t dev, | struct grouptask *grptask, void *uniq, int cpu, device_t dev, | ||||
struct resource *irq, const char *name); | struct resource *irq, const char *name); | ||||
void taskqgroup_detach(struct taskqgroup *qgroup, struct grouptask *gtask); | void taskqgroup_detach(struct taskqgroup *qgroup, struct grouptask *gtask); | ||||
struct taskqgroup *taskqgroup_create(const char *name); | struct taskqgroup *taskqgroup_create(const char *name, int cnt, int stride); | ||||
void taskqgroup_destroy(struct taskqgroup *qgroup); | void taskqgroup_destroy(struct taskqgroup *qgroup); | ||||
int taskqgroup_adjust(struct taskqgroup *qgroup, int cnt, int stride); | void taskqgroup_bind(struct taskqgroup *qgroup); | ||||
void taskqgroup_config_gtask_init(void *ctx, struct grouptask *gtask, | void taskqgroup_config_gtask_init(void *ctx, struct grouptask *gtask, | ||||
gtask_fn_t *fn, const char *name); | gtask_fn_t *fn, const char *name); | ||||
void taskqgroup_config_gtask_deinit(struct grouptask *gtask); | void taskqgroup_config_gtask_deinit(struct grouptask *gtask); | ||||
#define GTASK_INIT(gtask, flags, priority, func, context) do { \ | #define GTASK_INIT(gtask, flags, priority, func, context) do { \ | ||||
(gtask)->ta_flags = flags; \ | (gtask)->ta_flags = flags; \ | ||||
(gtask)->ta_priority = (priority); \ | (gtask)->ta_priority = (priority); \ | ||||
(gtask)->ta_func = (func); \ | (gtask)->ta_func = (func); \ | ||||
Show All 11 Lines | |||||
#define TASKQGROUP_DEFINE(name, cnt, stride) \ | #define TASKQGROUP_DEFINE(name, cnt, stride) \ | ||||
\ | \ | ||||
struct taskqgroup *qgroup_##name; \ | struct taskqgroup *qgroup_##name; \ | ||||
\ | \ | ||||
static void \ | static void \ | ||||
taskqgroup_define_##name(void *arg) \ | taskqgroup_define_##name(void *arg) \ | ||||
{ \ | { \ | ||||
qgroup_##name = taskqgroup_create(#name); \ | qgroup_##name = taskqgroup_create(#name, (cnt), (stride)); \ | ||||
} \ | } \ | ||||
\ | |||||
SYSINIT(taskqgroup_##name, SI_SUB_TASKQ, SI_ORDER_FIRST, \ | SYSINIT(taskqgroup_##name, SI_SUB_TASKQ, SI_ORDER_FIRST, \ | ||||
taskqgroup_define_##name, NULL); \ | taskqgroup_define_##name, NULL); \ | ||||
\ | \ | ||||
static void \ | static void \ | ||||
taskqgroup_adjust_##name(void *arg) \ | taskqgroup_bind_##name(void *arg) \ | ||||
{ \ | { \ | ||||
taskqgroup_adjust(qgroup_##name, (cnt), (stride)); \ | taskqgroup_bind(qgroup_##name); \ | ||||
} \ | } \ | ||||
\ | SYSINIT(taskqgroup_bind_##name, SI_SUB_SMP, SI_ORDER_ANY, \ | ||||
SYSINIT(taskqgroup_adj_##name, SI_SUB_SMP, SI_ORDER_ANY, \ | taskqgroup_bind_##name, NULL) | ||||
taskqgroup_adjust_##name, NULL) | |||||
TASKQGROUP_DECLARE(net); | |||||
TASKQGROUP_DECLARE(softirq); | TASKQGROUP_DECLARE(softirq); | ||||
#endif /* !_SYS_GTASKQUEUE_H_ */ | #endif /* !_SYS_GTASKQUEUE_H_ */ |