size_t idx;
pthread_globals_t globals = _pthread_globals();
- OSSpinLockLock(&globals->pthread_atfork_lock);
+ _PTHREAD_LOCK(globals->pthread_atfork_lock);
idx = globals->atfork_count++;
if (idx == 0) {
kern_return_t kr;
mach_vm_address_t storage = 0;
mach_vm_size_t size = PTHREAD_ATFORK_MAX * sizeof(struct pthread_atfork_entry);
- OSSpinLockUnlock(&globals->pthread_atfork_lock);
+ _PTHREAD_UNLOCK(globals->pthread_atfork_lock);
kr = mach_vm_map(mach_task_self(),
&storage,
size,
VM_PROT_DEFAULT,
VM_PROT_ALL,
VM_INHERIT_DEFAULT);
- OSSpinLockLock(&globals->pthread_atfork_lock);
+ _PTHREAD_LOCK(globals->pthread_atfork_lock);
if (kr == KERN_SUCCESS) {
if (globals->atfork == globals->atfork_storage) {
globals->atfork = storage;
bzero(globals->atfork_storage, sizeof(globals->atfork_storage));
} else {
// Another thread did vm_map first.
- OSSpinLockUnlock(&globals->pthread_atfork_lock);
+ _PTHREAD_UNLOCK(globals->pthread_atfork_lock);
mach_vm_deallocate(mach_task_self(), storage, size);
- OSSpinLockLock(&globals->pthread_atfork_lock);
+ _PTHREAD_LOCK(globals->pthread_atfork_lock);
}
} else {
res = ENOMEM;
e->parent = parent;
e->child = child;
}
- OSSpinLockUnlock(&globals->pthread_atfork_lock);
+ _PTHREAD_UNLOCK(globals->pthread_atfork_lock);
return res;
}
{
pthread_globals_t globals = _pthread_globals();
- OSSpinLockLock(&globals->pthread_atfork_lock);
+ _PTHREAD_LOCK(globals->pthread_atfork_lock);
size_t idx;
for (idx = globals->atfork_count; idx > 0; --idx) {
}
}
- OSSpinLockLock(&globals->psaved_self_global_lock);
+ _PTHREAD_LOCK(globals->psaved_self_global_lock);
globals->psaved_self = pthread_self();
- OSSpinLockLock(&globals->psaved_self->lock);
+ _PTHREAD_LOCK(globals->psaved_self->lock);
}
// Called after the fork(2) system call returns to the parent process.
{
pthread_globals_t globals = _pthread_globals();
- OSSpinLockUnlock(&globals->psaved_self->lock);
- OSSpinLockUnlock(&globals->psaved_self_global_lock);
+ _PTHREAD_UNLOCK(globals->psaved_self->lock);
+ _PTHREAD_UNLOCK(globals->psaved_self_global_lock);
size_t idx;
for (idx = 0; idx < globals->atfork_count; ++idx) {
e->parent();
}
}
- OSSpinLockUnlock(&globals->pthread_atfork_lock);
+ _PTHREAD_UNLOCK(globals->pthread_atfork_lock);
}
// Called after the fork(2) system call returns to the new child process.
_pthread_fork_child(void)
{
pthread_globals_t globals = _pthread_globals();
- globals->psaved_self_global_lock = OS_SPINLOCK_INIT;
+ _PTHREAD_LOCK_INIT(globals->psaved_self_global_lock);
__pthread_fork_child_internal(globals->psaved_self);
__is_threaded = 0;
pthread_workqueue_atfork_child();
e->child();
}
}
- globals->pthread_atfork_lock = OS_SPINLOCK_INIT;
+ _PTHREAD_LOCK_INIT(globals->pthread_atfork_lock);
}