apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tollef Fog Heen <tfh...@err.no>
Subject Run-time selection of poll implementation
Date Sat, 14 Oct 2006 19:04:34 GMT


Hi,

Currently, apr chooses whether to use epoll, kqueue, port, select or
poll at build-time.  This works quite well if your apr library is only
used on hosts with the same capabilities as the one you built on.
However, if you build on Linux 2.6 and try to use the binaries on
Linux 2.4, they don't work (due to the epoll interface not existing on
2.4).  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=392373 is an
example bug report which shows the problem

To work around this, I have written a patch that does the selection at
runtime.  It has a small performance overhead (a function call and a
switch/case statement).  The alternative is to use function pointers
(initialised from apr_initialize), but this will break the ABI as well
as probably not being faster than a wrapper function.

I have no experience with kqueue and port-based systems, so this patch
may or may not work on platforms using those interfaces.  I have tried
to write sensible implementations, but they are untested and probably
require some changes.  I have not checked whether this is applicable
to OS/2 as well, but I don't think it is.

http://err.no/patches/apr_runtime_detection_poll.diff is a diff
against current SVN.  The same patch is attached.

Feedback, positive or negative, is appreciated.
-- 
Tollef Fog Heen                                                        ,''`.
UNIX is user friendly, it's just picky about who its friends are      : :' :
                                                                      `. `' 
                                                                        `-  

Mime
View raw message