Re: [RFC][PATCH] fcntl: F_[SG]ETOWN_TID

From: Andrew Morton
Date: Fri Jul 31 2009 - 17:13:43 EST


On Fri, 31 Jul 2009 10:35:20 +0200
Peter Zijlstra <a.p.zijlstra@xxxxxxxxx> wrote:

> In order to direct the SIGIO signal to a particular thread of a
> multi-threaded application we cannot, like suggested by the manpage, put
> a TID into the regular fcntl(F_SETOWN) call. It will still be send to
> the whole process of which that thread is part.
>
> Since people do want to properly direct SIGIO we introduce F_SETOWN_TID,
> which functions similarly to F_SETOWN, except positive arguments are
> interpreted as TIDs and negative arguments are interpreted as PIDs.
>
> This extension is fully bug compatible with the old F_GETOWN
> implementation in that F_GETOWN_TID will be troubled by the negative
> return value for PIDs similarly to F_GETOWN's trouble with process
> groups.

I'd be interested in seeing a bit more explanation about the "people do
want to properly direct SIGIO" thing - use cases, how the current code
causes them problems, etc. As it stands, it's a bit of a mystery-patch.

> [ compile tested only so far ]

I will continue to lurk :)

> arch/parisc/include/asm/fcntl.h | 2 +
> fs/fcntl.c | 64 +++++++++++++++++++++++++++++++++-----
> include/asm-generic/fcntl.h | 4 ++
> include/linux/fs.h | 11 +++++-
> net/socket.c | 2 +-

OK.



Alpha has private definitions of F_SETSIG and F_GETSIG which are
identical to the generic ones. That's somewhat logical, given that
alpha's F_SETOWN/F_GETOWN _differ_ from the asm-generic ones.

Alpha appears to have made the decision to spell out _all_ the F_*
flags, given that some of them are different. That has some merit, I
guess.

But your patch broke that.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/