Break devctl() up into smaller syscalls

This commit is contained in:
2025-10-14 21:35:10 +02:00
parent 0c3250e8d6
commit fa6c194163
20 changed files with 199 additions and 164 deletions

View File

@ -3,14 +3,14 @@
#include <ulib.h>
void dev_ls(void) {
size_t ndevs = devctl(NULL, DEVCTL_DEVLS_SZ, NULL, 0, 0);
size_t ndevs = dev_listsize();
uprintf("TOTAL: %zu\n", ndevs);
uprintf("%-20s %-10s\n", "DEVICE", "FUNCTIONS");
for (size_t i = 0; i < 0x100; i++) {
DevStat devstat; ZERO(&devstat);
devctl(NULL, DEVCTL_DEVLS_STAT, (uint8_t *)&devstat, i, 0);
dev_stat(&devstat, i);
if (!devstat.present)
continue;

View File

@ -40,7 +40,7 @@ void fs_mount(void) {
}
Dev_t dev;
ret = devctl(&dev, DEVCTL_GET_HANDLE, (uint8_t *)FS_MOUNT_CONFIG.devname, 0, 0);
ret = dev_gethandle(&dev, FS_MOUNT_CONFIG.devname);
if (ret != E_OK) {
uprintf("fs: device %s not found\n", FS_MOUNT_CONFIG.devname);
return;

View File

@ -6,7 +6,7 @@ Dev_t ps2kbdev;
Dev_t termdev;
void tb_runinitscript(void) {
devctl(&termdev, DEVCTL_GET_HANDLE, (uint8_t *)"termdev", 0, 0);
dev_gethandle(&termdev, "termdev");
char *tbargs[] = { "-m", "runfile", "-f", "base:/scripts/init.tb" };
int32_t tb = proc_spawn("base:/bin/tb", tbargs, ARRLEN(tbargs));
@ -20,7 +20,7 @@ void tb_runinitscript(void) {
string_memset(buf, 0, sizeof(buf));
r = ipc_piperead(tb, 0, (uint8_t *const)buf, sizeof(buf)-1);
if (r > 0) {
devctl(&termdev, DEV_TERMDEV_PUTCH, (uint8_t *)buf, string_len(buf), 0);
dev_cmd(&termdev, DEV_TERMDEV_PUTCH, buf, string_len(buf), NULL);
} else {
schedrelease();
}
@ -29,8 +29,8 @@ void tb_runinitscript(void) {
void main(void) {
PID = proc_getpid();
devctl(&ps2kbdev, DEVCTL_GET_HANDLE, (uint8_t *)"ps2kbdev", 0, 0);
devctl(&ps2kbdev, DEV_PS2KBDEV_ATTCHCONS, (uint8_t *)PID, 0, 0);
dev_gethandle(&ps2kbdev, "ps2kbdev");
dev_cmd(&ps2kbdev, DEV_PS2KBDEV_ATTCHCONS, (void *)PID, 0, NULL);
tb_runinitscript();

View File

@ -217,7 +217,7 @@ bool interp_runstring(char *string, InterpResult **res, bool logcmds, bool inter
while(proc_pollstate(app) != 4) {
if (interactive) {
int32_t key = devctl(&ps2kbdev, DEV_PS2KBDEV_READCH, (uint8_t *)PID, 0, 0);
int32_t key = dev_cmd(&ps2kbdev, DEV_PS2KBDEV_READCH, (void *)PID, 0, NULL);
if (key > 0 && (uint8_t)key == C('S')) {
proc_kill(app);
goto cleanup;

View File

@ -102,7 +102,7 @@ void do_mode_interactive(void) {
uint8_t b = 0;
for (;;) {
int32_t key = devctl(&ps2kbdev, DEV_PS2KBDEV_READCH, (uint8_t *)PID, 0, 0);
int32_t key = dev_cmd(&ps2kbdev, DEV_PS2KBDEV_READCH, (void *)PID, 0, NULL);
if (key > 0) {
b = (uint8_t)key;
switch (b) {
@ -151,8 +151,8 @@ void main(void) {
do_file("base:/scripts/rc.tb");
if (CONFIG.mode == MODE_INTERACTIVE) {
devctl(&ps2kbdev, DEVCTL_GET_HANDLE, (uint8_t *)"ps2kbdev", 0, 0);
devctl(&ps2kbdev, DEV_PS2KBDEV_ATTCHCONS, (uint8_t *)PID, 0, 0);
dev_gethandle(&ps2kbdev, "ps2kbdev");
dev_cmd(&ps2kbdev, DEV_PS2KBDEV_ATTCHCONS, (void *)PID, 0, NULL);
do_mode_interactive();
} else if (CONFIG.mode == MODE_RUNFILE) {
if (CONFIG.filepath == NULL) {