From: David Goulet Date: Tue, 21 Feb 2012 22:45:50 +0000 (-0500) Subject: Multiple fix for FreeBSD compat layer X-Git-Tag: v2.0.0-rc3~45 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=1268b9d6a6df8cdc5ea9ba786e603c60e7451568 Multiple fix for FreeBSD compat layer Signed-off-by: David Goulet --- diff --git a/src/common/compat/fcntl.h b/src/common/compat/fcntl.h index 420546959..575495fe5 100644 --- a/src/common/compat/fcntl.h +++ b/src/common/compat/fcntl.h @@ -19,19 +19,21 @@ #define _COMPAT_FCNTL_H #include +#include +#ifdef __linux__ + +extern int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, + unsigned int flags); #define lttng_sync_file_range(fd, offset, nbytes, flags) \ compat_sync_file_range(fd, offset, nbytes, flags) -#ifdef __linux__ +#elif __FreeBSD__ -int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, - unsigned int flags) -{ - return sync_file_range(fd, offset, nbytes, flags); -} +typedef long int off64_t; +typedef off64_t loff_t; -#elif __FreeBSD__ +#include /* * Possible flags under Linux. Simply nullify them and avoid wrapper. @@ -40,15 +42,6 @@ int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, #define SYNC_FILE_RANGE_WAIT_BEFORE 0 #define SYNC_FILE_RANGE_WRITE 0 -typedef long int off64_t; -typedef off64_t loff_t; - -int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, - unsigned int flags) -{ - return 0; -} - /* * Possible flags under Linux. Simply nullify them and avoid wrappers. */ @@ -57,8 +50,21 @@ int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, #define SPLICE_F_MORE 0 #define SPLICE_F_GIFT 0 -ssize_t splice(int fd_in, loff_t *off_in, int fd_out, - loff_t *off_out, size_t len, unsigned int flags) +#define POSIX_FADV_DONTNEED 0 + +static inline int lttng_sync_file_range(int fd, off64_t offset, + off64_t nbytes, unsigned int flags) +{ + return -ENOSYS; +} + +static inline ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, + size_t len, unsigned int flags) +{ + return -ENOSYS; +} + +static inline int posix_fadvise(int fd, off_t offset, off_t len, int advice) { return -ENOSYS; } diff --git a/src/common/compat/poll.h b/src/common/compat/poll.h index 1580a4fb2..ded35410d 100644 --- a/src/common/compat/poll.h +++ b/src/common/compat/poll.h @@ -179,10 +179,15 @@ enum { LPOLLRDBAND = POLLRDBAND, LPOLLWRNORM = POLLWRNORM, LPOLLWRBAND = POLLWRBAND, +#if __linux__ LPOLLMSG = POLLMSG, + LPOLLRDHUP = POLLRDHUP, +#elif __FreeBSD__ + LPOLLMSG = 0, + LPOLLRDHUP = 0, +#endif /* __linux__ */ LPOLLERR = POLLERR, LPOLLHUP = POLLHUP | POLLNVAL, - LPOLLRDHUP = POLLRDHUP, /* Close on exec feature does not exist for poll(2) */ LTTNG_CLOEXEC = 0xdead, }; diff --git a/src/common/compat/socket.h b/src/common/compat/socket.h index dcb6cdede..0eaf87a77 100644 --- a/src/common/compat/socket.h +++ b/src/common/compat/socket.h @@ -30,9 +30,13 @@ typedef struct ucred lttng_sock_cred; -#define LTTNG_SOCK_SET_UID_CRED(c, u) LTTNG_REF(c)->uid = u; -#define LTTNG_SOCK_SET_GID_CRED(c, g) LTTNG_REF(c)->gid = g; -#define LTTNG_SOCK_SET_PID_CRED(c, p) LTTNG_REF(c)->pid = p; +#define LTTNG_SOCK_SET_UID_CRED(c, u) LTTNG_REF(c)->uid = u +#define LTTNG_SOCK_SET_GID_CRED(c, g) LTTNG_REF(c)->gid = g +#define LTTNG_SOCK_SET_PID_CRED(c, p) LTTNG_REF(c)->pid = p + +#define LTTNG_SOCK_GET_UID_CRED(c) LTTNG_REF(c)->uid +#define LTTNG_SOCK_GET_GID_CRED(c) LTTNG_REF(c)->gid +#define LTTNG_SOCK_GET_PID_CRED(c) LTTNG_REF(c)->pid #elif __FreeBSD__ @@ -44,9 +48,13 @@ typedef struct ucred lttng_sock_cred; typedef struct cmsgcred lttng_sock_cred; -#define LTTNG_SOCK_SET_UID_CRED(c, uid) LTTNG_REF(c)->cmcred_uid = uid; -#define LTTNG_SOCK_SET_GID_CRED(c, gid) LTTNG_REF(c)->cmcred_gid = gid; -#define LTTNG_SOCK_SET_PID_CRED(c, pid) LTTNG_REF(c)->cmcred_pid = pid; +#define LTTNG_SOCK_SET_UID_CRED(c, uid) LTTNG_REF(c)->cmcred_uid = uid +#define LTTNG_SOCK_SET_GID_CRED(c, gid) LTTNG_REF(c)->cmcred_gid = gid +#define LTTNG_SOCK_SET_PID_CRED(c, pid) LTTNG_REF(c)->cmcred_pid = pid + +#define LTTNG_SOCK_GET_UID_CRED(c) LTTNG_REF(c)->cmcred_uid +#define LTTNG_SOCK_GET_GID_CRED(c) LTTNG_REF(c)->cmcred_gid +#define LTTNG_SOCK_GET_PID_CRED(c) LTTNG_REF(c)->cmcred_pid #else #error "Please add support for your OS into lttng/ust-endian.h."