diff options
Diffstat (limited to 'sys/tools')
-rw-r--r-- | sys/tools/vnode_if.awk | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sys/tools/vnode_if.awk b/sys/tools/vnode_if.awk index b250c92..86c6bdc 100644 --- a/sys/tools/vnode_if.awk +++ b/sys/tools/vnode_if.awk @@ -165,12 +165,18 @@ if (hfile) { if (cfile) { printc(common_head \ + "#include \"opt_kdtrace.h\"\n" \ + "\n" \ "#include <sys/param.h>\n" \ "#include <sys/event.h>\n" \ + "#include <sys/kernel.h>\n" \ "#include <sys/mount.h>\n" \ + "#include <sys/sdt.h>\n" \ "#include <sys/systm.h>\n" \ "#include <sys/vnode.h>\n" \ "\n" \ + "SDT_PROVIDER_DECLARE(vfs);\n" \ + "\n" \ "struct vnodeop_desc vop_default_desc = {\n" \ " \"default\",\n" \ " 0,\n" \ @@ -348,6 +354,10 @@ while ((getline < srcfile) > 0) { printc("\tVDESC_NO_OFFSET"); printc("};"); + printc("\n"); + printc("SDT_PROBE_DEFINE2(vfs, vop, " name ", entry, \"struct vnode *\", \"struct " name "_args *\");\n"); + printc("SDT_PROBE_DEFINE3(vfs, vop, " name ", return, \"struct vnode *\", \"struct " name "_args *\", \"int\");\n"); + # Print out function. printc("\nint\n" uname "_AP(struct " name "_args *a)"); printc("{"); @@ -364,6 +374,7 @@ while ((getline < srcfile) > 0) { printc("\t vop->"name" == NULL && vop->vop_bypass == NULL)") printc("\t\tvop = vop->vop_default;") printc("\tVNASSERT(vop != NULL, a->a_" args[0]", (\"No "name"(%p, %p)\", a->a_" args[0]", a));") + printc("\tSDT_PROBE(vfs, vop, " name ", entry, a->a_" args[0] ", a, 0, 0, 0);\n"); for (i = 0; i < numargs; ++i) add_debug_code(name, args[i], "Entry", "\t"); add_pre(name); @@ -372,6 +383,7 @@ while ((getline < srcfile) > 0) { printc("\telse") printc("\t\trc = vop->vop_bypass(&a->a_gen);") printc(ctrstr); + printc("\tSDT_PROBE(vfs, vop, " name ", return, a->a_" args[0] ", a, rc, 0, 0);\n"); printc("\tif (rc == 0) {"); for (i = 0; i < numargs; ++i) add_debug_code(name, args[i], "OK", "\t\t"); |