Hi,
I just have a longish debugging session behind me finding out why a process is
doing so many poll()s without doing real work.
But this only happens on AIX.
It turns out that the timercmp macro in combination with <= operator does not
work. (used in event.c in libevent-1.4.2-rc2)
This is the definition on AIX:
/*
* Operations on timevals.
*
* Note that timercmp only works for cmp values of !=, >, and <.
*/
...
#define timercmp(tvp, fvp, cmp) \
((tvp)->tv_sec cmp (fvp)->tv_sec || \
(tvp)->tv_sec == (fvp)->tv_sec && \
(tvp)->tv_usec cmp (fvp)->tv_usec)
-------------
Here the definition of timercmp on Linux:
/* Convenience macros for operations on timevals.
NOTE: `timercmp' does not work for >= or <=. */
...
# define timercmp(a, b, CMP) \
(((a)->tv_sec == (b)->tv_sec) ? \
((a)->tv_usec CMP (b)->tv_usec) : \
((a)->tv_sec CMP (b)->tv_sec))
Note that the Linux definition has the same comment about the compare operator
as the AIX one. But the comment seems to predate the Linux definition.
I found no official documentation if timercmp should support <= or >=.
I would suggest using always the libevent definition of timercmp, without ever
using the system one.
Jörg
_______________________________________________
Libevent-users mailing list
[email protected]
http://monkeymail.org/mailman/listinfo/libevent-users