Small optimization to inline ros_syscall_sync
authorKevin Klues <klueska@cs.berkeley.edu>
Fri, 2 Aug 2013 20:55:56 +0000 (13:55 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Fri, 2 Aug 2013 20:57:10 +0000 (13:57 -0700)
When calling from other libc functions in the same file, just inline it.
Only exposed version of the call is not inlined now.

tools/compilers/gcc-glibc/glibc-2.14.1-ros/sysdeps/ros/syscall.c

index eacf305..8459826 100644 (file)
@@ -89,7 +89,7 @@ void __ros_scp_syscall_blockon(struct syscall *sysc)
 void (*ros_syscall_blockon)(struct syscall *sysc) = __ros_scp_syscall_blockon;
 
 /* Issue a single syscall and block into the 2LS until it completes */
-void ros_syscall_sync(struct syscall *sysc)
+static inline void __ros_syscall_sync(struct syscall *sysc)
 {
        /* There is only one syscall in the syscall array when we want to do it
        * synchronously */
@@ -102,6 +102,9 @@ void ros_syscall_sync(struct syscall *sysc)
        while (atomic_read(&sysc->flags) & SC_K_LOCK)
                cpu_relax();
 }
+void ros_syscall_sync(struct syscall *sysc) {
+       __ros_syscall_sync(sysc);
+}
 libc_hidden_def(ros_syscall_sync)
 
 /* TODO: make variants of __ros_syscall() based on the number of args (0 - 6) */
@@ -121,7 +124,7 @@ __ros_syscall_inline(unsigned int _num, long _a0, long _a1, long _a2, long _a3,
        sysc.arg3 = _a3;
        sysc.arg4 = _a4;
        sysc.arg5 = _a5;
-    ros_syscall_sync(&sysc);
+    __ros_syscall_sync(&sysc);
        return sysc;
 }