eventfd.h 1012 字节
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
/*
 *  include/linux/eventfd.h
 *
 *  Copyright (C) 2007  Davide Libenzi <davidel@xmailserver.org>
 *
 */

#ifndef _LINUX_EVENTFD_H
#define _LINUX_EVENTFD_H

#ifdef CONFIG_EVENTFD

13
/* For O_CLOEXEC and O_NONBLOCK */
U
Ulrich Drepper 已提交
14 15
#include <linux/fcntl.h>

16 17 18 19 20 21 22 23
/*
 * CAREFUL: Check include/asm-generic/fcntl.h when defining
 * new flags, since they might collide with O_* ones. We want
 * to re-use O_* flags that couldn't possibly have a meaning
 * from eventfd, in order to leave a free define-space for
 * shared O_* flags.
 */
#define EFD_SEMAPHORE (1 << 0)
U
Ulrich Drepper 已提交
24
#define EFD_CLOEXEC O_CLOEXEC
25
#define EFD_NONBLOCK O_NONBLOCK
U
Ulrich Drepper 已提交
26

27 28 29
#define EFD_SHARED_FCNTL_FLAGS (O_CLOEXEC | O_NONBLOCK)
#define EFD_FLAGS_SET (EFD_SHARED_FCNTL_FLAGS | EFD_SEMAPHORE)

30 31 32 33 34 35
struct file *eventfd_fget(int fd);
int eventfd_signal(struct file *file, int n);

#else /* CONFIG_EVENTFD */

#define eventfd_fget(fd) ERR_PTR(-ENOSYS)
36 37
static inline int eventfd_signal(struct file *file, int n)
{ return 0; }
38 39 40 41 42

#endif /* CONFIG_EVENTFD */

#endif /* _LINUX_EVENTFD_H */