[Libevent-users] Possible configure changes for epoll

Rolf Vandevaart Rolf.Vandevaart at Sun.COM
Mon Jun 2 15:04:21 EDT 2008


Hello:

We embed libevent in the Open MPI project; long ago, we folded 
libevent's configure m4 code into our own configure code.  Over time, we 
tweaked the libevent m4 code for our own purposes as we ran into 
compatibility issues, etc.  We're submitting these changes to you in the 
hopes that they will be useful.  Feel free to use them or disregard them.

We've changed the form of the original m4 so that it's not directly 
[re-]importable to libevent, but perhaps the code can be copied and 
morphed back into your configure.in.  Here's a link to our current 
revision of the libevent-specific m4 in our configure system:

https://svn.open-mpi.org/trac/ompi/browser/trunk/config/ompi_setup_libevent.m4

Here's a list of the changes that we have made that you might care about 
(there are other changes, too, but I doubt you'll care/want them):

1. Checking for epoll_ctl with AC_CHECK_FUNCS is unfortunately not 
sufficient on some older Linux kernels (e.g., whatever was in Fedora 9) 
because although the function exists and is linkable, it's hardwired to 
return ENOSYS.  So if AC_CHECK_FUNCS with epoll reports that the 
function exists, we also run a short program to ensure that epoll 
actually works.  Doesn't work with cross-compiling, of course.

2. The Sun Studio 12 compilers on Linux currently don't properly support 
the "packed" attribute.  As such, (struct epoll_event) generated by Sun 
Studio 12 on 64 bit architectures will not match the same memory layout 
as in the Linux kernel.  Badness ensues.  In conjunction with #1, our 
test  that checks whether epoll works will also fail if the packed-ness 
of (struct epoll_event) doesn't match between the user application and 
the kernel.  Specifically: the test passes with Sun Studio 12 32-bit 
builds, but fails with Sun Studio 12 64-bit builds (exactly as it should).

We extended the #1 and #2 tests into the syscall test for epoll as well.

--> Including tests #2 and #3 would be most helpful to Sun, because it 
   makes libevent compilable by the Sun Studio 12 compilers on Linux.

4. All versions of OS X kqueue up to and including 10.5.3 are broken 
when used with pty's.  We therefore disable kqueue on OS X because Open 
MPI uses libevent with pty's.  I don't think you want this in the 
general case, but perhaps this a useful datapoint for you.

That's it.  Thanks for all your hard work on libevent.

Rolf



-- 

=========================
rolf.vandevaart at sun.com
781-442-3043
=========================


More information about the Libevent-users mailing list