From owner-svn-src-head@FreeBSD.ORG Fri May 22 11:09:42 2015 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C580AA63; Fri, 22 May 2015 11:09:42 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B33901497; Fri, 22 May 2015 11:09:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t4MB9gHH055771; Fri, 22 May 2015 11:09:42 GMT (envelope-from jhb@FreeBSD.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t4MB9gNx055769; Fri, 22 May 2015 11:09:42 GMT (envelope-from jhb@FreeBSD.org) Message-Id: <201505221109.t4MB9gNx055769@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: jhb set sender to jhb@FreeBSD.org using -f From: John Baldwin Date: Fri, 22 May 2015 11:09:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r283283 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 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: Fri, 22 May 2015 11:09:42 -0000 Author: jhb Date: Fri May 22 11:09:41 2015 New Revision: 283283 URL: https://svnweb.freebsd.org/changeset/base/283283 Log: Expand ktr_mask to be a 64-bit unsigned integer. The mask does not really need to be updated with atomic operations and the downside of losing races during transitions is not great (it is not marked volatile, so those races are pretty wide open as it is). Differential Revision: https://reviews.freebsd.org/D2595 Reviewed by: emaste, neel, rpaulo MFC after: 2 weeks Modified: head/sys/kern/kern_ktr.c head/sys/sys/ktr.h Modified: head/sys/kern/kern_ktr.c ============================================================================== --- head/sys/kern/kern_ktr.c Fri May 22 11:04:54 2015 (r283282) +++ head/sys/kern/kern_ktr.c Fri May 22 11:09:41 2015 (r283283) @@ -96,8 +96,8 @@ static MALLOC_DEFINE(M_KTR, "KTR", "KTR" FEATURE(ktr, "Kernel support for KTR kernel tracing facility"); volatile int ktr_idx = 0; -int ktr_mask = KTR_MASK; -int ktr_compile = KTR_COMPILE; +uint64_t ktr_mask = KTR_MASK; +uint64_t ktr_compile = KTR_COMPILE; int ktr_entries = KTR_BOOT_ENTRIES; int ktr_version = KTR_VERSION; struct ktr_entry ktr_buf_init[KTR_BOOT_ENTRIES]; @@ -109,7 +109,7 @@ static SYSCTL_NODE(_debug, OID_AUTO, ktr SYSCTL_INT(_debug_ktr, OID_AUTO, version, CTLFLAG_RD, &ktr_version, 0, "Version of the KTR interface"); -SYSCTL_UINT(_debug_ktr, OID_AUTO, compile, CTLFLAG_RD, +SYSCTL_UQUAD(_debug_ktr, OID_AUTO, compile, CTLFLAG_RD, &ktr_compile, 0, "Bitmask of KTR event classes compiled into the kernel"); static int @@ -162,18 +162,19 @@ SYSCTL_PROC(_debug_ktr, OID_AUTO, clear, static int sysctl_debug_ktr_mask(SYSCTL_HANDLER_ARGS) { - int mask, error; + uint64_t mask; + int error; mask = ktr_mask; - error = sysctl_handle_int(oidp, &mask, 0, req); + error = sysctl_handle_64(oidp, &mask, 0, req); if (error || !req->newptr) return (error); ktr_mask = mask; return (error); } -SYSCTL_PROC(_debug_ktr, OID_AUTO, mask, CTLTYPE_UINT|CTLFLAG_RWTUN, 0, 0, - sysctl_debug_ktr_mask, "IU", +SYSCTL_PROC(_debug_ktr, OID_AUTO, mask, CTLTYPE_U64 | CTLFLAG_RWTUN, 0, 0, + sysctl_debug_ktr_mask, "QU", "Bitmask of KTR event classes for which logging is enabled"); #if KTR_ENTRIES > KTR_BOOT_ENTRIES @@ -184,7 +185,7 @@ SYSCTL_PROC(_debug_ktr, OID_AUTO, mask, static void ktr_entries_initializer(void *dummy __unused) { - int mask; + uint64_t mask; /* Temporarily disable ktr in case malloc() is being traced. */ mask = ktr_mask; @@ -208,7 +209,8 @@ SYSINIT(ktr_entries_initializer, SI_SUB_ static int sysctl_debug_ktr_entries(SYSCTL_HANDLER_ARGS) { - int entries, error, mask; + uint64_t mask; + int entries, error; struct ktr_entry *buf, *oldbuf; entries = ktr_entries; @@ -219,7 +221,7 @@ sysctl_debug_ktr_entries(SYSCTL_HANDLER_ return (ERANGE); /* Disable ktr temporarily. */ mask = ktr_mask; - atomic_store_rel_int(&ktr_mask, 0); + ktr_mask = 0; /* Wait for threads to go idle. */ if ((error = quiesce_all_cpus("ktrent", PCATCH)) != 0) { ktr_mask = mask; @@ -235,7 +237,7 @@ sysctl_debug_ktr_entries(SYSCTL_HANDLER_ ktr_buf = buf; ktr_entries = entries; ktr_idx = 0; - atomic_store_rel_int(&ktr_mask, mask); + ktr_mask = mask; if (oldbuf != NULL) free(oldbuf, M_KTR); @@ -310,7 +312,7 @@ SYSCTL_PROC(_debug_ktr, OID_AUTO, alq_en #endif void -ktr_tracepoint(u_int mask, const char *file, int line, const char *format, +ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, u_long arg1, u_long arg2, u_long arg3, u_long arg4, u_long arg5, u_long arg6) { Modified: head/sys/sys/ktr.h ============================================================================== --- head/sys/sys/ktr.h Fri May 22 11:04:54 2015 (r283282) +++ head/sys/sys/ktr.h Fri May 22 11:09:41 2015 (r283283) @@ -62,7 +62,7 @@ struct ktr_entry { }; extern cpuset_t ktr_cpumask; -extern int ktr_mask; +extern uint64_t ktr_mask; extern int ktr_entries; extern int ktr_verbose; @@ -71,7 +71,7 @@ extern struct ktr_entry *ktr_buf; #ifdef KTR -void ktr_tracepoint(u_int mask, const char *file, int line, +void ktr_tracepoint(uint64_t mask, const char *file, int line, const char *format, u_long arg1, u_long arg2, u_long arg3, u_long arg4, u_long arg5, u_long arg6);