summaryrefslogtreecommitdiff
path: root/rtkaio/sysdeps/unix/sysv/linux/sparc
diff options
context:
space:
mode:
Diffstat (limited to 'rtkaio/sysdeps/unix/sysv/linux/sparc')
-rw-r--r--rtkaio/sysdeps/unix/sysv/linux/sparc/Makefile3
-rw-r--r--rtkaio/sysdeps/unix/sysv/linux/sparc/Versions6
-rw-r--r--rtkaio/sysdeps/unix/sysv/linux/sparc/kaio_cancel.c33
-rw-r--r--rtkaio/sysdeps/unix/sysv/linux/sparc/rtkaio-sysdep.c1
-rw-r--r--rtkaio/sysdeps/unix/sysv/linux/sparc/sparc64/Versions9
5 files changed, 52 insertions, 0 deletions
diff --git a/rtkaio/sysdeps/unix/sysv/linux/sparc/Makefile b/rtkaio/sysdeps/unix/sysv/linux/sparc/Makefile
new file mode 100644
index 0000000000..ead21fb111
--- /dev/null
+++ b/rtkaio/sysdeps/unix/sysv/linux/sparc/Makefile
@@ -0,0 +1,3 @@
+ifeq ($(subdir),rtkaio)
+librtkaio-routines += rtkaio-sysdep
+endif
diff --git a/rtkaio/sysdeps/unix/sysv/linux/sparc/Versions b/rtkaio/sysdeps/unix/sysv/linux/sparc/Versions
new file mode 100644
index 0000000000..b2d59a9140
--- /dev/null
+++ b/rtkaio/sysdeps/unix/sysv/linux/sparc/Versions
@@ -0,0 +1,6 @@
+librtkaio {
+ GLIBC_2.3 {
+ # AIO functions.
+ aio_cancel; aio_cancel64;
+ }
+}
diff --git a/rtkaio/sysdeps/unix/sysv/linux/sparc/kaio_cancel.c b/rtkaio/sysdeps/unix/sysv/linux/sparc/kaio_cancel.c
new file mode 100644
index 0000000000..6e345e1643
--- /dev/null
+++ b/rtkaio/sysdeps/unix/sysv/linux/sparc/kaio_cancel.c
@@ -0,0 +1,33 @@
+#include <shlib-compat.h>
+
+#define aio_cancel64 XXX
+#include <aio.h>
+#undef aio_cancel64
+#include <errno.h>
+
+extern __typeof (aio_cancel) __new_aio_cancel;
+extern __typeof (aio_cancel) __old_aio_cancel;
+
+#define aio_cancel __new_aio_cancel
+
+#include <sysdeps/unix/sysv/linux/kaio_cancel.c>
+
+#undef aio_cancel
+strong_alias (__new_aio_cancel, __new_aio_cancel64);
+versioned_symbol (librt, __new_aio_cancel, aio_cancel, GLIBC_2_3);
+versioned_symbol (librt, __new_aio_cancel64, aio_cancel64, GLIBC_2_3);
+
+#if SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_3)
+
+#undef ECANCELED
+#define aio_cancel __old_aio_cancel
+#define ECANCELED 125
+
+#include <sysdeps/unix/sysv/linux/kaio_cancel.c>
+
+#undef aio_cancel
+strong_alias (__old_aio_cancel, __old_aio_cancel64);
+compat_symbol (librt, __old_aio_cancel, aio_cancel, GLIBC_2_1);
+compat_symbol (librt, __old_aio_cancel64, aio_cancel64, GLIBC_2_1);
+
+#endif
diff --git a/rtkaio/sysdeps/unix/sysv/linux/sparc/rtkaio-sysdep.c b/rtkaio/sysdeps/unix/sysv/linux/sparc/rtkaio-sysdep.c
new file mode 100644
index 0000000000..ff0440aa83
--- /dev/null
+++ b/rtkaio/sysdeps/unix/sysv/linux/sparc/rtkaio-sysdep.c
@@ -0,0 +1 @@
+#include <rt-sysdep.c>
diff --git a/rtkaio/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/rtkaio/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
new file mode 100644
index 0000000000..7443c81d6a
--- /dev/null
+++ b/rtkaio/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -0,0 +1,9 @@
+%ifdef HAVE_FORCED_UNWIND
+librtkaio {
+ GLIBC_2.3.3 {
+ # Changed timer_t.
+ timer_create; timer_delete; timer_getoverrun; timer_gettime;
+ timer_settime;
+ }
+}
+%endif