示例#1
0
kern_return_t
ipc_pset_remove(
	ipc_pset_t	  pset,
	ipc_port_t	  port)
{
	kern_return_t kr;

	assert(ip_active(port));
	
	if (port->ip_in_pset == 0)
		return KERN_NOT_IN_SET;

	kr = ipc_mqueue_remove(&port->ip_messages, &pset->ips_messages);

	return kr;
}
示例#2
0
kern_return_t
ipc_pset_remove(
	ipc_pset_t	  pset,
	ipc_port_t	  port,
	wait_queue_link_t *wqlp)
{
	kern_return_t kr;

	assert(ip_active(port));
	
	if (port->ip_pset_count == 0)
		return KERN_NOT_IN_SET;

	kr = ipc_mqueue_remove(&port->ip_messages, &pset->ips_messages, wqlp);

	if (kr == KERN_SUCCESS)
		port->ip_pset_count--;

	return kr;
}