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 a9f6f06
Browse files Browse the repository at this point in the history
  • Loading branch information
isaacs committed Jul 17, 2012
1 parent c383bef commit 7397ab2
Show file tree
Hide file tree
Showing 11 changed files with 176 additions and 152 deletions.
4 changes: 4 additions & 0 deletions deps/uv/config-unix.mk
Expand Up @@ -128,6 +128,10 @@ 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
13 changes: 12 additions & 1 deletion deps/uv/include/uv-private/uv-unix.h
Expand Up @@ -40,10 +40,17 @@
#include <termios.h>
#include <pwd.h>

#include <semaphore.h>
#include <pthread.h>
#include <signal.h>

#if defined(__APPLE__) && defined(__MACH__)
# include <mach/mach.h>
# include <mach/task.h>
# include <mach/semaphore.h>
#else
# include <semaphore.h>
#endif

#if __sun
# include <sys/port.h>
# include <port.h>
Expand All @@ -67,7 +74,11 @@ typedef pthread_once_t uv_once_t;
typedef pthread_t uv_thread_t;
typedef pthread_mutex_t uv_mutex_t;
typedef pthread_rwlock_t uv_rwlock_t;
#if defined(__APPLE__) && defined(__MACH__)
typedef semaphore_t uv_sem_t;
#else
typedef sem_t uv_sem_t;
#endif

/* Platform-specific definitions for uv_spawn support. */
typedef gid_t uv_gid_t;
Expand Down
27 changes: 0 additions & 27 deletions deps/uv/src/unix/darwin.c
Expand Up @@ -41,8 +41,6 @@
#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 @@ -138,31 +136,6 @@ 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
16 changes: 15 additions & 1 deletion deps/uv/src/unix/freebsd.c
Expand Up @@ -139,9 +139,23 @@ char** uv_setup_args(int argc, char** argv) {


uv_err_t uv_set_process_title(const char* title) {
int oid[4];

if (process_title) free(process_title);
process_title = strdup(title);
setproctitle(title);

oid[0] = CTL_KERN;
oid[1] = KERN_PROC;
oid[2] = KERN_PROC_ARGS;
oid[3] = getpid();

sysctl(oid,
ARRAY_SIZE(oid),
NULL,
NULL,
process_title,
strlen(process_title) + 1);

return uv_ok_;
}

Expand Down
72 changes: 0 additions & 72 deletions deps/uv/src/unix/linux/linux-core.c
Expand Up @@ -58,11 +58,6 @@

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 @@ -112,73 +107,6 @@ 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: 0 additions & 30 deletions deps/uv/src/unix/openbsd.c
Expand Up @@ -40,9 +40,6 @@
#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 @@ -137,33 +134,6 @@ 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
92 changes: 92 additions & 0 deletions deps/uv/src/unix/proctitle.c
@@ -0,0 +1,92 @@
/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
* IN THE SOFTWARE.
*/

#include "uv.h"
#include "internal.h"

#include <stdlib.h>
#include <string.h>
#include <assert.h>

/* NOTE: FreeBSD is using it's own implementation of those functions */

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

extern char** environ;


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) {
uv_strlcpy(process_title.str, title, process_title.len);
return uv_ok_;
}


uv_err_t uv_get_process_title(char* buffer, size_t size) {
uv_strlcpy(buffer, process_title.str ? process_title.str : "", size);
return uv_ok_;
}
18 changes: 0 additions & 18 deletions deps/uv/src/unix/sunos.c
Expand Up @@ -238,24 +238,6 @@ 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

0 comments on commit 7397ab2

Please sign in to comment.