ksyscalls use libc ns

This commit is contained in:
Giacomo Tesio 2017-04-11 18:21:56 +02:00
parent 13e1540deb
commit b60ed18066
1 changed files with 23 additions and 23 deletions

View File

@ -97,18 +97,18 @@ func sysret(t string) string {
func formatArg(i int, t string) string{ func formatArg(i int, t string) string{
switch(t){ switch(t){
case "int", "int32_t": case "int", "int32_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%d\", a%d);\n", i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%d\", a%d);\n", i)
case "unsigned int", "uint32_t": case "unsigned int", "uint32_t":
/* unsigned int is reserved for flags */ /* unsigned int is reserved for flags */
return fmt.Sprintf("\tfmtprint(fmt, \" %%#ux\", a%d);\n", i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#ux\", a%d);\n", i)
case "long", "int64_t": case "long", "int64_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%lld\", a%d);\n", i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%lld\", a%d);\n", i)
case "unsigned long", "uint64_t": case "unsigned long", "uint64_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#lud\", a%d);\n", i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#lud\", a%d);\n", i)
case "void*", "uint8_t*", "const void*", "const uint8_t*": case "void*", "uint8_t*", "const void*", "const uint8_t*":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#p\", a%d);\n", i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#p\", a%d);\n", i)
case "int32_t*", "int*", "const int32_t*", "const int*": case "int32_t*", "int*", "const int32_t*", "const int*":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#p(%%d)\", a%d, a%d);\n", i, i) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#p(%%d)\", a%d, a%d);\n", i, i)
case "const char*", "char*": case "const char*", "char*":
return fmt.Sprintf("\tfmtuserstring(fmt, a%d);\n", i) return fmt.Sprintf("\tfmtuserstring(fmt, a%d);\n", i)
case "const char**", "char**": case "const char**", "char**":
@ -120,18 +120,18 @@ func formatArg(i int, t string) string{
func formatRet(t string) string{ func formatRet(t string) string{
switch(t){ switch(t){
case "int", "int32_t": case "int", "int32_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%d\", ret->%s);\n", sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%d\", ret->%s);\n", sysret(t))
case "unsigned int", "uint32_t": case "unsigned int", "uint32_t":
/* unsigned int is reserved for flags */ /* unsigned int is reserved for flags */
return fmt.Sprintf("\tfmtprint(fmt, \" %%#ux\", ret->%s);\n", sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#ux\", ret->%s);\n", sysret(t))
case "long", "int64_t": case "long", "int64_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%lld\", ret->%s);\n", sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%lld\", ret->%s);\n", sysret(t))
case "unsigned long", "uint64_t", "void": case "unsigned long", "uint64_t", "void":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#llud\", ret->%s);\n", sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#llud\", ret->%s);\n", sysret(t))
case "void*", "uintptr_t", "const void*", "const uintptr_t": case "void*", "uintptr_t", "const void*", "const uintptr_t":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#p\", ret->%s);\n", sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#p\", ret->%s);\n", sysret(t))
case "int32_t*", "int*", "const int32_t*", "const int*": case "int32_t*", "int*", "const int32_t*", "const int*":
return fmt.Sprintf("\tfmtprint(fmt, \" %%#p(%%d)\", ret->%s, *ret->%s);\n", sysret(t), sysret(t)) return fmt.Sprintf("\tjehanne_fmtprint(fmt, \" %%#p(%%d)\", ret->%s, *ret->%s);\n", sysret(t), sysret(t))
} }
return " [?? " + t + "]" return " [?? " + t + "]"
} }
@ -285,7 +285,7 @@ enter_{{ .Name }}(Fmt* fmt, Ureg* ureg)
{{ range .Vars }}{{.}} {{ range .Vars }}{{.}}
{{ end }} {{ end }}
{{ .CommonCode }} {{ .CommonCode }}
fmtprint(fmt, "{{ .Name }} %#p > ", ureg->ip); jehanne_fmtprint(fmt, "{{ .Name }} %#p > ", ureg->ip);
{{ .EntryPrint }} {{ .EntryPrint }}
} }
{{ end }} {{ end }}
@ -294,8 +294,8 @@ char*
syscallfmt(int syscall, Ureg* ureg) syscallfmt(int syscall, Ureg* ureg)
{ {
Fmt fmt; Fmt fmt;
fmtstrinit(&fmt); jehanne_fmtstrinit(&fmt);
fmtprint(&fmt, "%d %s ", up->pid, up->text); jehanne_fmtprint(&fmt, "%d %s ", up->pid, up->text);
switch(syscall){ switch(syscall){
{{ range .Wrappers }}case {{ .Id }}: {{ range .Wrappers }}case {{ .Id }}:
@ -306,14 +306,14 @@ syscallfmt(int syscall, Ureg* ureg)
panic("syscallfmt: bad sys call number %d pc %#p\n", syscall, ureg->ip); panic("syscallfmt: bad sys call number %d pc %#p\n", syscall, ureg->ip);
} }
return fmtstrflush(&fmt); return jehanne_fmtstrflush(&fmt);
} }
{{ range .Wrappers }} {{ range .Wrappers }}
static void static void
exit_{{ .Name }}(Fmt* fmt, Ureg* ureg, ScRet* ret) exit_{{ .Name }}(Fmt* fmt, Ureg* ureg, ScRet* ret)
{ {
fmtprint(fmt, "{{ .Name }} %#p < ", ureg->ip); jehanne_fmtprint(fmt, "{{ .Name }} %#p < ", ureg->ip);
{{ .ExitPrint }} {{ .ExitPrint }}
} }
{{ end }} {{ end }}
@ -322,8 +322,8 @@ char*
sysretfmt(int syscall, Ureg* ureg, ScRet* ret, uint64_t start, uint64_t stop) sysretfmt(int syscall, Ureg* ureg, ScRet* ret, uint64_t start, uint64_t stop)
{ {
Fmt fmt; Fmt fmt;
fmtstrinit(&fmt); jehanne_fmtstrinit(&fmt);
fmtprint(&fmt, "%d %s ", up->pid, up->text); jehanne_fmtprint(&fmt, "%d %s ", up->pid, up->text);
switch(syscall){ switch(syscall){
{{ range .Wrappers }}case {{ .Id }}: {{ range .Wrappers }}case {{ .Id }}:
@ -335,12 +335,12 @@ sysretfmt(int syscall, Ureg* ureg, ScRet* ret, uint64_t start, uint64_t stop)
} }
if(0 > ret->vl){ if(0 > ret->vl){
fmtprint(&fmt, " %s %#llud %#llud\n", up->syserrstr, start, stop-start); jehanne_fmtprint(&fmt, " %s %#llud %#llud\n", up->syserrstr, start, stop-start);
} else { } else {
fmtprint(&fmt, " \"\" %#llud %#llud\n", start, stop-start); jehanne_fmtprint(&fmt, " \"\" %#llud %#llud\n", start, stop-start);
} }
return fmtstrflush(&fmt); return jehanne_fmtstrflush(&fmt);
} }
`) `)
@ -371,4 +371,4 @@ func main() {
generateKernelCode(sysconf.Syscalls) generateKernelCode(sysconf.Syscalls)
} }