| 399 | }; |
| 400 | |
| 401 | static void _thread_signal_mask(rt_thread_t thread, lwp_sig_mask_cmd_t how, |
| 402 | const lwp_sigset_t *sigset, lwp_sigset_t *oset) |
| 403 | { |
| 404 | lwp_sigset_t new_set; |
| 405 | |
| 406 | /** |
| 407 | * Note: POSIX wants this API to be capable to query the current mask |
| 408 | * by passing NULL in `sigset` |
| 409 | */ |
| 410 | if (oset) |
| 411 | memcpy(oset, &thread->signal.sigset_mask, sizeof(lwp_sigset_t)); |
| 412 | |
| 413 | if (sigset) |
| 414 | { |
| 415 | _sig_mask_fn[how](thread, sigset, &new_set); |
| 416 | |
| 417 | /* remove un-maskable signal from set */ |
| 418 | _sigdelset(&new_set, SIGKILL); |
| 419 | _sigdelset(&new_set, SIGSTOP); |
| 420 | |
| 421 | memcpy(&thread->signal.sigset_mask, &new_set, sizeof(lwp_sigset_t)); |
| 422 | } |
| 423 | } |
| 424 | |
| 425 | void lwp_sigqueue_clear(lwp_sigqueue_t sigq) |
| 426 | { |
no test coverage detected