Peter Zijlstra
ba0a6c9f6f
fcntl: add F_[SG]ETOWN_EX
...
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_EX.
The need to direct SIGIO comes from self-monitoring profiling such as with
perf-counters. Perf-counters uses SIGIO to notify that new sample data is
available. If the signal is delivered to the same task that generated the
new sample it can augment that data by inspecting the task's user-space
state right after it returns from the kernel. This is esp. convenient
for interpreted or virtual machine driven environments.
Both F_SETOWN_EX and F_GETOWN_EX take a pointer to a struct f_owner_ex
as argument:
struct f_owner_ex {
int type;
pid_t pid;
};
Where type is one of F_OWNER_TID, F_OWNER_PID or F_OWNER_GID.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Tested-by: stephane eranian <eranian@googlemail.com>
Cc: Michael Kerrisk <mtk.manpages@googlemail.com>
Cc: Roland McGrath <roland@redhat.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-09-24 07:21:01 -07:00
..
8253pit.h
time: move PIT_TICK_RATE to linux/timex.h
2009-06-16 19:47:27 -07:00
a.out-core.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
a.out.h
alpha: introduce field 'taso' into struct linux_binprm
2008-10-16 11:21:38 -07:00
agp.h
agp: kill phys_to_gart() and gart_to_phys()
2009-08-03 09:05:00 +01:00
agp_backend.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
atomic.h
asm-generic: rename atomic.h to atomic-long.h
2009-06-11 21:02:17 +02:00
auxvec.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
barrier.h
alpha: futex implementation
2009-05-02 15:36:10 -07:00
bitops.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
bitsperlong.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
bug.h
alpha: fixup BUG macro
2009-02-05 12:56:49 -08:00
bugs.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
byteorder.h
byteorder: make swab.h include asm/swab.h like a regular header
2009-01-14 19:56:50 -08:00
cache.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
cacheflush.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
checksum.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
compiler.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
console.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_apecs.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_cia.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_irongate.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_lca.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_marvel.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_mcpcia.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_polaris.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_t2.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_titan.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_tsunami.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
core_wildfire.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
cputime.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
current.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
delay.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
device.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
div64.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
dma-mapping.h
alpha: compile fixes
2009-01-29 18:04:44 -08:00
dma.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
elf.h
[PATCH] remove unused ibcs2/PER_SVR4 in SET_PERSONALITY
2008-10-16 15:40:05 +02:00
emergency-restart.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
err_common.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
err_ev6.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
err_ev7.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
errno.h
cfg80211: errno.h: define ERFKILL
2009-06-07 05:01:00 -07:00
fb.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
fcntl.h
fcntl: add F_[SG]ETOWN_EX
2009-09-24 07:21:01 -07:00
floppy.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
fpu.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
ftrace.h
tracing: make CALLER_ADDRx overwriteable
2009-03-02 16:49:37 -05:00
futex.h
alpha: futex implementation
2009-05-02 15:36:10 -07:00
gct.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
gentrap.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
hardirq.h
alpha: convert to asm-generic/hardirq.h
2009-09-22 07:17:43 -07:00
hw_irq.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
hwrpb.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
io.h
alpha: remove dead BIO_VMERGE_BOUNDARY
2008-12-29 08:29:51 +01:00
io_trivial.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
ioctl.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
ioctls.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
ipcbuf.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
irq.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
irq_regs.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
jensen.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
Kbuild
byteorder: make swab.h include asm/swab.h like a regular header
2009-01-14 19:56:50 -08:00
kdebug.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
kmap_types.h
kmap_types: make most arches use generic header file
2009-06-16 19:47:51 -07:00
linkage.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
local.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
machvec.h
alpha: convert u64 to unsigned long long
2009-04-01 08:59:16 -07:00
mc146818rtc.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
md.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
mman.h
mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions
2009-09-22 07:17:41 -07:00
mmu.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
mmu_context.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
mmzone.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
module.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
msgbuf.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
mutex.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
page.h
asm-generic: rename page.h and uaccess.h
2009-06-11 21:02:17 +02:00
pal.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
param.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
parport.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
pci.h
PCI: remove pcibios_scan_all_fns()
2009-09-09 13:29:18 -07:00
percpu.h
alpha: fix percpu build breakage
2009-06-30 18:55:59 -07:00
pgalloc.h
alpha: make pte_alloc_one_kernel() inline
2009-01-15 16:39:40 -08:00
pgtable.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
poll.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
posix_types.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
processor.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
ptrace.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
reg.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
regdef.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
resource.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
rtc.h
alpha: fix RTC on marvel
2009-01-15 16:39:40 -08:00
rwsem.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
scatterlist.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
sections.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
segment.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
sembuf.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
serial.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
setup.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
sfp-machine.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
shmbuf.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
shmparam.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
sigcontext.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
siginfo.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
signal.h
asm-generic: rename termios.h, signal.h and mman.h
2009-06-11 21:01:52 +02:00
smp.h
cpumask: remove arch_send_call_function_ipi
2009-09-24 09:34:47 +09:30
socket.h
net: implement a SO_DOMAIN getsockoption
2009-08-05 13:02:57 -07:00
sockios.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
spinlock.h
Allow rwlocks to re-enable interrupts
2009-04-02 19:05:11 -07:00
spinlock_types.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
stat.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
statfs.h
headers_check fix: alpha, statfs.h
2009-02-01 11:01:22 +05:30
string.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
swab.h
headers_check fix: alpha, swab.h
2009-02-01 11:01:22 +05:30
sysinfo.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
system.h
alpha: xchg/cmpxchg cleanup and fixes
2009-04-01 08:59:16 -07:00
termbits.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
termios.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
thread_info.h
KEYS: Extend TIF_NOTIFY_RESUME to (almost) all architectures [try #6 ]
2009-09-02 21:29:19 +10:00
timex.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
tlb.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
tlbflush.h
alpha: switch to dynamic percpu allocator
2009-06-24 15:13:52 +09:00
topology.h
cpumask: remove obsolete node_to_cpumask now everyone uses cpumask_of_node
2009-09-24 09:34:34 +09:30
types.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
uaccess.h
alpha: exception table sorting
2009-05-02 15:36:10 -07:00
ucontext.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
unaligned.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
unistd.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
user.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
vga.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00
xchg.h
alpha: xchg/cmpxchg cleanup and fixes
2009-04-01 08:59:16 -07:00
xor.h
alpha: move include/asm-alpha to arch/alpha/include/asm
2008-08-15 09:19:40 -07:00