summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1994-09-26 04:55:18 +0000
committerRoland McGrath <roland@gnu.org>1994-09-26 04:55:18 +0000
commit15685e1f7aab1e8f5e19e078e7282f379896134e (patch)
tree24d31c4ee3d7de696326838be370738f1e2dab7f /hurd
parentda3be5dd49995176631644d6265908b8e133a7f8 (diff)
(_hurd_internal_post_signal: sigwakeup): Create a send right.
Diffstat (limited to 'hurd')
-rw-r--r--hurd/hurdsig.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c
index a386f8212c..1bae54ee80 100644
--- a/hurd/hurdsig.c
+++ b/hurd/hurdsig.c
@@ -391,16 +391,23 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss,
if (ss->suspended != MACH_PORT_NULL)
{
/* There is a sigsuspend waiting. Tell it to wake up. */
+ error_t err;
mach_msg_header_t msg;
+ err = __mach_port_insert_right (__mach_task_self (),
+ ss->suspended, ss->suspended,
+ MACH_MSG_TYPE_MAKE_SEND);
+ assert (err == KERN_SUCCESS);
msg.msgh_bits = MACH_MSGH_BITS (MACH_MSG_TYPE_MOVE_SEND, 0);
msg.msgh_remote_port = ss->suspended;
msg.msgh_local_port = MACH_PORT_NULL;
/* These values do not matter. */
- msg.msgh_id = 0x8675309; /* Jenny, Jenny. */
+ msg.msgh_id = 8675309; /* Jenny, Jenny. */
msg.msgh_seqno = 17; /* Random. */
ss->suspended = MACH_PORT_NULL;
- __mach_msg (&msg, MACH_SEND_MSG, sizeof msg, 0,
- MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
+ err = __mach_msg (&msg, MACH_SEND_MSG, sizeof msg, 0,
+ MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE,
+ MACH_PORT_NULL);
+ assert (err == MACH_MSG_SUCCESS);
}
__mutex_unlock (&ss->lock);
}