Author: jhb
Date: Tue Feb  7 19:12:21 2012
New Revision: 231146
URL: http://svn.freebsd.org/changeset/base/231146

Log:
  MFC 228957:
  Implement linux_fadvise64() and linux_fadvise64_64() using
  kern_posix_fadvise().

Modified:
  stable/8/sys/amd64/linux32/linux.h
  stable/8/sys/amd64/linux32/linux32_dummy.c
  stable/8/sys/amd64/linux32/syscalls.master
  stable/8/sys/compat/linux/linux_file.c
  stable/8/sys/i386/linux/linux.h
  stable/8/sys/i386/linux/linux_dummy.c
  stable/8/sys/i386/linux/syscalls.master
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/e1000/   (props changed)
  stable/8/sys/modules/sound/driver/emu10k1/   (props changed)
  stable/8/sys/modules/sound/driver/emu10kx/   (props changed)

Modified: stable/8/sys/amd64/linux32/linux.h
==============================================================================
--- stable/8/sys/amd64/linux32/linux.h  Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/amd64/linux32/linux.h  Tue Feb  7 19:12:21 2012        
(r231146)
@@ -594,6 +594,16 @@ int        linux_ioctl_unregister_handler(struc
 #define        LINUX_F_UNLCK           2
 
 /*
+ * posix_fadvise advice
+ */
+#define        LINUX_POSIX_FADV_NORMAL         0
+#define        LINUX_POSIX_FADV_RANDOM         1
+#define        LINUX_POSIX_FADV_SEQUENTIAL     2
+#define        LINUX_POSIX_FADV_WILLNEED       3
+#define        LINUX_POSIX_FADV_DONTNEED       4
+#define        LINUX_POSIX_FADV_NOREUSE        5
+
+/*
  * mount flags
  */
 #define        LINUX_MS_RDONLY         0x0001

Modified: stable/8/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/8/sys/amd64/linux32/linux32_dummy.c  Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/amd64/linux32/linux32_dummy.c  Tue Feb  7 19:12:21 2012        
(r231146)
@@ -59,7 +59,6 @@ DUMMY(setfsuid);
 DUMMY(setfsgid);
 DUMMY(pivot_root);
 DUMMY(mincore);
-DUMMY(fadvise64);
 DUMMY(ptrace);
 DUMMY(lookup_dcookie);
 DUMMY(epoll_create);
@@ -72,7 +71,6 @@ DUMMY(timer_gettime);
 DUMMY(timer_getoverrun);
 DUMMY(timer_delete);
 DUMMY(fstatfs64);
-DUMMY(fadvise64_64);
 DUMMY(mbind);
 DUMMY(get_mempolicy);
 DUMMY(set_mempolicy);

Modified: stable/8/sys/amd64/linux32/syscalls.master
==============================================================================
--- stable/8/sys/amd64/linux32/syscalls.master  Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/amd64/linux32/syscalls.master  Tue Feb  7 19:12:21 2012        
(r231146)
@@ -419,7 +419,8 @@
 247    AUE_NULL        UNIMPL  linux_io_getevents
 248    AUE_NULL        UNIMPL  linux_io_submit
 249    AUE_NULL        UNIMPL  linux_io_cancel
-250    AUE_NULL        STD     { int linux_fadvise64(void); }
+250    AUE_NULL        STD     { int linux_fadvise64(int fd, l_loff_t offset, \
+                                       l_size_t len, int advice); }
 251    AUE_NULL        UNIMPL
 252    AUE_EXIT        STD     { int linux_exit_group(int error_code); }
 253    AUE_NULL        STD     { int linux_lookup_dcookie(void); }
@@ -443,7 +444,9 @@
 270    AUE_NULL        STD     { int linux_tgkill(int tgid, int pid, int sig); 
}
 271    AUE_UTIMES      STD     { int linux_utimes(char *fname, \
                                        struct l_timeval *tptr); }
-272    AUE_NULL        STD     { int linux_fadvise64_64(void); }
+272    AUE_NULL        STD     { int linux_fadvise64_64(int fd, \
+                                       l_loff_t offset, l_loff_t len, \
+                                       int advice); }
 273    AUE_NULL        UNIMPL
 274    AUE_NULL        STD     { int linux_mbind(void); }
 275    AUE_NULL        STD     { int linux_get_mempolicy(void); }

Modified: stable/8/sys/compat/linux/linux_file.c
==============================================================================
--- stable/8/sys/compat/linux/linux_file.c      Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/compat/linux/linux_file.c      Tue Feb  7 19:12:21 2012        
(r231146)
@@ -1533,3 +1533,48 @@ linux_lchown(struct thread *td, struct l
        LFREEPATH(path);
        return (error);
 }
+
+static int
+convert_fadvice(int advice)
+{
+       switch (advice) {
+       case LINUX_POSIX_FADV_NORMAL:
+               return (POSIX_FADV_NORMAL);
+       case LINUX_POSIX_FADV_RANDOM:
+               return (POSIX_FADV_RANDOM);
+       case LINUX_POSIX_FADV_SEQUENTIAL:
+               return (POSIX_FADV_SEQUENTIAL);
+       case LINUX_POSIX_FADV_WILLNEED:
+               return (POSIX_FADV_WILLNEED);
+       case LINUX_POSIX_FADV_DONTNEED:
+               return (POSIX_FADV_DONTNEED);
+       case LINUX_POSIX_FADV_NOREUSE:
+               return (POSIX_FADV_NOREUSE);
+       default:
+               return (-1);
+       }
+}
+
+int
+linux_fadvise64(struct thread *td, struct linux_fadvise64_args *args)
+{
+       int advice;
+
+       advice = convert_fadvice(args->advice);
+       if (advice == -1)
+               return (EINVAL);
+       return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
+           advice));
+}
+
+int
+linux_fadvise64_64(struct thread *td, struct linux_fadvise64_64_args *args)
+{
+       int advice;
+
+       advice = convert_fadvice(args->advice);
+       if (advice == -1)
+               return (EINVAL);
+       return (kern_posix_fadvise(td, args->fd, args->offset, args->len,
+           advice));
+}

Modified: stable/8/sys/i386/linux/linux.h
==============================================================================
--- stable/8/sys/i386/linux/linux.h     Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/i386/linux/linux.h     Tue Feb  7 19:12:21 2012        
(r231146)
@@ -570,6 +570,16 @@ int        linux_ioctl_unregister_handler(struc
 #define        LINUX_F_UNLCK           2
 
 /*
+ * posix_fadvise advice
+ */
+#define        LINUX_POSIX_FADV_NORMAL         0
+#define        LINUX_POSIX_FADV_RANDOM         1
+#define        LINUX_POSIX_FADV_SEQUENTIAL     2
+#define        LINUX_POSIX_FADV_WILLNEED       3
+#define        LINUX_POSIX_FADV_DONTNEED       4
+#define        LINUX_POSIX_FADV_NOREUSE        5
+
+/*
  * mount flags
  */
 #define        LINUX_MS_RDONLY         0x0001

Modified: stable/8/sys/i386/linux/linux_dummy.c
==============================================================================
--- stable/8/sys/i386/linux/linux_dummy.c       Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/i386/linux/linux_dummy.c       Tue Feb  7 19:12:21 2012        
(r231146)
@@ -62,14 +62,12 @@ DUMMY(setfsuid);
 DUMMY(setfsgid);
 DUMMY(pivot_root);
 DUMMY(mincore);
-DUMMY(fadvise64);
 DUMMY(lookup_dcookie);
 DUMMY(epoll_create);
 DUMMY(epoll_ctl);
 DUMMY(epoll_wait);
 DUMMY(remap_file_pages);
 DUMMY(fstatfs64);
-DUMMY(fadvise64_64);
 DUMMY(mbind);
 DUMMY(get_mempolicy);
 DUMMY(set_mempolicy);

Modified: stable/8/sys/i386/linux/syscalls.master
==============================================================================
--- stable/8/sys/i386/linux/syscalls.master     Tue Feb  7 19:11:54 2012        
(r231145)
+++ stable/8/sys/i386/linux/syscalls.master     Tue Feb  7 19:12:21 2012        
(r231146)
@@ -421,7 +421,8 @@
 247    AUE_NULL        UNIMPL  linux_io_getevents
 248    AUE_NULL        UNIMPL  linux_io_submit
 249    AUE_NULL        UNIMPL  linux_io_cancel
-250    AUE_NULL        STD     { int linux_fadvise64(void); }
+250    AUE_NULL        STD     { int linux_fadvise64(int fd, l_loff_t offset, \
+                                       l_size_t len, int advice); }
 251    AUE_NULL        UNIMPL
 252    AUE_EXIT        STD     { int linux_exit_group(int error_code); }
 253    AUE_NULL        STD     { int linux_lookup_dcookie(void); }
@@ -447,7 +448,9 @@
 270    AUE_NULL        STD     { int linux_tgkill(int tgid, int pid, int sig); 
}
 271    AUE_UTIMES      STD     { int linux_utimes(char *fname, \
                                        struct l_timeval *tptr); }
-272    AUE_NULL        STD     { int linux_fadvise64_64(void); }
+272    AUE_NULL        STD     { int linux_fadvise64_64(int fd, \
+                                       l_loff_t offset, l_loff_t len, \
+                                       int advice); }
 273    AUE_NULL        UNIMPL
 274    AUE_NULL        STD     { int linux_mbind(void); }
 275    AUE_NULL        STD     { int linux_get_mempolicy(void); }
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to