aboutsummaryrefslogtreecommitdiffstats
path: root/sysgen
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-01-08 17:20:32 +0100
committerDmitry Vyukov <dvyukov@google.com>2017-01-09 20:28:10 +0100
commitbbd4840872f70e3342308c6965ab196ed2606af1 (patch)
tree519ebfa1fbd6cafadd2efd1038e0c8f869ff37eb /sysgen
parentc377a6514d9a4858e818e6d4637870bab2da6370 (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.go1
-rw-r--r--sysgen/sysgen.go12
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))