Differences From
Artifact [c4d82c1a4a]:
- 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 18
19 19 if (kiosend(e.std, ptr, null) == kiocond_ok) {
20 20 /* great, continue */
21 21 } else {
22 22 return kbad_io;
23 23 }
24 24
25 - void* region = kmheapa(2048);
26 - if (region == null) return kbad_mem;
25 + void* region;
26 + kmcond alloc = kmheapa(®ion, 2048);
27 + if (alloc != kmcond_ok) return kbad_mem;
27 28
28 29 kmzero(region,2048);
29 30
30 31 if (kmheapf(region) >= kmcond_fail) return kbad_mem;
31 32
32 33 return kbad_ok;
33 34 }