Rewrite LL_* (link list) macros

This commit is contained in:
2025-09-21 18:32:22 +02:00
parent d5c2df7365
commit 475f77d30f
6 changed files with 106 additions and 100 deletions

View File

@ -97,30 +97,23 @@ int32_t SYSCALL5(sys_processctl, pid1, cmd1, arg1, arg2, arg3) {
goto done;
}
size_t len = arg2;
ProcArg *arg = proc->procargs.list;
size_t i = 0;
while (arg) {
if (i == len) {
break;
}
size_t i;
ProcArg *arg, *argtmp;
LL_FOREACH_SAFE_IDX_LIMIT(proc->procargs.list, arg, argtmp, i, len) {
if (argbuf[i] == NULL) {
ret = E_INVALIDARGUMENT;
goto done;
}
hal_strcpy(argbuf[i], arg->string);
arg = arg->next;
i++;
}
ret = E_OK;
} break;
case PCTL_PLS_SZ: {
size_t i = 0;
Proc *p, *ptmp;
size_t i;
spinlock_acquire(&PROCS.spinlock);
Proc *p = PROCS.procs;
while (p) {
i++;
p = p->next;
}
LL_FOREACH_SAFE_IDX(PROCS.procs, p, ptmp, i);
spinlock_release(&PROCS.spinlock);
ret = i;
} break;
@ -133,26 +126,22 @@ int32_t SYSCALL5(sys_processctl, pid1, cmd1, arg1, arg2, arg3) {
goto done;
}
size_t i = 0;
Proc *p, *ptmp;
size_t i;
spinlock_acquire(&PROCS.spinlock);
Proc *p = PROCS.procs;
while (p) {
LL_FOREACH_SAFE_IDX(PROCS.procs, p, ptmp, i) {
if (i == pidx) {
stat->pid = p->pid;
hal_strcpy(stat->name, p->name);
stat->state = p->state;
stat->kern = p->kern;
VasRange *range = p->vas;
while (range) {
stat->usemem += range->size;
range = range->next;
VasRange *vas, *vastmp;
LL_FOREACH_SAFE(p->vas, vas, vastmp) {
stat->usemem += vas->size;
}
break;
}
i++;
p = p->next;
}
spinlock_release(&PROCS.spinlock);
ret = E_OK;