EV::MakeMaker(3) User Contributed Perl Documentation EV::MakeMaker(3) NAME EV::MakeMaker - MakeMaker glue for the C-level EV API SYNOPSIS This allows you to access some libevent functionality from other perl modules. DESCRIPTION For optimal performance, hook into EV at the C-level. You'll need to make changes to your "Makefile.PL", load "EV" in your "pm" file and add code to your "xs" / "c" file(s). HOW TO Makefile.PL use EV::MakeMaker qw(ev_args); # ... set up %args ... WriteMakefile (ev_args (%args)); extension.pm use EV (); # imports optional extension.xs #include "EVAPI.h" [...] BOOT: I_EV_API (HvNAME (GvSTASH (CvGV (cv)))); API See the EVAPI.h header, which you should include instead of ev.h. In short, all the functions and macros from ev.h should work, except that the trailing underscore macros ("EV_A_", "EV_DEFAULT_") are not available (except "EV_P_" :). Multiplicity is enabled. The "data" member in each watcher is of type "SV *" and not "void *" (this might change at some point). EXAMPLE The EV::Glib, EV::ADNS and Glib::EV modules all give nice examples on how to use this module. Here are some .xs fragments taken from EV::ADNS that should get you going: #include "EVAPI.h" static ev_prepare pw; static ev_idle iw; static void idle_cb (EV_P_ ev_idle *w, int revents) { ev_idle_stop (EV_A, w); } MODULE = ... BOOT: { I_EV_API ("EV::ADNS"); ev_prepare_init (&pw, prepare_cb); ev_init (&iw, idle_cb); ev_set_priority (&iw, EV_MINPRI); ev_idle_start (EV_DEFAULT, &iw); } perl v5.38.0 2023-10-15 EV::MakeMaker(3)