diff options
author | Rom Lemarchand <romlem@google.com> | 2013-01-10 10:18:49 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2013-01-10 13:09:14 -0800 |
commit | ab39701e720f389460a09672a29501e39116ef22 (patch) | |
tree | 38e62665487cdb740cdec81f985f5253d29c661d /original | |
parent | eaa543380213be9ea457f745bada3d6fab680e25 (diff) | |
download | kernel-headers-ab39701e720f389460a09672a29501e39116ef22.tar.gz |
external/kernel-headers: add signalfd.h
Obtained from kernel 3.4.5
(cherry-pick of cedf2ae6c7c1cd8c70bb3380543d618a01424895.)
Change-Id: If3bcae497da4e73aa88614abc82b297d44df8bdc
Diffstat (limited to 'original')
-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 */ |