• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.9.5/Libc-997.90.3/stdlib/FreeBSD/

Lines Matching defs:shared

66 struct shared; /* forward reference */
70 struct shared *shared;
82 struct shared {
104 getargs(struct shared *shared)
108 OSSpinLockLock(&shared->sharedlock);
109 if(!shared->freelist) {
115 page->next = shared->pagelist;
116 shared->pagelist = page;
122 shared->freelist = prev;
124 args = shared->freelist;
125 shared->freelist = args->next;
126 OSSpinLockUnlock(&shared->sharedlock);
131 returnargs(struct shared *shared, union args *args)
133 OSSpinLockLock(&shared->sharedlock);
134 args->next = shared->freelist;
135 shared->freelist = args;
136 OSSpinLockUnlock(&shared->sharedlock);
225 int depth_limit, struct shared *shared)
315 if (shared && r > shared->turnoff) {
316 union args *args = getargs(shared);
319 LIBC_ABORT("%s: getargs: %s", shared->who, strerror(errno));
320 args->shared = shared;
324 OSAtomicIncrement32(&shared->count);
325 dispatch_async_f(shared->queue, args, _psort_parallel);
347 struct shared *shared = args->shared;
349 _psort(args->a, args->n, shared->es,
351 shared->thunk,
353 shared->cmp, args->depth_limit, shared);
354 returnargs(shared, args);
355 if(OSAtomicDecrement32(&shared->count) <= 0) {
356 pthread_mutex_lock(&shared->mutex);
357 pthread_cond_signal(&shared->cond);
358 pthread_mutex_unlock(&shared->mutex);
380 struct shared shared;
383 bzero(&shared, sizeof(shared));
384 shared.sharedlock = OS_SPINLOCK_INIT;
385 if ((args = getargs(&shared)) != NULL) {
388 shared.who = "psort_r";
389 shared.thunk = thunk;
391 shared.who = "psort_b";
393 shared.who = "psort";
395 shared.cmp = cmp;
396 shared.es = es;
397 shared.queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
398 shared.cond = (pthread_cond_t)PTHREAD_COND_INITIALIZER;
399 shared.mutex = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;
403 args->shared = &shared;
417 shared.turnoff = isqrt(n);
418 OSAtomicIncrement32(&shared.count);
422 pthread_mutex_lock(&shared.mutex);
423 while(shared.count > 0)
424 pthread_cond_wait(&shared.cond, &shared.mutex);
426 pthread_mutex_unlock(&shared.mutex);
427 pthread_mutex_destroy(&shared.mutex);
428 pthread_cond_destroy(&shared.cond);
429 for(p = shared.pagelist; p; p = pp) {