Skip to content

docs: Add instructions on grate api usage and how to create grate examples - #1348

Merged
Yaxuan-w merged 1 commit into
mainfrom
add-grate-api-doc
Aug 16, 2026
Merged

Yaxuan-w merged 1 commit into
mainfrom
add-grate-api-doc

Conversation

@Yaxuan-w

Copy link
Copy Markdown
Member

Summary

Adds a new internal doc page, docs/internal/grate-api.md, documenting the public grate developer API declared in src/glibc/lind_syscall/lind_syscall.h. The existing Grates and Threei pages explain the concepts, but there was no reference for how to actually use the API when writing a grate.

The new page covers:

  • Common conventions: cage IDs, (value, cageid) argument pairs, GRATE_MEMORY_FLAG, and 3i error codes (ELINDAPIABORTED / ELINDESRCH)
  • The four API functions — make_threei_call, register_handler, copy_data_between_cages, and copy_handler_table_to_cage — with parameter tables, return-value semantics, and worked examples adapted from tests/grate-tests/
  • The required pass_fptr_to_wt dispatcher and the handler function signature
  • A complete minimal C grate (fork / register / exec pattern)
  • Writing grates in Rust with the grate-rs library from lind-wasm-example-grates, including the GrateBuilder lifecycle and a Rust version of the same example

Also registers the page in the mkdocs nav as "Grate API", after "Grates".

Related issues

Closes #825
Closes #1346

Testing

Compatibility and security impact

Checklist

  • I have read the contribution guidelines.
  • I added or updated tests where appropriate.
  • I ran the relevant tests locally and they pass.
  • I formatted the code and ran the relevant linters.
  • I updated documentation for user-visible or architectural changes.
  • I disclosed security vulnerabilities privately rather than in this PR.

@github-actions

Copy link
Copy Markdown
Contributor

End-to-End Test Report

Test Preview
grate harness

Grate Test Report

MetricValue
Total15
Success15
Failures0
Compile Failures0
Runtime Failures0
Timeout Failures0
Missing Pair Failures0

Cases

TestStatusError TypeOutput
concurrent-request/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Cage | geteuid] PASS: 1000000 calls returned 10
[Grate|geteuid] PASS

STDERR:

concurrent-request/race-test_grate.cSuccess
STDOUT:
pass

STDERR:

concurrent-request/thread_race_grate.cSuccess
STDOUT:
[thread_race] Registering handler for cage 2 in grate 1 with fn ptr addr: 3
[thread_race] PASS: 20 threads x 100000 calls returned 10
[thread_race] PASS

STDERR:

copy-data-between-cages/cp-stncpy_grate.cSuccess
STDOUT:
[cage] pathname addr=0xfffb6ff9
[cage] pathname='random'
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

copy-data-between-cages/cpdata_grate.cSuccess
STDOUT:
[Grate|open] intercepts open call: thiscage=1, arg1cage=2
[Grate|open] copied pathname: random
[cage] fd=10

STDERR:

interposing-calls/fork-with-newret_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Cage] Forked process with PID: 10
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-exec_grate.cSuccess
STDOUT:
[Grate|interpose-exec] Registering exec handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
[Grate|interpose-exec] Handling function ptr: 3 from cage: 1
[Grate|interpose-exec] In exec_grate 1 handler for cage: 1
Exec successful, argv[1]: --execd
[Grate|interpose-exec] PASS

STDERR:

interposing-calls/interpose-exit_grate.cSuccess
STDOUT:
[Grate|interpose-exit] Registering exit handler for cage 2 in grate 1 with fn ptr addr: 3
Exiting...

[Grate|interpose-exit] PASS

STDERR:

interposing-calls/interpose-fork_grate.cSuccess
STDOUT:
[Grate|interpose-fork] Registering fork handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-fork] Handling function ptr: 3 from cage: 1
[Grate|interpose-fork] In fork_grate 1 handler for cage: 1
[Grate|interpose-fork] PASS

STDERR:

interposing-calls/interpose-mmap_grate.cSuccess
STDOUT:
[Grate|interpose-mmap] Registering mmap handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
[Grate|interpose-mmap] Handling function ptr: 3 from cage: 1
[Grate|interpose-mmap] In mmap_grate 1 handler for cage: 1
mmap test: PASS
[Grate|interpose-mmap] PASS

STDERR:

interposing-calls/interpose-register_grate.cSuccess
STDOUT:
[Grate|interpose-register] Registering register_handler for cage 2 in grate 1 with fn ptr addr: 4
[cage] registering 107. grateid: 2 cageid: 3
[Grate|interpose-register] Handling function ptr: 4 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|geteuid] Registering geteuid handler for cage 1 in grate 1 with fn ptr addr: 3
[Grate|interpose-register] Handling function ptr: 3 from cage: 1
[Grate|interpose-register] In register_grate 1 handler for cage: 1
[Grate|interpose-register] PASS

STDERR:

multi-register_grate.cSuccess
STDOUT:
[Grate|multi-register_grate] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 4
[Grate|multi-register_grate] Registering getuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|multi-register_grate] Handling function ptr: 4 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Grate|multi-register_grate] Handling function ptr: 3 from cage: 1
[Grate|multi-register_grate] In multi-register_grate 1 handler for cage: 1
[Cage | multi-register] PASS: geteuid=10, getuid=20
[Grate|multi-register] PASS

STDERR:

simple-tests/copy-handler-table_grate.cSuccess
STDOUT:
[Grate|copy-handler-table] Registering geteuid handler for cage 2 in grate 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Grate|copy-handler-table] geteuid handler invoked for cage 1
[Cage|copy-handler-table] PASS: child inherited handler, then overwrite changed geteuid to 0
[Cage|copy-handler-table] PASS: parent=123 child_exit=0
[Grate|copy-handler-table] PASS

STDERR:

simple-tests/diff-cage-args_grate.cSuccess
STDOUT:
[Grate|diff-cage-args] Handling function ptr: 3 from cage: 1
[Grate|diff-cage-args] In open_grate 1 handler for cage: 1
Hello world. FD=-1
[Grate|diff-cage-args] Handling function ptr: 4 from cage: 1
Goodbye world! ret=4321 buf=helloworld
[Grate|diff-cage-args] PASS

STDERR:

simple-tests/geteuid_grate.cSuccess
STDOUT:
[Grate|geteuid] Registering geteuid handler for cage 2 in grate 1 with fn ptr addr: 3
[Grate|geteuid] Handling function ptr: 3 from cage: 1
[Grate|geteuid] In geteuid_grate 1 handler for cage: 1
[Cage | geteuid] PASS: geteuid ret = 10
[Grate|geteuid] PASS

STDERR:

static harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Static Tests
fork_simple.cSuccessNone0.060027s4.020841s
Success
thread.cSuccessNone0.051759s4.075328s
Success
tls_test.cSuccessNone0.058726s4.091577s
Success

Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
wasm-math harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases3
Number of Successes3
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Math Tests
math_link_smoke.cSuccessNone0.059647s0.119418s
Success
math_tests.cSuccessNone0.062742s0.144372s
Success
printf_float.cSuccessNone0.061384s0.141796s
Success

Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
wasm-filesystem harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases74
Number of Successes74
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
File Tests
chartests.cSuccessNone0.051063s0.153168s
Success
chdir_getcwd.cSuccessNone0.052111s0.124051s
Success
chmod.cSuccessNone0.058771s0.138936s
Success
clock_gettime_highlevel.cSuccessNone0.125189s0.181652s
Success
clock_gettime_simple.cSuccessNone0.046370s0.119933s
Success
cloexec.cSuccessNone0.055121s0.150752s
Success
close.cSuccessNone0.065943s0.154349s
Success
copy_file_range.cSuccessNone0.054553s0.148254s
Success
creat_access.cSuccessNone0.055346s0.124630s
Success
cross_cage_fd_bruteforce.cSuccessNone0.056580s0.199640s
Success
doubleclose.cSuccessNone0.048131s0.108207s
Success
dup.cSuccessNone0.049278s0.127438s
Success
dup2.cSuccessNone0.054169s0.122391s
Success
dup3.cSuccessNone0.051804s0.127003s
Success
dupwrite.cSuccessNone0.055429s0.135235s
Success
etc_conf.cSuccessNone0.050492s0.129240s
Success
faccessat.cSuccessNone0.053656s0.132603s
Success
fchdir.cSuccessNone0.057387s0.142818s
Success
fchmod.cSuccessNone0.056302s0.144404s
Success
fchmodat.cSuccessNone0.052097s0.125388s
Success
fcntl.cSuccessNone0.054900s0.143559s
Success
fcntl_dupfd.cSuccessNone0.050368s0.124093s
Success
fdatasync.cSuccessNone0.054143s0.125442s
Success
filetest.cSuccessNone0.055988s0.120238s
Success
filetest1000.cSuccessNone0.065344s0.141585s
Success
flock.cSuccessNone0.067047s0.181325s
Success
fstat.cSuccessNone0.056587s0.139655s
Success
fstatfs.cSuccessNone0.049974s0.116716s
Success
fsync.cSuccessNone0.053880s0.122517s
Success
ftruncate.cSuccessNone0.058963s0.219020s
Success
getcwd.cSuccessNone0.051748s0.119500s
Success
getcwd_null.cSuccessNone0.056310s0.128777s
Success
getpgid.cSuccessNone0.050179s0.117291s
Success
getrandom.cSuccessNone0.054841s0.137946s
Success
ioctl.cSuccessNone0.058916s0.137138s
Success
link.cSuccessNone0.058311s0.166144s
Success
locale_test.cSuccessNone0.065779s0.322029s
Success
lseek.cSuccessNone0.059390s0.199145s
Success
lstat.cSuccessNone0.058655s0.150084s
Success
mkdir_rmdir.cSuccessNone0.055000s0.131957s
Success
mkfifo_test.cSuccessNone0.061148s0.186439s
Success
mknod.cSuccessNone0.055171s0.133238s
Success
nocancel_io.cSuccessNone0.058384s0.171687s
Success
open.cSuccessNone0.050658s0.115243s
Success
openat.cSuccessNone0.052023s0.127382s
Success
path_conversion_safety.cSuccessNone0.059679s0.144465s
Success
ppoll.cSuccessNone0.058747s0.134968s
Success
pread_pwrite.cSuccessNone0.053337s0.129869s
Success
preadv_pwritev.cSuccessNone0.057033s0.140832s
Success
printf.cSuccessNone0.048863s0.117978s
Success
prlimit64.cSuccessNone0.048984s0.118066s
Success
read.cSuccessNone0.056135s0.137227s
Success
readbytes.cSuccessNone0.051754s0.117667s
Success
readdir_basic.cSuccessNone0.059703s0.161034s
Success
readlink.cSuccessNone0.055785s0.133988s
Success
readlinkat.cSuccessNone0.057859s0.138682s
Success
readv_writev_test.cSuccessNone0.057153s0.140412s
Success
rename.cSuccessNone0.057082s0.127544s
Success
renameat.cSuccessNone0.057912s0.140447s
Success
sc-writev.cSuccessNone0.054488s0.128272s
Success
stat.cSuccessNone0.056542s0.135161s
Success
statfs.cSuccessNone0.050207s0.117079s
Success
symlink.cSuccessNone0.057771s0.155281s
Success
sync_file_range.cSuccessNone0.054708s0.120803s
Success
timespec_time_t_compat.cSuccessNone0.053112s0.119233s
Success
trailing_slash.cSuccessNone0.054456s0.134059s
Success
truncate.cSuccessNone0.056877s0.147453s
Success
unlink.cSuccessNone0.058374s0.160143s
Success
unlinkat.cSuccessNone0.057182s0.143780s
Success
utimensat.cSuccessNone0.054375s0.144687s
Success
write.cSuccessNone0.048965s0.111795s
Success
writeloop.cSuccessNone0.057279s0.126322s
Success
writepartial.cSuccessNone0.056015s0.116704s
Success
writev.cSuccessNone0.056889s0.133278s
Success

Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
wasm-memory harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases28
Number of Successes28
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
brk.cSuccessNone0.067975s0.131583s
Success
fork_large_memory.cSuccessNone0.084620s0.491395s
Success
malloc.cSuccessNone0.052853s0.117699s
Success
malloc_large.cSuccessNone0.052441s0.112475s
Success
memcpy.cSuccessNone0.052555s0.123494s
Success
memory_error_test.cSuccessNone0.062530s0.150345s
Success
mmap.cSuccessNone0.050664s0.128314s
Success
mmap_address_truncation.cSuccessNone0.050912s0.122450s
Success
mmap_aligned.cSuccessNone0.050392s0.130150s
Success
mmap_complicated.cSuccessNone0.056609s0.180220s
Success
mmap_file.cSuccessNone0.058912s0.128887s
Success
mmap_shared.cSuccessNone0.057697s0.161333s
Success
mmaptest.cSuccessNone0.050085s0.119928s
Success
mprotect.cSuccessNone0.050975s0.172442s
Success
mprotect_boundary.cSuccessNone0.063513s0.157171s
Success
mprotect_end_region.cSuccessNone0.051231s0.127445s
Success
mprotect_middle_region.cSuccessNone0.098830s0.131964s
Success
mprotect_multiple_times.cSuccessNone0.081364s0.190236s
Success
mprotect_same_value.cSuccessNone0.049444s0.118859s
Success
mprotect_spanning_regions.cSuccessNone0.055063s0.142833s
Success
munmap_adjacent_shm.cSuccessNone0.099729s0.268757s
Success
sbrk.cSuccessNone0.053825s0.124456s
Success
segfault.cSuccessNone0.064261s0.358360s
Success
shm.cSuccessNone0.058543s0.172274s
Success
shmtest.cSuccessNone0.060480s0.128719s
Success
thread_malloc_sequential.cSuccessNone0.071244s0.228649s
Success
vmmap_escape.cSuccessNone0.066523s0.222496s
Success
vtable.cSuccessNone0.059596s0.133351s
Success

Fail Tests

Summary

MetricCount
Total Test Cases4
Number of Successes4
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Memory Tests
invalid_access_direct.cSuccessNone0.125028s0.128998s
Success
invalid_access_fork.cSuccessNone0.144752s0.158568s
Success
mmap-negative1.cSuccessNone0.170438s0.259290s
Success
mmap-negative2.cSuccessNone0.140353s0.175272s
Success
wasm-process harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases57
Number of Successes57
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Process Tests
barrier_test.cSuccessNone0.053454s0.153415s
Success
chain_thread.cSuccessNone1.054948s1.155556s
Success
ctor_syscall_test.cSuccessNone0.047468s0.114165s
Success
cxa_atexit_test.cSuccessNone0.052133s0.121388s
Success
exec_non_utf8.cSuccessNone0.055536s0.123648s
Success
execve_shebang.cSuccessNone0.056427s0.126219s
Success
exit.cSuccessNone0.052294s0.119606s
Success
exit_failure.cSuccessNone0.055636s0.148529s
Success
exit_group_thread.cSuccessNone0.055976s0.174634s
Success
exit_status_first_wins.cSuccessNone0.058083s0.180380s
Success
flockfile_test.cSuccessNone0.055502s0.159765s
Success
fork2malloc.cSuccessNone0.057022s0.149743s
Success
fork_select.cSuccessNone0.054646s0.158911s
Success
fork_simple.cSuccessNone0.054121s0.141160s
Success
fork_syscall.cSuccessNone0.059328s0.676522s
Success
fork_tls_ctype.cSuccessNone0.058445s0.170021s
Success
forkandopen.cSuccessNone0.057233s0.159829s
Success
forkdup.cSuccessNone0.057094s0.160005s
Success
forkexecuid.cSuccessNone0.053939s0.169798s
Success
forkexecv-arg.cSuccessNone0.053740s0.163976s
Success
forkexecv.cSuccessNone0.053843s0.157584s
Success
forkfiles.cSuccessNone0.062311s0.160492s
Success
forkmalloc.cSuccessNone0.055410s0.144958s
Success
forknodup.cSuccessNone0.056100s0.157011s
Success
function-ptr.cSuccessNone0.052323s0.114457s
Success
getegid_syscall.cSuccessNone0.055298s0.494246s
Success
getgid_syscall.cSuccessNone0.055993s0.515603s
Success
getpid.cSuccessNone0.049183s0.112439s
Success
getpid_syscall.cSuccessNone0.060452s0.602061s
Success
getppid.cSuccessNone0.056536s0.145602s
Success
getppid_syscall.cSuccessNone0.059368s0.435237s
Success
getuid.cSuccessNone0.056165s0.121085s
Success
getuid_syscall.cSuccessNone0.053975s0.265400s
Success
hello-arg.cSuccessNone0.047067s0.122106s
Success
hello.cSuccessNone0.046174s0.112664s
Success
longjmp.cSuccessNone0.048270s0.121238s
Success
mutex.cSuccessNone2.063011s2.158732s
Success
printf_deadlock_smoke.cSuccessNone0.063509s0.183465s
Success
printf_thread_test.cSuccessNone0.053971s0.154478s
Success
sem_forks.cSuccessNone0.056833s0.195860s
Success
sem_slow_path.cSuccessNone1.057375s1.157882s
Success
setjmp_edge.cSuccessNone0.051774s0.211767s
Success
setsid.cSuccessNone0.049345s0.116053s
Success
template.cSuccessNone0.054205s0.200495s
Success
test_crossmodule_longjmp.cSuccessNone0.055753s0.156580s
Success
test_exec_nofork.cSuccessNone0.053591s0.144090s
Success
test_unlink_open_file.cSuccessNone0.051690s0.114642s
Success
thread-guard.cSuccessNone0.054207s0.141447s
Success
thread-test.cSuccessNone0.051833s0.133739s
Success
thread.cSuccessNone0.052348s0.131883s
Success
thread_cageid_race.cSuccessNone0.052166s0.308699s
Success
tls_test.cSuccessNone0.054414s0.174926s
Success
uname.cSuccessNone0.049538s0.114512s
Success
wait.cSuccessNone0.051747s0.164448s
Success
waitpid_anychild.cSuccessNone0.055808s0.146471s
Success
waitpid_syscall.cSuccessNone1.056000s1.248872s
Success
waitpid_wnohang.cSuccessNone0.055929s0.156053s
Success

Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
wasm-signals harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases24
Number of Successes24
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Signal Tests
alarm.cSuccessNone7.053559s7.165024s
Success
eintr_fork_signal.cSuccessNone1.058329s1.158918s
Success
kill.cSuccessNone1.054390s1.150703s
Success
pause_test.cSuccessNone1.054893s1.150327s
Success
setitimer.cSuccessNone7.055982s7.157356s
Success
sigalrm.cSuccessNone2.054527s2.147454s
Success
sigaltstack.cSuccessNone0.057318s0.141044s
Success
sigchld.cSuccessNone1.055948s1.148510s
Success
signal-fork.cSuccessNone4.056684s4.146217s
Success
signal-simple.cSuccessNone0.055368s0.127167s
Success
signal_SIGCHLD.cSuccessNone0.053076s0.160175s
Success
signal_fork.cSuccessNone0.052238s0.152073s
Success
signal_int_ignored.cSuccessNone2.055594s2.149607s
Success
signal_kill_cleanup.cSuccessNone1.052672s1.139067s
Success
signal_procmask.cSuccessNone0.051292s0.131544s
Success
signal_read_interrupt.cSuccessNone0.557855s0.669469s
Success
signal_recursive.cSuccessNone0.051461s0.133870s
Success
signal_sa_mask.cSuccessNone0.050969s0.126184s
Success
signal_select_interrupt.cSuccessNone0.558273s0.652474s
Success
signal_write_interrupt.cSuccessNone1.056937s1.141893s
Success
sigpipe.cSuccessNone1.058335s1.154563s
Success
sigprocmask.cSuccessNone1.057216s1.133300s
Success
sigsuspend_test.cSuccessNone1.053565s1.152924s
Success
test_sigsetjmp.cSuccessNone0.055144s0.155055s
Success

Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Signal Tests
signal_resethand.cSuccessNone1.054021s1.145289s
Success
wasm-networking harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases44
Number of Successes44
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Networking Tests
accept4.cSuccessNone0.060878s0.141354s
Success
dns_resolve_test.cSuccessNone0.055312s0.131468s
Success
dnstest.cSuccessNone0.055610s0.126617s
Success
epoll_badfd.cSuccessNone0.052145s0.115670s
Success
epoll_edge_triggered.cSuccessNone0.212402s0.387489s
Success
epollcreate1.cSuccessNone0.055157s0.137065s
Success
error_handling_net.cSuccessNone0.063808s0.198849s
Success
getaddrinfo_test.cSuccessNone0.058544s0.164242s
Success
getaddrinfo_unspec.cSuccessNone0.063493s0.137404s
Success
gethostname.cSuccessNone0.050894s0.116024s
Success
getifaddrs.cSuccessNone0.058190s0.133138s
Success
getsockname.cSuccessNone0.057875s0.132816s
Success
getsockopt.cSuccessNone0.057422s0.164292s
Success
ipv6_basic.cSuccessNone0.059523s0.163547s
Success
makepipe.cSuccessNone0.050444s0.114698s
Success
nonblocking_eagain.cSuccessNone0.058706s0.172984s
Success
pipe.cSuccessNone0.057519s0.135509s
Success
pipe2.cSuccessNone0.058087s0.126872s
Success
pipeinput.cSuccessNone0.058955s0.163736s
Success
pipeinput2.cSuccessNone0.059077s0.167945s
Success
pipeonestring.cSuccessNone0.059002s0.162479s
Success
pipepong.cSuccessNone0.059037s0.168248s
Success
pipewrite.cSuccessNone0.051967s0.124884s
Success
poll.cSuccessNone0.055373s0.121069s
Success
recvfrom-sendto.cSuccessNone0.056991s0.137838s
Success
sendmsg_recvmsg_test.cSuccessNone0.057354s0.137138s
Success
serverclient.cSuccessNone0.057379s0.142877s
Success
shutdown.cSuccessNone0.057321s0.139965s
Success
shutdown_fork.cSuccessNone0.057262s0.154704s
Success
simple-select.cSuccessNone0.058940s0.166732s
Success
simple_epoll.cSuccessNone0.055159s0.133536s
Success
socket.cSuccessNone0.056328s0.126925s
Success
socket_cloexec.cSuccessNone0.054593s0.121222s
Success
socket_options_advanced.cSuccessNone0.060955s0.179915s
Success
socketepoll.cSuccessNone0.053237s0.124045s
Success
socketpair.cSuccessNone0.054992s0.151532s
Success
socketselect.cSuccessNone0.056271s0.129740s
Success
udp_send_recv.cSuccessNone0.162650s0.285854s
Success
uds-getsockname.cSuccessNone0.055978s0.124005s
Success
uds-nb-select.cSuccessNone2.063886s2.204388s
Success
uds-serverclient.cSuccessNone0.060705s0.170312s
Success
uds-socketselect.cSuccessNone0.057344s0.132696s
Success
uds_listen_poll.cSuccessNone1.061831s1.179789s
Success
writev_socket.cSuccessNone0.059709s0.162403s
Success

Fail Tests

Summary

MetricCount
Total Test Cases0
Number of Successes0
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0
wasm-dynamic-linking harness

Test Report

Deterministic Tests

Summary

MetricCount
Total Test Cases7
Number of Successes7
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
basic.cSuccessNone0.050677s0.128614s
Success
dlopen_fork.cSuccessNone0.053304s0.152515s
Success
dlopen_thread.cSuccessNone0.054556s0.156504s
Success
double_fork_dlopen.cSuccessNone0.056928s0.205264s
Success
fork_dlopen.cSuccessNone0.054538s0.152046s
Success
longjmp_dlopen.cSuccessNone0.052256s0.138961s
Success
rdynamic_main.cSuccessNone0.053264s0.148788s
Success

Fail Tests

Summary

MetricCount
Total Test Cases1
Number of Successes1
Number of Failures0
Number of Compilation Failure Native0
Number of Runtime Failure Native0
Number of Segmentation Fault Native0
Number of Timeout During Native0
Number of Lind Wasm Compile Failure0
Number of Lind Wasm Runtime Failure0
Number of Lind Wasm Segmentation Failure0
Number of Timeout During Lind Wasm run0
Number of Unknown Failure0
Number of C Compiler and Wasm Output mismatch0
Number of Fail Test: Native Succeeded (Should Fail)0
Number of Fail Test: Wasm Succeeded (Should Fail)0
Number of Fail Test: Both Native and Wasm Succeeded (Should Fail)0
Number of Fail Test: Native Compilation Failure (Should Succeed)0
Number of Fail Test: Wasm Compilation Failure (Should Succeed)0

Test Results by Category

Test CaseStatusError TypeNative TimeWasm TimeOutput
Dylink Tests
dlerror.cSuccessNone0.046686s0.121450s
Success

@Blzzxrd Blzzxrd left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me

@Yaxuan-w
Yaxuan-w merged commit 40ed9aa into main Aug 16, 2026
5 checks passed
@Yaxuan-w
Yaxuan-w deleted the add-grate-api-doc branch August 16, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: have docs for apis Show how to create a Grate

2 participants