diff options
author | Anton Kling <anton@kling.gg> | 2024-06-09 22:05:53 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-06-09 22:05:53 +0200 |
commit | 15003d1b0abccc8bcef84386c4a6da176e41f883 (patch) | |
tree | d4f8c4f1602ee9e6c4332f3b0585d0e284d0f695 /kernel/fs | |
parent | ddd796325c9c703f007f046ed9f6fd9eb0ba6383 (diff) |
Add UDP
Diffstat (limited to 'kernel/fs')
-rw-r--r-- | kernel/fs/ext2.c | 13 | ||||
-rw-r--r-- | kernel/fs/shm.c | 2 | ||||
-rw-r--r-- | kernel/fs/tmpfs.c | 4 | ||||
-rw-r--r-- | kernel/fs/vfs.c | 5 | ||||
-rw-r--r-- | kernel/fs/vfs.h | 6 |
5 files changed, 18 insertions, 12 deletions
diff --git a/kernel/fs/ext2.c b/kernel/fs/ext2.c index 61c16eb..18ce8c7 100644 --- a/kernel/fs/ext2.c +++ b/kernel/fs/ext2.c @@ -612,12 +612,11 @@ vfs_inode_t *ext2_open(const char *path) { break; } - return vfs_create_inode(inode_num, type, NULL, NULL, - 1 /*is_open*/, NULL /*internal_object*/, file_size, - ext2_open, ext2_create_file, ext2_read, ext2_write, - ext2_close, ext2_create_directory, - NULL /*get_vm_object*/, ext2_truncate /*truncate*/, - ext2_stat, NULL /*send_signal*/); + return vfs_create_inode( + inode_num, type, NULL, NULL, 1 /*is_open*/, NULL /*internal_object*/, + file_size, ext2_open, ext2_create_file, ext2_read, ext2_write, ext2_close, + ext2_create_directory, NULL /*get_vm_object*/, ext2_truncate /*truncate*/, + ext2_stat, NULL /*send_signal*/, NULL /*connect*/); } u64 end_of_last_entry_position(int dir_inode, u64 *entry_offset, @@ -829,7 +828,7 @@ vfs_inode_t *ext2_mount(void) { 0 /*is_open*/, NULL /*internal_object*/, 0 /*file_size*/, ext2_open, ext2_create_file, ext2_read, ext2_write, ext2_close, ext2_create_directory, NULL /*get_vm_object*/, ext2_truncate /*truncate*/, - ext2_stat, NULL /*send_signal*/); + ext2_stat, NULL /*send_signal*/, NULL /*connect*/); } void parse_superblock(void) { diff --git a/kernel/fs/shm.c b/kernel/fs/shm.c index caf356c..ec7286f 100644 --- a/kernel/fs/shm.c +++ b/kernel/fs/shm.c @@ -90,7 +90,7 @@ int shm_open(const char *name, int oflag, mode_t mode) { 0 /*inode_num*/, 0 /*type*/, NULL, NULL, 1 /*is_open*/, internal_object, 0 /*file_size*/, NULL /*open*/, NULL /*create_file*/, shm_read, shm_write, NULL /*close*/, NULL /*create_directory*/, - shm_get_vm_object, shm_ftruncate, NULL /*stat*/, NULL /*send_signal*/); + shm_get_vm_object, shm_ftruncate, NULL /*stat*/, NULL /*send_signal*/, NULL /*connect*/); vfs_fd_t *fd_ptr; int fd = vfs_create_fd(oflag, mode, 0 /*is_tty*/, inode, &fd_ptr); diff --git a/kernel/fs/tmpfs.c b/kernel/fs/tmpfs.c index eb6ae34..cd48b93 100644 --- a/kernel/fs/tmpfs.c +++ b/kernel/fs/tmpfs.c @@ -52,7 +52,7 @@ void dual_pipe(int fd[2]) { internal_object, 0 /*file_size*/, NULL /*open*/, NULL /*create_file*/, tmp_read, tmp_write, tmp_close, NULL /*create_directory*/, NULL /*get_vm_object*/, NULL /*truncate*/, NULL /*stat*/, - NULL /*send_signal*/); + NULL /*send_signal*/, NULL /*connect*/); assert(inode); fd[i] = @@ -85,7 +85,7 @@ void pipe(int fd[2]) { internal_object, 0 /*file_size*/, NULL /*open*/, NULL /*create_file*/, tmp_read, tmp_write, tmp_close, NULL /*create_directory*/, NULL /*get_vm_object*/, NULL /*truncate*/, NULL /*stat*/, - NULL /*send_signal*/); + NULL /*send_signal*/, NULL /*connect*/); assert(inode); fd[i] = vfs_create_fd(O_RDWR, 0, 0 /*is_tty*/, inode, &fd_ptrs[i]); diff --git a/kernel/fs/vfs.c b/kernel/fs/vfs.c index cd3f854..59149f5 100644 --- a/kernel/fs/vfs.c +++ b/kernel/fs/vfs.c @@ -36,7 +36,9 @@ vfs_inode_t *vfs_create_inode( vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, vfs_fd_t *fd), int (*truncate)(vfs_fd_t *fd, size_t length), int (*stat)(vfs_fd_t *fd, struct stat *buf), - int (*send_signal)(vfs_fd_t *fd, int signal)) { + int (*send_signal)(vfs_fd_t *fd, int signal), + int (*connect)(vfs_fd_t *fd, const struct sockaddr *addr, + socklen_t addrlen)) { vfs_inode_t *r = kmalloc(sizeof(inode_t)); r->inode_num = inode_num; r->type = type; @@ -56,6 +58,7 @@ vfs_inode_t *vfs_create_inode( r->stat = stat; r->send_signal = send_signal; r->ref = 0; + r->connect = connect; return r; } diff --git a/kernel/fs/vfs.h b/kernel/fs/vfs.h index 83f1375..bce3925 100644 --- a/kernel/fs/vfs.h +++ b/kernel/fs/vfs.h @@ -9,6 +9,7 @@ typedef struct vfs_mounts vfs_mounts_t; #include <sched/scheduler.h> #include <socket.h> #include <stddef.h> +#include <sys/socket.h> #include <sys/stat.h> #include <typedefs.h> @@ -70,6 +71,7 @@ struct vfs_inode { int (*truncate)(vfs_fd_t *fd, size_t length); int (*stat)(vfs_fd_t *fd, struct stat *buf); int (*send_signal)(vfs_fd_t *fd, int signal); + int (*connect)(vfs_fd_t *fd, const struct sockaddr *addr, socklen_t addrlen); }; int vfs_close(int fd); @@ -103,5 +105,7 @@ vfs_inode_t *vfs_create_inode( vfs_vm_object_t *(*get_vm_object)(u64 length, u64 offset, vfs_fd_t *fd), int (*truncate)(vfs_fd_t *fd, size_t length), int (*stat)(vfs_fd_t *fd, struct stat *buf), - int (*send_signal)(vfs_fd_t *fd, int signal)); + int (*send_signal)(vfs_fd_t *fd, int signal), + int (*connect)(vfs_fd_t *fd, const struct sockaddr *addr, + socklen_t addrlen)); #endif |