From owner-svn-src-stable@FreeBSD.ORG Sun May 27 18:57:21 2012 Return-Path: Delivered-To: svn-src-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F71E1065670; Sun, 27 May 2012 18:57:21 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 801028FC08; Sun, 27 May 2012 18:57:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q4RIvLKR066262; Sun, 27 May 2012 18:57:21 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q4RIvLFx066258; Sun, 27 May 2012 18:57:21 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201205271857.q4RIvLFx066258@svn.freebsd.org> From: Ryan Stone Date: Sun, 27 May 2012 18:57:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r236161 - in stable/8: cddl/contrib/opensolaris/lib/libdtrace/common sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/contrib/opensolaris/uts/common/sys X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 May 2012 18:57:21 -0000 Author: rstone Date: Sun May 27 18:57:20 2012 New Revision: 236161 URL: http://svn.freebsd.org/changeset/base/236161 Log: MFC r234691 Implement the D "cpu" variable, which returns curcpu. I have chosen not to follow the example of OpenSolaris and its descendants, which implemented cpu as an inline that took a value out of curthread. At certain points in the FreeBSD scheduler curthread->td_oncpu will no longer be valid (in particukar, just before the thread gets descheduled) so instead I have implemented this as its own built-in variable. Sponsored by: Sandvine Inc. Modified: stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/sys/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 18:55:23 2012 (r236160) +++ stable/8/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Sun May 27 18:57:20 2012 (r236161) @@ -497,6 +497,12 @@ static const dt_ident_t _dtrace_globals[ { "zonename", DT_IDENT_SCALAR, 0, DIF_VAR_ZONENAME, DT_ATTR_STABCMN, DT_VERS_1_0, &dt_idops_type, "string" }, #endif + +#if !defined(sun) +{ "cpu", DT_IDENT_SCALAR, 0, DIF_VAR_CPU, + DT_ATTR_STABCMN, DT_VERS_1_6_3, &dt_idops_type, "int" }, +#endif + { NULL, 0, 0, 0, { 0, 0, 0 }, 0, NULL, NULL } }; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 18:55:23 2012 (r236160) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c Sun May 27 18:57:20 2012 (r236161) @@ -3143,6 +3143,11 @@ dtrace_dif_variable(dtrace_mstate_t *mst return (curthread->td_errno); #endif } +#if !defined(sun) + case DIF_VAR_CPU: { + return curcpu; + } +#endif default: DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP); return (0); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 18:55:23 2012 (r236160) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h Sun May 27 18:57:20 2012 (r236161) @@ -251,6 +251,10 @@ typedef enum dtrace_probespec { #define DIF_VAR_ERRNO 0x0120 /* thread errno */ #define DIF_VAR_EXECARGS 0x0121 /* process arguments */ +#if !defined(sun) +#define DIF_VAR_CPU 0x0200 +#endif + #define DIF_SUBR_RAND 0 #define DIF_SUBR_MUTEX_OWNED 1 #define DIF_SUBR_MUTEX_OWNER 2