@cryptotaxi247 / netdata-1 / commits / c7e01729e

Get rid of compilation errors on macOS

Vladimir Kobal committed Dec 21, 2016 at 09:13 UTC c7e01729efcae75eecec10bc1468bdaee582b087
8 files changed +45 -15
configure.ac
+3
@@ -44,6 +44,9 @@ case "$host_os" in
44 freebsd*)
45 build_target=freebsd
46 ;;
47 +darwin*)
48 + build_target=freebsd
49 + ;;
50 *)
51 ;;
52 esac
src/common.c
+10 -3
@@ -1,9 +1,12 @@
1 #include "common.h"
2
3 -#ifdef __FreeBSD__
3 +#ifdef __APPLE__
4 +#define INHERIT_NONE 0
5 +#endif /* __APPLE__ */
6 +#if defined(__FreeBSD__) || defined(__APPLE__)
7 # define O_NOATIME 0
8 # define MADV_DONTFORK INHERIT_NONE
6 -#endif /* __FreeBSD__ */
9 +#endif /* __FreeBSD__ || __APPLE__*/
10
11 char *global_host_prefix = "";
12 int enable_ksm = 1;
@@ -1027,9 +1030,13 @@ int fd_is_valid(int fd) {
1030 pid_t gettid(void) {
1031 #ifdef __FreeBSD__
1032 return (pid_t)pthread_getthreadid_np();
1033 +#elif defined(__APPLE__)
1034 + uint64_t curthreadid;
1035 + pthread_threadid_np(NULL, &curthreadid);
1036 + return (pid_t)curthreadid;
1037 #else
1038 return (pid_t)syscall(SYS_gettid);
1032 -#endif /* __FreeBSD__ */
1039 +#endif /* __FreeBSD__, __APPLE__*/
1040 }
1041
1042 char *fgets_trim_len(char *buf, size_t buf_size, FILE *fp, size_t *len) {
src/common.h
+6 -6
@@ -20,9 +20,9 @@
20
21 #else /* !defined(ENABLE_JEMALLOC) && !defined(ENABLE_TCMALLOC) */
22
23 -#ifndef __FreeBSD__
23 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
24 #include <malloc.h>
25 -#endif /* __FreeBSD__ */
25 +#endif /* __FreeBSD__ || __APPLE__ */
26
27 #endif
28
@@ -54,9 +54,9 @@
54 #include <signal.h>
55 #include <syslog.h>
56 #include <sys/mman.h>
57 -#ifndef __FreeBSD__
57 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
58 #include <sys/prctl.h>
59 -#endif /* __FreeBSD__ */
59 +#endif /* __FreeBSD__ || __APPLE__*/
60 #include <sys/resource.h>
61 #include <sys/socket.h>
62 #include <sys/stat.h>
@@ -116,11 +116,11 @@
116 #include "plugin_checks.h"
117 #include "plugin_idlejitter.h"
118 #include "plugin_nfacct.h"
119 -#ifndef __FreeBSD__
119 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
120 #include "plugin_proc.h"
121 #else
122 #include "plugin_freebsd.h"
123 -#endif /* __FreeBSD__ */
123 +#endif /* __FreeBSD__ || __APPLE__*/
124 #include "plugin_tc.h"
125 #include "plugins_d.h"
126
src/daemon.c
+8
@@ -117,12 +117,20 @@ int become_user(const char *username, int pid_fd)
117 ngroups = 0;
118 }
119
120 +#ifdef __APPLE__
121 + if(setregid(gid, gid) != 0) {
122 +#else
123 if(setresgid(gid, gid, gid) != 0) {
124 +#endif /* __APPLE__ */
125 error("Cannot switch to user's %s group (gid: %u).", username, gid);
126 return -1;
127 }
128
129 +#ifdef __APPLE__
130 + if(setreuid(uid, uid) != 0) {
131 +#else
132 if(setresuid(uid, uid, uid) != 0) {
133 +#endif /* __APPLE__ */
134 error("Cannot switch to user %s (uid: %u).", username, uid);
135 return -1;
136 }
src/freebsd_sysctl.c
+6
@@ -1,5 +1,6 @@
1 #include "common.h"
2
3 +#ifndef __APPLE__
4 // NEEDED BY: struct vmtotal, struct vmmeter
5 #include <sys/vmmeter.h>
6 // NEEDED BY: struct devstat
@@ -18,6 +19,7 @@
19 #define _IFI_OQDROPS // It is for FreeNAS only. Most probably in future releases of FreeNAS it will be removed
20 #include <net/if.h>
21 #include <ifaddrs.h>
22 +#endif /* __APPLE__ */
23 // NEEDED BY: do_disk_io
24 #define RRD_TYPE_DISK "disk"
25
@@ -71,6 +73,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
73 static usec_t last_loadavg_usec = 0;
74 struct loadavg sysload;
75
76 +#ifndef __APPLE__
77 // NEEDED BY: do_cpu, do_cpu_cores
78 long cp_time[CPUSTATES];
79
@@ -177,6 +180,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
180
181 // --------------------------------------------------------------------
182
183 +#endif /* __APPLE__ */
184 if (last_loadavg_usec <= dt) {
185 if (likely(do_loadavg)) {
186 if (unlikely(GETSYSCTL("vm.loadavg", sysload))) {
@@ -203,6 +207,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
207 last_loadavg_usec = st->update_every * USEC_PER_SEC;
208 }
209 else last_loadavg_usec -= dt;
210 +#ifndef __APPLE__
211
212 // --------------------------------------------------------------------
213
@@ -1188,6 +1193,7 @@ int do_freebsd_sysctl(int update_every, usec_t dt) {
1193 freeifaddrs(ifap);
1194 }
1195 }
1196 +#endif /* __APPLE__ */
1197
1198 return 0;
1199 }
src/main.c
+6 -6
@@ -45,11 +45,11 @@ struct netdata_static_thread {
45
46 {"tc", "plugins", "tc", 1, NULL, NULL, tc_main},
47 {"idlejitter", "plugins", "idlejitter", 1, NULL, NULL, cpuidlejitter_main},
48 -#ifndef __FreeBSD__
48 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
49 {"proc", "plugins", "proc", 1, NULL, NULL, proc_main},
50 #else
51 {"freebsd", "plugins", "freebsd", 1, NULL, NULL, freebsd_main},
52 -#endif /* __FreeBSD__ */
52 +#endif /* __FreeBSD__ || __APPLE__*/
53 {"cgroups", "plugins", "cgroups", 1, NULL, NULL, cgroups_main},
54 {"check", "plugins", "checks", 0, NULL, NULL, checks_main},
55 {"backends", NULL, NULL, 1, NULL, NULL, backends_main},
@@ -467,9 +467,9 @@ int main(int argc, char **argv)
467 if(setrlimit(RLIMIT_CORE, &rl) != 0)
468 error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
469
470 -#ifndef __FreeBSD__
470 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
471 prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
472 -#endif /* __FreeBSD__ */
472 +#endif /* __FreeBSD__ || __APPLE__*/
473 }
474
475 // --------------------------------------------------------------------
@@ -644,9 +644,9 @@ int main(int argc, char **argv)
644 struct rlimit rl = { RLIM_INFINITY, RLIM_INFINITY };
645 if(setrlimit(RLIMIT_CORE, &rl) != 0)
646 error("Cannot request unlimited core dumps for debugging... Proceeding anyway...");
647 -#ifndef __FreeBSD__
647 +#if !(defined(__FreeBSD__) || defined(__APPLE__))
648 prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
649 -#endif /* __FreeBSD__ */
649 +#endif /* __FreeBSD__ || __APPLE__*/
650 }
651 #endif /* NETDATA_INTERNAL_CHECKS */
652
src/plugin_freebsd.h
+2
@@ -1,6 +1,8 @@
1 #ifndef NETDATA_PLUGIN_FREEBSD_H
2 #define NETDATA_PLUGIN_FREEBSD_H 1
3
4 +#include <sys/sysctl.h>
5 +
6 #define GETSYSCTL(name, var) getsysctl(name, &(var), sizeof(var))
7
8 void *freebsd_main(void *ptr);
src/web_client.c
+4
@@ -414,7 +414,11 @@ int mysendfile(struct web_client *w, char *filename)
414 w->wait_send = 0;
415 buffer_flush(w->response.data);
416 w->response.rlen = stat.st_size;
417 +#ifdef __APPLE__
418 + w->response.data->date = stat.st_mtimespec.tv_sec;
419 +#else
420 w->response.data->date = stat.st_mtim.tv_sec;
421 +#endif /* __APPLE__ */
422 buffer_cacheable(w->response.data);
423
424 return 200;