aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNathan Reiner <nathan@nathanreiner.xyz>2023-02-11 14:55:28 +0100
committerNathan Reiner <nathan@nathanreiner.xyz>2023-02-11 14:55:28 +0100
commitf887d2f38b205237cbd03ce921aff7a79986e2ff (patch)
tree56c55cfd55815a70814793d37c4873974e693703 /lib
parenta121299c2ad417b238b7c20d30f4cf064e3700fd (diff)
add mknod
Diffstat (limited to 'lib')
-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