|
From: <jsa...@us...> - 2008-06-04 21:37:17
|
Revision: 1252
http://como.svn.sourceforge.net/como/?rev=1252&view=rev
Author: jsanjuas
Date: 2008-06-04 14:37:13 -0700 (Wed, 04 Jun 2008)
Log Message:
-----------
merged eventloop.h inside comofunc.h, now eventloop_t is opaque outside eventloop.c
Modified Paths:
--------------
src/branches/2.0/base/capture.c
src/branches/2.0/base/export.c
src/branches/2.0/base/storage.c
src/branches/2.0/base/supervisor.c
src/branches/2.0/include/como.h
src/branches/2.0/include/comofunc.h
src/branches/2.0/include/comopriv.h
src/branches/2.0/libcomo/eventloop.c
Removed Paths:
-------------
src/branches/2.0/include/eventloop.h
Modified: src/branches/2.0/base/capture.c
===================================================================
--- src/branches/2.0/base/capture.c 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/base/capture.c 2008-06-04 21:37:13 UTC (rev 1252)
@@ -807,7 +807,7 @@
s_cabuf.clients[id] = NULL;
s_cabuf.clients_count--;
fd = ipc_peer_get_fd(cl->peer);
- event_loop_del(&como_ca->el, fd);
+ event_loop_del(como_ca->el, fd);
FD_CLR(fd, &s_cabuf.clients_fds);
close(fd);
@@ -1527,7 +1527,7 @@
* del_fd() deals with invalid fd.
*/
if (sniff->priv->fd != -1)
- event_loop_del(&como_ca->el, sniff->priv->fd);
+ event_loop_del(como_ca->el, sniff->priv->fd);
/* inactive and frozen sniffers can be ignored */
@@ -1556,7 +1556,7 @@
if (sniff->flags & SNIFF_SELECT) {
sniff->priv->fd = sniff->fd;
- event_loop_add(&como_ca->el, sniff->priv->fd);
+ event_loop_add(como_ca->el, sniff->priv->fd);
}
}
@@ -1772,15 +1772,15 @@
}
/* initialize select()able file descriptors */
- event_loop_init(&como_ca.el);
+ como_ca.el = event_loop_new();
FD_ZERO(&ipc_fds);
/* ensure we handle messages from SUPERVISOR */
- event_loop_add(&como_ca.el, supervisor_fd);
+ event_loop_add(como_ca.el, supervisor_fd);
FD_SET(supervisor_fd, &ipc_fds);
/* accept connections from EXPORT process(es) and CAPTURE CLIENTS */
- event_loop_add(&como_ca.el, como_ca.accept_fd);
+ event_loop_add(como_ca.el, como_ca.accept_fd);
/* initialize the timers */
ca_init_timers();
@@ -1801,7 +1801,7 @@
for (;;) {
fd_set r;
- int n_ready;
+ int n_ready, max_fd;
batch_t *batch;
int active_sniff;
@@ -1831,12 +1831,12 @@
/* wait for messages, sniffers or up to the polling interval */
if (active_sniff > 0)
- event_loop_set_timeout(&como_ca.el, &timeout);
+ event_loop_set_timeout(como_ca.el, &timeout);
#ifdef LOADSHED
ls_select_start(&como_ca);
#endif
- n_ready = event_loop_select(&como_ca.el, &r);
+ n_ready = event_loop_select(como_ca.el, &r, &max_fd);
#ifdef LOADSHED
ls_select_end(&como_ca);
#endif
@@ -1849,7 +1849,7 @@
profiler_start_tsctimer(como_stats->ca_loop_timer);
- for (i = 0; n_ready > 0 && i < como_ca.el.max_fd; i++) {
+ for (i = 0; n_ready > 0 && i < max_fd; i++) {
if (!FD_ISSET(i, &r))
continue;
@@ -1859,7 +1859,7 @@
if (x < 0) {
warn("Failed on accept(): %s\n", strerror(errno));
} else {
- event_loop_add(&como_ca.el, x);
+ event_loop_add(como_ca.el, x);
FD_SET(x, &ipc_fds);
}
Modified: src/branches/2.0/base/export.c
===================================================================
--- src/branches/2.0/base/export.c 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/base/export.c 2008-06-04 21:37:13 UTC (rev 1252)
@@ -82,7 +82,7 @@
typedef struct _como_ex como_ex_t;
struct _como_ex {
- event_loop_t el;
+ event_loop_t * el;
char * st_dir;
int use_shmem;
hash_t *mdls; /* mdl name to mdl */
@@ -462,7 +462,9 @@
tset = next;
}
- /* TODO free state of the module */
+ /* free state of the module */
+ pool_clear(ie->mem);
+ pool_destroy(ie->mem);
/*
* close output file
@@ -540,10 +542,10 @@
/* ipc_register(IPC_EXIT, ex_ipc_exit);*/
/* listen to the parent */
- event_loop_init(&como_ex.el);
+ como_ex.el = event_loop_new();
supervisor_fd = ipc_peer_get_fd(parent);
- event_loop_add(&como_ex.el, supervisor_fd);
+ event_loop_add(como_ex.el, supervisor_fd);
/*
* wait for the debugger to attach
@@ -552,13 +554,13 @@
storage_fd = ipc_connect(COMO_ST);
debug("storage_fd = %d\n", storage_fd);
- event_loop_add(&como_ex.el, storage_fd);
+ event_loop_add(como_ex.el, storage_fd);
capture_fd = ipc_connect(COMO_CA);
/* save whether we're using shmem */
como_ex.use_shmem = (shmemmap != NULL);
- event_loop_add(&como_ex.el, capture_fd);
+ event_loop_add(como_ex.el, capture_fd);
/* allocate the timers */
ex_init_timers();
@@ -569,11 +571,9 @@
* tables to see if any action is required.
*/
for (;;) {
+ int n_ready, i, ipcr, max_fd;
+ struct timeval tv_zero;
fd_set r;
- int n_ready;
- int i;
- int ipcr;
- struct timeval tv_zero;
tv_zero.tv_sec = 0;
tv_zero.tv_usec = 0;
@@ -586,7 +586,7 @@
profiler_start_tsctimer(como_stats->ex_full_timer);
- n_ready = event_loop_select(&como_ex.el, &r);
+ n_ready = event_loop_select(como_ex.el, &r, &max_fd);
if (n_ready < 0) {
if (errno == EINTR) {
continue;
@@ -596,7 +596,7 @@
profiler_start_tsctimer(como_stats->ex_loop_timer);
- for (i = 0; n_ready > 0 && i < como_ex.el.max_fd; i++) {
+ for (i = 0; n_ready > 0 && i < max_fd; i++) {
if (!FD_ISSET(i, &r))
continue;
@@ -604,7 +604,7 @@
if (ipcr == IPC_EOF) {
/* EOF reading from a socket. */
debug("EOF from fd %d\n", i);
- event_loop_del(&como_ex.el, i);
+ event_loop_del(como_ex.el, i);
} else if (ipcr != IPC_OK) {
/* an error. close the socket */
warn("error on IPC handle from %d (%d)\n", i, ipcr);
@@ -626,7 +626,7 @@
* must not lock, because we have work to do
*/
if (como_ex.queue_len > 0)
- event_loop_set_timeout(&como_ex.el, &tv_zero);
+ event_loop_set_timeout(como_ex.el, &tv_zero);
profiler_end_tsctimer(como_stats->ex_loop_timer);
profiler_end_tsctimer(como_stats->ex_full_timer);
Modified: src/branches/2.0/base/storage.c
===================================================================
--- src/branches/2.0/base/storage.c 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/base/storage.c 2008-06-04 21:37:13 UTC (rev 1252)
@@ -216,7 +216,7 @@
off_t maxfilesize;
int supervisor_fd;
int accept_fd;
- event_loop_t el;
+ event_loop_t * el;
};
/*
@@ -1711,42 +1711,38 @@
ipc_register(S_SEEK, (ipc_handler_fn) handle_seek);
ipc_register(S_INFORM, (ipc_handler_fn) handle_inform);
- event_loop_add(&s_como_st.el, s_como_st.accept_fd);
+ event_loop_add(s_como_st.el, s_como_st.accept_fd);
ipc_register(SU_ANY_EXIT, handle_shutdown);
/* listen to SUPERVISOR */
- event_loop_add(&s_como_st.el, s_como_st.supervisor_fd);
+ event_loop_add(s_como_st.el, s_como_st.supervisor_fd);
/*
* The real main loop.
*/
for (;;) {
- fd_set r;
+ int n_ready, i, ipcr, max_fd;
struct timeval last;
-
timestamp_t elapsed;
- int n_ready;
- int i;
- int ipcr;
+ fd_set r;
/*
* use a timeout if we have files open. this way the
* scheduler starts when clients are idle too.
*/
if (s_como_st.client_count > 0) {
- event_loop_set_timeout(&s_como_st.el, &to);
+ event_loop_set_timeout(s_como_st.el, &to);
}
gettimeofday(&last, 0);
- n_ready = event_loop_select(&s_como_st.el, &r);
- if (n_ready < 0) {
- continue;
- }
+ n_ready = event_loop_select(s_como_st.el, &r, &max_fd);
+ if (n_ready < 0)
+ continue;
- for (i = 0; n_ready > 0 && i < s_como_st.el.max_fd; i++) {
+ for (i = 0; n_ready > 0 && i < max_fd; i++) {
if (!FD_ISSET(i, &r))
continue;
@@ -1755,11 +1751,10 @@
if (i == s_como_st.accept_fd) {
int x = accept(i, NULL, NULL);
- if (x < 0) {
+ if (x < 0)
warn("Failed on accept(): %s\n", strerror(errno));
- } else {
- event_loop_add(&s_como_st.el, x);
- }
+ else
+ event_loop_add(s_como_st.el, x);
continue;
}
@@ -1771,7 +1766,7 @@
case IPC_EOF:
case IPC_CLOSE:
close(i);
- event_loop_del(&s_como_st.el, i);
+ event_loop_del(s_como_st.el, i);
break;
}
}
Modified: src/branches/2.0/base/supervisor.c
===================================================================
--- src/branches/2.0/base/supervisor.c 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/base/supervisor.c 2008-06-04 21:37:13 UTC (rev 1252)
@@ -654,10 +654,10 @@
/* register handlers for IPC */
ipc_register(QU_SU_DONE, (ipc_handler_fn) qu_su_ipc_done);
- event_loop_init(&como_su->el);
+ como_su->el = event_loop_new();
/* accept connections from other processes */
- event_loop_add(&como_su->el, como_su->accept_fd);
+ event_loop_add(como_su->el, como_su->accept_fd);
FD_ZERO(&nodes_fds);
@@ -670,7 +670,7 @@
node = &array_at(como_su->nodes, como_node_t, i);
if (!como_config->inline_mode && como_node_listen(node) != -1) {
- event_loop_add(&como_su->el, node->query_fd);
+ event_loop_add(como_su->el, node->query_fd);
FD_SET(node->query_fd, &nodes_fds);
}
}
@@ -687,11 +687,11 @@
struct timeval to = {1, 0};
int secs, dd, hh, mm, ss;
struct timeval now;
- int n_ready;
+ int n_ready, max_fd;
fd_set r;
- event_loop_set_timeout(&como_su->el, &to);
+ event_loop_set_timeout(como_su->el, &to);
/*
* user interface. just one line...
@@ -718,11 +718,11 @@
real_node->mdls->len);
}
- n_ready = event_loop_select(&como_su->el, &r);
+ n_ready = event_loop_select(como_su->el, &r, &max_fd);
if (! como_config->inline_mode)
fprintf(stderr, "%78s\r", ""); /* clean the line */
- for (i = 0; n_ready > 0 && i < como_su->el.max_fd; i++) {
+ for (i = 0; n_ready > 0 && i < max_fd; i++) {
if (!FD_ISSET(i, &r))
continue;
@@ -733,7 +733,7 @@
if (x < 0) {
warn("accept() failed: %s\n", strerror(errno));
} else {
- event_loop_add(&como_su->el, x);
+ event_loop_add(como_su->el, x);
}
} else if (FD_ISSET(i, &nodes_fds)) {
como_node_t *node = como_node_lookup_by_fd(como_su->nodes, i);
@@ -748,7 +748,7 @@
warn("error on IPC handle from %d\n", i);
case IPC_CLOSE:
case IPC_EOF:
- event_loop_del(&como_su->el, i);
+ event_loop_del(como_su->el, i);
break;
}
}
Modified: src/branches/2.0/include/como.h
===================================================================
--- src/branches/2.0/include/como.h 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/include/como.h 2008-06-04 21:37:13 UTC (rev 1252)
@@ -75,7 +75,6 @@
#include "ipc.h"
#include "comofunc.h"
#include "log.h"
-#include "eventloop.h"
#include "pool.h"
#include "shmem.h"
#include "module.h"
Modified: src/branches/2.0/include/comofunc.h
===================================================================
--- src/branches/2.0/include/comofunc.h 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/include/comofunc.h 2008-06-04 21:37:13 UTC (rev 1252)
@@ -280,4 +280,16 @@
#define assert_not_reached() \
error("%s:%d should not be reached.\n", __FILE__, __LINE__)
+/*
+ * eventloop.c
+ */
+typedef struct event_loop event_loop_t;
+
+event_loop_t * event_loop_new(void);
+int event_loop_add(event_loop_t * el, int i);
+int event_loop_del(event_loop_t * el, int i);
+void event_loop_set_timeout(event_loop_t * el, struct timeval * timeout);
+int event_loop_select(event_loop_t * el, fd_set * ready, int * max_fd);
+void event_loop_destroy(event_loop_t * el);
+
#endif /* _COMO_FUNC_H */
Modified: src/branches/2.0/include/comopriv.h
===================================================================
--- src/branches/2.0/include/comopriv.h 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/include/comopriv.h 2008-06-04 21:37:13 UTC (rev 1252)
@@ -287,7 +287,7 @@
int sniffers_count;
// capbuf
- event_loop_t el;
+ event_loop_t * el;
int ready;
timestamp_t min_flush_ivl;
memmap_t * shmemmap;
@@ -443,7 +443,7 @@
*/
typedef struct como_su como_su_t;
struct como_su {
- event_loop_t el;
+ event_loop_t * el;
int accept_fd;
array_t * nodes; /* node information */
Deleted: src/branches/2.0/include/eventloop.h
===================================================================
--- src/branches/2.0/include/eventloop.h 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/include/eventloop.h 2008-06-04 21:37:13 UTC (rev 1252)
@@ -1,17 +0,0 @@
-#ifndef EVENTLOOP_H_
-#define EVENTLOOP_H_
-
-typedef struct event_loop {
- fd_set fds;
- int max_fd;
- struct timeval *timeoutptr;
- struct timeval timeout;
-} event_loop_t;
-
-void event_loop_init (event_loop_t * el);
-int event_loop_add (event_loop_t * el, int i);
-int event_loop_del (event_loop_t * el, int i);
-void event_loop_set_timeout (event_loop_t * el, struct timeval * timeout);
-int event_loop_select (event_loop_t * el, fd_set * ready);
-
-#endif /*EVENTLOOP_H_*/
Modified: src/branches/2.0/libcomo/eventloop.c
===================================================================
--- src/branches/2.0/libcomo/eventloop.c 2008-06-03 00:13:00 UTC (rev 1251)
+++ src/branches/2.0/libcomo/eventloop.c 2008-06-04 21:37:13 UTC (rev 1252)
@@ -36,12 +36,25 @@
#include <errno.h>
#include "como.h"
+#include "comopriv.h"
-void
-event_loop_init(event_loop_t * el)
+struct event_loop {
+ fd_set fds;
+ int max_fd;
+ struct timeval *timeoutptr;
+ struct timeval timeout;
+};
+
+
+event_loop_t *
+event_loop_new()
{
+ event_loop_t *el = safe_malloc(sizeof(event_loop_t));
+
memset(el, 0, sizeof(event_loop_t));
FD_ZERO(&el->fds);
+
+ return el;
}
@@ -100,7 +113,7 @@
int
-event_loop_select(event_loop_t * el, fd_set * ready)
+event_loop_select(event_loop_t * el, fd_set * ready, int * max_fd)
{
int n;
@@ -110,6 +123,7 @@
error("Failed on select(): %s\n", strerror(errno));
}
el->timeoutptr = NULL;
+ *max_fd = el->max_fd;
return n;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|