From 5d4a723a5f157c0ed38a348099a600d1d21c3c2b Mon Sep 17 00:00:00 2001 From: hachem Date: Tue, 6 Oct 2026 12:49:46 +0200 Subject: feat: gils core utils and other shit --- kernel/vfs.rv | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) (limited to 'kernel/vfs.rv') diff --git a/kernel/vfs.rv b/kernel/vfs.rv index 5d2d1de..22c399e 100644 --- a/kernel/vfs.rv +++ b/kernel/vfs.rv @@ -3,37 +3,33 @@ const TASK_STATES = { "free", "ready", "dead", "blocked" } -fn vfs_owns(path) do +global vfs_owns = fn(path) do if path == "/proc" or path:starts_with?("/proc/") return :true - if path == "/bin" or path:starts_with?("/bin/") return :true return :false end -fn parse_pid(s) do - if s:len() == 0 return -1 - let n = 0 - for i in 0..s:len() do - const c = s[i]:ascii() - if c < 48 or c > 57 return -1 - n = n * 10 + (c - 48) +global parse_pid = fn(text) do + if text:len() == 0 return -1 + let number = 0 + for index in 0..text:len() do + const code = text[index]:ascii() + if code < 48 or code > 57 return -1 + number = number * 10 + (code - 48) end - return n + return number end -fn vfs_ls(path) do +global vfs_ls = fn(path) do if path == "/proc" do puts(" uptime\n meminfo\n") - for i in 0..task_max() do - if task_state(i) != 0 puts(" #{i}\n") + for pid in 0..task_max() do + if task_state(pid) != 0 puts(" #{pid}\n") end end - else if path == "/bin" do - for i in 0..prog_count() do puts(" #{prog_name(i)}\n") end - end else do puts("ls: #{path}: no such directory\n") end end -fn vfs_cat(path) do +global vfs_cat = fn(path) do if path == "/proc/uptime" do puts("#{math.floor(uptime() / 100)}s\n") return :nil end if path == "/proc/meminfo" do puts("#{(mem_free() shr 20)} MiB free / #{(mem_total() shr 20)} MiB total\n") return :nil end if path:starts_with?("/proc/") do @@ -45,13 +41,5 @@ fn vfs_cat(path) do puts("cat: #{path}: no such file\n") return :nil end - if path:starts_with?("/bin/") do - const nm = path[5..] - for i in 0..prog_count() do - if prog_name(i) == nm do puts("#{nm}: elf program, #{prog_size(i)} bytes\n") return :nil end - end - puts("cat: #{path}: no such file\n") - return :nil - end puts("cat: #{path}: no such file\n") end -- cgit v1.3