Ok, given that you have to place the notifiers (you had a direct call to
wake_up, same thing - but was not handling the "the sighand has been
detched" case), your queue_signal() call translates to:
sq = list_entry(ctx->squeue.next, struct signalfd_sq, lnk);
list_del(&sq->lnk);
That's pretty much it. There is more code WRT your patch, but there are
more things handled too (reuse of the fd, notify detachment, send siginfo).
And those has to be handled in any case.
- Davide
-