From owner-p4-projects@FreeBSD.ORG Tue Mar 15 23:39:59 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E623516A4CF; Tue, 15 Mar 2005 23:39:58 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B93BF16A4D0 for ; Tue, 15 Mar 2005 23:39:58 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9382743D1D for ; Tue, 15 Mar 2005 23:39:58 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j2FNdwNN011637 for ; Tue, 15 Mar 2005 23:39:58 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j2FNdwld011634 for perforce@freebsd.org; Tue, 15 Mar 2005 23:39:58 GMT (envelope-from peter@freebsd.org) Date: Tue, 15 Mar 2005 23:39:58 GMT Message-Id: <200503152339.j2FNdwld011634@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 73261 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Mar 2005 23:39:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=73261 Change 73261 by peter@peter_daintree on 2005/03/15 23:39:35 I'm ashamed, but this will do as an interim measure. I feel a req->flags flag coming on. Affected files ... .. //depot/projects/hammer/sys/kern/kern_clock.c#23 edit Differences ... ==== //depot/projects/hammer/sys/kern/kern_clock.c#23 (text+ko) ==== @@ -39,6 +39,7 @@ #include "opt_ntp.h" #include "opt_watchdog.h" +#include "opt_compat.h" #include #include @@ -79,8 +80,36 @@ /* Some of these don't belong here, but it's easiest to concentrate them. */ long cp_time[CPUSTATES]; -SYSCTL_OPAQUE(_kern, OID_AUTO, cp_time, CTLFLAG_RD, &cp_time, sizeof(cp_time), - "LU", "CPU time statistics"); +#ifdef COMPAT_IA32 +extern struct sysentvec ia32_freebsd_sysvec; +#endif + +static int +sysctl_kern_cp_time(SYSCTL_HANDLER_ARGS) +{ + int error; +#ifdef COMPAT_IA32 + int i; + unsigned int cp_time32[CPUSTATES]; + + if (req->td->td_proc->p_sysent == &ia32_freebsd_sysvec) { + if (!req->oldptr) + return SYSCTL_OUT(req, 0, sizeof(cp_time32)); + for (i = 0; i < CPUSTATES; i++) + cp_time32[i] = (unsigned int)cp_time[i]; + error = SYSCTL_OUT(req, cp_time32, sizeof(cp_time32)); + } else +#endif + { + if (!req->oldptr) + return SYSCTL_OUT(req, 0, sizeof(cp_time)); + error = SYSCTL_OUT(req, cp_time, sizeof(cp_time)); + } + return error; +} + +SYSCTL_PROC(_kern, OID_AUTO, cp_time, CTLTYPE_LONG|CTLFLAG_RD, + 0,0, sysctl_kern_cp_time, "LU", "CPU time statistics"); #ifdef SW_WATCHDOG #include