summaryrefslogtreecommitdiff
path: root/libc/sysdeps
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-03-12 00:21:20 +0000
committerEric Andersen <andersen@codepoet.org>2004-03-12 00:21:20 +0000
commita740502a3d857a70f64fe31fda87b775d4cf1126 (patch)
treeb060d99787e840b5be9ab79479ad7a74e07ca896 /libc/sysdeps
parent93261cdf00778d5706a72bbbeb3a379bfaad948c (diff)
Cope gracefully with missing module syscalls
Diffstat (limited to 'libc/sysdeps')
-rw-r--r--libc/sysdeps/linux/common/create_module.c6
-rw-r--r--libc/sysdeps/linux/common/delete_module.c6
-rw-r--r--libc/sysdeps/linux/common/init_module.c9
-rw-r--r--libc/sysdeps/linux/common/query_module.c6
4 files changed, 21 insertions, 6 deletions
diff --git a/libc/sysdeps/linux/common/create_module.c b/libc/sysdeps/linux/common/create_module.c
index 1283503fe..e1a4cfb04 100644
--- a/libc/sysdeps/linux/common/create_module.c
+++ b/libc/sysdeps/linux/common/create_module.c
@@ -66,5 +66,11 @@ unsigned long create_module(const char *name, size_t size)
_syscall2(unsigned long, create_module, const char *, name, size_t, size);
#endif
+#else
+unsigned long create_module(const char *name, size_t size)
+{
+ __set_errno(ENOSYS);
+ return (unsigned long)-1;
+}
#endif
diff --git a/libc/sysdeps/linux/common/delete_module.c b/libc/sysdeps/linux/common/delete_module.c
index bcdb7a811..e739a7a4f 100644
--- a/libc/sysdeps/linux/common/delete_module.c
+++ b/libc/sysdeps/linux/common/delete_module.c
@@ -8,12 +8,12 @@
*/
#include "syscalls.h"
-# ifdef __NR_delete_module
+#ifdef __NR_delete_module
_syscall1(int, delete_module, const char *, name);
-# else
+#else
int delete_module(const char *name)
{
__set_errno(ENOSYS);
return -1;
}
-# endif
+#endif
diff --git a/libc/sysdeps/linux/common/init_module.c b/libc/sysdeps/linux/common/init_module.c
index aa217ac38..bca233b69 100644
--- a/libc/sysdeps/linux/common/init_module.c
+++ b/libc/sysdeps/linux/common/init_module.c
@@ -8,8 +8,17 @@
*/
#include "syscalls.h"
+#ifdef __NR_init_module
/* This may have 5 arguments (for old 2.0 kernels) or 2 arguments
* (for 2.2 and 2.4 kernels). Use the greatest common denominator,
* and let the kernel cope with whatever it gets. It's good at that. */
_syscall5(int, init_module, void *, first, void *, second, void *, third,
void *, fourth, void *, fifth);
+#else
+int init_module(void *first, void *second, void *third, void *fourth, void *fifth)
+{
+ __set_errno(ENOSYS);
+ return -1;
+}
+#endif
+
diff --git a/libc/sysdeps/linux/common/query_module.c b/libc/sysdeps/linux/common/query_module.c
index 54cf28275..be8923d63 100644
--- a/libc/sysdeps/linux/common/query_module.c
+++ b/libc/sysdeps/linux/common/query_module.c
@@ -8,14 +8,14 @@
*/
#include "syscalls.h"
-# ifdef __NR_query_module
+#ifdef __NR_query_module
_syscall5(int, query_module, const char *, name, int, which,
void *, buf, size_t, bufsize, size_t *, ret);
-# else
+#else
int query_module(const char *name, int which,
void *buf, size_t bufsize, size_t * ret)
{
__set_errno(ENOSYS);
return -1;
}
-# endif
+#endif