diff options
| author | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-02-11 14:55:28 +0100 |
|---|---|---|
| committer | Nathan Reiner <nathan@nathanreiner.xyz> | 2023-02-11 14:55:28 +0100 |
| commit | f887d2f38b205237cbd03ce921aff7a79986e2ff (patch) | |
| tree | 56c55cfd55815a70814793d37c4873974e693703 /lib | |
| parent | a121299c2ad417b238b7c20d30f4cf064e3700fd (diff) | |
add mknod
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sys/mknod.h | 13 | ||||
| -rw-r--r-- | lib/sys/types.h | 19 |
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 |