#include "fd.h" static struct file_entry fd_table[MAX_FD] = { 0 }; static int find_next_fd(void) { for (int fd = 0; fd < MAX_FD; ++fd) { if (!fd_table[fd].open) return fd; } return -1; } int register_fd(u32 lba, u32 file_size) { int free_fd = find_next_fd(); if (free_fd < 0) return -1; struct file_entry f = { .open = 0, .lba = lba, .file_offset = 0, .file_size = file_size }; fd_table[free_fd] = f; return free_fd; } int destroy_fd(int fd) { if (fd > MAX_FD || !fd_table[fd].open) return -1; fd_table[fd].open = 0; fd_table[fd].lba = 0; fd_table[fd].file_offset = 0; fd_table[fd].file_size = 0; return 0; }