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