mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-11-16 12:34:33 +00:00
Add the system call signalfd (#8001)
This commit is contained in:
@@ -392,6 +392,20 @@ void lwp_sigqueue_clear(lwp_sigqueue_t sigq)
|
||||
}
|
||||
}
|
||||
|
||||
static void lwp_signal_notify(rt_slist_t *list_head, lwp_siginfo_t siginfo)
|
||||
{
|
||||
rt_slist_t *node;
|
||||
|
||||
rt_slist_for_each(node, list_head)
|
||||
{
|
||||
struct rt_lwp_notify *n = rt_slist_entry(node, struct rt_lwp_notify, list_node);
|
||||
if (n->notify)
|
||||
{
|
||||
n->notify(n->signalfd_queue, siginfo->ksiginfo.signo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
rt_err_t lwp_signal_init(struct lwp_signal *sig)
|
||||
{
|
||||
rt_err_t rc;
|
||||
@@ -704,6 +718,7 @@ rt_err_t lwp_signal_kill(struct rt_lwp *lwp, long signo, long code, long value)
|
||||
{
|
||||
need_schedule = _siginfo_deliver_to_lwp(lwp, siginfo);
|
||||
ret = 0;
|
||||
lwp_signal_notify(&lwp->signalfd_notify_head, siginfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -856,6 +871,7 @@ rt_err_t lwp_thread_signal_kill(rt_thread_t thread, long signo, long code, long
|
||||
{
|
||||
need_schedule = _siginfo_deliver_to_thread(thread, siginfo);
|
||||
ret = 0;
|
||||
lwp_signal_notify(&lwp->signalfd_notify_head, siginfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user