diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-01-08 17:20:32 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-01-09 20:28:10 +0100 |
| commit | bbd4840872f70e3342308c6965ab196ed2606af1 (patch) | |
| tree | 519ebfa1fbd6cafadd2efd1038e0c8f869ff37eb /sysgen | |
| parent | c377a6514d9a4858e818e6d4637870bab2da6370 (diff) | |
sys: extend kvm support
Add new pseudo syscall syz_kvm_setup_cpu that setups VCPU into
interesting states for execution. KVM is too difficult to setup otherwise.
Lots of improvements possible, but this is a starting point.
Diffstat (limited to 'sysgen')
| -rw-r--r-- | sysgen/syscallnr.go | 1 | ||||
| -rw-r--r-- | sysgen/sysgen.go | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/sysgen/syscallnr.go b/sysgen/syscallnr.go index 7dc1296fa..991cfb03f 100644 --- a/sysgen/syscallnr.go +++ b/sysgen/syscallnr.go @@ -29,6 +29,7 @@ var syzkalls = map[string]uint64{ "syz_fuse_mount": 1000004, "syz_fuseblk_mount": 1000005, "syz_emit_ethernet": 1000006, + "syz_kvm_setup_cpu": 1000007, } func generateExecutorSyscalls(syscalls []Syscall, consts map[string]map[string]uint64) { diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go index d16841577..afad086bf 100644 --- a/sysgen/sysgen.go +++ b/sysgen/sysgen.go @@ -602,6 +602,18 @@ func generateArg( dir = "in" opt = false fmt.Fprintf(out, "&PtrType{%v, Type: &BufferType{%v, Kind: BufferFilename}}", ptrCommonHdr, common()) + case "text": + if want := 1; len(a) != want { + failf("wrong number of arguments for %v arg %v, want %v, got %v", typ, name, want, len(a)) + } + kind := "" + switch a[0] { + case "x86_real", "x86_16", "x86_32", "x86_64": + kind = "Text_" + a[0] + default: + failf("unknown text type %v for %v arg %v", a[0], typ, name) + } + fmt.Fprintf(out, "&BufferType{%v, Kind: BufferText, Text: %v}", common(), kind) case "array": if len(a) != 1 && len(a) != 2 { failf("wrong number of arguments for %v arg %v, want 1 or 2, got %v", typ, name, len(a)) |
