summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-01-09 00:00:30 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:37:15 -0500
commit131cfe0399df8d65208dab90c70cb600e20cc0c5 (patch)
tree33e4b10c8e34c9be197e98c6dfa06b112ea4d8c8
parentdff70f76bcfc4abe6ce24fb7c66efd0476c0522d (diff)
downloadsamba-131cfe0399df8d65208dab90c70cb600e20cc0c5.tar.gz
samba-131cfe0399df8d65208dab90c70cb600e20cc0c5.tar.bz2
samba-131cfe0399df8d65208dab90c70cb600e20cc0c5.zip
r20621: - enable the aio events backend on systems that support it
- allow the events backend to be chosen in smb.conf (This used to be commit 4a8e07286f827a6f57b2c54d97d31172553ceb0d)
-rw-r--r--source4/lib/events/config.mk10
-rw-r--r--source4/lib/events/events.c13
-rw-r--r--source4/lib/events/events_aio.c3
3 files changed, 19 insertions, 7 deletions
diff --git a/source4/lib/events/config.mk b/source4/lib/events/config.mk
index 5e871cb0ac..5112ba313b 100644
--- a/source4/lib/events/config.mk
+++ b/source4/lib/events/config.mk
@@ -1,4 +1,12 @@
##############################
+[MODULE::EVENTS_AIO]
+OBJ_FILES = events_aio.o
+PRIVATE_DEPENDENCIES = LIBAIO_LINUX
+SUBSYSTEM = LIBEVENTS
+INIT_FUNCTION = events_aio_init
+##############################
+
+##############################
[MODULE::EVENTS_EPOLL]
OBJ_FILES = events_epoll.o
SUBSYSTEM = LIBEVENTS
@@ -24,6 +32,6 @@ INIT_FUNCTION = events_standard_init
# Start SUBSYSTEM LIBEVENTS
[SUBSYSTEM::LIBEVENTS]
OBJ_FILES = events.o events_timed.o
-PUBLIC_DEPENDENCIES = LIBTALLOC EVENTS_STANDARD EVENTS_EPOLL
+PUBLIC_DEPENDENCIES = LIBTALLOC EVENTS_STANDARD EVENTS_AIO EVENTS_EPOLL
# End SUBSYSTEM LIBEVENTS
##############################
diff --git a/source4/lib/events/events.c b/source4/lib/events/events.c
index 52b431befa..11f85b1c6e 100644
--- a/source4/lib/events/events.c
+++ b/source4/lib/events/events.c
@@ -157,6 +157,10 @@ struct event_context *event_context_init_byname(TALLOC_CTX *mem_ctx, const char
event_backend_init();
+ if (name == NULL) {
+ name = "standard";
+ }
+
for (e=event_backends;e;e=e->next) {
if (strcmp(name, e->name) == 0) {
return event_context_init_ops(mem_ctx, e->ops);
@@ -173,7 +177,7 @@ struct event_context *event_context_init_byname(TALLOC_CTX *mem_ctx, const char
*/
struct event_context *event_context_init(TALLOC_CTX *mem_ctx)
{
- return event_context_init_byname(mem_ctx, "standard");
+ return event_context_init_byname(mem_ctx, NULL);
}
/*
@@ -246,6 +250,7 @@ int event_loop_wait(struct event_context *ev)
return ev->ops->loop_wait(ev);
}
+#if _SAMBA_BUILD_
/*
find an event context that is a parent of the given memory context,
or create a new event context as a child of the given context if
@@ -258,8 +263,10 @@ int event_loop_wait(struct event_context *ev)
struct event_context *event_context_find(TALLOC_CTX *mem_ctx)
{
struct event_context *ev = talloc_find_parent_bytype(mem_ctx, struct event_context);
- if (ev == NULL) {
- ev = event_context_init(mem_ctx);
+ if (ev == NULL) {
+ ev = event_context_init_byname(mem_ctx,
+ lp_parm_string(-1, "event", "backend"));
}
return ev;
}
+#endif
diff --git a/source4/lib/events/events_aio.c b/source4/lib/events/events_aio.c
index 1c2735c200..52ddadfc52 100644
--- a/source4/lib/events/events_aio.c
+++ b/source4/lib/events/events_aio.c
@@ -268,9 +268,6 @@ static int aio_event_loop(struct aio_event_context *aio_ev, struct timeval *tval
uint16_t flags = 0;
int j;
-// DEBUG(0,("EVENT finished=%p fde=%p ep=%p\n", finished, fde, ep));
- //printf("GOT %d aio epoll events\n", event->res);
-
aio_ev->is_epoll_set = 0;
for (j=0; j<event->res; j++, ep++) {