summaryrefslogtreecommitdiff
path: root/kernel/src/generic/devfs.hpp
diff options
context:
space:
mode:
authorcpplover0 <osdev555@yandex.com>2026-03-30 18:21:18 +0300
committercpplover0 <osdev555@yandex.com>2026-03-30 18:21:18 +0300
commit8844a7888ea94a11939b1c92915162f2e5acd378 (patch)
tree1b4ef74fde17d6f8bb6e054f3266e9342b41c836 /kernel/src/generic/devfs.hpp
parentbe997311c240f49db247ccce05ecb8ea5d3bfc31 (diff)
trying to get xhci working on vboxHEADmain
Diffstat (limited to 'kernel/src/generic/devfs.hpp')
-rw-r--r--kernel/src/generic/devfs.hpp29
1 files changed, 27 insertions, 2 deletions
diff --git a/kernel/src/generic/devfs.hpp b/kernel/src/generic/devfs.hpp
index 2c91d83..5497b88 100644
--- a/kernel/src/generic/devfs.hpp
+++ b/kernel/src/generic/devfs.hpp
@@ -3,11 +3,36 @@
#include <generic/vfs.hpp>
struct devfs_node {
- vfs::pipe* pipe;
+ vfs::pipe* write_pipe;
+ vfs::pipe* read_pipe;
+
+ std::int32_t (*open)(file_descriptor* fd, devfs_node* node);
+ std::int32_t (*ioctl)(devfs_node* node, std::uint64_t req, void* arg);
+ signed long (*read)(file_descriptor* fd, devfs_node* node, void* buffer, std::size_t count);
+ signed long (*write)(file_descriptor* fd, devfs_node* node, void* buffer, std::size_t count);
+ bool (*poll)(devfs_node* node, vfs_poll_type type);
+
+ std::int32_t (*close)(file_descriptor* fd, devfs_node* node);
+
+ void* arg;
+
+ bool is_root;
+
+ bool is_a_tty;
+ char path[256];
+
+ std::uint64_t mmap;
+ std::uint64_t mmap_size;
+
+ std::uint64_t id;
+
+ devfs_node* next;
};
+static_assert(sizeof(devfs_node) < 4096, "fsfsdf");
+
// for non input devices
namespace devfs {
- void create();
+ void create(bool is_tty, char* path, void* arg, std::uint64_t mmap, std::uint64_t mmap_size, std::int32_t (*open)(file_descriptor*fd, devfs_node* node), std::int32_t (*ioctl)(devfs_node* node, std::uint64_t req, void* arg), signed long (*read)(file_descriptor* fd, devfs_node* node, void* buffer, std::size_t count), signed long (*write)(file_descriptor* fd, devfs_node* node, void* buffer, std::size_t count), bool (*poll)(devfs_node* node, vfs_poll_type type), std::int32_t (*close)(file_descriptor* fd, devfs_node* node));
void init(vfs::node* new_node);
} \ No newline at end of file