From owner-p4-projects@FreeBSD.ORG Mon Mar 21 21:18:37 2005 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7AFCD16A4D9; Mon, 21 Mar 2005 21:18:36 +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 34CD116A4CE for ; Mon, 21 Mar 2005 21:18:36 +0000 (GMT) Received: from mail23.sea5.speakeasy.net (mail23.sea5.speakeasy.net [69.17.117.25]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1A1443D2D for ; Mon, 21 Mar 2005 21:18:35 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: (qmail 1402 invoked from network); 21 Mar 2005 21:18:35 -0000 Received: from server.baldwin.cx ([216.27.160.63]) (envelope-sender )AES256-SHA encrypted SMTP for ; 21 Mar 2005 21:18:35 -0000 Received: from [10.50.41.231] (gw1.twc.weather.com [216.133.140.1]) (authenticated bits=0) by server.baldwin.cx (8.13.1/8.13.1) with ESMTP id j2LLIPeS048944; Mon, 21 Mar 2005 16:18:29 -0500 (EST) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: Peter Wemm Date: Mon, 21 Mar 2005 14:30:05 -0500 User-Agent: KMail/1.6.2 References: <200503152339.j2FNdwld011634@repoman.freebsd.org> In-Reply-To: <200503152339.j2FNdwld011634@repoman.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200503211430.05815.jhb@FreeBSD.org> X-Spam-Status: No, score=-102.8 required=4.2 tests=ALL_TRUSTED, USER_IN_WHITELIST autolearn=failed version=3.0.2 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on server.baldwin.cx cc: Perforce Change Reviews Subject: Re: 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: Mon, 21 Mar 2005 21:18:37 -0000 On Tuesday 15 March 2005 06:39 pm, Peter Wemm wrote: > 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. req->flags would suck. You almost want to wrap sysctl() and add an exception list for freebsd32_sysctl() that does a copyin() and kernel_sysctl() and then copyout(), but that's still ugly. :( > 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 -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org