From e32e6315b551e3bb574dfa2d9e417090faac5b4d Mon Sep 17 00:00:00 2001 From: Yu Qing Date: Fri, 19 Feb 2016 11:27:39 +0800 Subject: [PATCH] compile passed in FreeBSD 10.2 --- HISTORY | 1 + make.sh | 2 +- src/system_info.c | 49 ++++++++++++++++++++++++++++++++++------------ src/tests/Makefile | 2 +- 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/HISTORY b/HISTORY index 1555405..525ac1c 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Version 1.25 2016-02-19 * php7_ext_wrapper.h add more macro defines + * compile passed in FreeBSD 10.2 Version 1.24 2016-02-15 * php extension compiled on PHP 7 diff --git a/make.sh b/make.sh index 96f3783..1c6358e 100755 --- a/make.sh +++ b/make.sh @@ -128,7 +128,7 @@ elif [ -f /usr/lib/libc_r.so ]; then fi fi -function sed_replace() +sed_replace() { sed_cmd=$1 filename=$2 diff --git a/src/system_info.c b/src/system_info.c index 042960e..774a7eb 100644 --- a/src/system_info.c +++ b/src/system_info.c @@ -31,6 +31,7 @@ #ifdef OS_FREEBSD #include #include +#include #if HAVE_VMMETER_H == 1 #include @@ -58,7 +59,7 @@ int get_sys_total_mem_size(int64_t *mem_size) size_t len; mib[0] = CTL_HW; - mib[1] = HW_MEMSIZE; + mib[1] = HW_PHYSMEM; len = sizeof(*mem_size); if (sysctl(mib, 2, mem_size, &len, NULL, 0) != 0) { @@ -564,6 +565,25 @@ int get_sysinfo(struct fast_sysinfo*info) #elif defined(OS_FREEBSD) +#ifdef DARWIN +#define ki_pid kp_proc.p_pid +#define ki_comm kp_proc.p_comm +#define ki_ppid kp_eproc.e_ppid +#define ki_start kp_proc.p_starttime +#define ki_flag kp_proc.p_flag +#define ki_stat kp_proc.p_stat +#define ki_sigignore kp_proc.p_sigignore +#define ki_sigcatch kp_proc.p_sigcatch +#define ki_priority kp_proc.p_priority +#define ki_ruid kp_eproc.e_pcred.p_ruid +#define ki_rgid kp_eproc.e_pcred.p_rgid +#define GET_SIGNAL(sig) sig + +#else +#define ki_priority ki_pri.pri_level +#define GET_SIGNAL(sig) *((int *)&sig) +#endif + int get_processes(struct fast_process_info **processes, int *count) { struct kinfo_proc *procs; @@ -658,19 +678,19 @@ int get_processes(struct fast_process_info **processes, int *count) { process->field_count = 9; snprintf(process->comm, sizeof(process->comm), - "%s", procs[i].kp_proc.p_comm); - process->pid = procs[i].kp_proc.p_pid; - process->ppid = procs[i].kp_eproc.e_ppid; - process->starttime = procs[i].kp_proc.p_starttime; - process->flags = procs[i].kp_proc.p_flag; - process->state = procs[i].kp_proc.p_stat; + "%s", procs[i].ki_comm); + process->pid = procs[i].ki_pid; + process->ppid = procs[i].ki_ppid; + process->starttime = procs[i].ki_start; + process->flags = procs[i].ki_flag; + process->state = procs[i].ki_stat; - process->sigignore = procs[i].kp_proc.p_sigignore; - process->sigcatch = procs[i].kp_proc.p_sigcatch; - process->priority = procs[i].kp_proc.p_priority; + process->sigignore = GET_SIGNAL(procs[i].ki_sigignore); + process->sigcatch = GET_SIGNAL(procs[i].ki_sigcatch); + process->priority = procs[i].ki_priority; - //process->uid = procs[i].kp_eproc.e_pcred.p_ruid; - //process->gid = procs[i].kp_eproc.e_pcred.p_rgid; + //process->uid = procs[i].ki_ruid; + //process->gid = procs[i].ki_rgid; process++; } @@ -688,7 +708,10 @@ int get_sysinfo(struct fast_sysinfo*info) #if HAVE_VMMETER_H == 1 struct vmtotal vm; #endif + +#ifdef VM_SWAPUSAGE struct xsw_usage sw_usage; +#endif memset(info, 0, sizeof(struct fast_sysinfo)); get_boot_time(&info->boot_time); @@ -748,6 +771,7 @@ int get_sysinfo(struct fast_sysinfo*info) } #endif +#ifdef VM_SWAPUSAGE mib[0] = CTL_VM; mib[1] = VM_SWAPUSAGE; size = sizeof(sw_usage); @@ -763,6 +787,7 @@ int get_sysinfo(struct fast_sysinfo*info) info->totalswap = sw_usage.xsu_total; info->freeswap = sw_usage.xsu_avail; } +#endif return 0; } diff --git a/src/tests/Makefile b/src/tests/Makefile index 17a6acc..e0228cd 100644 --- a/src/tests/Makefile +++ b/src/tests/Makefile @@ -2,7 +2,7 @@ COMPILE = $(CC) -g -O1 -Wall -D_FILE_OFFSET_BITS=64 -g -DDEBUG_FLAG INC_PATH = -I/usr/include/fastcommon -LIB_PATH = -lfastcommon +LIB_PATH = -lfastcommon -lpthread ALL_PRGS = test_allocator test_skiplist test_multi_skiplist test_mblock test_blocked_queue