summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/sysdeps/linux/common/umount.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/libc/sysdeps/linux/common/umount.c b/libc/sysdeps/linux/common/umount.c
index d8e890d8b..158aefc5f 100644
--- a/libc/sysdeps/linux/common/umount.c
+++ b/libc/sysdeps/linux/common/umount.c
@@ -9,26 +9,33 @@
#include "syscalls.h"
-#ifdef __NR_umount /* Some newer archs only have umount2 */
+
+/* arch provides umount() syscall */
+#ifdef __NR_umount
+
#include <sys/mount.h>
_syscall1(int, umount, const char *, specialfile);
+
+/* arch provides umount2() syscall */
#elif defined __NR_umount2
-/* No umount syscall, but umount2 is available.... Try to
- * emulate umount() using umount2() */
#define __NR___syscall_umount2 __NR_umount2
-static inline _syscall2(int, umount2, const char *, special_file, int, flags);
+static inline _syscall2(int, __syscall_umount2, const char *, special_file, int, flags);
int umount(const char *special_file)
{
return (__syscall_umount2(special_file, 0));
}
+
+/* arch doesn't provide any umount syscall !? */
#else
+
int umount(const char *special_file)
{
__set_errno(ENOSYS);
return -1;
}
+
#endif