res/res_timing_kqueue: Update the module to conform to current timer API
authorMatthew Jordan <mjordan@digium.com>
Fri, 27 Mar 2015 14:41:46 +0000 (14:41 +0000)
committerMatthew Jordan <mjordan@digium.com>
Fri, 27 Mar 2015 14:41:46 +0000 (14:41 +0000)
commita024af1156cb39f4f861ded8c7c59a3ce9bfe507
tree055bc2b521ecd522ec6b4a0a061cfcee6a56be00
parent10458d2878334557318d8596f3eb2ac2d0173ef7
res/res_timing_kqueue: Update the module to conform to current timer API

This patch updates 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. These issues include:

- 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.

Review: https://reviewboard.asterisk.org/r/4465/

ASTERISK-24857 #close
Reported by: scsiguy
Tested by: Ed Hynan
patches:
  rb4465.patch submitted by scsiguy (License 6692)
........

Merged revisions 433574 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@433575 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_timing_kqueue.c