From 2bdb28fbe07d0f74c38fb0a3231d8425fdc75777 Mon Sep 17 00:00:00 2001 From: behlendo Date: Sat, 15 Mar 2008 00:05:38 +0000 Subject: [PATCH] Missing headers, more minor fixes git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@48 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c --- include/dmu_config.h | 0 include/sys/cred.h | 1 + include/sys/mount.h | 4 ++++ include/sys/sdt.h | 4 ++++ include/sys/vfs.h | 2 +- include/sys/vmsystm.h | 42 ++++++++++++++++++++++++++++++++++++++++-- 6 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 include/dmu_config.h create mode 100644 include/sys/mount.h create mode 100644 include/sys/sdt.h diff --git a/include/dmu_config.h b/include/dmu_config.h new file mode 100644 index 000000000..e69de29bb diff --git a/include/sys/cred.h b/include/sys/cred.h index 5ed233b0b..1e7d3b7c9 100644 --- a/include/sys/cred.h +++ b/include/sys/cred.h @@ -7,6 +7,7 @@ extern "C" { #include #include +#include /* XXX - Portions commented out because we really just want to have the type * defined and the contents aren't nearly so important at the moment. */ diff --git a/include/sys/mount.h b/include/sys/mount.h new file mode 100644 index 000000000..435dd44c4 --- /dev/null +++ b/include/sys/mount.h @@ -0,0 +1,4 @@ +#ifndef _SPL_MOUNT_H +#define _SPL_MOUNT_H + +#endif /* SPL_MOUNT_H */ diff --git a/include/sys/sdt.h b/include/sys/sdt.h new file mode 100644 index 000000000..1f94f4a1d --- /dev/null +++ b/include/sys/sdt.h @@ -0,0 +1,4 @@ +#ifndef _SPL_SDT_H +#define _SPL_SDT_H + +#endif /* SPL_SDT_H */ diff --git a/include/sys/vfs.h b/include/sys/vfs.h index 6bc0a42ae..e0044f771 100644 --- a/include/sys/vfs.h +++ b/include/sys/vfs.h @@ -1,7 +1,7 @@ #ifndef _SPL_ZFS_H #define _SPL_ZFS_H -typedef struct vfs_s { +typedef struct vfs { int foo; } vfs_t; diff --git a/include/sys/vmsystm.h b/include/sys/vmsystm.h index 443c376c9..568cb3775 100644 --- a/include/sys/vmsystm.h +++ b/include/sys/vmsystm.h @@ -3,6 +3,7 @@ #include #include +#include extern vmem_t *zio_alloc_arena; /* arena for zio caches */ @@ -10,8 +11,45 @@ extern vmem_t *zio_alloc_arena; /* arena for zio caches */ #define ptob(pages) (pages * PAGE_SIZE) #define membar_producer() smp_wmb() -#define copyin(from, to, size) copy_from_user(to, from, size) -#define copyout(from, to, size) copy_to_user(to, from, size) +#define xcopyin(from, to, size) copy_from_user(to, from, size) +#define xcopyout(from, to, size) copy_to_user(to, from, size) + +static __inline__ int +copyin(const void *from, void *to, size_t len) +{ + /* On error copyin routine returns -1 */ + if (xcopyin(from, to, len)) + return -1; + + return 0; +} + +static __inline__ int +copyout(const void *from, void *to, size_t len) +{ + /* On error copyout routine returns -1 */ + if (xcopyout(from, to, len)) + return -1; + + return 0; +} + +static __inline__ int +copyinstr(const void *from, void *to, size_t len, size_t *done) +{ + if (len == 0) + return -ENAMETOOLONG; + + if (len < 0) + return -EFAULT; + + /* XXX: Should return ENAMETOOLONG if 'strlen(from) > len' */ + + memset(to, 0, len); + *done = copyin(from, to, len - 1); + + return 0; +} #if 0 /* The approximate total number of free pages */