Rework requesting process arguments

This commit is contained in:
2025-09-21 22:50:39 +02:00
parent 475f77d30f
commit 397379bca3
2 changed files with 9 additions and 6 deletions

View File

@ -11,7 +11,7 @@
#define PROC_NAME_MAX 0x100
#define PROC_STACKBLOCKS (1024*4)
#define PROC_STACKBLOCKS (1024*2)
#define PROC_STACKSIZE (PROC_STACKBLOCKS * BITMAP_BLOCK_SIZE)
#define PROC_MAX 0x100 // max amount of processes
@ -19,7 +19,7 @@
#define PROC_VFSHANDLES_MAX 0x80
#define PROC_PIPEHANDLES_MAX 0x20
#define PROC_MMAN_MAP_BASE 0x700000000000
#define PROC_MMAN_MAP_BASE 0x500000000000
#define PROC_USER_STACK_TOP 0x800000000000
typedef struct {

View File

@ -91,21 +91,24 @@ int32_t SYSCALL5(sys_processctl, pid1, cmd1, arg1, arg2, arg3) {
ret = proc->procargs.len;
} break;
case PCTL_ARGV: {
char **argbuf = (char **)arg1;
size_t *argslen = (size_t *)arg1;
char **argbuf = (char **)arg2;
if (argbuf == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
size_t len = arg2;
size_t i;
size_t maxargs = (size_t)arg3;
ProcArg *arg, *argtmp;
LL_FOREACH_SAFE_IDX_LIMIT(proc->procargs.list, arg, argtmp, i, len) {
size_t i;
LL_FOREACH_SAFE_IDX_LIMIT(proc->procargs.list, arg, argtmp, i, maxargs) {
if (argbuf[i] == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
hal_strcpy(argbuf[i], arg->string);
}
*argslen = i;
ret = E_OK;
} break;