/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. #ifndef _XPOLL_H
  27. #define _XPOLL_H
  28. /* Input & Result events */
  29. #define XPOLLREAD 0x0001 /* fd can be read */
  30. #define XPOLLWRITE 0x0002 /* fd can be written to */
  31. /* Result only events */
  32. #define XPOLLINVAL 0x0010 /* invalid fd passed in */
  33. #define XPOLLERR 0x0020 /* error occurred on this fd */
  34. struct xpollfd {
  35. int fd; /* file descriptor to check */
  36. short events; /* events to check for */
  37. short revents; /* resulting events occuring on this fd */
  38. };
  39. /*
  40. * xpoll()
  41. * - Wrapper API around poll() and select().
  42. *
  43. * Input:
  44. * xfds - pointer to array of xfds structures
  45. * nfds - number of structures in xfds array
  46. * timeout - timeout length to poll or select.
  47. * if timeout < 0 - poll infinitely
  48. * if timeout == 0 - return immediately
  49. * if timeout > 0 - poll this number of seconds
  50. *
  51. * Output:
  52. * Number of file descriptors in which revents is modified. On error,
  53. * -1 is returned and errno set to the appropriate error
  54. *
  55. * Additional Notes:
  56. * - Any invalid bits stored in events are ignored
  57. * - revents is cleared before any revents are set
  58. * - XPOLLINVAL and XPOLLERR are not mutually exclusive with
  59. * XPOLLREAD and XPOLLWRITE.
  60. */
  61. int xpoll(struct xpollfd *xfds, int nfds, int timeout);
  62. #endif /* _XPOLL_H */