solaris fixes

This commit is contained in:
Ryan Dahl 2011-08-02 06:29:25 +00:00
parent 2e9a743da0
commit 22ec2db413
2 changed files with 12 additions and 4 deletions

View File

@ -32,7 +32,7 @@ CPPFLAGS += -D_FILE_OFFSET_BITS=64
ifeq (SunOS,$(uname_S)) ifeq (SunOS,$(uname_S))
EV_CONFIG=config_sunos.h EV_CONFIG=config_sunos.h
EIO_CONFIG=config_sunos.h EIO_CONFIG=config_sunos.h
CPPFLAGS += -Isrc/ares/config_sunos CPPFLAGS += -Isrc/ares/config_sunos -D__EXTENSIONS__
LINKFLAGS+=-lsocket -lnsl LINKFLAGS+=-lsocket -lnsl
UV_OS_FILE=uv-sunos.c UV_OS_FILE=uv-sunos.c
endif endif

View File

@ -65,6 +65,7 @@
extern char **environ; extern char **environ;
# endif # endif
#define LOCKFILE_SUFFIX ".lock"
static uv_err_t last_err; static uv_err_t last_err;
@ -2236,6 +2237,7 @@ size_t uv__strlcpy(char* dst, const char* src, size_t size) {
uv_stream_t* uv_std_handle(uv_std_type type) { uv_stream_t* uv_std_handle(uv_std_type type) {
assert(0 && "implement me"); assert(0 && "implement me");
return NULL;
} }
@ -2412,7 +2414,6 @@ int uv_process_kill(uv_process_t* process, int signum) {
} }
#define LOCKFILE_SUFFIX ".lock"
int uv_flock_init(uv_flock_t* lock, const char* filename) { int uv_flock_init(uv_flock_t* lock, const char* filename) {
int saved_errno; int saved_errno;
int status; int status;
@ -2437,10 +2438,10 @@ out:
errno = saved_errno; errno = saved_errno;
return status; return status;
} }
#undef LOCKFILE_SUFFIX
int uv_flock_acquire(uv_flock_t* lock, int* locked_p) { int uv_flock_acquire(uv_flock_t* lock, int* locked_p) {
struct flock fl;
char buf[32]; char buf[32];
int saved_errno; int saved_errno;
int status; int status;
@ -2461,8 +2462,15 @@ int uv_flock_acquire(uv_flock_t* lock, int* locked_p) {
goto out; goto out;
} }
fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = 0;
fl.l_pid = getpid();
do { do {
status = flock(lockfd, LOCK_EX | LOCK_NB); status = fcntl(lockfd, F_SETLKW, &fl);
} }
while (status == -1 && errno == EINTR); while (status == -1 && errno == EINTR);