aboutsummaryrefslogtreecommitdiff
path: root/lib/sys
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sys')
-rw-r--r--lib/sys/mknod.h13
-rw-r--r--lib/sys/types.h19
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/sys/mknod.h b/lib/sys/mknod.h
new file mode 100644
index 0000000..b51c4ef
--- /dev/null
+++ b/lib/sys/mknod.h
@@ -0,0 +1,13 @@
+#ifndef MKNOD_H
+#define MKNOD_H
+
+#include "syscalls.h"
+
+#include "types.h"
+
+int mknod(const char *filename, mode_t mode, unsigned int dev)
+{
+ return syscall(MKNOD, filename, mode, dev);
+}
+
+#endif
diff --git a/lib/sys/types.h b/lib/sys/types.h
new file mode 100644
index 0000000..0aafec5
--- /dev/null
+++ b/lib/sys/types.h
@@ -0,0 +1,19 @@
+#ifndef TYPES_H
+#define TYPES_H
+
+#include "sizes.h"
+
+typedef u64 dev_t;
+typedef u32 mode_t;
+
+static dev_t inline device(dev_t major, dev_t minor)
+{
+ dev_t dev;
+ dev = (((dev_t) (major & 0x00000fffu)) << 8);
+ dev |= (((dev_t) (major & 0xfffff000u)) << 32);
+ dev |= (((dev_t) (minor & 0x000000ffu)) << 0);
+ dev |= (((dev_t) (minor & 0xffffff00u)) << 12);
+ return dev;
+}
+
+#endif