Skip to content

Commit a33d673

Browse files
committed
last bit of renaming to dispatch_workq 'namespace'
1 parent 1ae2160 commit a33d673

File tree

2 files changed

+29
-27
lines changed

2 files changed

+29
-27
lines changed

src/workqueue/workqueue.c

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,12 @@ typedef struct dispatch_workq_item_s {
135135
void *func_arg;
136136
} dispatch_workq_item_s, *dispatch_workq_item_t;
137137

138-
typedef struct dispatch_workqueue_s {
138+
typedef struct dispatch_workq_workqueue_s {
139139
STAILQ_HEAD(,dispatch_workq_item_s) item_listhead;
140140
dispatch_unfair_lock_s lock;
141141
int priority;
142142
bool overcommit;
143-
} dispatch_workqueue_s, *dispatch_workqueue_t;
143+
} dispatch_workq_workqueue_s, *dispatch_workq_workqueue_t;
144144

145145
/*
146146
* The overcommit pool uses a simple coarse locking policy:
@@ -154,7 +154,7 @@ typedef struct dispatch_workqueue_s {
154154
typedef struct dispatch_workq_overcommit_pool_s {
155155
uint32_t mask;
156156
int num_spares;
157-
dispatch_workqueue_t queues[WORKQ_NUM_PRIORITIES];
157+
dispatch_workq_workqueue_t wqs[WORKQ_NUM_PRIORITIES];
158158
pthread_mutex_t mutex;
159159
pthread_cond_t spare_workers;
160160
} dispatch_workq_overcommit_pool_s, *dispatch_workq_overcommit_pool_t;
@@ -171,7 +171,7 @@ static dispatch_workq_overcommit_pool_s _dispatch_workq_overcommit_pool;
171171
*/
172172
typedef struct dispatch_workq_pool_s {
173173
volatile uint32_t mask;
174-
dispatch_workqueue_t queues[WORKQ_NUM_PRIORITIES];
174+
dispatch_workq_workqueue_t wqs[WORKQ_NUM_PRIORITIES];
175175
} dispatch_workq_pool_s, *dispatch_workq_pool_t;
176176

177177
static dispatch_workq_pool_s _dispatch_workq_normal_pool;
@@ -209,10 +209,11 @@ _dispatch_workq_dealloc_item(dispatch_workq_item_t wi)
209209

210210

211211
static void
212-
_dispatch_workq_allocate_workqueues(dispatch_workqueue_t *queues, int num_queues, bool overcommit)
212+
_dispatch_workq_allocate_workqueues(dispatch_workq_workqueue_t *queues,
213+
int num_queues, bool overcommit)
213214
{
214215
for (int i=0; i<num_queues; i++) {
215-
dispatch_workqueue_t wq;
216+
dispatch_workq_workqueue_t wq;
216217
wq = _dispatch_calloc(1, ROUND_UP_TO_CACHELINE_SIZE(sizeof(*wq)));
217218

218219
wq->priority = i;
@@ -271,7 +272,7 @@ _dispatch_workq_init_once(void *context DISPATCH_UNUSED)
271272
_dispatch_workq_management_init();
272273

273274
// overcommit pool
274-
_dispatch_workq_allocate_workqueues(_dispatch_workq_overcommit_pool.queues,
275+
_dispatch_workq_allocate_workqueues(_dispatch_workq_overcommit_pool.wqs,
275276
WORKQ_NUM_PRIORITIES, true);
276277
r = pthread_mutex_init(&_dispatch_workq_overcommit_pool.mutex, NULL);
277278
(void)dispatch_assume_zero(r);
@@ -280,7 +281,7 @@ _dispatch_workq_init_once(void *context DISPATCH_UNUSED)
280281
(void)dispatch_assume_zero(r);
281282

282283
// normal pool
283-
_dispatch_workq_allocate_workqueues(_dispatch_workq_normal_pool.queues,
284+
_dispatch_workq_allocate_workqueues(_dispatch_workq_normal_pool.wqs,
284285
WORKQ_NUM_PRIORITIES, false);
285286

286287
// create initial set of normal workers
@@ -291,24 +292,24 @@ _dispatch_workq_init_once(void *context DISPATCH_UNUSED)
291292

292293

293294
int
294-
dispatch_workq_get_wq(dispatch_workqueue_t *workqp,
295+
dispatch_workq_get_wq(dispatch_workq_workqueue_t *workqp,
295296
int priority, int overcommit)
296297
{
297298
dispatch_once_f(&_dispatch_workq_init_once_pred, NULL,
298299
&_dispatch_workq_init_once);
299300

300301
dispatch_assert(priority >= 0 && priority < WORKQ_NUM_PRIORITIES);
301302
if (overcommit) {
302-
*workqp = _dispatch_workq_overcommit_pool.queues[priority];
303+
*workqp = _dispatch_workq_overcommit_pool.wqs[priority];
303304
} else {
304-
*workqp = _dispatch_workq_normal_pool.queues[priority];
305+
*workqp = _dispatch_workq_normal_pool.wqs[priority];
305306
}
306307

307308
return 0;
308309
}
309310

310311
int
311-
dispatch_workq_additem_np(dispatch_workqueue_t workq,
312+
dispatch_workq_additem_np(dispatch_workq_workqueue_t workq,
312313
void (*item_func)(void *), void *item_arg)
313314
{
314315
dispatch_workq_item_t wi = _dispatch_workq_alloc_item(item_func, item_arg);
@@ -348,7 +349,7 @@ static void
348349
_dispatch_workq_add_control_item(void *op_code)
349350
{
350351
dispatch_workq_item_t wi = _dispatch_workq_alloc_item(NULL, op_code);
351-
dispatch_workqueue_t workq = _dispatch_workq_normal_pool.queues[0];
352+
dispatch_workq_workqueue_t workq = _dispatch_workq_normal_pool.wqs[0];
352353
unsigned int wq_index_bit = 1; // highest priority queue
353354

354355
_dispatch_unfair_lock_lock(&workq->lock);
@@ -390,29 +391,30 @@ _dispatch_workq_overcommit_worker_main(void *context DISPATCH_UNUSED)
390391
{
391392
int r;
392393
sigset_t mask;
394+
dispatch_workq_overcommit_pool_t oc_pool = &_dispatch_workq_overcommit_pool;
393395

394396
r = sigfillset(&mask);
395397
(void)dispatch_assume_zero(r);
396398
r = _dispatch_pthread_sigmask(SIG_BLOCK, &mask, NULL);
397399
(void)dispatch_assume_zero(r);
398400

399-
r = pthread_mutex_lock(&_dispatch_workq_overcommit_pool.mutex);
401+
r = pthread_mutex_lock(&oc_pool->mutex);
400402
(void)dispatch_assume_zero(r);
401403

402404
for (;;) {
403-
unsigned int idx = __builtin_ffs(_dispatch_workq_overcommit_pool.mask);
405+
unsigned int idx = __builtin_ffs(oc_pool->mask);
404406
if (idx > 0) {
405-
dispatch_workqueue_t wq = _dispatch_workq_overcommit_pool.queues[idx - 1];
407+
dispatch_workq_workqueue_t wq = oc_pool->wqs[idx - 1];
406408
dispatch_workq_item_t work = STAILQ_FIRST(&wq->item_listhead);
407409
if (work != NULL) {
408410
/* Remove the first work item */
409411
STAILQ_REMOVE_HEAD(&wq->item_listhead, item_entry);
410412
if (STAILQ_EMPTY(&wq->item_listhead)) {
411-
_dispatch_workq_overcommit_pool.mask &= ~(0x1 << wq->priority);
413+
oc_pool->mask &= ~(0x1 << wq->priority);
412414
}
413415

414416
/* Release pool mutex */
415-
r = pthread_mutex_unlock(&_dispatch_workq_overcommit_pool.mutex);
417+
r = pthread_mutex_unlock(&oc_pool->mutex);
416418
(void)dispatch_assume_zero(r);
417419

418420
/* Execute the work item */
@@ -423,16 +425,15 @@ _dispatch_workq_overcommit_worker_main(void *context DISPATCH_UNUSED)
423425
func(func_arg);
424426

425427
/* Acquire pool mutex */
426-
r = pthread_mutex_lock(&_dispatch_workq_overcommit_pool.mutex);
428+
r = pthread_mutex_lock(&oc_pool->mutex);
427429
(void)dispatch_assume_zero(r);
428430
continue;
429431
}
430432
}
431433

432434
/* Wait for more work to be available. */
433-
_dispatch_workq_overcommit_pool.num_spares++;
434-
r = pthread_cond_wait(&_dispatch_workq_overcommit_pool.spare_workers,
435-
&_dispatch_workq_overcommit_pool.mutex);
435+
oc_pool->num_spares++;
436+
r = pthread_cond_wait(&oc_pool->spare_workers, &oc_pool->mutex);
436437
}
437438
}
438439

@@ -442,6 +443,7 @@ _dispatch_workq_normal_worker_main(void *context DISPATCH_UNUSED)
442443
{
443444
int r;
444445
sigset_t mask;
446+
dispatch_workq_pool_t pool = &_dispatch_workq_normal_pool;
445447

446448
r = sigfillset(&mask);
447449
(void)dispatch_assume_zero(r);
@@ -456,9 +458,9 @@ _dispatch_workq_normal_worker_main(void *context DISPATCH_UNUSED)
456458
_dispatch_debug("workq: worker successfully registered");
457459

458460
for (;;) {
459-
int idx = __builtin_ffs(os_atomic_load(&_dispatch_workq_normal_pool.mask, relaxed));
461+
int idx = __builtin_ffs(os_atomic_load(&pool->mask, relaxed));
460462
if (idx > 0) {
461-
dispatch_workqueue_t wq = _dispatch_workq_normal_pool.queues[idx - 1];
463+
dispatch_workq_workqueue_t wq = pool->wqs[idx - 1];
462464
_dispatch_unfair_lock_lock(&wq->lock);
463465
dispatch_workq_item_t work = STAILQ_FIRST(&wq->item_listhead);
464466
if (unlikely(work == NULL)) {
@@ -469,7 +471,7 @@ _dispatch_workq_normal_worker_main(void *context DISPATCH_UNUSED)
469471
// found work: remove it.
470472
STAILQ_REMOVE_HEAD(&wq->item_listhead, item_entry);
471473
if (STAILQ_EMPTY(&wq->item_listhead)) {
472-
os_atomic_and(&_dispatch_workq_normal_pool.mask, ~(0x1 << wq->priority), relaxed);
474+
os_atomic_and(&pool->mask, ~(0x1 << wq->priority), relaxed);
473475
}
474476
_dispatch_unfair_lock_unlock(&wq->lock);
475477

@@ -501,7 +503,7 @@ _dispatch_workq_normal_worker_main(void *context DISPATCH_UNUSED)
501503
for (int i=0; i<5 && !found_work; i++) {
502504
r = pthread_yield();
503505
(void)dispatch_assume_zero(r);
504-
found_work = os_atomic_load(&_dispatch_workq_normal_pool.mask, relaxed) != 0;
506+
found_work = os_atomic_load(&pool->mask, relaxed) != 0;
505507
}
506508

507509
if (!found_work) {

src/workqueue/workqueue_internal.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#ifndef __DISPATCH_WORKQUEUE_INTERNAL__
2828
#define __DISPATCH_WORKQUEUE_INTERNAL__
2929

30-
typedef struct dispatch_workqueue_s *pthread_workqueue_t;
30+
typedef struct dispatch_workq_workqueue_s *pthread_workqueue_t;
3131

3232
/* Work queue priority attributes. */
3333
#define WORKQ_HIGH_PRIOQUEUE 0

0 commit comments

Comments
 (0)