add /dev/console and /dev/time, and fix a bug in default device initialisation

This commit is contained in:
Lisa Milne 2023-12-08 11:29:46 +10:00
parent daa5f39fdc
commit 524e028ad6

View file

@ -97,8 +97,9 @@ var clite = {
function defaultDevices() {
// writing to /dev/local downloads data {name:'filename to save',data:'file content'}
{
vfsapi.mkFile(0,'/dev/local');
var n = vfsapi.getNode(0,'/dev/local');
let n = vfsapi.getNode(0,'/dev/local');
if (!n) {
clite.log.write('local device failure');
return false;
@ -118,9 +119,11 @@ var clite = {
};
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
}
// /dev/null - writing to it goes nowhere, reading from it is always null
{
vfsapi.mkFile(0,'/dev/null');
n = vfsapi.getNode(0,'/dev/null');
let n = vfsapi.getNode(0,'/dev/null');
if (!n) {
clite.log.write('null device failure');
return false;
@ -135,9 +138,11 @@ var clite = {
};
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
}
// /dev/random - writing to it goes nowhere, reading from it returns a stringified random number (integer)
{
vfsapi.mkFile(0,'/dev/random');
n = vfsapi.getNode(0,'/dev/random');
let n = vfsapi.getNode(0,'/dev/random');
if (!n) {
clite.log.write('random device failure');
return false;
@ -150,9 +155,11 @@ 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(0,'/dev/initctl');
n = vfsapi.getNode(0,'/dev/initctl');
let n = vfsapi.getNode(0,'/dev/initctl');
if (!n) {
clite.log.write('initctl device failure');
return false;
@ -199,9 +206,26 @@ var clite = {
};
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
}
// /dev/console - an interface for the system console - required by posix/sus, currently no op
{
vfsapi.mkFile(0,'/dev/console');
let n = vfsapi.getNode(0,'/dev/console');
if (!n) {
clite.log.write('console device failure');
return false;
}
n.data.content = {
read:null,
write:null
};
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
}
// /dev/tty - the main tty device, writing to it prints to the terminal, reading from it reads keyboard input
{
vfsapi.mkFile(0,'/dev/tty');
n = vfsapi.getNode(0,'/dev/tty');
let n = vfsapi.getNode(0,'/dev/tty');
if (!n) {
clite.log.write('tty failure');
return false;
@ -239,6 +263,24 @@ var clite = {
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
n.data.istty = true;
}
// /dev/time - reading from it returns the current unix epoch time UTC
{
vfsapi.mkFile(0,'/dev/time');
let n = vfsapi.getNode(0,'/dev/time');
if (!n) {
clite.log.write('time device failure');
return false;
}
n.data.content = {
read:function() {
return Date.now().toString();
},
write:null
};
n.perms = 'crw-rw-rw-';
n.data.isdev = true;
}
return true;
}