summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Renner Berthing <esmil@mailme.dk>2013-11-20 22:33:34 +0100
committerEmil Renner Berthing <esmil@mailme.dk>2013-11-21 10:01:57 +0100
commitc87c5a5619b1ece8ff4522dcfb688191610526f9 (patch)
tree6b1250bda4d5d163d9bdcfdd3350c8ea868cfea3
parentb02a0cd8702ba794ff5c7eddfbb40d005d8a1e56 (diff)
downloadlem-c87c5a5619b1ece8ff4522dcfb688191610526f9.tar.gz
lem-c87c5a5619b1ece8ff4522dcfb688191610526f9.tar.xz
lem-c87c5a5619b1ece8ff4522dcfb688191610526f9.zip
fix pragmas for old GCCs
-rw-r--r--bin/lem.c14
-rw-r--r--bin/pool.c14
-rw-r--r--lem/io/stream.c16
-rw-r--r--lem/signal/core.c31
4 files changed, 51 insertions, 24 deletions
diff --git a/bin/lem.c b/bin/lem.c
index 8ee2e8a..0f660e9 100644
--- a/bin/lem.c
+++ b/bin/lem.c
@@ -323,6 +323,15 @@ queue_file(int argc, char *argv[], int fidx)
return 0;
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+static inline void
+runqueue_wait_init(void)
+{
+ ev_idle_init(&rq.w, runqueue_pop);
+}
+#pragma GCC diagnostic pop
+
int
main(int argc, char *argv[])
{
@@ -355,10 +364,7 @@ main(int argc, char *argv[])
lua_newtable(L);
/* initialize runqueue */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
- ev_idle_init(&rq.w, runqueue_pop);
-#pragma GCC diagnostic pop
+ runqueue_wait_init();
ev_idle_start(LEM_ &rq.w);
rq.queue = lem_xmalloc(LEM_INITIAL_QUEUESIZE
* sizeof(struct lem_runqueue_slot));
diff --git a/bin/pool.c b/bin/pool.c
index 1d8dabd..e30bc0c 100644
--- a/bin/pool.c
+++ b/bin/pool.c
@@ -110,6 +110,15 @@ pool_cb(EV_P_ struct ev_async *w, int revents)
ev_async_stop(EV_A_ w);
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+static inline void
+pool_watch_init(void)
+{
+ ev_async_init(&pool_watch, pool_cb);
+}
+#pragma GCC diagnostic pop
+
static int
pool_init(void)
{
@@ -128,10 +137,7 @@ pool_init(void)
pool_done = NULL;
*/
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
- ev_async_init(&pool_watch, pool_cb);
-#pragma GCC diagnostic pop
+ pool_watch_init();
ret = pthread_mutex_init(&pool_mutex, NULL);
if (ret == 0)
diff --git a/lem/io/stream.c b/lem/io/stream.c
index 9c53ecb..610567e 100644
--- a/lem/io/stream.c
+++ b/lem/io/stream.c
@@ -30,6 +30,16 @@ struct stream {
#define STREAM_FROM_WATCH(w, member)\
(struct stream *)(((char *)w) - offsetof(struct stream, member))
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+static inline void
+stream_watch_init(struct stream *s, int fd)
+{
+ ev_io_init(&s->r, NULL, fd, EV_READ);
+ ev_io_init(&s->w, NULL, fd, EV_WRITE);
+}
+#pragma GCC diagnostic pop
+
static struct stream *
stream_new(lua_State *T, int fd, int mt)
{
@@ -39,11 +49,7 @@ stream_new(lua_State *T, int fd, int mt)
lua_setmetatable(T, -2);
/* initialize userdata */
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
- ev_io_init(&s->r, NULL, fd, EV_READ);
- ev_io_init(&s->w, NULL, fd, EV_WRITE);
-#pragma GCC diagnostic pop
+ stream_watch_init(s, fd);
s->open = 1;
s->r.data = NULL;
s->w.data = NULL;
diff --git a/lem/signal/core.c b/lem/signal/core.c
index f7139d2..2f6f228 100644
--- a/lem/signal/core.c
+++ b/lem/signal/core.c
@@ -76,6 +76,15 @@ signal_os_handler(EV_P_ struct ev_signal *w, int revents)
lem_queue(S, 1);
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+static inline void
+signal_watcher_init(struct sigwatcher *s, int sig)
+{
+ ev_signal_init(&s->w, signal_os_handler, sig);
+}
+#pragma GCC diagnostic pop
+
static int
signal_os_watch(lua_State *T, int sig)
{
@@ -86,10 +95,7 @@ signal_os_watch(lua_State *T, int sig)
s = lem_xmalloc(sizeof(struct sigwatcher));
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
- ev_signal_init(&s->w, signal_os_handler, sig);
-#pragma GCC diagnostic pop
+ signal_watcher_init(s, sig);
ev_set_priority(&s->w, EV_MAXPRI);
ev_signal_start(LEM_ &s->w);
ev_unref(LEM); /* watcher shouldn't keep loop alive */
@@ -199,14 +205,20 @@ signal_child_handler(EV_P_ struct ev_child *w, int revents)
lem_queue(S, 2);
}
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wstrict-aliasing"
+static inline void
+signal_child_watcher_init(void)
+{
+ ev_child_init(&signal_child_watcher, signal_child_handler, 0, 1);
+}
+
static inline int
signal_child_active(void)
{
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
return ev_is_active(&signal_child_watcher);
-#pragma GCC diagnostic pop
}
+#pragma GCC diagnostic pop
static int
signal_child_watch(lua_State *T)
@@ -336,10 +348,7 @@ int
luaopen_lem_signal_core(lua_State *T)
{
#if EV_CHILD_ENABLE
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-aliasing"
- ev_child_init(&signal_child_watcher, signal_child_handler, 0, 1);
-#pragma GCC diagnostic pop
+ signal_child_watcher_init();
#endif
#if EV_SIGNAL_ENABLE