Initial commit

This commit is contained in:
2026-02-04 01:58:49 +01:00
commit 0e01345abf
117 changed files with 5076 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include <uapi/types.h>
#include <stdint.h>
#define DT_UNKNOWN 0
#define DT_FIFO 1
#define DT_CHR 2
#define DT_DIR 4
#define DT_BLK 6
#define DT_REG 8
#define DT_LNK 10
#define DT_SOCK 12
#define DT_WHT 14
struct dirent {
ino_t d_ino;
off_t d_off;
uint16_t d_reclen;
uint8_t d_type;
char d_name[256];
};
+87
View File
@@ -0,0 +1,87 @@
#pragma once
#include <uapi/types.h>
#define O_RDONLY (1 << 0)
#define O_WRONLY (1 << 1)
#define O_CREAT (1 << 6)
#define O_EXCL (1 << 7)
#define O_NOCTTY (1 << 8)
#define O_TRUNC (1 << 9)
#define O_APPEND (1 << 10)
#define O_NONBLOCK (1 << 11)
#define O_DSYNC (1 << 12)
#define O_ASYNC (1 << 13)
#define O_DIRECT (1 << 14)
#define O_LARGEFILE (1 << 15)
#define O_DIRECTORY (1 << 16)
#define O_NOFOLLOW (1 << 17)
#define O_NOATIME (1 << 18)
#define O_CLOEXEC (1 << 19)
#define O_PATH (1 << 21)
#define O_TMPFILE (1 << 22)
#define O_SYNC (O_DIRECTORY | O_TMPFILE)
#define O_RSYNC O_SYNC
#define O_EXEC O_PATH
#define O_SEARCH O_PATH
#define O_RDWR (O_RDONLY | O_WRONLY)
#define O_ACCMODE (O_RDWR | O_PATH)
#define F_DUPFD 0
#define F_GETFD 1
#define F_SETFD 2
#define F_GETFL 3
#define F_SETFL 4
#define F_GETLK 5
#define F_SETLK 6
#define F_SETLK64 F_SETLK
#define F_SETLKW 7
#define F_SETLKW64 F_SETLKW
#define F_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11
#define F_SETOWN_EX 15
#define F_GETOWN_EX 16
#define F_GETOWNER_UIDS 17
#define F_SETLEASE 1024
#define F_GETLEASE 1025
#define F_NOTIFY 1026
#define F_DUPFD_CLOEXEC 1030
#define F_SETPIPE_SZ 1031
#define F_GETPIPE_SZ 1032
#define F_ADD_SEALS 1033
#define F_GET_SEALS 1034
#define F_SEAL_SEAL (1 << 0)
#define F_SEAL_SHRINK (1 << 1)
#define F_SEAL_GROW (1 << 2)
#define F_SEAL_WRITE (1 << 3)
#define F_OFD_GETLK 36
#define F_OFD_SETLK 37
#define F_OFD_SETLKW 38
#define F_RDLCK 0
#define F_WRLCK 1
#define F_UNLCK 2
#define FD_CLOEXEC 1
#define AT_FDCWD (-100)
#define AT_SYMLINK_NOFOLLOW (1 << 8)
#define AT_REMOVEDIR (1 << 9)
#define AT_SYMLINK_FOLLOW (1 << 10)
#define AT_EACCESS (1 << 11)
#define AT_EMPTY_PATH (1 << 12)
struct f_owner_ex {
int type;
pid_t pid;
};
#define F_OWNER_TID 0
#define POSIX_FADV_NORMAL 0
#define POSIX_FADV_RANDOM 1
#define POSIX_FADV_SEQUENTIAL 2
#define POSIX_FADV_WILLNEED 3
#define POSIX_FADV_DONTNEED 4
#define POSIX_FADV_NOREUSE 5
+14
View File
@@ -0,0 +1,14 @@
#pragma once
typedef long time_t;
typedef long suseconds_t;
struct timespec {
time_t tv_sec;
long tv_nsec;
};
struct timeval {
time_t tv_sec;
suseconds_t tv_usec;
};
+22
View File
@@ -0,0 +1,22 @@
#pragma once
#include <stddef.h>
#include <stdint.h>
typedef long off_t;
typedef long ssize_t;
typedef size_t off64_t;
typedef size_t blksize_t;
typedef size_t blkcnt_t;
typedef size_t clockid_t;
typedef size_t dev_t;
typedef size_t gid_t;
typedef size_t ino_t;
typedef uint32_t mode_t;
typedef size_t nlink_t;
typedef size_t pid_t;
typedef size_t rlim_t;
typedef size_t uid_t;
typedef size_t fsblkcnt_t;
typedef size_t fsfilcnt_t;
typedef size_t pthread_attr_t;
+8
View File
@@ -0,0 +1,8 @@
#pragma once
#include <stddef.h>
struct iovec {
void* base;
size_t len;
};
+10
View File
@@ -0,0 +1,10 @@
#pragma once
struct utsname {
char sysname[65];
char nodename[65];
char release[65];
char version[65];
char machine[65];
char domainname[65];
};
+86
View File
@@ -0,0 +1,86 @@
#pragma once
#include <zinnia/handle.h>
#include <zinnia/status.h>
#include <stddef.h>
#include <stdint.h>
#include <uapi/time.h>
#include <uapi/types.h>
struct file;
struct inode;
struct path;
// struct file_ops {
// zn_status_t (*open)(struct file* self, uint32_t flags);
// zn_status_t (*close)(struct file* self);
// zn_status_t (*read)(struct file* self, struct iovec_iter* iter, ssize_t* out_read);
// zn_status_t (*write)(struct file* self, struct iovec_iter* iter, ssize_t* out_written);
// zn_status_t (*devctl)(struct file* self, uint32_t dcmd, void* data, size_t num, int* out_info);
// zn_status_t (*poll)(struct file* self, int16_t mask, int16_t* out_mask); // TODO: This is not correct.
// zn_status_t (*mmap)(
// struct file* self,
// zn_handle_t* space,
// void* addr,
// size_t len,
// int prot,
// int flags,
// off_t offset
// );
// };
struct file {
const struct file_ops* ops;
struct inode* inode;
uint32_t mode;
uint32_t flags;
};
struct file* file_alloc();
struct file* file_from_fd(int fd);
struct inode_ops {
union {
struct {
zn_status_t (*lookup)(struct inode* inode, struct path* path);
} dir;
struct {
zn_status_t (*truncate)(struct inode* inode);
} reg;
};
};
struct inode_attr {
struct timespec atime, mtime, ctime;
uid_t uid;
gid_t gid;
};
struct inode {
const struct inode_ops* ops;
struct inode_attr attr;
};
struct entry {
const char* name;
struct inode* inode;
uint8_t state;
};
struct path {
struct entry* entry;
struct mount* mount;
};
struct mount {
uint32_t flags;
struct entry root;
struct path mount_point;
};
struct file_system_ops {};
struct file_system {
const char* name;
struct file_system_ops ops;
};