Differences From Artifact [c4d82c1a4a]:
- File kcore/testbin.exe.c — part of check-in [a8d93823f1] at 2019-08-18 13:42:35 on branch trunk — add functions, generate C syscall table (user: lexi, size: 529) [annotate] [blame] [check-ins using]
- File mod/kcore/testbin.exe.c — part of check-in [14172a910a] at 2019-08-21 06:00:24 on branch trunk — move modules to a subdirectory in order to keep the directory tree organized and make room for OS-specific build files (user: lexi, size: 529) [annotate] [blame] [check-ins using]
To Artifact [ae0ed8cd11]:
- File mod/kcore/testbin.exe.c — part of check-in [e50a476efe] at 2019-08-22 02:52:20 on branch trunk — removed sneaky segfault in x86-64 syscall fn where %r8 (the register that contains the pointer to the syscall arguments from the C syscall wrapper, which need to be copied into the correct registers before the kernel is invoked) gets overwritten if the syscall valency > 5, because of overlapping ccall and syscall ABI argument registers - r8 is clobbered by argument 5 and any further attempts to use it as a ptr segfault at best. also modified the report function so that it immediate cancels compilation if a sub-process reports failure. changed allocator function signatures so they can return a condition code if the kernel reports an error; updated example code so it compiles and runs without fault. (user: lexi, size: 557) [annotate] [blame] [check-ins using]
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
if (kiosend(e.std, ptr, null) == kiocond_ok) { /* great, continue */ } else { return kbad_io; } void* region = kmheapa(2048); if (region == null) return kbad_mem; kmzero(region,2048); if (kmheapf(region) >= kmcond_fail) return kbad_mem; return kbad_ok; } |
| > | |
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
if (kiosend(e.std, ptr, null) == kiocond_ok) { /* great, continue */ } else { return kbad_io; } void* region; kmcond alloc = kmheapa(®ion, 2048); if (alloc != kmcond_ok) return kbad_mem; kmzero(region,2048); if (kmheapf(region) >= kmcond_fail) return kbad_mem; return kbad_ok; } |