/
syscalls.go
45 lines (40 loc) · 1.04 KB
/
syscalls.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package system
//NOTES:
//* syscall constants in the "syscall" package are nice, but some syscalls there are missing
//* future versions will include more than just the syscall name
//* 32bit (x86/i386) and 64bit (x86_64) syscall numbers are different
const (
SyscallX86MinNum = 0
SyscallX86UnknownNum = -1
SyscallX86UnknownName = "unknown_syscall"
)
type NumberResolverFunc func(uint32) string
type NameResolverFunc func(string) (uint32, bool)
func CallNumberResolver(arch ArchName) NumberResolverFunc {
switch arch {
case ArchName386:
return callNameX86Family32
case ArchNameAmd64:
return callNameX86Family64
case ArchNameArm32:
return callNameArmFamily32
case ArchNameArm64:
return callNameArmFamily64
default:
return nil
}
}
func CallNameResolver(arch ArchName) NameResolverFunc {
switch arch {
case ArchName386:
return callNumberX86Family32
case ArchNameAmd64:
return callNumberX86Family64
case ArchNameArm32:
return callNumberArmFamily32
case ArchNameArm64:
return callNumberArmFamily64
default:
return nil
}
}