From b6dd58c629fbd2077f88eea09ff952b6a9de6a0f Mon Sep 17 00:00:00 2001 From: TXuian <1163589503@qq.com> Date: Thu, 9 May 2024 16:01:43 +0800 Subject: [PATCH] Optimize XiZi_AIoT FS fd allocation. --- Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs.c | 7 ++++--- Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs_server.c | 2 +- Ubiquitous/XiZi_AIoT/softkernel/memory/pagetable_level2.c | 2 +- Ubiquitous/XiZi_AIoT/softkernel/syscall/sys_state.c | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs.c b/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs.c index 53c2e7263..ee5ef8447 100644 --- a/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs.c +++ b/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs.c @@ -57,7 +57,7 @@ static int InodeFreeRecursive(struct Inode* dp); static char* PathElementExtract(char* path, char* name); static uint32_t InodeBlockMapping(struct Inode* inode, uint32_t block_num); -#define MAX_SUPPORT_FD 1024 +#define MAX_SUPPORT_FD 2048 static struct FileDescriptor fd_table[MAX_SUPPORT_FD]; struct MemFsRange MemFsRange; @@ -486,7 +486,7 @@ void FreeFileDescriptor(int fd) printf("fd invlid.\n"); return; } - fd_table[fd].data = 0; + fd_table[fd].data = NULL; return; } @@ -495,8 +495,9 @@ int AllocFileDescriptor(void) int free_idx = -1; for (int i = 0; i < MAX_SUPPORT_FD; i++) { // found free fd - if (free_idx == -1 && fd_table[i].data == 0) { + if (free_idx == -1 && fd_table[i].data == NULL) { free_idx = i; + break; } } if (free_idx == -1) { diff --git a/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs_server.c b/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs_server.c index ac7eb0cf5..53301aa06 100644 --- a/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs_server.c +++ b/Ubiquitous/XiZi_AIoT/services/fs/fs_server/fs_server.c @@ -23,7 +23,7 @@ struct CwdPair { struct Inode* Inode; }; -#define MAX_SUPPORT_SESSION 1024 +#define MAX_SUPPORT_SESSION 2048 static struct CwdPair session_cwd[MAX_SUPPORT_SESSION]; static struct CwdPair* get_session_cwd(void) diff --git a/Ubiquitous/XiZi_AIoT/softkernel/memory/pagetable_level2.c b/Ubiquitous/XiZi_AIoT/softkernel/memory/pagetable_level2.c index b25155749..d04736611 100644 --- a/Ubiquitous/XiZi_AIoT/softkernel/memory/pagetable_level2.c +++ b/Ubiquitous/XiZi_AIoT/softkernel/memory/pagetable_level2.c @@ -53,7 +53,7 @@ uintptr_t* _page_walk(uintptr_t* pgdir, uintptr_t vaddr, bool alloc) pgtbl_vaddr = (uintptr_t*)P2V(pgtbl_paddr); } else { if (!alloc || !(pgtbl_vaddr = (uintptr_t*)kalloc(sizeof(uintptr_t) * NUM_LEVEL4_PTE))) { - return 0; + return NULL; } memset(pgtbl_vaddr, 0, sizeof(uintptr_t) * NUM_LEVEL4_PTE); diff --git a/Ubiquitous/XiZi_AIoT/softkernel/syscall/sys_state.c b/Ubiquitous/XiZi_AIoT/softkernel/syscall/sys_state.c index fba8121ee..827799515 100644 --- a/Ubiquitous/XiZi_AIoT/softkernel/syscall/sys_state.c +++ b/Ubiquitous/XiZi_AIoT/softkernel/syscall/sys_state.c @@ -41,7 +41,7 @@ Modification: extern uint8_t _binary_fs_img_start[], _binary_fs_img_end[]; #define SHOWINFO_BORDER_LINE() LOG_PRINTF("******************************************************\n"); -#define SHOWTASK_TASK_BASE_INFO(task) LOG_PRINTF(" %-4d %-16s %-4d 0x%x(%-d)\n", task->pid, task->name, task->priority, task->mem_size >> 10, task->mem_size >> 10) +#define SHOWTASK_TASK_BASE_INFO(task) LOG_PRINTF(" %-6d %-16s %-4d 0x%x(%-d)\n", task->pid, task->name, task->priority, task->mem_size >> 10, task->mem_size >> 10) void show_tasks(void) { @@ -51,7 +51,7 @@ void show_tasks(void) LOG_PRINTF("CPU %-2d: %s\n", i, (global_cpus[i].task == NULL ? "NULL" : global_cpus[i].task->name)); } SHOWINFO_BORDER_LINE(); - LOG_PRINTF("%-8s %-4s %-16s %-4s %-8s\n", "STAT", "ID", "TASK", "PRI", "MEM(KB)"); + LOG_PRINTF("%-8s %-6s %-16s %-4s %-8s\n", "STAT", "ID", "TASK", "PRI", "MEM(KB)"); DOUBLE_LIST_FOR_EACH_ENTRY(task, &xizi_task_manager.task_running_list_head, node) { LOG_PRINTF("%-8s", "RUNNING");