Porting OpenBSD's sysctl hw.sensors framework to FreeBSD

Alfred Perlstein alfred at freebsd.org
Wed Jul 11 18:14:21 UTC 2007


* Robert Watson <rwatson at FreeBSD.org> [070711 11:05] wrote:
> 
> On Wed, 11 Jul 2007, Alfred Perlstein wrote:
> 
> >Possibly, one way to do that is to provide a well thought out userland 
> >library that can make for a nice interface.  If by doing it userland the 
> >kernel implementation can be kept smaller and more simple it might be a 
> >win.
> >
> >That said, it may be a loss if you wind up having to duplicate work over 
> >and over for different devices it may be a loss.
> >
> >Remember, once the kernel interface is exposed it has to be there almost 
> >forever, while a userland interface and much more easily be adapted.
> 
> The flip side of the user/kernel, of course, is that userland 
> implementations may require more privilege to invoke than kernel 
> implementations, since they may need to frob with /dev/pci, /dev/mem, etc, 
> rather than accessing a very narrow sysctl interface using essentially 
> unprivileged access.  Compare, for example, the old ps(1) which required 
> root or kmem privilege in order to be able to grope through kernel memory, 
> and the new ps(1) that uses a set of controlled APIs that not only let it 
> run as any user, but also scope the process information exposed by 
> requesting process.
> 
> However, the point I think that you specifically are making is that if we 
> define a user API to access the information, then the implementation can be 
> flexible, and what we really want to know is how applications will interact 
> with the data.  I think this is precisely the right point -- what we should 
> not do is lock ourselves into a particular sysctl representation of the 
> data and approach, which has happened to quite a few of our monitoring 
> interfaces and makes it quite hard to abstract things, change the 
> implementation, etc. Consider directly accessing sysctls (as done in most 
> of netstat) and the slightly more abstract libkvm interfaces, which allow 
> you to access information as data and hide the method (allowing the method 
> to be /dev/kmem, sysctls, coredumps, etc).

Yes, this was the point I was trying to put across, well said.

-- 
- Alfred Perlstein


More information about the freebsd-arch mailing list