summaryrefslogtreecommitdiff
path: root/src/io
diff options
context:
space:
mode:
Diffstat (limited to 'src/io')
-rw-r--r--src/io/CMakeLists.txt20
-rw-r--r--src/io/include/io.h28
-rw-r--r--src/io/src/CMakeLists.txt5
-rw-r--r--src/io/src/mkdir.c40
-rw-r--r--src/io/src/mount.c35
-rw-r--r--src/io/src/write.c27
6 files changed, 155 insertions, 0 deletions
diff --git a/src/io/CMakeLists.txt b/src/io/CMakeLists.txt
new file mode 100644
index 0000000..62a5e13
--- /dev/null
+++ b/src/io/CMakeLists.txt
@@ -0,0 +1,20 @@
+# wanix, a Unix-like operating system for WebAssembly applications.
+# Copyright (C) 2025 Xavier Del Campo Romero
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+add_library(io)
+add_subdirectory(src)
+target_include_directories(io PUBLIC include)
+target_link_libraries(io PUBLIC aio)
diff --git a/src/io/include/io.h b/src/io/include/io.h
new file mode 100644
index 0000000..498ae03
--- /dev/null
+++ b/src/io/include/io.h
@@ -0,0 +1,28 @@
+/*
+ * wanix, a Unix-like operating system for WebAssembly applications.
+ * Copyright (C) 2025 Xavier Del Campo Romero
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#ifndef IO_H
+#define IO_H
+
+#include <aio.h>
+#include <sys/types.h>
+
+int io_mkdir(const struct fs_mkdir *m);
+int io_mount(const struct aio_mount *m);
+
+#endif
diff --git a/src/io/src/CMakeLists.txt b/src/io/src/CMakeLists.txt
new file mode 100644
index 0000000..63fd031
--- /dev/null
+++ b/src/io/src/CMakeLists.txt
@@ -0,0 +1,5 @@
+target_sources(io PRIVATE
+ mkdir.c
+ mount.c
+ write.c
+)
diff --git a/src/io/src/mkdir.c b/src/io/src/mkdir.c
new file mode 100644
index 0000000..4f97031
--- /dev/null
+++ b/src/io/src/mkdir.c
@@ -0,0 +1,40 @@
+/*
+ * wanix, a Unix-like operating system for WebAssembly applications.
+ * Copyright (C) 2025 Xavier Del Campo Romero
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <io.h>
+#include <aio.h>
+#include <fs/fs.h>
+#include <errno.h>
+
+int io_mkdir(const struct fs_mkdir *const m)
+{
+ int ret = 0;
+ struct aio *const aio = aio_mkdir(m, NULL);
+ struct aio_poll p = {.aio = aio};
+
+ if (!aio || aio_poll(&p, -1) < 0 || p.error)
+ {
+ ret = -1;
+
+ if (p.error)
+ errno = p.error;
+ }
+
+ aio_free(aio);
+ return ret;
+}
diff --git a/src/io/src/mount.c b/src/io/src/mount.c
new file mode 100644
index 0000000..b885ac7
--- /dev/null
+++ b/src/io/src/mount.c
@@ -0,0 +1,35 @@
+/*
+ * wanix, a Unix-like operating system for WebAssembly applications.
+ * Copyright (C) 2025 Xavier Del Campo Romero
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <io.h>
+#include <aio.h>
+#include <fs/fs.h>
+#include <stddef.h>
+
+int io_mount(const struct aio_mount *const m)
+{
+ int ret = 0;
+ struct aio *const aio = aio_mount(m, NULL);
+ struct aio_poll p = {.aio = aio};
+
+ if (!aio || aio_poll(&p, -1) < 0 || p.error)
+ ret = -1;
+
+ aio_free(aio);
+ return ret;
+}
diff --git a/src/io/src/write.c b/src/io/src/write.c
new file mode 100644
index 0000000..82bafe0
--- /dev/null
+++ b/src/io/src/write.c
@@ -0,0 +1,27 @@
+/*
+ * wanix, a Unix-like operating system for WebAssembly applications.
+ * Copyright (C) 2025 Xavier Del Campo Romero
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <io.h>
+#include <aio.h>
+#include <fs/fs.h>
+#include <stddef.h>
+
+int io_write(const char *const path, const void *const buf, const size_t n)
+{
+ return -1;
+}