Porting OpenBSD's sysctl hw.sensors framework to FreeBSD

Alexander Leidinger Alexander at Leidinger.net
Fri Jul 13 05:39:53 UTC 2007


Quoting John Baldwin <jhb at freebsd.org> (from Thu, 12 Jul 2007 14:04:33 -0400):

> On Thursday 12 July 2007 03:00:08 am Alexander Leidinger wrote:
>> Quoting John Baldwin <jhb at freebsd.org> (from Wed, 11 Jul 2007
> 11:45:26 -0400):
>>
>> > On Wednesday 11 July 2007 07:49:59 am Alexander Leidinger wrote:
>>
>> >> On the other hand you don't want to allow an userland tool to directly
>> >> mess around with the registers on your RAID or NIC to get some status...
>> >
>> > Err, that's how all the RAID utilities I've used work.  They send firmware
>> > commands from userland and parse the replies in userland.  One exception
> I've
>>
>> That's sad... they should provide this functionality in the driver
>> instead, it would allow to use access restrictions for some parts.
>
> Not really, it avoids having to duplicate a lot of work in drivers   
> that can be
> written once in a cross-platform userland utility.  Drivers aren't really the

If the sensor querying is already cross-platform, it can also be used  
in the kernel. You have the driver just call the cross-platform  
function to get back a firmware command it then can send to the  
hardware.

> place to be monitoring raid status sending pages, e-mails, etc.  It's best to
> let userland invoke sendmail, not the kernel. :)

I fully agree, but nobody wants to send mails from the kernel. We just  
want to get the sensor data out of the kernel without the possibility  
to fuck up the device from userland. You don't have a userland tool  
for each NIC (which you need if you go the cross-platform-tool way),  
we have a well defined interface there which allows to get back some  
sensor data (wire speed, MAC address, IP address(es), ...) already and  
we display it in ifconfig. There's one tool to query it (ifconfig),  
and nobody complains about it being hard to do it in the driver  
instead of in a cross-platform userland tool (and Sam enhanced  
ifconfig to be able to get rid of the special tools for each WLAN NIC,  
and everybody was happy about this). The sensors framework tries to  
accomplish the same for sensor data. A driver (or something else in  
the kernel) registers himself with the sensor framework, and then you  
can use a generic tool to query all sensor data. No need to reinvent  
the wheel (how to export, how to name, what unit to use), and a good  
consistency (e.g. units used).

>> > seen so far is that for software RAID the firmware you are talking to is
> the
>> > driver, not firmware on the card, so you use ioctls directly rather than
> an
>> > ioctl that sends a command to the firmware on the card.
>>
>> But you have to run this tool as root, don't you? You don't want to
>> let a user run such a tool (and nowadays even desktops start to have
>> RAID, so whoever sits at the machine may be interested to see some
>> status on his desktop).
>
> Whatever talks directly to the driver needs to run as root, yes, but  
>  you could
> always write a proxy app that receives requests from utilities running as
> non-root and does its own access restrictions.

That's a lot of infrastructure you want to create for such a simple  
task as displaying "resyncing 50% done" or "0 hotspares" or similar...

Bye,
Alexander.

-- 
In Christianity, a man may have only one wife.
This is called Monotony.

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137


More information about the freebsd-arch mailing list