MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _dequeue_signal

Function _dequeue_signal

components/lwp/lwp_signal.c:1296–1327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1294}
1295
1296static int _dequeue_signal(rt_thread_t thread, lwp_sigset_t *mask, siginfo_t *usi)
1297{
1298 int signo;
1299 lwp_siginfo_t si;
1300 struct rt_lwp *lwp;
1301 lwp_sigset_t *pending;
1302 lwp_sigqueue_t sigqueue;
1303
1304 lwp = thread->lwp;
1305 RT_ASSERT(lwp);
1306
1307 sigqueue = _SIGQ(thread);
1308 pending = &sigqueue->sigset_pending;
1309 signo = _next_signal(pending, mask);
1310 if (!signo)
1311 {
1312 sigqueue = _SIGQ(lwp);
1313 pending = &sigqueue->sigset_pending;
1314 signo = _next_signal(pending, mask);
1315 }
1316
1317 if (!signo)
1318 return signo;
1319
1320 si = sigqueue_dequeue(sigqueue, signo);
1321 RT_ASSERT(!!si);
1322
1323 siginfo_k2u(si, usi);
1324 siginfo_delete(si);
1325
1326 return signo;
1327}
1328
1329rt_err_t lwp_thread_signal_timedwait(rt_thread_t thread, lwp_sigset_t *sigset,
1330 siginfo_t *usi, struct timespec *timeout)

Callers 1

Calls 4

_next_signalFunction · 0.85
sigqueue_dequeueFunction · 0.85
siginfo_k2uFunction · 0.85
siginfo_deleteFunction · 0.85

Tested by

no test coverage detected