On Thu, 27 Jan 2022 at 22:46, Warner Losh <wl...@bsdimp.com> wrote: > > > > > On Jan 24, 2022, at 6:29 PM, Warner Losh <i...@bsdimp.com> wrote: > > > > Implement the meat of the sigaction(2) system call with do_sigaction and > > helper routiner block_signals (which is also used to implemement signal > > masking so it's global). > > > > Signed-off-by: Stacey Son <s...@freebsd.org> > > Signed-off-by: Kyle Evans <kev...@freebsd.org> > > Signed-off-by: Warner Losh <i...@bsdimp.com> > > > > Pending Comments from Peter Maydell <peter.mayd...@linaro.org> > > > > (1) in block_signals, sigprocmast > > For linux-user we rely on sigprocmask() in a multithreaded > > program setting the signal mask for only the calling thread, > > which isn't POSIX-mandated. (Arguably we should use > > pthread_sigmask() instead, but we don't for basically > > historical reasons since linux-user is host-OS-specific anyway.) > > Does BSD have the same "this changes this thread's signal mask" > > semantics for sigprocmask()? > > FreeBSD changes this on a per-thread basis for both > sigprocmask and pthread_sigmask(). pthread_sigmask() just > does some extra stuff with SIGCANCEL for pthread_cancel > support which qemu doesn’t use. They are the same. I’m inclined > to leave it as sigprocmask() since I’m unsure what the implications > of doing funky things for SIGCANCEL would be.
Yes, that sounds like the right thing. thanks -- PMM