From owner-svn-src-head@FreeBSD.ORG Sun Mar 29 03:30:15 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8C43106564A; Sun, 29 Mar 2009 03:30:15 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C91B8FC1C; Sun, 29 Mar 2009 03:30:15 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n2T3UFlM020794; Sun, 29 Mar 2009 03:30:15 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n2T3UFVA020793; Sun, 29 Mar 2009 03:30:15 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200903290330.n2T3UFVA020793@svn.freebsd.org> From: Robert Watson Date: Sun, 29 Mar 2009 03:30:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r190518 - head/sys/tools X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 29 Mar 2009 03:30:16 -0000 Author: rwatson Date: Sun Mar 29 03:30:15 2009 New Revision: 190518 URL: http://svn.freebsd.org/changeset/base/190518 Log: Add SDT DTrace probes for VFS vnode operations in the vfs:vop provider namespace. These are inserted dynamically into the VOP_..._AP() functions created from vnode_if.src. Each VOP has entry and return probes, as arg0 the primary vnode, arg1 the vnode operation argument structure pointer, providing access to IN and OUT arguments, and for return probes, arg2 the return value. MFC after: 1 month Sponsored by: Google, Inc. Modified: head/sys/tools/vnode_if.awk Modified: head/sys/tools/vnode_if.awk ============================================================================== --- head/sys/tools/vnode_if.awk Sun Mar 29 01:04:13 2009 (r190517) +++ head/sys/tools/vnode_if.awk Sun Mar 29 03:30:15 2009 (r190518) @@ -165,12 +165,18 @@ if (hfile) { if (cfile) { printc(common_head \ + "#include \"opt_kdtrace.h\"\n" \ + "\n" \ "#include \n" \ "#include \n" \ + "#include \n" \ "#include \n" \ + "#include \n" \ "#include \n" \ "#include \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");