feat: add cwd tracking to kernel, remove shell hack, update system utilities to use getcwd, fix tcc libc stub, fix nonexistent directory issue

This commit is contained in:
2026-03-25 15:45:22 +01:00
parent 38ac914de6
commit 1c0db774f6
22 changed files with 389 additions and 265 deletions
+18
View File
@@ -91,6 +91,7 @@ namespace Sched {
processTable[i].heapNext = 0;
processTable[i].args[0] = '\0';
processTable[i].user[0] = '\0';
processTable[i].cwd[0] = '\0';
processTable[i].runningOnCpu = -1;
processTable[i].killPending = false;
processTable[i].waitingForPid = -1;
@@ -301,6 +302,23 @@ namespace Sched {
}
}
{
auto* cpu = Smp::GetCurrentCpuData();
int parentSlot = cpu->currentSlot;
if (parentSlot >= 0 && processTable[parentSlot].cwd[0]) {
int i = 0;
for (; i < 255 && processTable[parentSlot].cwd[i]; i++) {
proc.cwd[i] = processTable[parentSlot].cwd[i];
}
proc.cwd[i] = '\0';
} else {
proc.cwd[0] = '0';
proc.cwd[1] = ':';
proc.cwd[2] = '/';
proc.cwd[3] = '\0';
}
}
proc.redirected = false;
proc.parentPid = -1;
proc.outBuf = nullptr;
+1
View File
@@ -44,6 +44,7 @@ namespace Sched {
uint64_t heapNext; // Simple bump allocator for user heap
char args[256]; // Command-line arguments (set by parent via Spawn)
char user[32]; // Owner user name (inherited from parent on spawn)
char cwd[256]; // Absolute current working directory
int runningOnCpu; // CPU index running this process (-1 if not running)
bool killPending = false; // Set by Sys_Kill when target is running on another CPU