mach_msg_size_t send_size,
mach_msg_size_t rcv_size)
{
- return kernel_mach_msg_rpc(msg, send_size, rcv_size, TRUE, NULL);
+ return kernel_mach_msg_rpc(msg, send_size, rcv_size, TRUE, TRUE, NULL);
}
#endif /* IKM_SUPPORT_LEGACY */
mach_msg_size_t send_size,
mach_msg_size_t rcv_size)
{
- return kernel_mach_msg_rpc(msg, send_size, rcv_size, FALSE, NULL);
+ return kernel_mach_msg_rpc(msg, send_size, rcv_size, FALSE, TRUE, NULL);
}
mach_msg_return_t
__unused
#endif
boolean_t legacy,
+ boolean_t interruptible,
boolean_t *message_moved)
{
thread_t self = current_thread();
require_ip_active(reply);
/* JMM - why this check? */
- if (!self->active && !self->inspection) {
+ if (interruptible && !self->active && !self->inspection) {
ipc_port_dealloc_reply(reply);
self->ith_rpc_reply = IP_NULL;
return MACH_RCV_INTERRUPTED;
MACH_MSG_OPTION_NONE,
MACH_MSG_SIZE_MAX,
MACH_MSG_TIMEOUT_NONE,
- THREAD_INTERRUPTIBLE);
+ interruptible ? THREAD_INTERRUPTIBLE : THREAD_UNINT);
mr = self->ith_state;
kmsg = self->ith_kmsg;
}
assert(mr == MACH_RCV_INTERRUPTED);
-
+ assert(interruptible);
assert(reply == self->ith_rpc_reply);
if (self->ast & AST_APC) {
* if this is the first send right
*/
if (!ipc_kobject_make_send_lazy_alloc_port(&mig_object->port,
- (ipc_kobject_t) mig_object, IKOT_MIG, false, 0)) {
+ (ipc_kobject_t) mig_object, IKOT_MIG, IPC_KOBJECT_ALLOC_NONE, false, 0)) {
mig_object_deallocate(mig_object);
}