summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAsbjørn Sloth Tønnesen <asbjorn@asbjorn.biz>2013-11-05 23:13:09 +0000
committerEmil Renner Berthing <esmil@mailme.dk>2013-11-11 20:51:31 +0100
commite43d512d81c50b97c938d0f3b2975b82d9aba180 (patch)
treea2d698393ec85ae2ef24171193d49b4902add9d1
parent988a50b2843aae8729a61edc795ffe12a5f3e43d (diff)
downloadlem-e43d512d81c50b97c938d0f3b2975b82d9aba180.tar.gz
lem-e43d512d81c50b97c938d0f3b2975b82d9aba180.tar.xz
lem-e43d512d81c50b97c938d0f3b2975b82d9aba180.zip
suppress libev strict-aliasing warnings
Signed-off-by: Asbjørn Sloth Tønnesen <asbjorn@asbjorn.biz> Signed-off-by: Emil Renner Berthing <esmil@mailme.dk>
-rw-r--r--bin/lem.c3
-rw-r--r--bin/pool.c3
-rw-r--r--lem/io/stream.c3
-rw-r--r--lem/signal/core.c19
4 files changed, 26 insertions, 2 deletions
diff --git a/bin/lem.c b/bin/lem.c
index 3e2b7a9..8ee2e8a 100644
--- a/bin/lem.c
+++ b/bin/lem.c
@@ -355,7 +355,10 @@ 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
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 5578b72..1d8dabd 100644
--- a/bin/pool.c
+++ b/bin/pool.c
@@ -128,7 +128,10 @@ 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
ret = pthread_mutex_init(&pool_mutex, NULL);
if (ret == 0)
diff --git a/lem/io/stream.c b/lem/io/stream.c
index e91cde8..9c53ecb 100644
--- a/lem/io/stream.c
+++ b/lem/io/stream.c
@@ -39,8 +39,11 @@ 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
s->open = 1;
s->r.data = NULL;
s->w.data = NULL;
diff --git a/lem/signal/core.c b/lem/signal/core.c
index 8a8dae8..af89181 100644
--- a/lem/signal/core.c
+++ b/lem/signal/core.c
@@ -83,7 +83,10 @@ 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
ev_set_priority(&s->w, EV_MAXPRI);
ev_signal_start(LEM_ &s->w);
ev_unref(LEM); /* watcher shouldn't keep loop alive */
@@ -193,10 +196,19 @@ signal_child_handler(EV_P_ struct ev_child *w, int revents)
lem_queue(S, 2);
}
+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
+}
+
static int
signal_child_watch(lua_State *T)
{
- if (!ev_is_active(&signal_child_watcher)) {
+ if (!signal_child_active()) {
ev_child_start(LEM_ &signal_child_watcher);
ev_unref(LEM); /* watcher shouldn't keep loop alive */
}
@@ -207,7 +219,7 @@ signal_child_watch(lua_State *T)
static int
signal_child_unwatch(lua_State *T)
{
- if (ev_is_active(&signal_child_watcher)) {
+ if (signal_child_active()) {
ev_ref(LEM);
ev_child_stop(LEM_ &signal_child_watcher);
}
@@ -321,7 +333,10 @@ 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
#endif
#if EV_SIGNAL_ENABLE