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

Function _gtaskqueue_create

freebsd/kern/subr_gtaskqueue.c:125–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123}
124
125static struct gtaskqueue *
126_gtaskqueue_create(const char *name, int mflags,
127 taskqueue_enqueue_fn enqueue, void *context,
128 int mtxflags, const char *mtxname __unused)
129{
130 struct gtaskqueue *queue;
131 char *tq_name;
132
133 tq_name = malloc(TASKQUEUE_NAMELEN, M_GTASKQUEUE, mflags | M_ZERO);
134 if (!tq_name)
135 return (NULL);
136
137 snprintf(tq_name, TASKQUEUE_NAMELEN, "%s", (name) ? name : "taskqueue");
138
139 queue = malloc(sizeof(struct gtaskqueue), M_GTASKQUEUE, mflags | M_ZERO);
140 if (!queue) {
141 free(tq_name, M_GTASKQUEUE);
142 return (NULL);
143 }
144
145 STAILQ_INIT(&queue->tq_queue);
146 LIST_INIT(&queue->tq_active);
147 queue->tq_enqueue = enqueue;
148 queue->tq_context = context;
149 queue->tq_name = tq_name;
150 queue->tq_spin = (mtxflags & MTX_SPIN) != 0;
151 queue->tq_flags |= TQ_FLAGS_ACTIVE;
152 if (enqueue == gtaskqueue_thread_enqueue)
153 queue->tq_flags |= TQ_FLAGS_UNLOCKED_ENQUEUE;
154 mtx_init(&queue->tq_mutex, tq_name, NULL, mtxflags);
155
156 return (queue);
157}
158
159/*
160 * Signal a taskqueue thread to terminate.

Callers 1

gtaskqueue_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