POSIX-RT-Timer

 view release on metacpan or  search on metacpan

lib/POSIX/RT/Timer.xs  view on Meta::CPAN


UV handle(POSIX::RT::Timer timer)
	CODE:
		RETVAL = (UV)timer;
	OUTPUT:
		RETVAL

void get_timeout(POSIX::RT::Timer timer)
	PREINIT:
		struct itimerspec value;
	PPCODE:
		if (timer_gettime(timer, &value) == -1)
			die_sys("Couldn't get_time: %s");
		mXPUSHn(timespec_to_nv(&value.it_value));
		if (GIMME_V == G_ARRAY)
			mXPUSHn(timespec_to_nv(&value.it_interval));

void set_timeout(POSIX::RT::Timer timer, struct timespec new_value, struct timespec new_interval = no_time, bool abstime = FALSE)
	PREINIT:
		struct itimerspec old_itimer;
	PPCODE:
		struct itimerspec new_itimer = { new_value, new_interval };
		if (timer_settime(timer, (abstime ? TIMER_ABSTIME : 0), &new_itimer, &old_itimer) == -1)
			die_sys("Couldn't set_time: %s");
		mXPUSHn(timespec_to_nv(&old_itimer.it_value));
		if (GIMME_V == G_ARRAY)
			mXPUSHn(timespec_to_nv(&old_itimer.it_interval));

IV get_overrun(POSIX::RT::Timer timer)
	CODE:
		RETVAL = timer_getoverrun(timer);

lib/POSIX/RT/Timer.xs  view on Meta::CPAN

		}
	OUTPUT:
		RETVAL

#endif

void get_clocks(...)
	PREINIT:
		size_t i;
		const size_t max = sizeof clocks / sizeof *clocks;
	PPCODE:
		for (i = 0; i < max; ++i)
			mXPUSHp(clocks[i].key, clocks[i].key_length);
		PUTBACK;

struct timespec get_time(POSIX::RT::Clock clockid)
	CODE:
		if (clock_gettime(clockid, &RETVAL) == -1)
			die_sys("Couldn't get time: %s");
	OUTPUT:
		RETVAL



( run in 0.466 second using v1.01-cache-2.11-cpan-5511b514fd6 )