aboutsummaryrefslogtreecommitdiff
path: root/kernel/io/io.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/io/io.c')
-rw-r--r--kernel/io/io.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/kernel/io/io.c b/kernel/io/io.c
new file mode 100644
index 0000000..f39168b
--- /dev/null
+++ b/kernel/io/io.c
@@ -0,0 +1,25 @@
+#include "io/io.h"
+
+int open(struct file* file) {
+ file->fops->open(file);
+}
+
+int ioctl(struct file* file, int cmd, long args) {
+ file->fops->ioctl(file, cmd, args);
+}
+
+ssize_t read(struct file* file, char* const buffer, size_t size) {
+ struct file_operations* fops = file->fops;
+ if (fops->read == NULL) return -1;
+ else fops->read(file, buffer, size);
+}
+
+ssize_t write(struct file* file, const char* const buffer, size_t size) {
+ struct file_operations* fops = file->fops;
+ if (fops->write == NULL) return -1;
+ else fops->write(file, buffer, size);
+}
+
+int close(struct file* file) {
+ file->fops->close(file);
+} \ No newline at end of file