PageRenderTime 23ms CodeModel.GetById 14ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/src/common/xpoll.h

https://code.google.com/
C++ Header | 68 lines | 13 code | 6 blank | 49 comment | 0 complexity | 074c486eef89f6a09be15554fcf432a8 MD5 | raw file
 1/*****************************************************************************\
 2 *  $Id$
 3 *****************************************************************************
 4 *  Copyright (C) 2001-2002 The Regents of the University of California.
 5 *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
 6 *  Written by Jim Garlick <garlick@llnl.gov>.
 7 *  UCRL-CODE-2003-005.
 8 *  
 9 *  This file is part of Pdsh, a parallel remote shell program.
10 *  For details, see <http://www.llnl.gov/linux/pdsh/>.
11 *  
12 *  Pdsh is free software; you can redistribute it and/or modify it under
13 *  the terms of the GNU General Public License as published by the Free
14 *  Software Foundation; either version 2 of the License, or (at your option)
15 *  any later version.
16 *  
17 *  Pdsh is distributed in the hope that it will be useful, but WITHOUT ANY
18 *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
19 *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
20 *  details.
21 *  
22 *  You should have received a copy of the GNU General Public License along
23 *  with Pdsh; if not, write to the Free Software Foundation, Inc.,
24 *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
25\*****************************************************************************/
26
27#ifndef _XPOLL_H
28#define _XPOLL_H
29
30/* Input & Result events */
31#define  XPOLLREAD    0x0001   /* fd can be read */
32#define  XPOLLWRITE   0x0002   /* fd can be written to */
33
34/* Result only events */
35#define  XPOLLINVAL   0x0010   /* invalid fd passed in */
36#define  XPOLLERR     0x0020   /* error occurred on this fd */
37
38struct xpollfd {
39    int fd;          /* file descriptor to check */
40    short events;    /* events to check for */
41    short revents;   /* resulting events occuring on this fd */
42};
43
44/*
45 * xpoll()
46 * - Wrapper API around poll() and select().  
47 * 
48 * Input:
49 * xfds - pointer to array of xfds structures
50 * nfds - number of structures in xfds array
51 * timeout - timeout length to poll or select.
52 *    if timeout < 0  - poll infinitely
53 *    if timeout == 0 - return immediately
54 *    if timeout > 0  - poll this number of seconds
55 *
56 * Output:
57 * Number of file descriptors in which revents is modified.  On error,
58 * -1 is returned and errno set to the appropriate error
59 *
60 * Additional Notes:
61 * - Any invalid bits stored in events are ignored
62 * - revents is cleared before any revents are set
63 * - XPOLLINVAL and XPOLLERR are not mutually exclusive with
64 *   XPOLLREAD and XPOLLWRITE.  
65 */ 
66int xpoll(struct xpollfd *xfds, int nfds, int timeout);
67
68#endif /* _XPOLL_H */