Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5a059f1ac0ed0c937257027aed5da50241f5ec2b
Commit:     5a059f1ac0ed0c937257027aed5da50241f5ec2b
Parent:     99f5e9718185f07458ae70c2282c2153a2256c91
Author:     Russell King <[EMAIL PROTECTED]>
AuthorDate: Sun Dec 17 18:23:10 2006 +0000
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sun Dec 17 18:23:31 2006 +0000

    [ARM] Add more syscalls
    
    Add:
      sys_unshare
      sys_set_robust_list
      sys_get_robust_list
      sys_splice
      sys_arm_sync_file_range
      sys_tee
      sys_vmsplice
      sys_move_pages
      sys_getcpu
    
    Special note about sys_arm_sync_file_range(), which is implemented as:
    
    asmlinkage long sys_arm_sync_file_range(int fd, unsigned int flags,
                                            loff_t offset, loff_t nbytes)
    {
            return sys_sync_file_range(fd, offset, nbytes, flags);
    }
    
    We can't export sys_sync_file_range() directly on ARM because the
    argument list someone picked does not fit in the available registers.
    Would be nice if... there was an arch maintainer review mechanism for
    new syscalls before they hit the kernel.
    
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/kernel/calls.S   |   24 ++++++++++++++++++------
 arch/arm/kernel/sys_arm.c |   13 +++++++++++++
 include/asm-arm/unistd.h  |   12 ++++++++++++
 3 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/arch/arm/kernel/calls.S b/arch/arm/kernel/calls.S
index e8f7436..f7598cb 100644
--- a/arch/arm/kernel/calls.S
+++ b/arch/arm/kernel/calls.S
@@ -110,7 +110,7 @@
                CALL(sys_ni_syscall)            /* was sys_profil */
                CALL(sys_statfs)
 /* 100 */      CALL(sys_fstatfs)
-               CALL(sys_ni_syscall)
+               CALL(sys_ni_syscall)            /* sys_ioperm */
                CALL(OBSOLETE(ABI(sys_socketcall, sys_oabi_socketcall)))
                CALL(sys_syslog)
                CALL(sys_setitimer)
@@ -132,7 +132,7 @@
 /* 120 */      CALL(sys_clone_wrapper)
                CALL(sys_setdomainname)
                CALL(sys_newuname)
-               CALL(sys_ni_syscall)
+               CALL(sys_ni_syscall)            /* modify_ldt */
                CALL(sys_adjtimex)
 /* 125 */      CALL(sys_mprotect)
                CALL(sys_sigprocmask)
@@ -146,7 +146,7 @@
                CALL(sys_bdflush)
 /* 135 */      CALL(sys_sysfs)
                CALL(sys_personality)
-               CALL(sys_ni_syscall)            /* CALL(_sys_afs_syscall) */
+               CALL(sys_ni_syscall)            /* reserved for afs_syscall */
                CALL(sys_setfsuid16)
                CALL(sys_setfsgid16)
 /* 140 */      CALL(sys_llseek)
@@ -175,7 +175,7 @@
                CALL(sys_arm_mremap)
                CALL(sys_setresuid16)
 /* 165 */      CALL(sys_getresuid16)
-               CALL(sys_ni_syscall)
+               CALL(sys_ni_syscall)            /* vm86 */
                CALL(sys_ni_syscall)            /* was sys_query_module */
                CALL(sys_poll)
                CALL(sys_nfsservctl)
@@ -197,8 +197,8 @@
 /* 185 */      CALL(sys_capset)
                CALL(sys_sigaltstack_wrapper)
                CALL(sys_sendfile)
-               CALL(sys_ni_syscall)
-               CALL(sys_ni_syscall)
+               CALL(sys_ni_syscall)            /* getpmsg */
+               CALL(sys_ni_syscall)            /* putpmsg */
 /* 190 */      CALL(sys_vfork_wrapper)
                CALL(sys_getrlimit)
                CALL(sys_mmap2)
@@ -344,6 +344,18 @@
                CALL(sys_readlinkat)
                CALL(sys_fchmodat)
                CALL(sys_faccessat)
+/* 335 */      CALL(sys_ni_syscall)            /* eventually pselect6 */
+               CALL(sys_ni_syscall)            /* eventually ppoll */
+               CALL(sys_unshare)
+               CALL(sys_set_robust_list)
+               CALL(sys_get_robust_list)
+/* 340 */      CALL(sys_splice)
+               CALL(sys_arm_sync_file_range)
+               CALL(sys_tee)
+               CALL(sys_vmsplice)
+               CALL(sys_move_pages)
+/* 345 */      CALL(sys_getcpu)
+               CALL(sys_ni_syscall)            /* eventually epoll_pwait */
 #ifndef syscalls_counted
 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
 #define syscalls_counted
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c
index 00c18d3..3d4fcbc 100644
--- a/arch/arm/kernel/sys_arm.c
+++ b/arch/arm/kernel/sys_arm.c
@@ -328,3 +328,16 @@ asmlinkage long sys_arm_fadvise64_64(int fd, int advice,
 {
        return sys_fadvise64_64(fd, offset, len, advice);
 }
+
+/*
+ * Yet more syscall fsckage - we can't fit sys_sync_file_range's
+ * arguments into the available registers with EABI.  So, let's
+ * create an ARM specific syscall for this which has _sane_
+ * arguments.  (This incidentally also has an ABI-independent
+ * argument layout.)
+ */
+asmlinkage long sys_arm_sync_file_range(int fd, unsigned int flags,
+                                       loff_t offset, loff_t nbytes)
+{
+       return sys_sync_file_range(fd, offset, nbytes, flags);
+}
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h
index 32b06eb..97e7060 100644
--- a/include/asm-arm/unistd.h
+++ b/include/asm-arm/unistd.h
@@ -360,6 +360,18 @@
 #define __NR_readlinkat                        (__NR_SYSCALL_BASE+332)
 #define __NR_fchmodat                  (__NR_SYSCALL_BASE+333)
 #define __NR_faccessat                 (__NR_SYSCALL_BASE+334)
+                                       /* 335 for pselect6 */
+                                       /* 336 for ppoll */
+#define __NR_unshare                   (__NR_SYSCALL_BASE+337)
+#define __NR_set_robust_list           (__NR_SYSCALL_BASE+338)
+#define __NR_get_robust_list           (__NR_SYSCALL_BASE+339)
+#define __NR_splice                    (__NR_SYSCALL_BASE+340)
+#define __NR_arm_sync_file_range       (__NR_SYSCALL_BASE+341)
+#define __NR_tee                       (__NR_SYSCALL_BASE+342)
+#define __NR_vmsplice                  (__NR_SYSCALL_BASE+343)
+#define __NR_move_pages                        (__NR_SYSCALL_BASE+344)
+#define __NR_getcpu                    (__NR_SYSCALL_BASE+345)
+                                       /* 346 for epoll_pwait */
 
 /*
  * The following SWIs are ARM private.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to