On Wed, Mar 9, 2016 at 3:34 AM, Szabolcs Nagy <n...@port70.net> wrote: >> >> Could someone remind me why cancellation points matter to user-space? > > because of standards.
So quite frankly, if we have to do kernel support for this, then let's do it right, instead of just perpetuating a hack that was done in user space in a new way. We already have support for cancelling blocking system calls early: we do it for fatal signals (exactly because we know that it's ok to return -EINTR without failing POSIX semantics - the dying thread will never actually *see* the -EINTR because it's dying). I suspect that what you guys want is the same semantics as a fatal signal (return early with -EINTR), but without the actual fatality (you want to do cleanup in the cancelled thread). I suspect that we could fairly easily give those kinds of semantics. We could add a new flag to the sigaction (sa_flags) that says "this signal interrupts even uninterruptible system calls". Would that be good for you? And if not, can you explain the exact semantics you need? IThere might be some reason why you cannot reserve a particular signal for this, for example, but I'd like to know more precisely.. Because this "let's compare addresses" seems just excessively hacky. It's a clever little hack when you're doing user space and don't want to rely on kernel changes, but now that Andy is actuallty trying to push kernel changes it turns into just disgusting. Linus