Browse Source

uv: upgrade to 10de090

v0.7.4-release
Ben Noordhuis 13 years ago
parent
commit
b24c515dbf
  1. 1
      deps/uv/AUTHORS
  2. 4
      deps/uv/include/uv-private/ngx-queue.h
  3. 3
      deps/uv/include/uv-private/uv-unix.h
  4. 10
      deps/uv/include/uv-private/uv-win.h
  5. 7
      deps/uv/include/uv.h
  6. 43
      deps/uv/src/unix/core.c
  7. 25
      deps/uv/src/unix/darwin.c
  8. 9
      deps/uv/src/unix/thread.c
  9. 18
      deps/uv/src/win/internal.h
  10. 2
      deps/uv/test/test-list.h
  11. 7
      deps/uv/test/test-thread.c

1
deps/uv/AUTHORS

@ -38,3 +38,4 @@ Ryan Emery <seebees@gmail.com>
Bruce Mitchener <bruce.mitchener@gmail.com> Bruce Mitchener <bruce.mitchener@gmail.com>
Maciej Małecki <maciej.malecki@notimplemented.org> Maciej Małecki <maciej.malecki@notimplemented.org>
Yasuhiro Matsumoto <mattn.jp@gmail.com> Yasuhiro Matsumoto <mattn.jp@gmail.com>
Daisuke Murase <typester@cpan.org>

4
deps/uv/include/uv-private/ngx-queue.h

@ -99,4 +99,8 @@ struct ngx_queue_s {
(type *) ((unsigned char *) q - offsetof(type, link)) (type *) ((unsigned char *) q - offsetof(type, link))
#define ngx_queue_foreach(q, h) \
for ((q) = ngx_queue_head(h); (q) != (h); (q) = ngx_queue_next(q))
#endif /* _NGX_QUEUE_H_INCLUDED_ */ #endif /* _NGX_QUEUE_H_INCLUDED_ */

3
deps/uv/include/uv-private/uv-unix.h

@ -44,6 +44,9 @@ typedef struct {
typedef int uv_file; typedef int uv_file;
#define UV_ONCE_INIT PTHREAD_ONCE_INIT
typedef pthread_once_t uv_once_t;
typedef pthread_t uv_thread_t; typedef pthread_t uv_thread_t;
typedef pthread_mutex_t uv_mutex_t; typedef pthread_mutex_t uv_mutex_t;
typedef pthread_rwlock_t uv_rwlock_t; typedef pthread_rwlock_t uv_rwlock_t;

10
deps/uv/include/uv-private/uv-win.h

@ -152,6 +152,16 @@ typedef union {
} fallback_; } fallback_;
} uv_rwlock_t; } uv_rwlock_t;
#define UV_ONCE_INIT { 0, NULL, NULL }
typedef struct uv_once_s {
unsigned char ran;
/* The actual event handle must be aligned to sizeof(HANDLE), so in */
/* practice it might overlap padding a little. */
HANDLE event;
HANDLE padding;
} uv_once_t;
/* Platform-specific definitions for uv_dlopen support. */ /* Platform-specific definitions for uv_dlopen support. */
typedef HMODULE uv_lib_t; typedef HMODULE uv_lib_t;
#define UV_DYNAMIC FAR WINAPI #define UV_DYNAMIC FAR WINAPI

7
deps/uv/include/uv.h

@ -1339,9 +1339,16 @@ UV_EXTERN void uv_rwlock_wrlock(uv_rwlock_t* rwlock);
UV_EXTERN int uv_rwlock_trywrlock(uv_rwlock_t* rwlock); UV_EXTERN int uv_rwlock_trywrlock(uv_rwlock_t* rwlock);
UV_EXTERN void uv_rwlock_wrunlock(uv_rwlock_t* rwlock); UV_EXTERN void uv_rwlock_wrunlock(uv_rwlock_t* rwlock);
/* Runs a function once and only once. Concurrent calls to uv_once() with the
* same guard will block all callers except one (it's unspecified which one).
* The guard should be initialized statically with the UV_ONCE_INIT macro.
*/
UV_EXTERN void uv_once(uv_once_t* guard, void (*callback)(void));
UV_EXTERN int uv_thread_create(uv_thread_t *tid, UV_EXTERN int uv_thread_create(uv_thread_t *tid,
void (*entry)(void *arg), void *arg); void (*entry)(void *arg), void *arg);
UV_EXTERN int uv_thread_join(uv_thread_t *tid); UV_EXTERN int uv_thread_join(uv_thread_t *tid);
UV_EXTERN uv_thread_t uv_thread_self(void);
/* the presence of these unions force similar struct layout */ /* the presence of these unions force similar struct layout */
union uv_any_handle { union uv_any_handle {

43
deps/uv/src/unix/core.c

@ -158,10 +158,30 @@ void uv_close(uv_handle_t* handle, uv_close_cb close_cb) {
} }
uv_loop_t* uv_loop_new(void) { static int uv__loop_init(uv_loop_t* loop,
uv_loop_t* loop = calloc(1, sizeof(uv_loop_t)); struct ev_loop *(ev_loop_new)(unsigned int flags)) {
loop->ev = ev_loop_new(0); memset(loop, 0, sizeof(*loop));
#if HAVE_KQUEUE
loop->ev = ev_loop_new(EVBACKEND_KQUEUE);
#else
loop->ev = ev_loop_new(EVFLAG_AUTO);
#endif
ev_set_userdata(loop->ev, loop); ev_set_userdata(loop->ev, loop);
return 0;
}
uv_loop_t* uv_loop_new(void) {
uv_loop_t* loop;
if ((loop = malloc(sizeof(*loop))) == NULL)
return NULL;
if (uv__loop_init(loop, ev_loop_new)) {
free(loop);
return NULL;
}
return loop; return loop;
} }
@ -182,16 +202,13 @@ void uv_loop_delete(uv_loop_t* loop) {
uv_loop_t* uv_default_loop(void) { uv_loop_t* uv_default_loop(void) {
if (!default_loop_ptr) { if (default_loop_ptr)
default_loop_ptr = &default_loop_struct; return default_loop_ptr;
#if HAVE_KQUEUE
default_loop_struct.ev = ev_default_loop(EVBACKEND_KQUEUE); if (uv__loop_init(&default_loop_struct, ev_default_loop))
#else return NULL;
default_loop_struct.ev = ev_default_loop(EVFLAG_AUTO);
#endif default_loop_ptr = &default_loop_struct;
ev_set_userdata(default_loop_struct.ev, default_loop_ptr);
}
assert(default_loop_ptr->ev == EV_DEFAULT_UC);
return default_loop_ptr; return default_loop_ptr;
} }

25
deps/uv/src/unix/darwin.c

@ -28,7 +28,12 @@
#include <ifaddrs.h> #include <ifaddrs.h>
#include <net/if.h> #include <net/if.h>
#include <TargetConditionals.h>
#if !TARGET_OS_IPHONE
#include <CoreServices/CoreServices.h> #include <CoreServices/CoreServices.h>
#endif
#include <mach/mach.h> #include <mach/mach.h>
#include <mach/mach_time.h> #include <mach/mach_time.h>
#include <mach-o/dyld.h> /* _NSGetExecutablePath */ #include <mach-o/dyld.h> /* _NSGetExecutablePath */
@ -36,10 +41,26 @@
#include <sys/sysctl.h> #include <sys/sysctl.h>
#include <unistd.h> /* sysconf */ #include <unistd.h> /* sysconf */
static char *process_title; static char *process_title;
#if TARGET_OS_IPHONE
/* see: http://developer.apple.com/library/mac/#qa/qa1398/_index.html */
uint64_t uv_hrtime() {
uint64_t time;
uint64_t enano;
static mach_timebase_info_data_t sTimebaseInfo;
time = mach_absolute_time();
if (0 == sTimebaseInfo.denom) {
(void)mach_timebase_info(&sTimebaseInfo);
}
enano = time * sTimebaseInfo.numer / sTimebaseInfo.denom;
return enano;
}
#else
uint64_t uv_hrtime() { uint64_t uv_hrtime() {
uint64_t time; uint64_t time;
Nanoseconds enano; Nanoseconds enano;
@ -47,7 +68,7 @@ uint64_t uv_hrtime() {
enano = AbsoluteToNanoseconds(*(AbsoluteTime *)&time); enano = AbsoluteToNanoseconds(*(AbsoluteTime *)&time);
return (*(uint64_t *)&enano); return (*(uint64_t *)&enano);
} }
#endif
int uv_exepath(char* buffer, size_t* size) { int uv_exepath(char* buffer, size_t* size) {
uint32_t usize; uint32_t usize;

9
deps/uv/src/unix/thread.c

@ -47,6 +47,10 @@ int uv_thread_join(uv_thread_t *tid) {
return 0; return 0;
} }
uv_thread_t uv_thread_self(void) {
return pthread_self();
}
int uv_mutex_init(uv_mutex_t* mutex) { int uv_mutex_init(uv_mutex_t* mutex) {
if (pthread_mutex_init(mutex, NULL)) if (pthread_mutex_init(mutex, NULL))
@ -147,3 +151,8 @@ int uv_rwlock_trywrlock(uv_rwlock_t* rwlock) {
void uv_rwlock_wrunlock(uv_rwlock_t* rwlock) { void uv_rwlock_wrunlock(uv_rwlock_t* rwlock) {
CHECK(pthread_rwlock_unlock(rwlock)); CHECK(pthread_rwlock_unlock(rwlock));
} }
void uv_once(uv_once_t* guard, void (*callback)(void)) {
CHECK(pthread_once(guard, callback));
}

18
deps/uv/src/win/internal.h

@ -343,22 +343,4 @@ extern int uv_allow_ipv6;
extern struct sockaddr_in uv_addr_ip4_any_; extern struct sockaddr_in uv_addr_ip4_any_;
extern struct sockaddr_in6 uv_addr_ip6_any_; extern struct sockaddr_in6 uv_addr_ip6_any_;
/*
* Threads and synchronization
*/
typedef struct uv_once_s {
unsigned char ran;
/* The actual event handle must be aligned to sizeof(HANDLE), so in */
/* practice it might overlap padding a little. */
HANDLE event;
HANDLE padding;
} uv_once_t;
#define UV_ONCE_INIT \
{ 0, NULL, NULL }
void uv_once(uv_once_t* guard, void (*callback)(void));
#endif /* UV_WIN_INTERNAL_H_ */ #endif /* UV_WIN_INTERNAL_H_ */

2
deps/uv/test/test-list.h

@ -122,6 +122,7 @@ TEST_DECLARE (threadpool_queue_work_simple)
TEST_DECLARE (thread_mutex) TEST_DECLARE (thread_mutex)
TEST_DECLARE (thread_rwlock) TEST_DECLARE (thread_rwlock)
TEST_DECLARE (thread_create) TEST_DECLARE (thread_create)
TEST_DECLARE (thread_self)
TEST_DECLARE (strlcpy) TEST_DECLARE (strlcpy)
TEST_DECLARE (strlcat) TEST_DECLARE (strlcat)
TEST_DECLARE (counters_init) TEST_DECLARE (counters_init)
@ -287,6 +288,7 @@ TASK_LIST_START
TEST_ENTRY (thread_mutex) TEST_ENTRY (thread_mutex)
TEST_ENTRY (thread_rwlock) TEST_ENTRY (thread_rwlock)
TEST_ENTRY (thread_create) TEST_ENTRY (thread_create)
TEST_ENTRY (thread_self)
TEST_ENTRY (strlcpy) TEST_ENTRY (strlcpy)
TEST_ENTRY (strlcat) TEST_ENTRY (strlcat)
TEST_ENTRY (counters_init) TEST_ENTRY (counters_init)

7
deps/uv/test/test-thread.c

@ -49,3 +49,10 @@ TEST_IMPL(thread_create) {
return 0; return 0;
} }
TEST_IMPL(thread_self) {
uv_thread_t tid;
tid = uv_thread_self();
return 0;
}

Loading…
Cancel
Save