MCPcopy Create free account
hub / github.com/F-Stack/f-stack / _taskqueue_create

Function _taskqueue_create

freebsd/kern/subr_taskqueue.c:132–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130#endif
131
132static struct taskqueue *
133_taskqueue_create(const char *name, int mflags,
134 taskqueue_enqueue_fn enqueue, void *context,
135 int mtxflags, const char *mtxname __unused)
136{
137 struct taskqueue *queue;
138 char *tq_name;
139
140 tq_name = malloc(TASKQUEUE_NAMELEN, M_TASKQUEUE, mflags | M_ZERO);
141 if (tq_name == NULL)
142 return (NULL);
143
144 queue = malloc(sizeof(struct taskqueue), M_TASKQUEUE, mflags | M_ZERO);
145 if (queue == NULL) {
146 free(tq_name, M_TASKQUEUE);
147 return (NULL);
148 }
149
150 snprintf(tq_name, TASKQUEUE_NAMELEN, "%s", (name) ? name : "taskqueue");
151
152 STAILQ_INIT(&queue->tq_queue);
153 LIST_INIT(&queue->tq_active);
154 queue->tq_enqueue = enqueue;
155 queue->tq_context = context;
156 queue->tq_name = tq_name;
157 queue->tq_spin = (mtxflags & MTX_SPIN) != 0;
158 queue->tq_flags |= TQ_FLAGS_ACTIVE;
159 if (enqueue == taskqueue_fast_enqueue ||
160 enqueue == taskqueue_swi_enqueue ||
161 enqueue == taskqueue_swi_giant_enqueue ||
162 enqueue == taskqueue_thread_enqueue)
163 queue->tq_flags |= TQ_FLAGS_UNLOCKED_ENQUEUE;
164 mtx_init(&queue->tq_mutex, tq_name, NULL, mtxflags);
165
166 return (queue);
167}
168
169struct taskqueue *
170taskqueue_create(const char *name, int mflags,

Callers 2

taskqueue_createFunction · 0.85
taskqueue_create_fastFunction · 0.85

Calls 4

mallocFunction · 0.85
snprintfFunction · 0.85
mtx_initFunction · 0.85
freeFunction · 0.70

Tested by

no test coverage detected