From 894b0fc0a7b6fd97869ed13682449d18fd4f1090 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Fri, 17 Aug 2012 14:48:51 +0200 Subject: [PATCH] unix: move platform init out of loop.c Move platform-specific initialization logic out of loop.c and into the platform files (freebsd.c, sunos.c, etc). --- src/unix/cygwin.c | 9 +++++++++ src/unix/darwin.c | 10 ++++++++++ src/unix/freebsd.c | 9 +++++++++ src/unix/internal.h | 4 ++++ src/unix/linux/linux-core.c | 15 +++++++++++++++ src/unix/loop.c | 26 ++++---------------------- src/unix/netbsd.c | 9 +++++++++ src/unix/openbsd.c | 9 +++++++++ src/unix/sunos.c | 13 +++++++++++++ 9 files changed, 82 insertions(+), 22 deletions(-) diff --git a/src/unix/cygwin.c b/src/unix/cygwin.c index 7153a7b8..dbb2d8d1 100644 --- a/src/unix/cygwin.c +++ b/src/unix/cygwin.c @@ -32,6 +32,15 @@ #define NANOSEC ((uint64_t) 1e9) +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { +} + + uint64_t uv_hrtime() { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/src/unix/darwin.c b/src/unix/darwin.c index cb45db03..b1586a3d 100644 --- a/src/unix/darwin.c +++ b/src/unix/darwin.c @@ -43,6 +43,16 @@ static char *process_title; + +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { +} + + #if TARGET_OS_IPHONE /* see: http://developer.apple.com/library/mac/#qa/qa1398/_index.html */ uint64_t uv_hrtime() { diff --git a/src/unix/freebsd.c b/src/unix/freebsd.c index be8006c5..cff88896 100644 --- a/src/unix/freebsd.c +++ b/src/unix/freebsd.c @@ -54,6 +54,15 @@ static char *process_title; +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { +} + + uint64_t uv_hrtime(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/src/unix/internal.h b/src/unix/internal.h index cfdb88d9..6e16b2c6 100644 --- a/src/unix/internal.h +++ b/src/unix/internal.h @@ -161,6 +161,10 @@ unsigned int uv__next_timeout(uv_loop_t* loop); void uv__signal_close(uv_signal_t* handle); void uv__signal_unregister(uv_loop_t* loop); +/* platform specific */ +int uv__platform_loop_init(uv_loop_t* loop, int default_loop); +void uv__platform_loop_delete(uv_loop_t* loop); + /* various */ void uv__async_close(uv_async_t* handle); void uv__check_close(uv_check_t* handle); diff --git a/src/unix/linux/linux-core.c b/src/unix/linux/linux-core.c index 637d8452..1ca92ac0 100644 --- a/src/unix/linux/linux-core.c +++ b/src/unix/linux/linux-core.c @@ -69,6 +69,21 @@ static void read_times(unsigned int numcpus, uv_cpu_info_t* ci); static unsigned long read_cpufreq(unsigned int cpunum); +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + loop->inotify_watchers = NULL; + loop->inotify_fd = -1; + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { + if (loop->inotify_fd == -1) return; + uv__io_stop(loop, &loop->inotify_read_watcher); + close(loop->inotify_fd); + loop->inotify_fd = -1; +} + + uint64_t uv_hrtime() { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/src/unix/loop.c b/src/unix/loop.c index 1118ac6a..70cdc824 100644 --- a/src/unix/loop.c +++ b/src/unix/loop.c @@ -62,33 +62,15 @@ int uv__loop_init(uv_loop_t* loop, int default_loop) { for (i = 0; i < ARRAY_SIZE(loop->process_handles); i++) ngx_queue_init(loop->process_handles + i); -#if __linux__ - loop->inotify_watchers = NULL; - loop->inotify_fd = -1; -#endif -#if HAVE_PORTS_FS - loop->fs_fd = -1; -#endif + if (uv__platform_loop_init(loop, default_loop)) + return -1; + return 0; } void uv__loop_delete(uv_loop_t* loop) { + uv__platform_loop_delete(loop); uv__signal_unregister(loop); ev_loop_destroy(loop->ev); - -#if __linux__ - if (loop->inotify_fd != -1) { - uv__io_stop(loop, &loop->inotify_read_watcher); - close(loop->inotify_fd); - loop->inotify_fd = -1; - } -#endif - -#if HAVE_PORTS_FS - if (loop->fs_fd != -1) { - close(loop->fs_fd); - loop->fs_fd = -1; - } -#endif } diff --git a/src/unix/netbsd.c b/src/unix/netbsd.c index a1a7091b..30c458f3 100644 --- a/src/unix/netbsd.c +++ b/src/unix/netbsd.c @@ -35,6 +35,15 @@ #define NANOSEC ((uint64_t) 1e9) +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { +} + + uint64_t uv_hrtime(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/src/unix/openbsd.c b/src/unix/openbsd.c index 865f8e9e..b3ee2297 100644 --- a/src/unix/openbsd.c +++ b/src/unix/openbsd.c @@ -43,6 +43,15 @@ static char *process_title; +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { +} + + uint64_t uv_hrtime(void) { struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); diff --git a/src/unix/sunos.c b/src/unix/sunos.c index 7ff56c06..8dfc2e1c 100644 --- a/src/unix/sunos.c +++ b/src/unix/sunos.c @@ -63,6 +63,19 @@ #endif +int uv__platform_loop_init(uv_loop_t* loop, int default_loop) { + loop->fs_fd = -1; + return 0; +} + + +void uv__platform_loop_delete(uv_loop_t* loop) { + if (loop->fs_fd == -1) return; + close(loop->fs_fd); + loop->fs_fd = -1; +} + + uint64_t uv_hrtime() { return (gethrtime()); }