From 3fa913274cd98e148113a27747ae755a15b3fc5b Mon Sep 17 00:00:00 2001 From: David Goulet Date: Tue, 21 Feb 2012 17:43:53 -0500 Subject: [PATCH] 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 --- src/common/compat/clone.h | 44 ++++++++++++++++++++++++++++++++ src/common/compat/compat-fcntl.c | 29 +++++++++++++++++++++ src/common/compat/mman.h | 34 ++++++++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 src/common/compat/clone.h create mode 100644 src/common/compat/compat-fcntl.c create mode 100644 src/common/compat/mman.h 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 */ -- 2.34.1