mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-11-03 20:53:13 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright (C) 2002-2014 Free Software Foundation, Inc.
 | 
						|
   This file is part of the GNU C Library.
 | 
						|
 | 
						|
   The GNU C Library is free software; you can redistribute it and/or
 | 
						|
   modify it under the terms of the GNU Lesser General Public
 | 
						|
   License as published by the Free Software Foundation; either
 | 
						|
   version 2.1 of the License, or (at your option) any later version.
 | 
						|
 | 
						|
   The GNU C Library is distributed in the hope that it will be useful,
 | 
						|
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
   Lesser General Public License for more details.
 | 
						|
 | 
						|
   You should have received a copy of the GNU Lesser General Public
 | 
						|
   License along with the GNU C Library.  If not, see
 | 
						|
   <http://www.gnu.org/licenses/>.  */
 | 
						|
 | 
						|
#ifndef	_SYS_EPOLL_H
 | 
						|
#define	_SYS_EPOLL_H	1
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <sys/types.h>
 | 
						|
 | 
						|
/* Get __sigset_t.  */
 | 
						|
#include <bits/sigset.h>
 | 
						|
 | 
						|
#ifndef __sigset_t_defined
 | 
						|
# define __sigset_t_defined
 | 
						|
typedef __sigset_t sigset_t;
 | 
						|
#endif
 | 
						|
 | 
						|
 | 
						|
/* Flags to be passed to epoll_create1.  */
 | 
						|
enum
 | 
						|
  {
 | 
						|
    EPOLL_CLOEXEC = 010000000
 | 
						|
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
 | 
						|
  };
 | 
						|
 | 
						|
 | 
						|
enum EPOLL_EVENTS
 | 
						|
  {
 | 
						|
    EPOLLIN = 0x001,
 | 
						|
#define EPOLLIN EPOLLIN
 | 
						|
    EPOLLPRI = 0x002,
 | 
						|
#define EPOLLPRI EPOLLPRI
 | 
						|
    EPOLLOUT = 0x004,
 | 
						|
#define EPOLLOUT EPOLLOUT
 | 
						|
    EPOLLRDNORM = 0x040,
 | 
						|
#define EPOLLRDNORM EPOLLRDNORM
 | 
						|
    EPOLLRDBAND = 0x080,
 | 
						|
#define EPOLLRDBAND EPOLLRDBAND
 | 
						|
    EPOLLWRNORM = 0x100,
 | 
						|
#define EPOLLWRNORM EPOLLWRNORM
 | 
						|
    EPOLLWRBAND = 0x200,
 | 
						|
#define EPOLLWRBAND EPOLLWRBAND
 | 
						|
    EPOLLMSG = 0x400,
 | 
						|
#define EPOLLMSG EPOLLMSG
 | 
						|
    EPOLLERR = 0x008,
 | 
						|
#define EPOLLERR EPOLLERR
 | 
						|
    EPOLLHUP = 0x010,
 | 
						|
#define EPOLLHUP EPOLLHUP
 | 
						|
    EPOLLRDHUP = 0x2000,
 | 
						|
#define EPOLLRDHUP EPOLLRDHUP
 | 
						|
    EPOLLWAKEUP = 1u << 29,
 | 
						|
#define EPOLLWAKEUP EPOLLWAKEUP
 | 
						|
    EPOLLONESHOT = 1u << 30,
 | 
						|
#define EPOLLONESHOT EPOLLONESHOT
 | 
						|
    EPOLLET = 1u << 31
 | 
						|
#define EPOLLET EPOLLET
 | 
						|
  };
 | 
						|
 | 
						|
 | 
						|
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl().  */
 | 
						|
#define EPOLL_CTL_ADD 1	/* Add a file descriptor to the interface.  */
 | 
						|
#define EPOLL_CTL_DEL 2	/* Remove a file descriptor from the interface.  */
 | 
						|
#define EPOLL_CTL_MOD 3	/* Change file descriptor epoll_event structure.  */
 | 
						|
 | 
						|
 | 
						|
typedef union epoll_data
 | 
						|
{
 | 
						|
  void *ptr;
 | 
						|
  int fd;
 | 
						|
  uint32_t u32;
 | 
						|
  uint64_t u64;
 | 
						|
} epoll_data_t;
 | 
						|
 | 
						|
struct epoll_event
 | 
						|
{
 | 
						|
  uint32_t events;	/* Epoll events */
 | 
						|
  epoll_data_t data;	/* User data variable */
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
__BEGIN_DECLS
 | 
						|
 | 
						|
/* Creates an epoll instance.  Returns an fd for the new instance.
 | 
						|
   The "size" parameter is a hint specifying the number of file
 | 
						|
   descriptors to be associated with the new instance.  The fd
 | 
						|
   returned by epoll_create() should be closed with close().  */
 | 
						|
extern int epoll_create (int __size) __THROW;
 | 
						|
 | 
						|
/* Same as epoll_create but with an FLAGS parameter.  The unused SIZE
 | 
						|
   parameter has been dropped.  */
 | 
						|
extern int epoll_create1 (int __flags) __THROW;
 | 
						|
 | 
						|
 | 
						|
/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
 | 
						|
   -1 in case of error ( the "errno" variable will contain the
 | 
						|
   specific error code ) The "op" parameter is one of the EPOLL_CTL_*
 | 
						|
   constants defined above. The "fd" parameter is the target of the
 | 
						|
   operation. The "event" parameter describes which events the caller
 | 
						|
   is interested in and any associated user data.  */
 | 
						|
extern int epoll_ctl (int __epfd, int __op, int __fd,
 | 
						|
		      struct epoll_event *__event) __THROW;
 | 
						|
 | 
						|
 | 
						|
/* Wait for events on an epoll instance "epfd". Returns the number of
 | 
						|
   triggered events returned in "events" buffer. Or -1 in case of
 | 
						|
   error with the "errno" variable set to the specific error code. The
 | 
						|
   "events" parameter is a buffer that will contain triggered
 | 
						|
   events. The "maxevents" is the maximum number of events to be
 | 
						|
   returned ( usually size of "events" ). The "timeout" parameter
 | 
						|
   specifies the maximum wait time in milliseconds (-1 == infinite).
 | 
						|
 | 
						|
   This function is a cancellation point and therefore not marked with
 | 
						|
   __THROW.  */
 | 
						|
extern int epoll_wait (int __epfd, struct epoll_event *__events,
 | 
						|
		       int __maxevents, int __timeout);
 | 
						|
 | 
						|
 | 
						|
/* Same as epoll_wait, but the thread's signal mask is temporarily
 | 
						|
   and atomically replaced with the one provided as parameter.
 | 
						|
 | 
						|
   This function is a cancellation point and therefore not marked with
 | 
						|
   __THROW.  */
 | 
						|
extern int epoll_pwait (int __epfd, struct epoll_event *__events,
 | 
						|
			int __maxevents, int __timeout,
 | 
						|
			const __sigset_t *__ss);
 | 
						|
 | 
						|
__END_DECLS
 | 
						|
 | 
						|
#endif /* sys/epoll.h */
 |