Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
uv: Upgrade to 94355e4
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacs committed Jul 19, 2012
1 parent b264893 commit 845b9e9
Show file tree
Hide file tree
Showing 8 changed files with 164 additions and 124 deletions.
4 changes: 0 additions & 4 deletions deps/uv/config-unix.mk
Expand Up @@ -128,10 +128,6 @@ else
RUNNER_LINKFLAGS += -pthread
endif

ifneq (FreeBSD,$(uname_S))
OBJS += src/unix/proctitle.o
endif

RUNNER_LIBS=
RUNNER_SRC=test/runner-unix.c

Expand Down
27 changes: 27 additions & 0 deletions deps/uv/src/unix/darwin.c
Expand Up @@ -41,6 +41,8 @@
#include <sys/sysctl.h>
#include <unistd.h> /* sysconf */

static char *process_title;

#if TARGET_OS_IPHONE
/* see: http://developer.apple.com/library/mac/#qa/qa1398/_index.html */
uint64_t uv_hrtime() {
Expand Down Expand Up @@ -136,6 +138,31 @@ void uv_loadavg(double avg[3]) {
}


char** uv_setup_args(int argc, char** argv) {
process_title = argc ? strdup(argv[0]) : NULL;
return argv;
}


uv_err_t uv_set_process_title(const char* title) {
/* TODO implement me */
return uv__new_artificial_error(UV_ENOSYS);
}


uv_err_t uv_get_process_title(char* buffer, size_t size) {
if (process_title) {
strncpy(buffer, process_title, size);
} else {
if (size > 0) {
buffer[0] = '\0';
}
}

return uv_ok_;
}


uv_err_t uv_resident_set_memory(size_t* rss) {
struct task_basic_info t_info;
mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
Expand Down
72 changes: 72 additions & 0 deletions deps/uv/src/unix/linux/linux-core.c
Expand Up @@ -58,6 +58,11 @@

static char buf[MAXPATHLEN + 1];

static struct {
char *str;
size_t len;
} process_title;


/*
* There's probably some way to get time from Linux than gettimeofday(). What
Expand Down Expand Up @@ -107,6 +112,73 @@ uint64_t uv_get_total_memory(void) {
}


char** uv_setup_args(int argc, char** argv) {
char **new_argv;
char **new_env;
size_t size;
int envc;
char *s;
int i;

for (envc = 0; environ[envc]; envc++);

s = envc ? environ[envc - 1] : argv[argc - 1];

process_title.str = argv[0];
process_title.len = s + strlen(s) + 1 - argv[0];

size = process_title.len;
size += (argc + 1) * sizeof(char **);
size += (envc + 1) * sizeof(char **);

if ((s = (char *) malloc(size)) == NULL) {
process_title.str = NULL;
process_title.len = 0;
return argv;
}

new_argv = (char **) s;
new_env = new_argv + argc + 1;
s = (char *) (new_env + envc + 1);
memcpy(s, process_title.str, process_title.len);

for (i = 0; i < argc; i++)
new_argv[i] = s + (argv[i] - argv[0]);
new_argv[argc] = NULL;

s += environ[0] - argv[0];

for (i = 0; i < envc; i++)
new_env[i] = s + (environ[i] - environ[0]);
new_env[envc] = NULL;

environ = new_env;
return new_argv;
}


uv_err_t uv_set_process_title(const char* title) {
/* No need to terminate, last char is always '\0'. */
if (process_title.len)
strncpy(process_title.str, title, process_title.len - 1);

return uv_ok_;
}


uv_err_t uv_get_process_title(char* buffer, size_t size) {
if (process_title.str) {
strncpy(buffer, process_title.str, size);
} else {
if (size > 0) {
buffer[0] = '\0';
}
}

return uv_ok_;
}


uv_err_t uv_resident_set_memory(size_t* rss) {
FILE* f;
int itmp;
Expand Down
30 changes: 30 additions & 0 deletions deps/uv/src/unix/openbsd.c
Expand Up @@ -40,6 +40,9 @@
#define NANOSEC ((uint64_t) 1e9)


static char *process_title;


uint64_t uv_hrtime(void) {
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
Expand Down Expand Up @@ -134,6 +137,33 @@ uint64_t uv_get_total_memory(void) {
}


char** uv_setup_args(int argc, char** argv) {
process_title = argc ? strdup(argv[0]) : NULL;
return argv;
}


uv_err_t uv_set_process_title(const char* title) {
if (process_title) free(process_title);
process_title = strdup(title);
setproctitle(title);
return uv_ok_;
}


uv_err_t uv_get_process_title(char* buffer, size_t size) {
if (process_title) {
strncpy(buffer, process_title, size);
} else {
if (size > 0) {
buffer[0] = '\0';
}
}

return uv_ok_;
}


uv_err_t uv_resident_set_memory(size_t* rss) {
kvm_t *kd = NULL;
struct kinfo_proc *kinfo = NULL;
Expand Down
35 changes: 17 additions & 18 deletions deps/uv/src/unix/pipe.c
Expand Up @@ -170,18 +170,17 @@ void uv_pipe_connect(uv_connect_t* req,
uv_connect_cb cb) {
struct sockaddr_un saddr;
int saved_errno;
int sockfd;
int status;
int new_sock;
int err;
int r;

saved_errno = errno;
sockfd = -1;
status = -1;
new_sock = (handle->fd == -1);
err = -1;

if ((sockfd = uv__socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
uv__set_sys_error(handle->loop, errno);
goto out;
}
if (new_sock)
if ((handle->fd = uv__socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
goto out;

memset(&saddr, 0, sizeof saddr);
uv_strlcpy(saddr.sun_path, name, sizeof(saddr.sun_path));
Expand All @@ -191,25 +190,25 @@ void uv_pipe_connect(uv_connect_t* req,
* is either there or not.
*/
do {
r = connect(sockfd, (struct sockaddr*)&saddr, sizeof saddr);
r = connect(handle->fd, (struct sockaddr*)&saddr, sizeof saddr);
}
while (r == -1 && errno == EINTR);

if (r == -1) {
status = errno;
close(sockfd);
if (r == -1)
goto out;
}

uv__stream_open((uv_stream_t*)handle,
sockfd,
UV_STREAM_READABLE | UV_STREAM_WRITABLE);
if (new_sock)
if (uv__stream_open((uv_stream_t*)handle,
handle->fd,
UV_STREAM_READABLE | UV_STREAM_WRITABLE))
goto out;

uv__io_start(handle->loop, &handle->read_watcher);
uv__io_start(handle->loop, &handle->write_watcher);
status = 0;
err = 0;

out:
handle->delayed_error = status; /* Passed to callback. */
handle->delayed_error = err ? errno : 0; /* Passed to callback. */
handle->connect_req = req;

uv__req_init(handle->loop, req, UV_CONNECT);
Expand Down
99 changes: 0 additions & 99 deletions deps/uv/src/unix/proctitle.c

This file was deleted.

18 changes: 18 additions & 0 deletions deps/uv/src/unix/sunos.c
Expand Up @@ -238,6 +238,24 @@ void uv__fs_event_close(uv_fs_event_t* handle) {
#endif /* HAVE_PORTS_FS */


char** uv_setup_args(int argc, char** argv) {
return argv;
}


uv_err_t uv_set_process_title(const char* title) {
return uv_ok_;
}


uv_err_t uv_get_process_title(char* buffer, size_t size) {
if (size > 0) {
buffer[0] = '\0';
}
return uv_ok_;
}


uv_err_t uv_resident_set_memory(size_t* rss) {
psinfo_t psinfo;
uv_err_t err;
Expand Down
3 changes: 0 additions & 3 deletions deps/uv/uv.gyp
Expand Up @@ -287,9 +287,6 @@
[ 'OS=="mac" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd"', {
'sources': [ 'src/unix/kqueue.c' ],
}],
[ 'OS!="win" and OS!="freebsd"', {
'sources': [ 'src/unix/proctitle.c' ],
}],
]
},

Expand Down

0 comments on commit 845b9e9

Please sign in to comment.