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 #include <linux/types.h> 12 /* For O_CLOEXEC and O_NONBLOCK */ 13 #include <linux/fcntl.h> 14 15 /* Flags for signalfd4. */ 16 #define SFD_CLOEXEC O_CLOEXEC 17 #define SFD_NONBLOCK O_NONBLOCK 18 19 struct signalfd_siginfo { 20 __u32 ssi_signo; 21 __s32 ssi_errno; 22 __s32 ssi_code; 23 __u32 ssi_pid; 24 __u32 ssi_uid; 25 __s32 ssi_fd; 26 __u32 ssi_tid; 27 __u32 ssi_band; 28 __u32 ssi_overrun; 29 __u32 ssi_trapno; 30 __s32 ssi_status; 31 __s32 ssi_int; 32 __u64 ssi_ptr; 33 __u64 ssi_utime; 34 __u64 ssi_stime; 35 __u64 ssi_addr; 36 __u16 ssi_addr_lsb; 37 38 /* 39 * Pad strcture to 128 bytes. Remember to update the 40 * pad size when you add new members. We use a fixed 41 * size structure to avoid compatibility problems with 42 * future versions, and we leave extra space for additional 43 * members. We use fixed size members because this strcture 44 * comes out of a read(2) and we really don't want to have 45 * a compat on read(2). 46 */ 47 __u8 __pad[46]; 48 }; 49 50 51 #ifdef __KERNEL__ 52 53 #ifdef CONFIG_SIGNALFD 54 55 /* 56 * Deliver the signal to listening signalfd. 57 */ signalfd_notify(struct task_struct * tsk,int sig)58static inline void signalfd_notify(struct task_struct *tsk, int sig) 59 { 60 if (unlikely(waitqueue_active(&tsk->sighand->signalfd_wqh))) 61 wake_up(&tsk->sighand->signalfd_wqh); 62 } 63 64 #else /* CONFIG_SIGNALFD */ 65 signalfd_notify(struct task_struct * tsk,int sig)66static inline void signalfd_notify(struct task_struct *tsk, int sig) { } 67 68 #endif /* CONFIG_SIGNALFD */ 69 70 #endif /* __KERNEL__ */ 71 72 #endif /* _LINUX_SIGNALFD_H */ 73 74