Matt,

> :A first cut of the libc-based implementation, using a (new) syscall to
> :get/set the signal its is available, and can be found here:
> :http://www.gsicomp.on.ca/~matt/dfly/ (rev3, bottom of page)
>
>     Ok, I see a few things, all easy to fix:
>
>     * sigpend is not swapped in and out.  This is the bitmask of pending
>       signals.  It stays as it is.

I misunderstood your earlier comment about the pending mask.

>     * sigmask must be adjusted by the kernel to remove unmaskable signals
>       using SIG_CANTMASK(sigmask);
>
>     * There is a naming conflict between the sigmask() system call and
>       thethe 'sigmask' identifier, but (see next item)...
>
>     * You shouldn't need a new system call anyway, the sigprocmask()
system
>       call can be used to retrieve and set the signal mask.  I recommend
>       using that.

Absolutely.  The only reason I invented a new syscall was because of my
misunderstanding above :)

>     There is one more issue, and that is an atomicy issue.  We want the
>     new signal mask to be set simultaniously with the restoration of the
>     context (or most of it).  This means that all signals must be masked
>     temporarily while restoring the context.  But don't worry about it,
>     I can handle that part as well.  It does mean an extra system call
>     but that isn't our concern at the moment.
>
>     I can fill in the missing code assembly, no problem.  If you do one
>     more rev using sigprocmask() instead of creating a new system call
>     I can then take it from there.

Code changes uploaded to website, rev4.

--
Matt Emmerton

Reply via email to