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