Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.22-rc6 97 lines 2.2 kB view raw
1/* 2 * include/linux/signalfd.h 3 * 4 * Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> 5 * 6 */ 7 8#ifndef _LINUX_SIGNALFD_H 9#define _LINUX_SIGNALFD_H 10 11 12struct signalfd_siginfo { 13 __u32 signo; 14 __s32 err; 15 __s32 code; 16 __u32 pid; 17 __u32 uid; 18 __s32 fd; 19 __u32 tid; 20 __u32 band; 21 __u32 overrun; 22 __u32 trapno; 23 __s32 status; 24 __s32 svint; 25 __u64 svptr; 26 __u64 utime; 27 __u64 stime; 28 __u64 addr; 29 30 /* 31 * Pad strcture to 128 bytes. Remember to update the 32 * pad size when you add new memebers. We use a fixed 33 * size structure to avoid compatibility problems with 34 * future versions, and we leave extra space for additional 35 * members. We use fixed size members because this strcture 36 * comes out of a read(2) and we really don't want to have 37 * a compat on read(2). 38 */ 39 __u8 __pad[48]; 40}; 41 42 43#ifdef __KERNEL__ 44 45#ifdef CONFIG_SIGNALFD 46 47/* 48 * Deliver the signal to listening signalfd. This must be called 49 * with the sighand lock held. Same are the following that end up 50 * calling signalfd_deliver(). 51 */ 52void signalfd_deliver(struct task_struct *tsk, int sig); 53 54/* 55 * No need to fall inside signalfd_deliver() if no signal listeners 56 * are available. 57 */ 58static inline void signalfd_notify(struct task_struct *tsk, int sig) 59{ 60 if (unlikely(!list_empty(&tsk->sighand->signalfd_list))) 61 signalfd_deliver(tsk, sig); 62} 63 64/* 65 * The signal -1 is used to notify the signalfd that the sighand 66 * is on its way to be detached. 67 */ 68static inline void signalfd_detach_locked(struct task_struct *tsk) 69{ 70 if (unlikely(!list_empty(&tsk->sighand->signalfd_list))) 71 signalfd_deliver(tsk, -1); 72} 73 74static inline void signalfd_detach(struct task_struct *tsk) 75{ 76 struct sighand_struct *sighand = tsk->sighand; 77 78 if (unlikely(!list_empty(&sighand->signalfd_list))) { 79 spin_lock_irq(&sighand->siglock); 80 signalfd_deliver(tsk, -1); 81 spin_unlock_irq(&sighand->siglock); 82 } 83} 84 85#else /* CONFIG_SIGNALFD */ 86 87#define signalfd_deliver(t, s) do { } while (0) 88#define signalfd_notify(t, s) do { } while (0) 89#define signalfd_detach_locked(t) do { } while (0) 90#define signalfd_detach(t) do { } while (0) 91 92#endif /* CONFIG_SIGNALFD */ 93 94#endif /* __KERNEL__ */ 95 96#endif /* _LINUX_SIGNALFD_H */ 97