summaryrefslogtreecommitdiff
path: root/source4/lib
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-02-03 11:56:03 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:09:30 -0500
commit131dc76d56df40b3511c47e54f15412a25b491f8 (patch)
treea8cd13ffe8ec8ee33006b00af25891e3ab4681ca /source4/lib
parentdc35a0eb4f4be294a852073802451fe9ab284b69 (diff)
downloadsamba-131dc76d56df40b3511c47e54f15412a25b491f8.tar.gz
samba-131dc76d56df40b3511c47e54f15412a25b491f8.tar.bz2
samba-131dc76d56df40b3511c47e54f15412a25b491f8.zip
r5197: moved events code to lib/events/ (suggestion from metze)
(This used to be commit 7f54c8a339f36aa43c9340be70ab7f0067593ef2)
Diffstat (limited to 'source4/lib')
-rw-r--r--source4/lib/basic.mk9
-rw-r--r--source4/lib/events/config.m42
-rw-r--r--source4/lib/events/config.mk8
-rw-r--r--source4/lib/events/events.c (renamed from source4/lib/events.c)2
-rw-r--r--source4/lib/events/events.h63
-rw-r--r--source4/lib/messaging/messaging.c2
6 files changed, 75 insertions, 11 deletions
diff --git a/source4/lib/basic.mk b/source4/lib/basic.mk
index dda79f50ad..5f9a60e114 100644
--- a/source4/lib/basic.mk
+++ b/source4/lib/basic.mk
@@ -33,15 +33,6 @@ ADD_OBJ_FILES = \
##############################
##############################
-# Start SUBSYSTEM LIBEVENTS
-[SUBSYSTEM::LIBEVENTS]
-NOPROTO = YES
-INIT_OBJ_FILES = lib/events.o
-REQUIRED_SUBSYSTEMS = LIBTALLOC
-# End SUBSYSTEM LIBEVENTS
-##############################
-
-##############################
# Start SUBSYSTEM LIBBASIC
[SUBSYSTEM::LIBBASIC]
INIT_OBJ_FILES = lib/version.o
diff --git a/source4/lib/events/config.m4 b/source4/lib/events/config.m4
new file mode 100644
index 0000000000..6e4095d5b8
--- /dev/null
+++ b/source4/lib/events/config.m4
@@ -0,0 +1,2 @@
+AC_CHECK_HEADERS(sys/epoll.h)
+AC_CHECK_FUNCS(epoll_create)
diff --git a/source4/lib/events/config.mk b/source4/lib/events/config.mk
new file mode 100644
index 0000000000..c6f66b1c51
--- /dev/null
+++ b/source4/lib/events/config.mk
@@ -0,0 +1,8 @@
+##############################
+# Start SUBSYSTEM LIBEVENTS
+[SUBSYSTEM::LIBEVENTS]
+NOPROTO = YES
+INIT_OBJ_FILES = lib/events/events.o
+REQUIRED_SUBSYSTEMS = LIBTALLOC
+# End SUBSYSTEM LIBEVENTS
+##############################
diff --git a/source4/lib/events.c b/source4/lib/events/events.c
index 4907a60f01..a852df68eb 100644
--- a/source4/lib/events.c
+++ b/source4/lib/events/events.c
@@ -58,7 +58,7 @@
#include "system/time.h"
#include "system/select.h"
#include "dlinklist.h"
-#include "events.h"
+#include "lib/events/events.h"
/* use epoll if it is available */
#if defined(HAVE_EPOLL_CREATE) && defined(HAVE_SYS_EPOLL_H)
diff --git a/source4/lib/events/events.h b/source4/lib/events/events.h
new file mode 100644
index 0000000000..e3973c3c48
--- /dev/null
+++ b/source4/lib/events/events.h
@@ -0,0 +1,63 @@
+/*
+ Unix SMB/CIFS implementation.
+
+ generalised event loop handling
+
+ Copyright (C) Andrew Tridgell 2005
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+struct event_context;
+struct fd_event;
+struct timed_event;
+
+/* event handler types */
+typedef void (*event_fd_handler_t)(struct event_context *, struct fd_event *,
+ uint16_t , void *);
+typedef void (*event_timed_handler_t)(struct event_context *, struct timed_event *,
+ struct timeval , void *);
+
+struct event_context *event_context_init(TALLOC_CTX *mem_ctx);
+
+struct fd_event *event_add_fd(struct event_context *ev, TALLOC_CTX *mem_ctx,
+ int fd, uint16_t flags, event_fd_handler_t handler,
+ void *private);
+
+struct timed_event *event_add_timed(struct event_context *ev, TALLOC_CTX *mem_ctx,
+ struct timeval next_event,
+ event_timed_handler_t handler,
+ void *private);
+
+int event_loop_once(struct event_context *ev);
+int event_loop_wait(struct event_context *ev);
+
+uint16_t event_fd_flags(struct fd_event *fde);
+void event_fd_setflags(struct fd_event *fde, uint16_t flags);
+
+/* bits for file descriptor event flags */
+#define EVENT_FD_READ 1
+#define EVENT_FD_WRITE 2
+
+#define EVENT_FD_WRITEABLE(fde) \
+ event_fd_setflags(fde, event_fd_flags(fde) | EVENT_FD_WRITE)
+#define EVENT_FD_READABLE(fde) \
+ event_fd_setflags(fde, event_fd_flags(fde) | EVENT_FD_READ)
+
+#define EVENT_FD_NOT_WRITEABLE(fde) \
+ event_fd_setflags(fde, event_fd_flags(fde) & ~EVENT_FD_WRITE)
+#define EVENT_FD_NOT_READABLE(fde) \
+ event_fd_setflags(fde, event_fd_flags(fde) & ~EVENT_FD_WRITE)
+
diff --git a/source4/lib/messaging/messaging.c b/source4/lib/messaging/messaging.c
index 24205e5151..aab13ba8af 100644
--- a/source4/lib/messaging/messaging.c
+++ b/source4/lib/messaging/messaging.c
@@ -21,7 +21,7 @@
*/
#include "includes.h"
-#include "events.h"
+#include "lib/events/events.h"
#include "system/time.h"
#include "messages.h"
#include "dlinklist.h"