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.154 by root, Tue Jan 11 02:31:24 2011 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)
393 const_iv (EV, BACKEND_EPOLL) 401 const_iv (EV, BACKEND_EPOLL)
394 const_iv (EV, BACKEND_KQUEUE) 402 const_iv (EV, BACKEND_KQUEUE)
395 const_iv (EV, BACKEND_DEVPOLL) 403 const_iv (EV, BACKEND_DEVPOLL)
396 const_iv (EV, BACKEND_PORT) 404 const_iv (EV, BACKEND_PORT)
397 const_iv (EV, BACKEND_ALL) 405 const_iv (EV, BACKEND_ALL)
406 const_iv (EV, BACKEND_MASK)
398 const_iv (EV, FLAG_AUTO) 407 const_iv (EV, FLAG_AUTO)
399 const_iv (EV, FLAG_FORKCHECK) 408 const_iv (EV, FLAG_FORKCHECK)
400 const_iv (EV, FLAG_SIGNALFD) 409 const_iv (EV, FLAG_SIGNALFD)
410 const_iv (EV, FLAG_NOSIGMASK)
401 const_iv (EV, FLAG_NOENV) 411 const_iv (EV, FLAG_NOENV)
402 const_iv (EV, FLAG_NOSIGFD) /* compatibility, always 0 */
403 const_iv (EV, FLAG_NOINOTIFY) 412 const_iv (EV, FLAG_NOINOTIFY)
404 413
405 const_iv (EV_, VERSION_MAJOR) 414 const_iv (EV_, VERSION_MAJOR)
406 const_iv (EV_, VERSION_MINOR) 415 const_iv (EV_, VERSION_MINOR)
407#if EV_COMPAT3 416#if EV_COMPAT3
417 const_iv (EV, FLAG_NOSIGFD) /* compatibility, always 0 */
408 const_iv (EV_, TIMER) 418 const_iv (EV_, TIMEOUT)
409
410 const_iv (EV, LOOP_NONBLOCK) 419 const_iv (EV, LOOP_NONBLOCK)
411 const_iv (EV, LOOP_ONESHOT) 420 const_iv (EV, LOOP_ONESHOT)
412
413 const_iv (EV, UNLOOP_CANCEL) 421 const_iv (EV, UNLOOP_CANCEL)
414 const_iv (EV, UNLOOP_ONE) 422 const_iv (EV, UNLOOP_ONE)
415 const_iv (EV, UNLOOP_ALL) 423 const_iv (EV, UNLOOP_ALL)
416#endif 424#endif
417 }; 425 };
509 517
510 sv_setiv (sv, (IV)&evapi); 518 sv_setiv (sv, (IV)&evapi);
511 SvREADONLY_on (sv); 519 SvREADONLY_on (sv);
512 } 520 }
513#if !defined(_WIN32) && !defined(_MINIX) 521#if !defined(_WIN32) && !defined(_MINIX)
514 pthread_atfork (0, 0, ev_default_fork); 522 pthread_atfork (0, 0, default_fork);
515#endif 523#endif
516} 524}
517 525
518SV *ev_default_loop (unsigned int flags = 0) 526SV *ev_default_loop (unsigned int flags = 0)
519 CODE: 527 CODE:
546unsigned int ev_embeddable_backends () 554unsigned int ev_embeddable_backends ()
547 555
548void ev_sleep (NV interval) 556void ev_sleep (NV interval)
549 557
550NV ev_time () 558NV ev_time ()
559
560void ev_feed_signal (SV *signal)
561 CODE:
562{
563 Signal signum = s_signum (signal);
564 CHECK_SIG (signal, signum);
565
566 ev_feed_signal (signum);
567}
551 568
552NV ev_now () 569NV ev_now ()
553 C_ARGS: evapi.default_loop 570 C_ARGS: evapi.default_loop
554 571
555void ev_now_update () 572void ev_now_update ()
754 ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval); 771 ev_stat_set (RETVAL, SvPVbyte_nolen (e_fh (RETVAL)), interval);
755 if (!ix) START (stat, RETVAL); 772 if (!ix) START (stat, RETVAL);
756 OUTPUT: 773 OUTPUT:
757 RETVAL 774 RETVAL
758 775
776#ifndef EV_NO_LOOPS
777
759ev_embed *embed (struct ev_loop *loop, SV *cb = 0) 778ev_embed *embed (struct ev_loop *loop, SV *cb = 0)
760 ALIAS: 779 ALIAS:
761 embed_ns = 1 780 embed_ns = 1
762 CODE: 781 CODE:
763{ 782{
769 ev_embed_set (RETVAL, loop); 788 ev_embed_set (RETVAL, loop);
770 if (!ix) START (embed, RETVAL); 789 if (!ix) START (embed, RETVAL);
771} 790}
772 OUTPUT: 791 OUTPUT:
773 RETVAL 792 RETVAL
793
794#endif
774 795
775ev_async *async (SV *cb) 796ev_async *async (SV *cb)
776 ALIAS: 797 ALIAS:
777 async_ns = 1 798 async_ns = 1
778 CODE: 799 CODE:
1321 CODE: 1342 CODE:
1322 RETVAL = boolSV (ev_async_pending (w)); 1343 RETVAL = boolSV (ev_async_pending (w));
1323 OUTPUT: 1344 OUTPUT:
1324 RETVAL 1345 RETVAL
1325 1346
1347#ifndef EV_NO_LOOPS
1348
1326MODULE = EV PACKAGE = EV::Loop PREFIX = ev_ 1349MODULE = EV PACKAGE = EV::Loop PREFIX = ev_
1327 1350
1328SV *new (SV *klass, unsigned int flags = 0) 1351SV *new (SV *klass, unsigned int flags = 0)
1329 CODE: 1352 CODE:
1330{ 1353{
1569 SvOK (timeout) ? SvNV (timeout) : -1., 1592 SvOK (timeout) ? SvNV (timeout) : -1.,
1570 e_once_cb, 1593 e_once_cb,
1571 newSVsv (cb) 1594 newSVsv (cb)
1572 ); 1595 );
1573 1596
1597#endif
1598

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines