Commit Graph

467 Commits

Author SHA1 Message Date
mheily
2aff28d85a Various fixes for Windows.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@496 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-30 04:19:08 +00:00
mheily
0f356c8932 Improvements to EVFILT_READ on Windows.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@495 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-29 23:47:51 +00:00
mheily
5933ba024c Use tracing_mutex_t instead of pthread_mutex_t for knote and kqueue locks.
Fix a locking bug in Linux kevent_copyout().

Fix and enable the knote_lock() and knote_unlock() macros.

Implement tracing_mutex_destroy().



git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@494 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-29 03:59:59 +00:00
mheily
e138f4a4c9 Add tracing mutexes to debug.h.
/*
 * Tracing mutexes are a thin wrapper around the pthread_mutex_t 
 * datatype that tracks and reports when a mutex is locked or unlocked.
 * It also allows you to assert that a mutex has (or has not) been locked
 * by calling tracing_mutex_assert().
 */



git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@493 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-29 03:28:07 +00:00
marius
c4573236fa Some changes to the 'new' ref-count mechanism of knote - please elaborate
Fixed a race condition within windows timers using the ref count mechanism

git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@492 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-28 12:01:04 +00:00
mheily
fcc95e5a18 Re-enable the knote mutex and reference counter.
Improve the knote reference counting mechanism.

New function knote_delete().

Rename 'flags' to 'kn_flags' in struct knote.

Rename 'mtx' to 'kn_mtx' in struct knote.

Rename 'kntree_ent' to 'kn_entries' in struct knote.

Add a knote flag named 'KNFL_KNOTE_DELETED' to indicate that a knote has been deleted. With reference counting, this becomes necessary.



git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@491 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-27 03:30:31 +00:00
marius
731410fef0 EVFILT_USER implementation on windows
Change VS Solution structure to be more well-arranged

git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@490 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-26 20:12:28 +00:00
marius
3ea5de4571 Updated VS Solution and CMakeLists.txt to reflect latest changes
Added annotation to timer bug on windows
Fixed a wrong visibility in the static build of libkqueue

git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@489 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-26 19:26:38 +00:00
mheily
4f0126ebc8 Commit a missing file that was accidentally ommited.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@488 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-25 23:21:07 +00:00
mheily
1b4e9d4af8 Partial implementation of EVFILT_READ on Windows.
Switch to using IOCP as the synchronization mechanism on Windows instead of emulating pthread condition variables.

git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@487 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-25 02:50:54 +00:00
mheily
04ca8661f7 Change the EVFILT_READ test to use TCP sockets instead of UNIX domain sockets,
so the tests can be run on Windows.

Fix a bug on Linux where epoll() will not return EPOLLHUP when a TCP socket
is closed. Instead, it will return POLLIN with zero bytes in the protocol
buffer.



git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@486 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-24 02:56:17 +00:00
mheily
9bbb71b801 Fix various build issues on MinGW.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@485 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-23 18:27:10 +00:00
mheily
74b37975ae By default, kevent() will serialize the copyout() and copyin() functions so that only one thread can operate on a kevent structure. This is controlled by the SERIALIZE_KEVENT macro. This temporarily
restores the behavior from libkqueue 1.0 to give us time to implement
fine-grained locking properly.

New functions: kqueue_lock() and kqueue_unlock().


git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@484 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-18 01:41:26 +00:00
marius
86b1fbb760 EVTFILT_TIMER working on windows
Added binary files on windows to svn:ignore

git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@483 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-17 19:34:34 +00:00
marius
dc2761332f Added CMakeLists.txt for libkqueue and tests
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@482 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-16 08:57:12 +00:00
marius
c4a997e8d5 Add option for static library build activated by defining MAKE_STATIC
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@481 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-16 08:54:17 +00:00
mheily
89f858788f Testing SVN post-commit hook
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@480 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 01:12:48 +00:00
mheily
cee1de5c60 Test commit, trying a post-commit email notify hook
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@479 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:58:03 +00:00
mheily
252e29883a Test commit, trying a post-commit email notify hook
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@478 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:56:09 +00:00
mheily
d417316168 Document test failure on SunOS
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@477 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:53:06 +00:00
mheily
a00bd06d97 Use calloc() instead of malloc() to avoid the use of uninitialized memory.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@476 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:42:11 +00:00
mheily
650452c28f Fix format string type mismatch
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@475 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:25:27 +00:00
mheily
09aa72ecd1 Provide missing atomic_ptr_cas definition on some platforms.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@474 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-14 00:21:11 +00:00
marius
9abd0fc49c Made libkqueue compile on windows again - functionality still broken on this platform
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@473 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-13 17:35:34 +00:00
marius
0abf2a781a Fixed a bug within kevent_copyin_one() causing a knote mutex to be used after releasing the knote
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@472 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-13 17:24:19 +00:00
marius
3a1f03e6ae Added clean initialization and destruction to mutex used within a knote.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@471 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-13 17:23:13 +00:00
marius
0fb0ab9c2b Test commit as marius@
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@470 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-13 01:14:30 +00:00
mheily
e045e4a70c Fix incorrect "nfds" argument supplied to pselect(2)
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@469 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-11 03:17:37 +00:00
mheily
0d4298cce9 Fix conditional that invokes linux_kevent_wait_hires()
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@468 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-09 02:55:07 +00:00
mheily
10ec7ad485 Add a test for high-resolution kevent() calls on Linux
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@467 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-09 01:24:59 +00:00
mheily
4e607edd42 Support regular files with EVFILT_READ, fixes the dispatch_read test in libdispatch
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@466 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-06 02:49:48 +00:00
mheily
844e70a5f2 Disable debugging if KQUEUE_DEBUG is an empty string
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@465 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-06 01:51:39 +00:00
mheily
855362d95f Split socket.c into two separate files: read.c and write.c. This means that EVFILT_READ and EVFILT_WRITE are now completely separate filters.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@464 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-05 22:22:48 +00:00
mheily
2b21880288 Move knote_get_socket_type() into linux/socket.c.
Partial support for EVFILT_READ with regular files.



git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@463 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-04-05 21:17:21 +00:00
mheily
50bb5cb827 WORKAROUND: signalfd(2) flags are broken on kernels older than Linux 2.6.27
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@458 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-19 14:28:29 +00:00
mheily
c8762ecddb Fix another 32-bit compilation issue
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@457 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-19 14:11:59 +00:00
jocke
8ce2f93c30 Reverting to using port_getn, but checking nget even in case of error, as events might have been returned. See http://code.google.com/p/gdnsd/source/browse/branches/current/gdnsd/libgdnsd/libev/ev_port.c?spec=svn878&r=878 as well as related links for background...
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@456 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-15 09:30:39 +00:00
jocke
b1ddd1f071 Try using port_get rather than port_getn as we seem to sometime get lost wakeups for user events, there are a few problems reported for port_getn (http://bugs.opensolaris.org/view_bug.do?bug_id=6268715, http://mail.opensolaris.org/pipermail/networking-discuss/2009-August/011979.html, ...) - will use this for stress testing and see if it fixes the problem.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@455 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-15 08:34:57 +00:00
mheily
543ba08bf2 Document a Linux bug
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@454 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-12 17:01:51 +00:00
mheily
6b6ead7801 Move all debugging macros to a single debug.h header to allow them to be reused in other projects
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@452 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-07 04:46:46 +00:00
mheily
311318db25 Fix a build failure on Linux
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@451 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-07 04:24:03 +00:00
jocke
1e3117304f Remove superfluous newline in debug
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@450 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-03 13:41:32 +00:00
jocke
1bda0408db Make sure that EV_RECEIPT events also calls kn_modify(), as we may get NOTE_TRIGGER updates there that needs to trigger e.g. timers.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@449 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-03 07:05:01 +00:00
jocke
adb6951527 Temporarily disable alloc cache, as it is not threadsafe unless each thread has called mem_init(), which is hard to ensure. The problem is that a different thread may call knote_free() which never before called mem_init(), and then we make libdispatch crash in its internals... Will try to stabilize all libdispatch tests before trying to reenable this...
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@448 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-02 16:31:21 +00:00
jocke
2f1fc4353d Additional debug for port_associate.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@447 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-02 13:22:39 +00:00
jocke
6f1f8d9c78 Use same formatting for dbg_perror as for the other dbg_xxx functions.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@446 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-02 13:20:59 +00:00
jocke
46a437e3d7 Properly return number of available from fd on Solaris in evfilt_socket_copyout.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@445 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-02 10:37:08 +00:00
jocke
0b50f2ac45 Added xcode project for convenience for edit/navigation/etc
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@444 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-03-02 08:47:07 +00:00
jocke
96365c3031 Make sure we don't 'return' non-initialized events when running with KQUEUE_DEBUG by initializing rv properly (it would generate incorrect debug logs if nevents == 0), tuning debug output slightly.
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@443 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-02-28 14:45:20 +00:00
jocke
e558ed245c Properly return number of times a timer have been triggered
git-svn-id: svn://svn.code.sf.net/p/libkqueue/code/trunk@442 fb4e3144-bc1c-4b72-a658-5bcd248dd7f7
2011-02-28 09:26:14 +00:00