mirror of
				https://sourceware.org/git/glibc.git
				synced 2025-10-28 23:34:53 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			141 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Copyright (C) 2002-2012 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
 | |
| 
 | |
| /* Get the platform-dependent flags.  */
 | |
| #include <bits/epoll.h>
 | |
| 
 | |
| #ifndef __EPOLL_PACKED
 | |
| # define __EPOLL_PACKED
 | |
| #endif
 | |
| 
 | |
| 
 | |
| 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
 | |
|     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 */
 | |
| } __EPOLL_PACKED;
 | |
| 
 | |
| 
 | |
| __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 */
 |