[asterisk-dev] [Code Review] 4465: Update the kqueue timing module to conform to current timer API.
Justin T. Gibbs
reviewboard at asterisk.org
Wed Mar 18 11:43:36 CDT 2015
> On March 16, 2015, 3:18 a.m., Matt Jordan wrote:
> > /trunk/res/res_timing_kqueue.c, lines 76-83
> > <https://reviewboard.asterisk.org/r/4465/diff/2/?file=72098#file72098line76>
> >
> > For structure packing, you may want to declare this as:
> >
> > struct kqueue_timer {
> > int handle;
> > intptr_t period;
> > #ifndef EVFILT_USER
> > int continuous_fd;
> > unsigned int contuous_fd_valid:1;
> > #endif
> > unsigned int is_continuous:1;
> > }
I suppose the spec may allow it to be smaller, but sizeof(intptr_t) is typically >= sizeof(int).
- Justin
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/4465/#review14696
-----------------------------------------------------------
On March 13, 2015, 2:07 a.m., Justin T. Gibbs wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/4465/
> -----------------------------------------------------------
>
> (Updated March 13, 2015, 2:07 a.m.)
>
>
> Review request for Asterisk Developers.
>
>
> Bugs: ASTERISK-24857
> https://issues.asterisk.org/jira/browse/ASTERISK-24857
>
>
> Repository: Asterisk
>
>
> Description
> -------
>
> Update the kqueue timing module to conform to current timer API.
>
> This fixes issues with using the kqueue timing source on Asterisk 13
> on FreeBSD 10.
>
> res_timing_kqueue.c:
> Remove support for kevent64(). The values used to support Asterisk
> timers fit within 32bits and so can be handled on all platforms via
> kevent().
>
> Provide debug logging for, but do not track, unacked events. This
> matches the behavior of all other timer implementations.
>
> Implement continuous mode by triggering and leaving active, a user
> event. This ensures that the file descriptor for the timer returns
> immediately from poll(), without placing the load of a high speed
> timer on the kernel.
>
> In kqueue_timer_get_max_rate(), don't overstate the capability of
> the timer. On some platforms, UINT_MAX is greater than INTPTR_MAX,
> the largest integer type kqueue supports for timers.
>
> In kqueue_timer_get_event(), assume the caller woke up from poll()
> and just return the mode the timer is currently in. This matches
> all other timer implementations.
>
> Adjust the test code now that unacked events are not tracked.
>
>
> Diffs
> -----
>
> /trunk/res/res_timing_kqueue.c 432637
>
> Diff: https://reviewboard.asterisk.org/r/4465/diff/
>
>
> Testing
> -------
>
> Asterisk 13.2.0 on FreeBSD 10-stable: "timing test", pjsip incoming/outgoing calls, voicemail prompts and recordings. All of the above failed without these changes.
>
>
> Thanks,
>
> Justin T. Gibbs
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20150318/77128fd4/attachment-0001.html>
More information about the asterisk-dev
mailing list