aboutsummaryrefslogtreecommitdiffstats
path: root/init/init.c
AgeCommit message (Collapse)Author
2024-01-18init: apply .env filesturret
we apply .env files from both the current working directory and the directory of the executable we're running from very simple .env format, KEY=VALUE, comments prepended with # on first character of line only.
2024-01-16init: minor optimisationsturret
use switch{case} instead of if statements for determining action upon signal
2024-01-14init: register signal blockers earlierturret
prevents potential race condition where a subsystem can terminate before we fully block SIGCHLD, causing SIGCHLD to be sent to init and having our entire process terminated ungracefully. prevents bash and family from sending "Terminated" due to our process receiving SIGTERM during a panic, since we already exit in there and it'd be queued up if we do receive one
2024-01-14init: modify panic termination sequenceturret
in log: we ensure we panic by killing our process group with SIGTERM, raising it for ourselves, and exiting (if all else fails simply). in init: we catch SIGTERM and exit with 0 if we get it, as bash (and likely others) prints a nasty "Terminated" to stderr
2024-01-12init: add random seed & bug fixesturret
2024-01-11init: panic on keyboard interruptturret
also: change panic signal to be SIGKILL as sigint being caught would result in a loop
2024-01-11init: panic on child exit status !=0turret
also: modify log to exit status 0 on panic instead of 1 (only runs exit on panicmode respawn which shouldn't cause a fatal termination)
2023-12-18init: global init curl while not multithreadedturret
2023-12-18init: minor optimisationsturret
move spin locks to dedicated function so we can minimise repetition of code. now uses more C and less assembly. init.c uses 8192 * 512 as a maximum even if the stack rlimit is larger
2023-12-18*: enforce 78 char line limitturret
2023-12-18init: panic on no more subsystemsturret
2023-12-18subsys: use rlimits to determine stack sizeturret
2023-12-18init: token logicturret
(also add loglevel for failed to reap message) token is required and init will panic without TOKEN in the environment
2023-11-24misc: subsys upgrade, log timestampsturret
(log) - create LOGLEVEL constant numbers - implement CONSOLE_LOGLEVEL - color array now uses loglevel constants - timestamp now shown (thanks util-linux) (init) - register mainpid - hello world print - fix process reaper to refer to subsys when reaping (subsys) - create maximum subsystem count - create subsystem table - add debugging prints to subsystem entry and termination - create function to handle process termination (unmap stack, free subsystem malloc, clear entry in table) - disable subsystem inception - change die references to fail with print - supply clone with signal to send on termination (SIGCHLD)
2023-11-19misc: minor bugs and commentsturret
sprinkle a little bit of commenting throughout the codebase. hopefully i dont regret what i've written - clone: bottom of stack is passed through - print: write newline at end of message - initcall: functions return void type very basic net startup. hopefully i dont regret implementing the websocket protocol myself in a language as holy as C.
2023-11-19Initial committurret
- create subsystem system using clone syscall, shared memory, shared file descriptors - printk-like logging facility (TODO: console loglevel) - initcall system (like linux kernel) TODO: determine license factors: linker.ld, linux kernel licensing (some ideas are more liberally taken rather than paraphrased)