Files
HyperionOS/Src/Hyperion-core/sbin/init.lua
2026-02-01 01:01:07 -05:00

66 lines
2.1 KiB
Lua

--:Minify:--
local kernel=...
local fs=require("sys.fs")
syscall.TTY_bind("tty0")
syscall.IO_bind("raw")
for i,v in pairs(kernel.processes) do
kernel.log("Spawning kernel task "..i)
syscall.spawn(function()
local status, err = pcall(v)
if not status then
kernel.log("Error executing kernel task '" .. i .. "': " .. err, "ERROR")
else
kernel.log("Successfully executed kernel task: " .. i, "INFO")
end
end, i)
end
local eventQueues = {}
local files = fs.list("/bin/startup")
if not files then error("Failed to list /bin/startup") end
for i,v in ipairs(files) do
if v:sub(-4) == ".lua" then
local filepath = "/bin/startup/" .. v
kernel.log("Executing startup script: " .. filepath, "INFO")
local startupFunc, err = load(fs.readAllText(filepath), "@" .. filepath)
if not startupFunc then
kernel.log("Error loading startup script '" .. filepath .. "': " .. err, "ERROR")
else
syscall.spawn(function()
syscall.setUsername("User")
syscall.setuid(1)
syscall.IO_bind("eventQueue:"..tostring(i))
local spot = #eventQueues+1
eventQueues[spot]="eventQueue:"..tostring(i)
local status, err = pcall(startupFunc)
if not status then
kernel.log("Error executing startup script '" .. filepath .. "': " .. err, "ERROR")
else
kernel.log("Successfully executed startup script: " .. filepath, "INFO")
end
local event={true}
while #event~=0 do
event={syscall.IO_pullEvent()}
end
end, "startup:" .. v)
end
end
end
local timeout=false
while true do
local event = {syscall.IO_pullEvent()}
if event[1] then
for i,v in ipairs(eventQueues) do
syscall.IO_pushEvent(v, table.unpack(event))
end
timeout=false
else
timeout=true
end
if timeout then
sleep(.05)
end
kernel.saveLog()
end