etc/comp_channel: fix lost event problem
authorshefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 23 Apr 2009 19:25:04 +0000 (19:25 +0000)
committershefty <shefty@ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86>
Thu, 23 Apr 2009 19:25:04 +0000 (19:25 +0000)
commit8c7a1afe1f735b71be1e6676adb83a58ae77b45c
tree33d21eea7972af760d489708f1a125a95bb6d0c5
parente18f3529114ef75497d1ba995c75e499dbf617af
etc/comp_channel: fix lost event problem

The previous version of the completion channel was racy and would
occasionally lose events, resulting in users blocking indefinitely
if no new events occurred.  The most sure fix for this is to add
a thread to the completion manager that reaps events from an IO
completion port and dispatches them to the correct completion
channel.  This results in a 1-2% performance hit in libibverbs
bandwidth tests that wait on CQ, but actually works.

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
git-svn-id: svn://openib.tc.cornell.edu/gen1/trunk@2127 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86
etc/user/comp_channel.cpp
inc/user/comp_channel.h