Lines Matching refs:siginfo
37 lwp_siginfo_t siginfo; in siginfo_create() local
41 siginfo = rt_malloc(sizeof(*siginfo)); in siginfo_create()
42 if (siginfo) in siginfo_create()
44 siginfo->ksiginfo.signo = signo; in siginfo_create()
45 siginfo->ksiginfo.code = code; in siginfo_create()
46 siginfo->ext = ext; in siginfo_create()
52 siginfo->ksiginfo.from_pid = self_lwp->pid; in siginfo_create()
53 siginfo->ksiginfo.from_tid = self_thr->tid; in siginfo_create()
57 siginfo->ksiginfo.from_pid = 0; in siginfo_create()
58 siginfo->ksiginfo.from_tid = 0; in siginfo_create()
62 return siginfo; in siginfo_create()
65 rt_inline void siginfo_delete(lwp_siginfo_t siginfo) in siginfo_delete() argument
67 if (siginfo->ext) in siginfo_delete()
69 rt_free(siginfo->ext); in siginfo_delete()
70 siginfo->ext = RT_NULL; in siginfo_delete()
73 rt_free(siginfo); in siginfo_delete()
252 static void sigqueue_enqueue(lwp_sigqueue_t sigqueue, lwp_siginfo_t siginfo) in sigqueue_enqueue() argument
258 if (idx->ksiginfo.signo >= siginfo->ksiginfo.signo) in sigqueue_enqueue()
260 rt_list_insert_after(&idx->node, &siginfo->node); in sigqueue_enqueue()
267 rt_list_insert_before(&sigqueue->siginfo_list, &siginfo->node); in sigqueue_enqueue()
269 _sigaddset(&sigqueue->sigset_pending, siginfo->ksiginfo.signo); in sigqueue_enqueue()
437 static void lwp_signal_notify(rt_slist_t *list_head, lwp_siginfo_t siginfo) in lwp_signal_notify() argument
446 n->notify(n->signalfd_queue, siginfo->ksiginfo.signo); in lwp_signal_notify()
650 lwp_siginfo_t siginfo, lwp_sighandler_t handler, in _catch_signal_locked() argument
661 siginfo_k2u(siginfo, &usiginfo); in _catch_signal_locked()
675 siginfo_delete(siginfo); in _catch_signal_locked()
772 lwp_siginfo_t siginfo; in lwp_thread_signal_catch() local
777 siginfo = sigqueue_dequeue(pending, signo); in lwp_thread_signal_catch()
778 RT_ASSERT(siginfo != RT_NULL); in lwp_thread_signal_catch()
787 _stop_thread_locked(lwp, thread, signo, siginfo, pending); in lwp_thread_signal_catch()
796 _catch_signal_locked(lwp, thread, signo, siginfo, handler, exp_frame); in lwp_thread_signal_catch()
896 static int _siginfo_deliver_to_lwp(struct rt_lwp *lwp, lwp_siginfo_t siginfo) in _siginfo_deliver_to_lwp() argument
900 catcher = _signal_find_catcher(lwp, siginfo->ksiginfo.signo); in _siginfo_deliver_to_lwp()
902 sigqueue_enqueue(&lwp->signal.sig_queue, siginfo); in _siginfo_deliver_to_lwp()
903 return _do_signal_wakeup(catcher, siginfo->ksiginfo.signo); in _siginfo_deliver_to_lwp()
906 static int _siginfo_deliver_to_thread(rt_thread_t thread, lwp_siginfo_t siginfo) in _siginfo_deliver_to_thread() argument
908 sigqueue_enqueue(_SIGQ(thread), siginfo); in _siginfo_deliver_to_thread()
909 return _do_signal_wakeup(thread, siginfo->ksiginfo.signo); in _siginfo_deliver_to_thread()
995 lwp_siginfo_t siginfo; in lwp_signal_kill() local
1031 siginfo = siginfo_create(rt_thread_self(), signo, code, value); in lwp_signal_kill()
1033 if (siginfo) in lwp_signal_kill()
1036 _before_sending_jobctl_signal(signo, lwp, siginfo); in lwp_signal_kill()
1038 need_schedule = _siginfo_deliver_to_lwp(lwp, siginfo); in lwp_signal_kill()
1039 lwp_signal_notify(&lwp->signalfd_notify_head, siginfo); in lwp_signal_kill()
1198 lwp_siginfo_t siginfo; in lwp_thread_signal_kill() local
1230 siginfo = siginfo_create(rt_thread_self(), signo, code, value); in lwp_thread_signal_kill()
1232 if (siginfo) in lwp_thread_signal_kill()
1234 need_schedule = _siginfo_deliver_to_thread(thread, siginfo); in lwp_thread_signal_kill()
1235 lwp_signal_notify(&lwp->signalfd_notify_head, siginfo); in lwp_thread_signal_kill()