Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Nov 2004 10:36:00 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        freebsd-acpi@FreeBSD.org
Cc:        acpi@FreeBSD.org
Subject:   Re: Minor improvement to acpiconf
Message-ID:  <200411161036.01226.jhb@FreeBSD.org>
In-Reply-To: <4199B8A1.6080205@root.org>
References:  <20041115.231816.133541642.imp@bsdimp.com> <20041116.001446.66168349.imp@bsdimp.com> <4199B8A1.6080205@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 16 November 2004 03:21 am, Nate Lawson wrote:
> M. Warner Losh wrote:
> > In message: <4199A260.3020001@root.org>
> >
> >             Nate Lawson <nate@root.org> writes:
> > : >  	acpifd = open(ACPIDEV, O_RDWR);
> > : >  	if (acpifd == -1){
> > : > @@ -117,6 +117,17 @@
> > : >  	printf("Type:\t\t\t%s\n", battio.bif.type);
> > : >  	printf("OEM info:\t\t%s\n", battio.bif.oeminfo);
> > : >
> > : > +	if (ioctl(acpifd, ACPIIO_CMBAT_GET_BST, &battio) == -1)
> > : > +		err(EX_IOERR, "get battery info (%d) failed", num);
> > : > +
> > : > +	if (battio.bst.state != ACPI_BATT_STAT_NOT_PRESENT) {
> > :
> > : Prefer positive logic.
> >
> > Most common path first is generally the logic I prefer...
>
> I thought there was a PRESENT define but apparently not.
>
> > : > +		printf("State:\t\t\tPresent\n");
> > : > +		printf("Rate:\t\t\t%d mWh\n", battio.bst.rate);
> > : > +		printf("Cap:\t\t\t%d mWh\n", battio.bst.cap);
> > : > +		printf("Volt:\t\t\t%d mV\n", battio.bst.volt);
> > :
> > : I agree with these except for a slight misgiving about "cap".  That
> > : information is already exported via sysctl and if we have to export the
> > : same thing different ways, I think the interface is not optimal.
> >
> > Capacity isnt' exported via a sysctl.  'life' is, but it doesn't
> > export anything more than a percentage.
>
> Life is derived from cap, but like I said above, I'm ok with it.
>
> > : In general, I'd like to move away from acpi-specific ioctls.  There
> > : should be just one way of getting the battery info and it shouldn't
> > : refer to the underlying method names (_BST and _BIF) like the current
> > : ones do.  Mike made a good case for eliminating the dev_t entirely
> > : since there is never any IO for acpi, it's all control traffic.  Sysctl
> > : seems more appropriate for that than creating a device that will never
> > : see a read, write, or other access other than ioctl().  But this is a
> > : complaint about the current design and the half-ioctl, half-sysctl
> > : implementation.
> >
> > I'm not entirely sure I agree with a device needing read/write methods
> > to be legit.  Especially after I saw sysctl abused for the devinfo
> > interface, which likely should have been read instead :-)...
>
> Looking in /dev, nearly all devices support IO.  Only the .ctl or
> .init/.lock devices are questionable.  I think it makes sense for this
> to be a criterion for using a dev_t.

I think it would be handy personally to have /dev/batt0, etc. that both apm 
and acpi provide that are ways of getting info about the current battery 
state either via read(2) (which could always return a fixed-size status 
packet) or some kind of ioctl.  I.e. a concept of an abstract battery driver 
with an interface implemented by both APM and ACPI and possibly other drivers 
in the future.  (PowerMacs don't use ACPI AFAIK for example.)

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200411161036.01226.jhb>