| 445 | } |
| 446 | |
| 447 | void |
| 448 | sigqueue_flush(sigqueue_t *sq) |
| 449 | { |
| 450 | struct proc *p = sq->sq_proc; |
| 451 | ksiginfo_t *ksi; |
| 452 | |
| 453 | KASSERT(sq->sq_flags & SQ_INIT, ("sigqueue not inited")); |
| 454 | |
| 455 | if (p != NULL) |
| 456 | PROC_LOCK_ASSERT(p, MA_OWNED); |
| 457 | |
| 458 | while ((ksi = TAILQ_FIRST(&sq->sq_list)) != NULL) { |
| 459 | TAILQ_REMOVE(&sq->sq_list, ksi, ksi_link); |
| 460 | ksi->ksi_sigq = NULL; |
| 461 | if (ksiginfo_tryfree(ksi) && p != NULL) |
| 462 | p->p_pendingcnt--; |
| 463 | } |
| 464 | |
| 465 | SIGEMPTYSET(sq->sq_signals); |
| 466 | SIGEMPTYSET(sq->sq_kill); |
| 467 | SIGEMPTYSET(sq->sq_ptrace); |
| 468 | } |
| 469 | |
| 470 | static void |
| 471 | sigqueue_move_set(sigqueue_t *src, sigqueue_t *dst, const sigset_t *set) |
no test coverage detected