From: David Goulet Date: Tue, 21 Feb 2012 22:43:53 +0000 (-0500) Subject: Add multiple FreeBSD compat layer X-Git-Tag: v2.0.0-rc2~39 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=d50813007e79158828e8ee6e1b5444950bc90847;p=lttng-tools.git Add multiple FreeBSD compat layer Adds clone, posix_fadvise and splice compatibility layer. This commit ENOSYS those function for now and better implementation will come in the future. Signed-off-by: David Goulet --- diff --git a/src/common/compat/clone.h b/src/common/compat/clone.h new file mode 100644 index 000000000..45eb37982 --- /dev/null +++ b/src/common/compat/clone.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2011 - David Goulet + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; only version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _COMPAT_CLONE_H +#define _COMPAT_CLONE_H + +#ifdef __linux__ + +#include + +#elif __FreeBSD__ + +#include + +#define CLONE_FILES 0 + +#define clone(fct_ptr, child_stack, flags, arg, args...) \ + compat_clone(fct_ptr, child_stack, flags, arg) + +int compat_clone(int (*fn)(void *), void *child_stack, int flags, + void *arg) +{ + return -ENOSYS; +} + +#else +#error "Please add support for your OS into compat/clone.h." +#endif /* __linux__ , __FreeBSD__ */ + +#endif /* _COMPAT_CLONE_H */ diff --git a/src/common/compat/compat-fcntl.c b/src/common/compat/compat-fcntl.c new file mode 100644 index 000000000..587df6782 --- /dev/null +++ b/src/common/compat/compat-fcntl.c @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2011 - David Goulet + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; only version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#define _GNU_SOURCE +#include + +#ifdef __linux__ + +int compat_sync_file_range(int fd, off64_t offset, off64_t nbytes, + unsigned int flags) +{ + return sync_file_range(fd, offset, nbytes, flags); +} + +#endif /* __linux__ */ diff --git a/src/common/compat/mman.h b/src/common/compat/mman.h new file mode 100644 index 000000000..ede8c5883 --- /dev/null +++ b/src/common/compat/mman.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2011 - David Goulet + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; only version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 59 Temple + * Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _COMPAT_MMAN_H +#define _COMPAT_MMAN_H + +#include + +#ifdef __linux__ + +#elif __FreeBSD__ + +#define MAP_GROWSDOWN 0 +#define MAP_ANONYMOUS MAP_ANON + +#else +#error "Please add support for your OS into compat/mman.h." +#endif /* __linux__ , __FreeBSD__ */ + +#endif /* _COMPAT_MMAN_H */