void launchd_runtime_init(void) { #ifdef notyet pid_t p = getpid(); #endif (void)posix_assert_zero((mainkq = kqueue())); os_assert_zero(mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_PORT_SET, &demand_port_set)); os_assert_zero(mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_PORT_SET, &ipc_port_set)); posix_assert_zero(kevent_mod(demand_port_set, EVFILT_MACHPORT, EV_ADD, 0, 0, &kqmportset_callback)); os_assert_zero(launchd_mport_create_recv(&launchd_internal_port)); os_assert_zero(launchd_mport_make_send(launchd_internal_port)); max_msg_size = sizeof(union vproc_mig_max_sz); #ifdef notyet if (sizeof(union xpc_domain_max_sz) > max_msg_size) { max_msg_size = sizeof(union xpc_domain_max_sz); } #endif os_assert_zero(runtime_add_mport(launchd_internal_port, launchd_internal_demux)); os_assert_zero(pthread_create(&kqueue_demand_thread, NULL, kqueue_demand_loop, NULL)); os_assert_zero(pthread_detach(kqueue_demand_thread)); os_assert_zero(pthread_create(&waitpid_thread, NULL, waitpid_loop, NULL)); os_assert_zero(pthread_detach(waitpid_thread)); #ifdef notyet (void)posix_assumes_zero(sysctlbyname("vfs.generic.noremotehang", NULL, NULL, &p, sizeof(p))); #endif }
void launchd_runtime_init2(void) { size_t i; __OS_COMPILETIME_ASSERT__(SIG_ERR == (typeof(SIG_ERR))-1); for (i = 0; i < (sizeof(sigigns) / sizeof(int)); i++) { sigaddset(&sigign_set, sigigns[i]); (void)posix_assumes_zero(signal(sigigns[i], SIG_IGN)); } }