Re: Weird problem with devstat interface

From: Fred Gilham <gilham_at_csl.sri.com>
Date: Tue, 28 Jun 2005 16:30:48 -0700
Poul-Henning Kamp <phk_at_phk.freebsd.dk> wrote:

> In message <200506281749.j5SHnPlr017616_at_quarter.csl.sri.com>, Fred
> Gilham writes:
> 
> >I have been able to get the program to stop doing this by changing
> >the calls to
> >
> >devstat_checkversion()
> >devstat_getnumdevs()
> >devstat_getdevs()
> >
> >so they don't use the kvm interface but the sysctl interface
> >(i.e. passing NULL instead of a file descriptor to /dev/kvm).
> 
> You shouldn't be using the kvm interface in the first place.

That seems reasonable, but the documentation doesn't give any indication
that this is the case.  From the devstat(3) man page:

DESCRIPTION
     The devstat library is a library of helper functions for dealing with the
     kernel devstat(9) interface, which is accessible to users via sysctl(3)
     and kvm(3).  All functions that take a kvm_t * as first argument can be
     passed NULL instead of a kvm handle as this argument, which causes the
     data to be read via sysctl(3).  Otherwise, it is read via kvm(3) using
     the supplied handle.  devstat_checkversion() should be called with each
     kvm handle that is going to be used (or with NULL if sysctl(3) is going
     to be used).

>From this I got the impression that the sysctl interface was a kind of
secondary alternative to the kvm interface.

The /usr/sbin/iostat program also uses the kvm version (see
/usr/src/usr.sbin/iostat/iostat.c).  That's what whoever maintained the
xsysinfo program used as an example.

Also, if the kvm interface is broken it should probably be disabled or
something.  Actually I doubt that it's broken, but certainly the
xsysinfo code doesn't interact well with it.

-- 
Fred Gilham                                        gilham_at_csl.sri.com
The PTPL (People's Trotskyist Programming League) believes that
hackers are elitist and that all software should be created by the
masses flailing away at millions of keyboards.  I didn't have the
heart to tell them that this has already been tried and the result is
called Linux.
Received on Tue Jun 28 2005 - 21:30:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:37 UTC