root/include/uapi/linux/eventpoll.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. ep_take_care_of_epollwakeup
  2. ep_take_care_of_epollwakeup

   1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
   2 /*
   3  *  include/linux/eventpoll.h ( Efficient event polling implementation )
   4  *  Copyright (C) 2001,...,2006  Davide Libenzi
   5  *
   6  *  This program is free software; you can redistribute it and/or modify
   7  *  it under the terms of the GNU General Public License as published by
   8  *  the Free Software Foundation; either version 2 of the License, or
   9  *  (at your option) any later version.
  10  *
  11  *  Davide Libenzi <davidel@xmailserver.org>
  12  *
  13  */
  14 
  15 #ifndef _UAPI_LINUX_EVENTPOLL_H
  16 #define _UAPI_LINUX_EVENTPOLL_H
  17 
  18 /* For O_CLOEXEC */
  19 #include <linux/fcntl.h>
  20 #include <linux/types.h>
  21 
  22 /* Flags for epoll_create1.  */
  23 #define EPOLL_CLOEXEC O_CLOEXEC
  24 
  25 /* Valid opcodes to issue to sys_epoll_ctl() */
  26 #define EPOLL_CTL_ADD 1
  27 #define EPOLL_CTL_DEL 2
  28 #define EPOLL_CTL_MOD 3
  29 
  30 /* Epoll event masks */
  31 #define EPOLLIN         (__force __poll_t)0x00000001
  32 #define EPOLLPRI        (__force __poll_t)0x00000002
  33 #define EPOLLOUT        (__force __poll_t)0x00000004
  34 #define EPOLLERR        (__force __poll_t)0x00000008
  35 #define EPOLLHUP        (__force __poll_t)0x00000010
  36 #define EPOLLNVAL       (__force __poll_t)0x00000020
  37 #define EPOLLRDNORM     (__force __poll_t)0x00000040
  38 #define EPOLLRDBAND     (__force __poll_t)0x00000080
  39 #define EPOLLWRNORM     (__force __poll_t)0x00000100
  40 #define EPOLLWRBAND     (__force __poll_t)0x00000200
  41 #define EPOLLMSG        (__force __poll_t)0x00000400
  42 #define EPOLLRDHUP      (__force __poll_t)0x00002000
  43 
  44 /* Set exclusive wakeup mode for the target file descriptor */
  45 #define EPOLLEXCLUSIVE  ((__force __poll_t)(1U << 28))
  46 
  47 /*
  48  * Request the handling of system wakeup events so as to prevent system suspends
  49  * from happening while those events are being processed.
  50  *
  51  * Assuming neither EPOLLET nor EPOLLONESHOT is set, system suspends will not be
  52  * re-allowed until epoll_wait is called again after consuming the wakeup
  53  * event(s).
  54  *
  55  * Requires CAP_BLOCK_SUSPEND
  56  */
  57 #define EPOLLWAKEUP     ((__force __poll_t)(1U << 29))
  58 
  59 /* Set the One Shot behaviour for the target file descriptor */
  60 #define EPOLLONESHOT    ((__force __poll_t)(1U << 30))
  61 
  62 /* Set the Edge Triggered behaviour for the target file descriptor */
  63 #define EPOLLET         ((__force __poll_t)(1U << 31))
  64 
  65 /* 
  66  * On x86-64 make the 64bit structure have the same alignment as the
  67  * 32bit structure. This makes 32bit emulation easier.
  68  *
  69  * UML/x86_64 needs the same packing as x86_64
  70  */
  71 #ifdef __x86_64__
  72 #define EPOLL_PACKED __attribute__((packed))
  73 #else
  74 #define EPOLL_PACKED
  75 #endif
  76 
  77 struct epoll_event {
  78         __poll_t events;
  79         __u64 data;
  80 } EPOLL_PACKED;
  81 
  82 #ifdef CONFIG_PM_SLEEP
  83 static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
  84 {
  85         if ((epev->events & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND))
  86                 epev->events &= ~EPOLLWAKEUP;
  87 }
  88 #else
  89 static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
  90 {
  91         epev->events &= ~EPOLLWAKEUP;
  92 }
  93 #endif
  94 #endif /* _UAPI_LINUX_EVENTPOLL_H */

/* [<][>][^][v][top][bottom][index][help] */