From befc29b2c79ba261371fae953917b214b7645eeb Mon Sep 17 00:00:00 2001 From: Lisa Milne Date: Tue, 14 Nov 2023 06:59:18 +1000 Subject: [PATCH] start setting up for runlevels via /dev/initctl --- clite/commands.js | 4 ++++ clite/core.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/clite/commands.js b/clite/commands.js index b64f36f..5f7dda6 100644 --- a/clite/commands.js +++ b/clite/commands.js @@ -490,5 +490,9 @@ Options: return 0; }); +clite.commands.load('reboot',function(args,env,io) { + return 0; +}); + // insert commands above this line } diff --git a/clite/core.js b/clite/core.js index f3ed431..cd77111 100644 --- a/clite/core.js +++ b/clite/core.js @@ -160,6 +160,42 @@ var clite = { }; n.perms = 'crw-rw-rw-'; n.data.isdev = true; + // /dev/initctl - writing to it sets the runlevel, reading from it returns the current runlevel + vfsapi.mkFile('/dev/initctl'); + n = vfsapi.getNode('/dev/initctl'); + if (!n) { + clite.log.write('initctl device failure'); + return false; + } + n.data.content = { + data:1, + read:function() { + return n.data.content.data.toString(); + }, + write:function(rl) { + var rli = parseInt(rl); + switch (rli) { + case 0: + n.data.content.data = 0; + // TODO: do something to power off + break; + case 1: + n.data.content.data = 1; + break; + case 3: + n.data.content.data = 3; + break; + case 6: + n.data.content.data = 6; + // TODO: do something to reboot + break; + default:; + } + return false; + } + }; + n.perms = 'crw-rw-rw-'; + n.data.isdev = true; return true; }