From owner-p4-projects@FreeBSD.ORG Wed Sep 26 18:32:33 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B049216A46B; Wed, 26 Sep 2007 18:32:33 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D99416A420 for ; Wed, 26 Sep 2007 18:32:33 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from speedfactory.net (mail6.speedfactory.net [66.23.216.219]) by mx1.freebsd.org (Postfix) with ESMTP id 072E513C4B0 for ; Wed, 26 Sep 2007 18:32:32 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (unverified [66.23.211.162]) by speedfactory.net (SurgeMail 3.8p) with ESMTP id 211528330-1834499 for multiple; Wed, 26 Sep 2007 14:31:13 -0400 Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.8/8.13.8) with ESMTP id l8QIWPRg024716; Wed, 26 Sep 2007 14:32:26 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: "Constantine A. Murenin" Date: Wed, 26 Sep 2007 13:25:55 -0400 User-Agent: KMail/1.9.6 References: <200709091800.l89I0aM5060616@repoman.freebsd.org> <200709261121.58419.jhb@freebsd.org> <46FA8845.9080208@FreeBSD.org> In-Reply-To: <46FA8845.9080208@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200709261325.55901.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Wed, 26 Sep 2007 14:32:26 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/4405/Wed Sep 26 12:29:18 2007 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Perforce Change Reviews Subject: Re: PERFORCE change 126230 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Sep 2007 18:32:34 -0000 On Wednesday 26 September 2007 12:26:45 pm Constantine A. Murenin wrote: > On 26/09/2007 11:21, John Baldwin wrote: > > On Sunday 09 September 2007 02:00:36 pm Constantine A. Murenin wrote: > > > >>http://perforce.freebsd.org/chv.cgi?CH=126230 > >> > >>Change 126230 by cnst@dale on 2007/09/09 18:00:16 > >> > >> put in a hack for supporting "Sysctl internal magic", > >> and now hw.sensors tree magically works in sysctl(8)! > >> > >> dale# sysctl hw.sensors.{lm0.volt{0,1,2,3},cpu{0,1}} > >> hw.sensors.lm0.volt0: 1.23 VDC (VCore) > >> hw.sensors.lm0.volt1: 12.30 VDC (+12V) > >> hw.sensors.lm0.volt2: 3.33 VDC (+3.3V) > >> hw.sensors.lm0.volt3: 3.31 VDC (+3.3V) > >> hw.sensors.cpu0.temp0: 28.00 degC > >> hw.sensors.cpu1.temp0: 28.00 degC > >> dale# > >> > >> (All other utilities continue working using a cross-platform > >> sysctl(3) interface, compatible with OpenBSD.) > >> > >>+#endif /* !NOSYSCTL8HACK */ > >>+ > >>+ > >>+#ifndef NOSYSCTL8HACK > >>+ > >>+/* > >>+ * XXX: > >>+ * FreeBSD's sysctl(9) .oid_handler functionality is not accustomed > >>+ * for the CTLTYPE_NODE handler to handle the undocumented sysctl > >>+ * magic calls. As soon as such functionality is developed, > >>+ * sysctl_sensors_handler() should be converted to handle all such > >>+ * calls, and these sysctl_add_oid(9) calls should be removed > >>+ * "with a big axe". This whole sysctl_add_oid(9) business is solely > >>+ * to please sysctl(8). > > > > > > Actually, sysctl_add_oid(9) is how you should add a tree of sysctl's on the > > fly to FreeBSD. It frees you from having to manually simulate a sysctl > > tree yourself and instead focus on just handling the functionality for the > > leaf nodes. If you just gave each sensor its own sysctl ctx and tree most > > of your in-kernel code for dealing with 'hw.sensors' would go away as it > > would just be a normal node ala 'dev'. > > If you take a closer look, the code for manually keeping track of > sensors is very straightforward -- mostly a linked list. sysctl(9) > interface is much more complicated than that. > > This manual accounting of the sensors is a requirement for the sensors > framework -- it is the basis for the concept of sensor device, which > stores information about individual sensors each device has (similarly > to a sysctl_ctx). It is also required to generate and keep track of the > numt of each sensor. > > Using FreeBSD's internal magic does not make the userland applications > portable, because there is no documented userland interface for listing > all leaves of a given sysctl tree. (If you believe otherwise, a link to > the manual page is welcome. :) See device_t's. Each one has an associated sysctl ctx (and tree) while still having its own internal hierarchy of devices that is used to provide enumeration APIs to userland. It's fine to use a separate interface other than sysctl to tell userland which sensors exist (or you could have a sysctl whose value was a list of the sensor names, etc.), but sysctl_add_oid(9) means you don't need an actual 'hw.sensors' sysctl proc routine to manage the sysctl namespace for you. -- John Baldwin