diff options
author | Andrew Tridgell <tridge@samba.org> | 2007-01-09 00:00:30 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:37:15 -0500 |
commit | 131cfe0399df8d65208dab90c70cb600e20cc0c5 (patch) | |
tree | 33e4b10c8e34c9be197e98c6dfa06b112ea4d8c8 /source4/lib | |
parent | dff70f76bcfc4abe6ce24fb7c66efd0476c0522d (diff) | |
download | samba-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)
Diffstat (limited to 'source4/lib')
-rw-r--r-- | source4/lib/events/config.mk | 10 | ||||
-rw-r--r-- | source4/lib/events/events.c | 13 | ||||
-rw-r--r-- | source4/lib/events/events_aio.c | 3 |
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++) { |