diff options
author | Rom Lemarchand <romlem@google.com> | 2013-01-10 10:18:49 -0800 |
---|---|---|
committer | Rom Lemarchand <romlem@google.com> | 2013-01-10 10:30:47 -0800 |
commit | cedf2ae6c7c1cd8c70bb3380543d618a01424895 (patch) | |
tree | 24d09cff8de38bb3189c16b134fc30c35288cb83 | |
parent | 60d2317394c39128e1bfd7a000ce3f915d10f827 (diff) | |
download | kernel-headers-cedf2ae6c7c1cd8c70bb3380543d618a01424895.tar.gz |
external/kernel-headers: add signalfd.h
Obtained from kernel 3.4.5
Change-Id: I31304ee7c49ad21ba680c9047f86c8ba7944c745
-rw-r--r-- | original/linux/signalfd.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/original/linux/signalfd.h b/original/linux/signalfd.h new file mode 100644 index 0000000..247399b --- /dev/null +++ b/original/linux/signalfd.h @@ -0,0 +1,76 @@ +/* + * include/linux/signalfd.h + * + * Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> + * + */ + +#ifndef _LINUX_SIGNALFD_H +#define _LINUX_SIGNALFD_H + +#include <linux/types.h> +/* For O_CLOEXEC and O_NONBLOCK */ +#include <linux/fcntl.h> + +/* Flags for signalfd4. */ +#define SFD_CLOEXEC O_CLOEXEC +#define SFD_NONBLOCK O_NONBLOCK + +struct signalfd_siginfo { + __u32 ssi_signo; + __s32 ssi_errno; + __s32 ssi_code; + __u32 ssi_pid; + __u32 ssi_uid; + __s32 ssi_fd; + __u32 ssi_tid; + __u32 ssi_band; + __u32 ssi_overrun; + __u32 ssi_trapno; + __s32 ssi_status; + __s32 ssi_int; + __u64 ssi_ptr; + __u64 ssi_utime; + __u64 ssi_stime; + __u64 ssi_addr; + __u16 ssi_addr_lsb; + + /* + * Pad strcture to 128 bytes. Remember to update the + * pad size when you add new members. We use a fixed + * size structure to avoid compatibility problems with + * future versions, and we leave extra space for additional + * members. We use fixed size members because this strcture + * comes out of a read(2) and we really don't want to have + * a compat on read(2). + */ + __u8 __pad[46]; +}; + + +#ifdef __KERNEL__ + +#ifdef CONFIG_SIGNALFD + +/* + * Deliver the signal to listening signalfd. + */ +static inline void signalfd_notify(struct task_struct *tsk, int sig) +{ + if (unlikely(waitqueue_active(&tsk->sighand->signalfd_wqh))) + wake_up(&tsk->sighand->signalfd_wqh); +} + +extern void signalfd_cleanup(struct sighand_struct *sighand); + +#else /* CONFIG_SIGNALFD */ + +static inline void signalfd_notify(struct task_struct *tsk, int sig) { } + +static inline void signalfd_cleanup(struct sighand_struct *sighand) { } + +#endif /* CONFIG_SIGNALFD */ + +#endif /* __KERNEL__ */ + +#endif /* _LINUX_SIGNALFD_H */ |