Formatting, code cleanup.

This commit is contained in:
Enrico Giordani
2015-07-12 15:09:41 +02:00
parent 425574d15d
commit 2a3e193c57
2 changed files with 153 additions and 196 deletions
+119 -148
View File
@@ -22,59 +22,35 @@
#define REDIS_NOTUSED(V) ((void) V)
#define REDIS_THREAD_STACK_SIZE (1024*1024*4)
/* Winsock requires library initialization on startup */
/* now handled in Win32FDAPI_Init.cpp
*
int w32initWinSock(void) {
WSADATA t_wsa;
WORD wVers;
int iError;
wVers = MAKEWORD(2, 2);
iError = WSAStartup(wVers, &t_wsa);
if(iError != NO_ERROR || LOBYTE(t_wsa.wVersion) != 2 || HIBYTE(t_wsa.wVersion) != 2 ) {
return 0; // not done; check WSAGetLastError() for error number
};
return 1;
}
*/
/* Behaves as posix, works without ifdefs, makes compiler happy */
int sigaction(int sig, struct sigaction *in, struct sigaction *out) {
REDIS_NOTUSED(out);
/* When the SA_SIGINFO flag is set in sa_flags then sa_sigaction
* is used. Otherwise, sa_handler is used */
if (in->sa_flags & SA_SIGINFO)
if (in->sa_flags & SA_SIGINFO) {
signal(sig, in->sa_sigaction);
else
} else {
signal(sig, in->sa_handler);
}
return 0;
}
/* Terminates process, implemented only for SIGKILL */
int kill(pid_t pid, int sig) {
if (sig == SIGKILL) {
HANDLE h = OpenProcess(PROCESS_TERMINATE, 0, pid);
if (!TerminateProcess(h, 127)) {
errno = EINVAL; /* GetLastError() */
CloseHandle(h);
return -1;
};
CloseHandle(h);
return 0;
} else {
errno = EINVAL;
return -1;
};
}
}
/* Missing wait3() implementation */
@@ -136,8 +112,7 @@ int replace_rename(const char *src, const char *dst) {
}
/* Proxy structure to pass func and arg to thread */
typedef struct thread_params
{
typedef struct thread_params {
void *(*func)(void *);
void * arg;
} thread_params;
@@ -159,8 +134,7 @@ static unsigned __stdcall win32_proxy_threadproc(void *arg) {
return 0;
}
int pthread_create(pthread_t *thread, const void *unused,
void *(*start_routine)(void*), void *arg) {
int pthread_create(pthread_t *thread, const void *unused, void *(*start_routine)(void*), void *arg) {
HANDLE h;
thread_params *params = (thread_params *)malloc(sizeof(thread_params));
REDIS_NOTUSED(unused);
@@ -168,13 +142,13 @@ int pthread_create(pthread_t *thread, const void *unused,
params->func = start_routine;
params->arg = arg;
h =(HANDLE) _beginthreadex(NULL, /* Security not used */
REDIS_THREAD_STACK_SIZE, /* Set custom stack size */
win32_proxy_threadproc, /* calls win32 stdcall proxy */
params, /* real threadproc is passed as paremeter */
STACK_SIZE_PARAM_IS_A_RESERVATION, /* reserve stack */
thread /* returned thread id */
);
h = (HANDLE)_beginthreadex(NULL, /* Security not used */
REDIS_THREAD_STACK_SIZE, /* Set custom stack size */
win32_proxy_threadproc, /* calls win32 stdcall proxy */
params, /* real threadproc is passed as paremeter */
STACK_SIZE_PARAM_IS_A_RESERVATION, /* reserve stack */
thread /* returned thread id */
);
if (!h)
return errno;
@@ -210,7 +184,7 @@ int pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) {
return 0;
}
int win32_pthread_join(pthread_t *thread, void **value_ptr) {
int win32_pthread_join(pthread_t *thread, void **value_ptr) {
int result;
HANDLE h = OpenThread(SYNCHRONIZE, FALSE, *thread);
REDIS_NOTUSED(value_ptr);
@@ -290,21 +264,21 @@ int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) {
LeaveCriticalSection(&cond->waiters_lock);
if (last_waiter) {
/*
* cond_broadcast was issued while mutex was held. This means
* that all other waiters have continued, but are contending
* for the mutex at the end of this function because the
* broadcasting thread did not leave cond_broadcast, yet.
* (This is so that it can be sure that each waiter has
* consumed exactly one slice of the semaphor.)
* The last waiter must tell the broadcasting thread that it
* can go on.
*/
SetEvent(cond->continue_broadcast);
/*
* Now we go on to contend with all other waiters for
* the mutex. Auf in den Kampf!
*/
/*
* cond_broadcast was issued while mutex was held. This means
* that all other waiters have continued, but are contending
* for the mutex at the end of this function because the
* broadcasting thread did not leave cond_broadcast, yet.
* (This is so that it can be sure that each waiter has
* consumed exactly one slice of the semaphor.)
* The last waiter must tell the broadcasting thread that it
* can go on.
*/
SetEvent(cond->continue_broadcast);
/*
* Now we go on to contend with all other waiters for
* the mutex. Auf in den Kampf!
*/
}
/* lock external mutex again */
EnterCriticalSection(mutex);
@@ -341,64 +315,62 @@ int pthread_cond_signal(pthread_cond_t *cond) {
/* child process will have data snapshot. */
/* Windows has no support for fork(). */
int fork(void) {
return -1;
}
return -1;
}
/* Redis CPU GetProcessTimes -> rusage */
int getrusage(int who, struct rusage * r) {
FILETIME starttime, exittime, kerneltime, usertime;
ULARGE_INTEGER li;
FILETIME starttime, exittime, kerneltime, usertime;
ULARGE_INTEGER li;
if (r == NULL) {
errno = EFAULT;
return -1;
}
if (r == NULL) {
errno = EFAULT;
return -1;
}
memset(r, 0, sizeof(struct rusage));
memset(r, 0, sizeof(struct rusage));
if (who == RUSAGE_SELF) {
if (!GetProcessTimes(GetCurrentProcess(),
&starttime,
&exittime,
&kerneltime,
&usertime))
{
errno = EFAULT;
return -1;
}
}
if (who == RUSAGE_SELF) {
if (!GetProcessTimes(GetCurrentProcess(),
&starttime,
&exittime,
&kerneltime,
&usertime))
{
errno = EFAULT;
return -1;
}
}
if (who == RUSAGE_CHILDREN) {
if (who == RUSAGE_CHILDREN) {
/* Childless on windows */
starttime.dwLowDateTime = 0;
starttime.dwHighDateTime = 0;
exittime.dwLowDateTime = 0;
exittime.dwHighDateTime = 0;
kerneltime.dwLowDateTime = 0;
kerneltime.dwHighDateTime = 0;
kerneltime.dwLowDateTime = 0;
kerneltime.dwHighDateTime = 0;
usertime.dwLowDateTime = 0;
usertime.dwHighDateTime = 0;
}
}
memcpy(&li, &kerneltime, sizeof(FILETIME));
li.QuadPart /= 10L;
r->ru_stime.tv_sec = (long)(li.QuadPart / 1000000L);
r->ru_stime.tv_usec = (long)(li.QuadPart % 1000000L);
r->ru_stime.tv_sec = (long) (li.QuadPart / 1000000L);
r->ru_stime.tv_usec = (long) (li.QuadPart % 1000000L);
memcpy(&li, &usertime, sizeof(FILETIME));
li.QuadPart /= 10L;
r->ru_utime.tv_sec = (long)(li.QuadPart / 1000000L);
r->ru_utime.tv_usec = (long)(li.QuadPart % 1000000L);
r->ru_utime.tv_sec = (long) (li.QuadPart / 1000000L);
r->ru_utime.tv_usec = (long) (li.QuadPart % 1000000L);
return 0;
}
#define DELTA_EPOCH_IN_MICROSECS 11644473600000000Ui64
struct timezone
{
int tz_minuteswest; /* minutes W of Greenwich */
int tz_dsttime; /* type of dst correction */
struct timezone {
int tz_minuteswest; /* minutes W of Greenwich */
int tz_dsttime; /* type of dst correction */
};
/* fnGetSystemTimePreciseAsFileTime is NULL if and only if it hasn't been initialized. */
@@ -411,8 +383,7 @@ static VOID (WINAPI *fnGetSystemTimePreciseAsFileTime)(LPFILETIME) = NULL;
*/
static double highResTimeInterval = 0;
void InitHighResRelativeTime()
{
void InitHighResRelativeTime() {
LARGE_INTEGER perfFrequency;
if (highResTimeInterval != 0)
@@ -430,8 +401,7 @@ void InitHighResRelativeTime()
assert(highResTimeInterval != 0);
}
void InitHighResAbsoluteTime()
{
void InitHighResAbsoluteTime() {
FARPROC fp;
HMODULE module;
@@ -451,8 +421,7 @@ void InitHighResAbsoluteTime()
assert(fnGetSystemTimePreciseAsFileTime != NULL);
}
void InitTimeFunctions()
{
void InitTimeFunctions() {
InitHighResRelativeTime();
InitHighResAbsoluteTime();
}
@@ -482,8 +451,7 @@ uint64_t GetHighResRelativeTime(double scale) {
return (uint64_t) ((double)counter.QuadPart * highResTimeInterval * scale);
}
time_t gettimeofdaysecs(unsigned int *usec)
{
time_t gettimeofdaysecs(unsigned int *usec) {
FILETIME ft;
time_t tmpres = 0;
@@ -496,18 +464,18 @@ time_t gettimeofdaysecs(unsigned int *usec)
/*converting file time to unix epoch*/
tmpres /= 10; /*convert into microseconds*/
tmpres -= DELTA_EPOCH_IN_MICROSECS;
if (usec != NULL) *usec = (unsigned int)(tmpres % 1000000UL);
if (usec != NULL) {
*usec = (unsigned int) (tmpres % 1000000UL);
}
return (tmpres / 1000000UL);
}
int gettimeofday_fast(struct timeval *tv, struct timezone *tz)
{
int gettimeofday_fast(struct timeval *tv, struct timezone *tz) {
FILETIME ft;
unsigned __int64 tmpres = 0;
static int tzflag;
if (NULL != tv)
{
if (NULL != tv) {
GetSystemTimeAsFileTime(&ft);
tmpres |= ft.dwHighDateTime;
@@ -521,8 +489,7 @@ int gettimeofday_fast(struct timeval *tv, struct timezone *tz)
tv->tv_usec = (long)(tmpres % 1000000UL);
}
if (NULL != tz)
{
if (NULL != tz) {
if (!tzflag)
{
_tzset();
@@ -535,85 +502,87 @@ int gettimeofday_fast(struct timeval *tv, struct timezone *tz)
return 0;
}
int gettimeofday_highres(struct timeval *tv, struct timezone *tz)
{
FILETIME ft;
unsigned __int64 tmpres = 0;
static int tzflag;
int gettimeofday_highres(struct timeval *tv, struct timezone *tz) {
FILETIME ft;
unsigned __int64 tmpres = 0;
static int tzflag;
if (NULL == fnGetSystemTimePreciseAsFileTime) {
InitHighResAbsoluteTime();
}
if (NULL == fnGetSystemTimePreciseAsFileTime) {
InitHighResAbsoluteTime();
}
if (NULL != tv)
{
fnGetSystemTimePreciseAsFileTime(&ft);
if (NULL != tv) {
fnGetSystemTimePreciseAsFileTime(&ft);
tmpres |= ft.dwHighDateTime;
tmpres <<= 32;
tmpres |= ft.dwLowDateTime;
tmpres |= ft.dwHighDateTime;
tmpres <<= 32;
tmpres |= ft.dwLowDateTime;
/*converting file time to unix epoch*/
tmpres /= 10; /*convert into microseconds*/
tmpres -= DELTA_EPOCH_IN_MICROSECS;
tv->tv_sec = (long)(tmpres / 1000000UL);
tv->tv_usec = (long)(tmpres % 1000000UL);
}
/*converting file time to unix epoch*/
tmpres /= 10; /*convert into microseconds*/
tmpres -= DELTA_EPOCH_IN_MICROSECS;
tv->tv_sec = (long) (tmpres / 1000000UL);
tv->tv_usec = (long) (tmpres % 1000000UL);
}
if (NULL != tz)
{
if (!tzflag)
{
_tzset();
tzflag++;
}
tz->tz_minuteswest = _timezone / 60;
tz->tz_dsttime = _daylight;
}
if (NULL != tz) {
if (!tzflag) {
_tzset();
tzflag++;
}
tz->tz_minuteswest = _timezone / 60;
tz->tz_dsttime = _daylight;
}
return 0;
return 0;
}
static _locale_t clocale = NULL;
double wstrtod(const char *nptr, char **eptr) {
double d;
char *leptr;
if (clocale == NULL)
if (clocale == NULL) {
clocale = _create_locale(LC_ALL, "C");
}
d = _strtod_l(nptr, &leptr, clocale);
/* if 0, check if input was inf */
if (d == 0 && nptr == leptr) {
int neg = 0;
while (isspace(*nptr))
while (isspace(*nptr)) {
nptr++;
if (*nptr == '+')
}
if (*nptr == '+') {
nptr++;
else if (*nptr == '-') {
} else if (*nptr == '-') {
nptr++;
neg = 1;
}
if (_strnicmp("INF", nptr, 3) == 0) {
if (eptr != NULL) {
if (_strnicmp("INFINITE", nptr, 8) == 0)
*eptr = (char*)(nptr + 8);
else
*eptr = (char*)(nptr + 3);
if (_strnicmp("INFINITE", nptr, 8) == 0) {
*eptr = (char*) (nptr + 8);
} else {
*eptr = (char*) (nptr + 3);
}
}
if (neg == 1)
if (neg == 1) {
return -HUGE_VAL;
else
} else {
return HUGE_VAL;
}
} else if (_strnicmp("NAN", nptr, 3) == 0) {
if (eptr != NULL)
*eptr = (char*)(nptr + 3);
if (eptr != NULL) {
*eptr = (char*) (nptr + 3);
}
/* create a NaN : 0 * infinity*/
d = HUGE_VAL;
return d * 0;
}
}
if (eptr != NULL)
if (eptr != NULL) {
*eptr = leptr;
}
return d;
}
@@ -651,7 +620,9 @@ char *wsa_strerror(int err) {
wsa_strerror_buf,
128,
NULL);
if (size == 0) return strerror(err);
if (size == 0) {
return strerror(err);
}
if (size > 2 && wsa_strerror_buf[size - 2] == '\r') {
/* remove extra CRLF */
wsa_strerror_buf[size - 2] = '\0';
+34 -48
View File
@@ -16,7 +16,6 @@
#endif
#endif
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define NOGDI
#define __USE_W32_SOCKETS
@@ -31,8 +30,8 @@
#include <sys/stat.h>
#include <windows.h>
#include <float.h>
#include <fcntl.h> /* _O_BINARY */
#include <limits.h> /* INT_MAX */
#include <fcntl.h> /* _O_BINARY */
#include <limits.h> /* INT_MAX */
#include <process.h>
#include <sys/types.h>
@@ -43,11 +42,12 @@
#define fseeko fseeko64
#define ftello ftello64
#define snprintf _snprintf
#define ftello64 _ftelli64
#define fseeko64 _fseeki64
#define strcasecmp _stricmp
#define strtoll _strtoi64
#define snprintf _snprintf
#define ftello64 _ftelli64
#define fseeko64 _fseeki64
#define strcasecmp _stricmp
#define strtoll _strtoi64
#if _MSC_VER < 1800
#define isnan _isnan
#define isfinite _finite
@@ -55,6 +55,7 @@
#else
#include <math.h>
#endif
/* following defined to choose little endian byte order */
#define __i386__ 1
#if !defined(va_copy)
@@ -74,7 +75,6 @@ RtlGenRandomFunc RtlGenRandom;
#define srandom srand
int replace_random();
#if !defined(mode_t)
#define mode_t long
#endif
@@ -85,9 +85,9 @@ typedef unsigned __int32 u_int32_t;
#endif
/* Redis calls usleep(1) to give thread some time
* Sleep(0) should do the same on windows
* In other cases, usleep is called with milisec resolution,
* which can be directly translated to winapi Sleep() */
* Sleep(0) should do the same on windows
* In other cases, usleep is called with milisec resolution,
* which can be directly translated to winapi Sleep() */
#undef usleep
#define usleep(x) (x == 1) ? Sleep(0) : Sleep((int)((x)/1000))
@@ -95,11 +95,11 @@ typedef unsigned __int32 u_int32_t;
#define waitpid(pid,statusp,options) _cwait (statusp, pid, WAIT_CHILD)
#define WAIT_T int
#define WTERMSIG(x) ((x) & 0xff) /* or: SIGABRT ?? */
#define WTERMSIG(x) ((x) & 0xff) /* or: SIGABRT ?? */
#define WCOREDUMP(x) 0
#define WEXITSTATUS(x) (((x) >> 8) & 0xff) /* or: (x) ?? */
#define WIFSIGNALED(x) (WTERMSIG (x) != 0) /* or: ((x) == 3) ?? */
#define WIFEXITED(x) (WTERMSIG (x) == 0) /* or: ((x) != 3) ?? */
#define WEXITSTATUS(x) (((x) >> 8) & 0xff) /* or: (x) ?? */
#define WIFSIGNALED(x) (WTERMSIG (x) != 0) /* or: ((x) == 3) ?? */
#define WIFEXITED(x) (WTERMSIG (x) == 0) /* or: ((x) != 3) ?? */
#define WIFSTOPPED(x) 0
#define WNOHANG 1
@@ -147,7 +147,7 @@ int getrusage(int who, struct rusage * rusage);
#define SIGABRT 22
/* #define SIGSTOP 24 /*Pause the process; cannot be trapped*/
/* #define SIGTSTP 25 /*Terminal stop Pause the process; can be trapped*/
/* #define SIGCONT 26 */
/* #define SIGCONT 26 /* */
#define SIGWINCH 28
#define SIGUSR1 30
#define SIGUSR2 31
@@ -165,11 +165,11 @@ int getrusage(int who, struct rusage * rusage);
#define SA_ONESHOT SA_RESETHAND
#define SA_RESTORER 0x04000000
#define sigemptyset(pset) (*(pset) = 0)
#define sigfillset(pset) (*(pset) = (unsigned int)-1)
#define sigaddset(pset, num) (*(pset) |= (1L<<(num)))
#define sigdelset(pset, num) (*(pset) &= ~(1L<<(num)))
#define sigismember(pset, num) (*(pset) & (1L<<(num)))
#define sigemptyset(pset) (*(pset) = 0)
#define sigfillset(pset) (*(pset) = (unsigned int)-1)
#define sigaddset(pset, num) (*(pset) |= (1L<<(num)))
#define sigdelset(pset, num) (*(pset) &= ~(1L<<(num)))
#define sigismember(pset, num) (*(pset) & (1L<<(num)))
#ifndef SIG_SETMASK
#define SIG_SETMASK (0)
@@ -182,7 +182,7 @@ typedef void (*__p_sig_fn_t)(int);
#ifndef _SIGSET_T_
#define _SIGSET_T_
typedef size_t _sigset_t;
# define sigset_t _sigset_t
#define sigset_t _sigset_t
#endif /* _SIGSET_T_ */
struct sigaction {
@@ -213,8 +213,7 @@ int sigaction(int sig, struct sigaction *in, struct sigaction *out);
#define rename(a,b) replace_rename(a,b)
int replace_rename(const char *src, const char *dest);
//threads avoiding pthread.h
/* threads avoiding pthread.h */
#define pthread_mutex_t CRITICAL_SECTION
#define pthread_attr_t ssize_t
@@ -231,8 +230,7 @@ int replace_rename(const char *src, const char *dest);
#define pthread_t unsigned int
int pthread_create(pthread_t *thread, const void *unused,
void *(*start_routine)(void*), void *arg);
int pthread_create(pthread_t *thread, const void *unused, void *(*start_routine)(void*), void *arg);
pthread_t pthread_self(void);
@@ -256,13 +254,6 @@ int pthread_sigmask(int how, const sigset_t *set, sigset_t *oldset);
int kill(pid_t pid, int sig);
pid_t wait3(int *stat_loc, int options, void *rusage);
int w32initWinSock(void);
/* int inet_aton(const char *cp_arg, struct in_addr *addr) */
/* redis-check-dump */
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
int munmap(void *start, size_t length);
void InitTimeFunctions();
uint64_t GetHighResRelativeTime(double scale);
int gettimeofday_fast(struct timeval *tv, struct timezone *tz);
@@ -272,14 +263,12 @@ time_t gettimeofdaysecs(unsigned int *usec);
char *ctime_r(const time_t *clock, char *buf);
/* strtod does not handle Inf and Nan
We need to do the check before calling strtod */
/* strtod does not handle Inf and Nan, we need to do the check before calling strtod */
#undef strtod
#define strtod(nptr, eptr) wstrtod((nptr), (eptr))
double wstrtod(const char *nptr, char **eptr);
/* structs and functions for using IOCP with windows sockets */
/* need callback on write complete. aeWinSendReq is used to pass parameters */
@@ -290,17 +279,15 @@ typedef struct aeWinSendReq {
int len;
} aeWinSendReq;
int aeWinSocketAttach(int fd);
int aeWinCloseSocket(int fd);
int aeWinReceiveDone(int fd);
int aeWinSocketSend(int fd, char *buf, int len,
void *eventLoop, void *client, void *data, void *proc);
int aeWinSocketAttach(int rfd);
int aeWinCloseSocket(int rfd);
int aeWinReceiveDone(int rfd);
int aeWinSocketSend(int rfd, char *buf, int len, void *eventLoop, void *client, void *data, void *proc);
int aeWinListen(int rfd, int backlog);
int aeWinAccept(int fd, struct sockaddr *sa, socklen_t *len);
int aeWinGetPeerName(int fd, struct sockaddr *addr, socklen_t * addrlen);
int aeWinSocketConnect(int fd, const SOCKADDR_STORAGE *ss);
int aeWinSocketConnectBind(int fd, const SOCKADDR_STORAGE *ss, const char* source_addr);
int aeWinAccept(int rfd, struct sockaddr *sa, socklen_t *len);
int aeWinGetPeerName(int rfd, struct sockaddr *addr, socklen_t * addrlen);
int aeWinSocketConnect(int rfd, const SOCKADDR_STORAGE *ss);
int aeWinSocketConnectBind(int rfd, const SOCKADDR_STORAGE *ss, const char* source_addr);
int strerror_r(int err, char* buf, size_t buflen);
char *wsa_strerror(int err);
@@ -332,5 +319,4 @@ int truncate(const char *path, PORT_LONGLONG length);
#define lseek lseek64
#endif /* WIN32 */
#endif /* WIN32FIXES_H */