Moves futex.h to user/pthread (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 21 Dec 2012 04:09:20 +0000 (20:09 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 21 Dec 2012 04:14:41 +0000 (20:14 -0800)
As far as I can tell, libgomp isn't even building with the ros/bar.c or
ros/futex.h (garbage in those files still compiles), and if it does for
some configuration, then libgomp.a doesn't have futex as an undefined
symbol, which is a bad configuration.

For now, just move it out of the kernel headers, since it isn't helping
much there at all.

The linux version of futex.h seems to think we need to change the
visibility too, so putting that in for now.

Reinstall your kernel headers.  I'd also remove the old ros/futex.h
manually.

kern/include/ros/futex.h [deleted file]
tools/compilers/gcc-glibc/gcc-4.6.1-ros/libgomp/config/ros/futex.h
user/pthread/futex.c
user/pthread/futex.h [new file with mode: 0644]

diff --git a/kern/include/ros/futex.h b/kern/include/ros/futex.h
deleted file mode 100644 (file)
index 40313c9..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/* This isn't really part of the kernel interface, and is just placed here so
- * gcc can find it during its compilation. */
-#ifndef ROS_KERNEL
-
-#ifndef _FUTEX_H
-#define _FUTEX_H
-
-#include <sys/time.h>
-
-enum {
-  FUTEX_WAIT,
-  FUTEX_WAKE
-};
-
-int futex(int *uaddr, int op, int val, const struct timespec *timeout,
-                 int *uaddr2, int val3);
-
-#endif /* _FUTEX_H */
-
-#endif /* ifndef ROS_KERNEL */
index 3a22de0..cc09b97 100644 (file)
@@ -30,7 +30,9 @@
    (syscall). The solution here is to push default visibility, include
    our required headers then reinstante the original visibility.  */
 
-#include <ros/futex.h>
+#pragma GCC visibility push(default)
+#include <futex.h>     /* from parlib's pthread library */
+#pragma GCC visibility pop
 
 static inline void
 futex_wait (int *addr, int val)
index 58b4131..16375a9 100644 (file)
@@ -1,5 +1,5 @@
 #include <ros/common.h>
-#include <ros/futex.h>
+#include <futex.h>
 #include <sys/queue.h>
 #include <pthread.h>
 #include <assert.h>
diff --git a/user/pthread/futex.h b/user/pthread/futex.h
new file mode 100644 (file)
index 0000000..1badd14
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _FUTEX_H
+#define _FUTEX_H
+
+#include <sys/time.h>
+
+enum {
+       FUTEX_WAIT,
+       FUTEX_WAKE
+};
+
+int futex(int *uaddr, int op, int val, const struct timespec *timeout,
+          int *uaddr2, int val3);
+
+#endif /* _FUTEX_H */