aboutsummaryrefslogtreecommitdiffstats
path: root/docs/syscall_descriptions_syntax.md
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2022-01-04 15:29:10 +0100
committerDmitry Vyukov <dvyukov@google.com>2022-01-11 16:30:08 +0100
commitbad18a53de8fa8d3d097e3d701efb72a014661cb (patch)
tree2ff6cc1aa917897c643d2e4bc5e6ce2098d55a6d /docs/syscall_descriptions_syntax.md
parenta19c1bce2eee5a1893b4ae9c8292b0f1b2630225 (diff)
pkg/compiler: require stricter resource constructors
Don't consider syscalls that return resources in unions/arrays as constructors. Unions and arrays are problematic because we don't have directed generation in prog.randGen.createResource() and can fail to generate a syscall that returns a particular resource (generate a wrong union option that does not contain the necessary resource). This leads to the following panics: panic: failed to create a resource ifindex with ioctl$sock_SIOCGIFCONF Require each resource to have a constructor syscall that returns the resource outside of unions/arrays.
Diffstat (limited to 'docs/syscall_descriptions_syntax.md')
-rw-r--r--docs/syscall_descriptions_syntax.md4
1 files changed, 4 insertions, 0 deletions
diff --git a/docs/syscall_descriptions_syntax.md b/docs/syscall_descriptions_syntax.md
index dd5dbeb3d..a8f79b580 100644
--- a/docs/syscall_descriptions_syntax.md
+++ b/docs/syscall_descriptions_syntax.md
@@ -228,6 +228,10 @@ test_struct {
}
```
+Each resource type must be "produced" (used as an output) by at least one syscall
+(outside of unions and optional pointers) and "consumed" (used as an input)
+by at least one syscall.
+
## Type Aliases
Complex types that are often repeated can be given short type aliases using the