ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev_select.c
(Generate patch)

Comparing libev/ev_select.c (file contents):
Revision 1.50 by root, Sun Jan 30 19:05:41 2011 UTC vs.
Revision 1.54 by root, Fri Jun 3 00:04:52 2011 UTC

1/* 1/*
2 * libev select fd activity backend 2 * libev select fd activity backend
3 * 3 *
4 * Copyright (c) 2007,2008,2009,2010 Marc Alexander Lehmann <libev@schmorp.de> 4 * Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de>
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without modifica- 7 * Redistribution and use in source and binary forms, with or without modifica-
8 * tion, are permitted provided that the following conditions are met: 8 * tion, are permitted provided that the following conditions are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright notice, 10 * 1. Redistributions of source code must retain the above copyright notice,
11 * this list of conditions and the following disclaimer. 11 * this list of conditions and the following disclaimer.
12 * 12 *
13 * 2. Redistributions in binary form must reproduce the above copyright 13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the 14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution. 15 * documentation and/or other materials provided with the distribution.
16 * 16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- 18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
19 * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19 * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- 20 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
21 * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
40#ifndef _WIN32 40#ifndef _WIN32
41/* for unix systems */ 41/* for unix systems */
42# include <inttypes.h> 42# include <inttypes.h>
43# ifndef __hpux 43# ifndef __hpux
44/* for REAL unix systems */ 44/* for REAL unix systems */
45# include <sys/select.h> 45# include <sys/select.h>
46# endif 46# endif
47#endif 47#endif
48 48
49#ifndef EV_SELECT_USE_FD_SET 49#ifndef EV_SELECT_USE_FD_SET
50# ifdef NFDBITS 50# ifdef NFDBITS
193 * we also get EINVAL when the timeout is invalid, but we ignore this case here 193 * we also get EINVAL when the timeout is invalid, but we ignore this case here
194 * and assume that EINVAL always means: you have to wait manually. 194 * and assume that EINVAL always means: you have to wait manually.
195 */ 195 */
196 if (errno == EINVAL) 196 if (errno == EINVAL)
197 { 197 {
198 ev_sleep (timeout); 198 if (timeout)
199 {
200 unsigned long ms = timeout * 1e3;
201 Sleep (ms ? ms : 1);
202 }
203
199 return; 204 return;
200 } 205 }
201 #endif 206 #endif
202 207
203 if (errno == EBADF) 208 if (errno == EBADF)
267} 272}
268 273
269int inline_size 274int inline_size
270select_init (EV_P_ int flags) 275select_init (EV_P_ int flags)
271{ 276{
272 backend_fudge = 0.; /* posix says this is zero */ 277 backend_fudge = 1e-6;
273 backend_modify = select_modify; 278 backend_modify = select_modify;
274 backend_poll = select_poll; 279 backend_poll = select_poll;
275 280
276#if EV_SELECT_USE_FD_SET 281#if EV_SELECT_USE_FD_SET
277 vec_ri = ev_malloc (sizeof (fd_set)); FD_ZERO ((fd_set *)vec_ri); 282 vec_ri = ev_malloc (sizeof (fd_set)); FD_ZERO ((fd_set *)vec_ri);
281 #ifdef _WIN32 286 #ifdef _WIN32
282 vec_eo = ev_malloc (sizeof (fd_set)); 287 vec_eo = ev_malloc (sizeof (fd_set));
283 #endif 288 #endif
284#else 289#else
285 vec_max = 0; 290 vec_max = 0;
286 vec_ri = 0; 291 vec_ri = 0;
287 vec_ro = 0; 292 vec_ro = 0;
288 vec_wi = 0; 293 vec_wi = 0;
289 vec_wo = 0; 294 vec_wo = 0;
290 #ifdef _WIN32 295 #ifdef _WIN32
291 vec_eo = 0; 296 vec_eo = 0;
292 #endif 297 #endif
293#endif 298#endif
294 299
305 #ifdef _WIN32 310 #ifdef _WIN32
306 ev_free (vec_eo); 311 ev_free (vec_eo);
307 #endif 312 #endif
308} 313}
309 314
310

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines