ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/EV/EV.xs
(Generate patch)

Comparing EV/EV.xs (file contents):
Revision 1.146 by root, Sun Oct 24 20:05:43 2010 UTC vs.
Revision 1.152 by root, Thu Dec 30 07:43:03 2010 UTC

15 return s_fileno (fh, 0); 15 return s_fileno (fh, 0);
16} 16}
17 17
18#define EV_STANDALONE 1 18#define EV_STANDALONE 1
19#define EV_PROTOTYPES 1 19#define EV_PROTOTYPES 1
20#define EV_USE_CLOCK_SYSCALL 0 /* as long as we need pthreads anyways... */
20#define EV_USE_NANOSLEEP EV_USE_MONOTONIC 21#define EV_USE_NANOSLEEP EV_USE_MONOTONIC
21#define EV_H <ev.h> 22#define EV_H <ev.h>
22#define EV_CONFIG_H error 23#define EV_CONFIG_H error
23#include "EV/EVAPI.h" 24#include "EV/EVAPI.h"
24 25
208 209
209 if (expect_true (sv_events_cache)) 210 if (expect_true (sv_events_cache))
210 { 211 {
211 sv_events = sv_events_cache; sv_events_cache = 0; 212 sv_events = sv_events_cache; sv_events_cache = 0;
212 SvIV_set (sv_events, revents); 213 SvIV_set (sv_events, revents);
214 SvIOK_only (sv_events);
213 } 215 }
214 else 216 else
215 { 217 {
216 sv_events = newSViv (revents); 218 sv_events = newSViv (revents);
217 SvREADONLY_on (sv_events); 219 SvREADONLY_on (sv_events);
341 croak ("illegal file descriptor or filehandle (either no attached file descriptor or illegal value): %s", SvPV_nolen (fh)); 343 croak ("illegal file descriptor or filehandle (either no attached file descriptor or illegal value): %s", SvPV_nolen (fh));
342 344
343#define CHECK_SIG(sv,num) if ((num) < 0) \ 345#define CHECK_SIG(sv,num) if ((num) < 0) \
344 croak ("illegal signal number or name: %s", SvPV_nolen (sv)); 346 croak ("illegal signal number or name: %s", SvPV_nolen (sv));
345 347
348static void
349default_fork (void)
350{
351 ev_loop_fork (EV_DEFAULT_UC);
352}
353
346///////////////////////////////////////////////////////////////////////////// 354/////////////////////////////////////////////////////////////////////////////
347// XS interface functions 355// XS interface functions
348 356
349MODULE = EV PACKAGE = EV PREFIX = ev_ 357MODULE = EV PACKAGE = EV PREFIX = ev_
350 358
365 const_iv (EV_, UNDEF) 373 const_iv (EV_, UNDEF)
366 const_iv (EV_, NONE) 374 const_iv (EV_, NONE)
367 const_iv (EV_, READ) 375 const_iv (EV_, READ)
368 const_iv (EV_, WRITE) 376 const_iv (EV_, WRITE)
369 const_iv (EV_, IO) 377 const_iv (EV_, IO)
370 const_iv (EV_, TIMEOUT) 378 const_iv (EV_, TIMER)
371 const_iv (EV_, PERIODIC) 379 const_iv (EV_, PERIODIC)
372 const_iv (EV_, SIGNAL) 380 const_iv (EV_, SIGNAL)
373 const_iv (EV_, CHILD) 381 const_iv (EV_, CHILD)
374 const_iv (EV_, STAT) 382 const_iv (EV_, STAT)
375 const_iv (EV_, IDLE) 383 const_iv (EV_, IDLE)
397 const_iv (EV, BACKEND_ALL) 405 const_iv (EV, BACKEND_ALL)
398 const_iv (EV, FLAG_AUTO) 406 const_iv (EV, FLAG_AUTO)
399 const_iv (EV, FLAG_FORKCHECK) 407 const_iv (EV, FLAG_FORKCHECK)
400 const_iv (EV, FLAG_SIGNALFD) 408 const_iv (EV, FLAG_SIGNALFD)
401 const_iv (EV, FLAG_NOENV) 409 const_iv (EV, FLAG_NOENV)
402 const_iv (EV, FLAG_NOSIGFD) /* compatibility, always 0 */
403 const_iv (EV, FLAG_NOINOTIFY) 410 const_iv (EV, FLAG_NOINOTIFY)
404 411
405 const_iv (EV_, VERSION_MAJOR) 412 const_iv (EV_, VERSION_MAJOR)
406 const_iv (EV_, VERSION_MINOR) 413 const_iv (EV_, VERSION_MINOR)
407#if EV_COMPAT3 414#if EV_COMPAT3
415 const_iv (EV, FLAG_NOSIGFD) /* compatibility, always 0 */
408 const_iv (EV_, TIMER) 416 const_iv (EV_, TIMEOUT)
409
410 const_iv (EV, LOOP_NONBLOCK) 417 const_iv (EV, LOOP_NONBLOCK)
411 const_iv (EV, LOOP_ONESHOT) 418 const_iv (EV, LOOP_ONESHOT)
412
413 const_iv (EV, UNLOOP_CANCEL) 419 const_iv (EV, UNLOOP_CANCEL)
414 const_iv (EV, UNLOOP_ONE) 420 const_iv (EV, UNLOOP_ONE)
415 const_iv (EV, UNLOOP_ALL) 421 const_iv (EV, UNLOOP_ALL)
416#endif 422#endif
417 }; 423 };
509 515
510 sv_setiv (sv, (IV)&evapi); 516 sv_setiv (sv, (IV)&evapi);
511 SvREADONLY_on (sv); 517 SvREADONLY_on (sv);
512 } 518 }
513#if !defined(_WIN32) && !defined(_MINIX) 519#if !defined(_WIN32) && !defined(_MINIX)
514 pthread_atfork (0, 0, ev_default_fork); 520 pthread_atfork (0, 0, default_fork);
515#endif 521#endif
516} 522}
517 523
518SV *ev_default_loop (unsigned int flags = 0) 524SV *ev_default_loop (unsigned int flags = 0)
519 CODE: 525 CODE:
754 ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval); 760 ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval);
755 if (!ix) START (stat, RETVAL); 761 if (!ix) START (stat, RETVAL);
756 OUTPUT: 762 OUTPUT:
757 RETVAL 763 RETVAL
758 764
765#ifndef EV_NO_LOOPS
766
759ev_embed *embed (struct ev_loop *loop, SV *cb = 0) 767ev_embed *embed (struct ev_loop *loop, SV *cb = 0)
760 ALIAS: 768 ALIAS:
761 embed_ns = 1 769 embed_ns = 1
762 CODE: 770 CODE:
763{ 771{
769 ev_embed_set (RETVAL, loop); 777 ev_embed_set (RETVAL, loop);
770 if (!ix) START (embed, RETVAL); 778 if (!ix) START (embed, RETVAL);
771} 779}
772 OUTPUT: 780 OUTPUT:
773 RETVAL 781 RETVAL
782
783#endif
774 784
775ev_async *async (SV *cb) 785ev_async *async (SV *cb)
776 ALIAS: 786 ALIAS:
777 async_ns = 1 787 async_ns = 1
778 CODE: 788 CODE:
1321 CODE: 1331 CODE:
1322 RETVAL = boolSV (ev_async_pending (w)); 1332 RETVAL = boolSV (ev_async_pending (w));
1323 OUTPUT: 1333 OUTPUT:
1324 RETVAL 1334 RETVAL
1325 1335
1336#ifndef EV_NO_LOOPS
1337
1326MODULE = EV PACKAGE = EV::Loop PREFIX = ev_ 1338MODULE = EV PACKAGE = EV::Loop PREFIX = ev_
1327 1339
1328SV *new (SV *klass, unsigned int flags = 0) 1340SV *new (SV *klass, unsigned int flags = 0)
1329 CODE: 1341 CODE:
1330{ 1342{
1569 SvOK (timeout) ? SvNV (timeout) : -1., 1581 SvOK (timeout) ? SvNV (timeout) : -1.,
1570 e_once_cb, 1582 e_once_cb,
1571 newSVsv (cb) 1583 newSVsv (cb)
1572 ); 1584 );
1573 1585
1586#endif
1587

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines