kern_return_t ipc_pset_alloc( ipc_space_t space, mach_port_name_t *namep, ipc_pset_t *psetp) { ipc_pset_t pset; mach_port_name_t name; kern_return_t kr; uint64_t reserved_link; reserved_link = waitq_link_reserve(NULL); kr = ipc_object_alloc(space, IOT_PORT_SET, MACH_PORT_TYPE_PORT_SET, 0, &name, (ipc_object_t *) &pset); if (kr != KERN_SUCCESS) { waitq_link_release(reserved_link); return kr; } /* pset and space are locked */ pset->ips_local_name = name; ipc_mqueue_init(&pset->ips_messages, TRUE /* set */, &reserved_link); is_write_unlock(space); waitq_link_release(reserved_link); *namep = name; *psetp = pset; return KERN_SUCCESS; }
kern_return_t ipc_port_alloc( ipc_space_t space, mach_port_name_t *namep, ipc_port_t *portp) { ipc_port_t port; mach_port_name_t name; kern_return_t kr; kr = ipc_object_alloc(space, IOT_PORT, MACH_PORT_TYPE_RECEIVE, 0, &name, (ipc_object_t *) &port); if (kr != KERN_SUCCESS) return kr; /* port is locked */ ipc_port_init(port, space, name); #if CONFIG_MACF_MACH task_t issuer = current_task(); tasklabel_lock2 (issuer, space->is_task); mac_port_label_associate(&issuer->maclabel, &space->is_task->maclabel, &port->ip_label); tasklabel_unlock2 (issuer, space->is_task); #endif *namep = name; *portp = port; return KERN_SUCCESS; }
kern_return_t ipc_port_alloc( ipc_space_t space, mach_port_name_t *namep, ipc_port_t *portp) { ipc_port_t port; mach_port_name_t name; kern_return_t kr; kr = ipc_object_alloc(space, IOT_PORT, MACH_PORT_TYPE_RECEIVE, &name, (ipc_object_t *) &port); if (kr != KERN_SUCCESS) return kr; /* port is locked */ ipc_port_init(port, space, name); *namep = name; *portp = port; return KERN_SUCCESS; }
kern_return_t ipc_pset_alloc( ipc_space_t space, mach_port_name_t *namep, ipc_pset_t *psetp) { ipc_pset_t pset; mach_port_name_t name; kern_return_t kr; kr = ipc_object_alloc(space, IOT_PORT_SET, MACH_PORT_TYPE_PORT_SET, 0, &name, (ipc_object_t *) &pset); if (kr != KERN_SUCCESS) return kr; /* pset and space are locked */ pset->ips_local_name = name; ipc_mqueue_init(&pset->ips_messages, TRUE /* set */); is_write_unlock(space); *namep = name; *psetp = pset; return KERN_SUCCESS; }
kern_return_t ipc_port_alloc( ipc_space_t space, mach_port_name_t *namep, ipc_port_t *portp) { ipc_port_t port; mach_port_name_t name; kern_return_t kr; #if MACH_ASSERT uintptr_t buf[IP_CALLSTACK_MAX]; ipc_port_callstack_init_debug(&buf[0], IP_CALLSTACK_MAX); #endif /* MACH_ASSERT */ kr = ipc_object_alloc(space, IOT_PORT, MACH_PORT_TYPE_RECEIVE, 0, &name, (ipc_object_t *) &port); if (kr != KERN_SUCCESS) return kr; /* port and space are locked */ ipc_port_init(port, space, name); #if MACH_ASSERT ipc_port_init_debug(port, &buf[0], IP_CALLSTACK_MAX); #endif /* MACH_ASSERT */ /* unlock space after init */ is_write_unlock(space); #if CONFIG_MACF_MACH task_t issuer = current_task(); tasklabel_lock2 (issuer, space->is_task); mac_port_label_associate(&issuer->maclabel, &space->is_task->maclabel, &port->ip_label); tasklabel_unlock2 (issuer, space->is_task); #endif *namep = name; *portp = port; return KERN_SUCCESS; }
kern_return_t ipc_pset_alloc( ipc_space_t space, mach_port_t *namep, ipc_pset_t *psetp) { ipc_pset_t pset; mach_port_t name; kern_return_t kr; kr = ipc_object_alloc(space, IOT_PORT_SET, MACH_PORT_TYPE_PORT_SET, 0, &name, (ipc_object_t *) &pset); if (kr != KERN_SUCCESS) return kr; /* pset is locked */ ipc_target_init(&pset->ips_target, name); *namep = name; *psetp = pset; return KERN_SUCCESS; }