Mirror of :pserver:anonymous@cvs.schmorp.de/schmorpforge libev http://software.schmorp.de/pkg/libev.html
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4579 lines
206 KiB

12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
12 years ago
12 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
13 years ago
14 years ago
13 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
14 years ago
13 years ago
13 years ago
13 years ago
14 years ago
14 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
14 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
14 years ago
13 years ago
12 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
13 years ago
12 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
12 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
14 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
13 years ago
14 years ago
14 years ago
13 years ago
13 years ago
12 years ago
14 years ago
12 years ago
14 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
14 years ago
14 years ago
14 years ago
12 years ago
14 years ago
12 years ago
14 years ago
12 years ago
14 years ago
14 years ago
14 years ago
14 years ago
13 years ago
14 years ago
14 years ago
14 years ago
13 years ago
14 years ago
14 years ago
14 years ago
14 years ago
14 years ago
12 years ago
14 years ago
14 years ago
14 years ago
14 years ago
13 years ago
14 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
14 years ago
14 years ago
12 years ago
14 years ago
14 years ago
12 years ago
14 years ago
14 years ago
12 years ago
14 years ago
12 years ago
14 years ago
14 years ago
14 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
14 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
12 years ago
13 years ago
12 years ago
12 years ago
12 years ago
12 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
13 years ago
12 years ago
13 years ago
  1. .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
  2. .\"
  3. .\" Standard preamble:
  4. .\" ========================================================================
  5. .de Sp \" Vertical space (when we can't use .PP)
  6. .if t .sp .5v
  7. .if n .sp
  8. ..
  9. .de Vb \" Begin verbatim text
  10. .ft CW
  11. .nf
  12. .ne \\$1
  13. ..
  14. .de Ve \" End verbatim text
  15. .ft R
  16. .fi
  17. ..
  18. .\" Set up some character translations and predefined strings. \*(-- will
  19. .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
  20. .\" double quote, and \*(R" will give a right double quote. \*(C+ will
  21. .\" give a nicer C++. Capital omega is used to do unbreakable dashes and
  22. .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
  23. .\" nothing in troff, for use with C<>.
  24. .tr \(*W-
  25. .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
  26. .ie n \{\
  27. . ds -- \(*W-
  28. . ds PI pi
  29. . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
  30. . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
  31. . ds L" ""
  32. . ds R" ""
  33. . ds C` ""
  34. . ds C' ""
  35. 'br\}
  36. .el\{\
  37. . ds -- \|\(em\|
  38. . ds PI \(*p
  39. . ds L" ``
  40. . ds R" ''
  41. 'br\}
  42. .\"
  43. .\" Escape single quotes in literal strings from groff's Unicode transform.
  44. .ie \n(.g .ds Aq \(aq
  45. .el .ds Aq '
  46. .\"
  47. .\" If the F register is turned on, we'll generate index entries on stderr for
  48. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  49. .\" entries marked with X<> in POD. Of course, you'll have to process the
  50. .\" output yourself in some meaningful fashion.
  51. .ie \nF \{\
  52. . de IX
  53. . tm Index:\\$1\t\\n%\t"\\$2"
  54. ..
  55. . nr % 0
  56. . rr F
  57. .\}
  58. .el \{\
  59. . de IX
  60. ..
  61. .\}
  62. .\"
  63. .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
  64. .\" Fear. Run. Save yourself. No user-serviceable parts.
  65. . \" fudge factors for nroff and troff
  66. .if n \{\
  67. . ds #H 0
  68. . ds #V .8m
  69. . ds #F .3m
  70. . ds #[ \f1
  71. . ds #] \fP
  72. .\}
  73. .if t \{\
  74. . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
  75. . ds #V .6m
  76. . ds #F 0
  77. . ds #[ \&
  78. . ds #] \&
  79. .\}
  80. . \" simple accents for nroff and troff
  81. .if n \{\
  82. . ds ' \&
  83. . ds ` \&
  84. . ds ^ \&
  85. . ds , \&
  86. . ds ~ ~
  87. . ds /
  88. .\}
  89. .if t \{\
  90. . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
  91. . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
  92. . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
  93. . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
  94. . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
  95. . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
  96. .\}
  97. . \" troff and (daisy-wheel) nroff accents
  98. .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
  99. .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
  100. .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
  101. .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
  102. .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
  103. .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
  104. .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
  105. .ds ae a\h'-(\w'a'u*4/10)'e
  106. .ds Ae A\h'-(\w'A'u*4/10)'E
  107. . \" corrections for vroff
  108. .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
  109. .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
  110. . \" for low resolution devices (crt and lpr)
  111. .if \n(.H>23 .if \n(.V>19 \
  112. \{\
  113. . ds : e
  114. . ds 8 ss
  115. . ds o a
  116. . ds d- d\h'-1'\(ga
  117. . ds D- D\h'-1'\(hy
  118. . ds th \o'bp'
  119. . ds Th \o'LP'
  120. . ds ae ae
  121. . ds Ae AE
  122. .\}
  123. .rm #[ #] #H #V #F C
  124. .\" ========================================================================
  125. .\"
  126. .IX Title "LIBEV 3"
  127. .TH LIBEV 3 "2009-07-15" "libev-3.7" "libev - high performance full featured event loop"
  128. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  129. .\" way too many mistakes in technical documents.
  130. .if n .ad l
  131. .nh
  132. .SH "NAME"
  133. libev \- a high performance full\-featured event loop written in C
  134. .SH "SYNOPSIS"
  135. .IX Header "SYNOPSIS"
  136. .Vb 1
  137. \& #include <ev.h>
  138. .Ve
  139. .SS "\s-1EXAMPLE\s0 \s-1PROGRAM\s0"
  140. .IX Subsection "EXAMPLE PROGRAM"
  141. .Vb 2
  142. \& // a single header file is required
  143. \& #include <ev.h>
  144. \&
  145. \& #include <stdio.h> // for puts
  146. \&
  147. \& // every watcher type has its own typedef\*(Aqd struct
  148. \& // with the name ev_TYPE
  149. \& ev_io stdin_watcher;
  150. \& ev_timer timeout_watcher;
  151. \&
  152. \& // all watcher callbacks have a similar signature
  153. \& // this callback is called when data is readable on stdin
  154. \& static void
  155. \& stdin_cb (EV_P_ ev_io *w, int revents)
  156. \& {
  157. \& puts ("stdin ready");
  158. \& // for one\-shot events, one must manually stop the watcher
  159. \& // with its corresponding stop function.
  160. \& ev_io_stop (EV_A_ w);
  161. \&
  162. \& // this causes all nested ev_loop\*(Aqs to stop iterating
  163. \& ev_unloop (EV_A_ EVUNLOOP_ALL);
  164. \& }
  165. \&
  166. \& // another callback, this time for a time\-out
  167. \& static void
  168. \& timeout_cb (EV_P_ ev_timer *w, int revents)
  169. \& {
  170. \& puts ("timeout");
  171. \& // this causes the innermost ev_loop to stop iterating
  172. \& ev_unloop (EV_A_ EVUNLOOP_ONE);
  173. \& }
  174. \&
  175. \& int
  176. \& main (void)
  177. \& {
  178. \& // use the default event loop unless you have special needs
  179. \& struct ev_loop *loop = ev_default_loop (0);
  180. \&
  181. \& // initialise an io watcher, then start it
  182. \& // this one will watch for stdin to become readable
  183. \& ev_io_init (&stdin_watcher, stdin_cb, /*STDIN_FILENO*/ 0, EV_READ);
  184. \& ev_io_start (loop, &stdin_watcher);
  185. \&
  186. \& // initialise a timer watcher, then start it
  187. \& // simple non\-repeating 5.5 second timeout
  188. \& ev_timer_init (&timeout_watcher, timeout_cb, 5.5, 0.);
  189. \& ev_timer_start (loop, &timeout_watcher);
  190. \&
  191. \& // now wait for events to arrive
  192. \& ev_loop (loop, 0);
  193. \&
  194. \& // unloop was called, so exit
  195. \& return 0;
  196. \& }
  197. .Ve
  198. .SH "ABOUT THIS DOCUMENT"
  199. .IX Header "ABOUT THIS DOCUMENT"
  200. This document documents the libev software package.
  201. .PP
  202. The newest version of this document is also available as an html-formatted
  203. web page you might find easier to navigate when reading it for the first
  204. time: <http://pod.tst.eu/http://cvs.schmorp.de/libev/ev.pod>.
  205. .PP
  206. While this document tries to be as complete as possible in documenting
  207. libev, its usage and the rationale behind its design, it is not a tutorial
  208. on event-based programming, nor will it introduce event-based programming
  209. with libev.
  210. .PP
  211. Familarity with event based programming techniques in general is assumed
  212. throughout this document.
  213. .SH "ABOUT LIBEV"
  214. .IX Header "ABOUT LIBEV"
  215. Libev is an event loop: you register interest in certain events (such as a
  216. file descriptor being readable or a timeout occurring), and it will manage
  217. these event sources and provide your program with events.
  218. .PP
  219. To do this, it must take more or less complete control over your process
  220. (or thread) by executing the \fIevent loop\fR handler, and will then