porting an app that checks /proc/meminfo
Brooks Davis
brooks at one-eyed-alien.net
Wed Jan 25 08:34:57 PST 2006
[Please don't top post on freebsd lists.]
On Wed, Jan 25, 2006 at 08:06:13AM -0800, Jeremy Chadwick wrote:
> I believe the calls he's referring to are the kvm*(3) calls and the
> sysctl*(3) calls. Here's a list:
>
> kvm(3) - kernel memory interface
> kvm_geterr(3) - get error message on kvm descriptor
> kvm_getfiles(3) - survey open files
> kvm_getloadavg(3) - get load average of the system
> kvm_getprocs(3), kvm_getargv(3), kvm_getenvv(3) - access user process state
> kvm_getswapinfo(3) - return swap summary statistics for the system
> kvm_nlist(3) - retrieve symbol table names from a kernel image
> kvm_open(3), kvm_openfiles(3), kvm_close(3) - initialize kernel virtual memory access
> kvm_read(3), kvm_write(3) - read or write kernel virtual memory
> sysctl(3), sysctlbyname(3), sysctlnametomib(3) - get or set system information
I was refering to sysctl. A few of the kvm calls are usable as wrappers
to sysctl calls, but I don't really think that's a good idea unless you
need to support core dumps in your utility.
> Secondly, yes, these are "BSD" specific. I believe these will work
> on NetBSD, OpenBSD, and FreeBSD (4, 5, 6, and 7); however, some of
> the BSDs handle the kvm*(3) differently (some need to be linked with
> libkvm, others do not).
>
> Thirdly, no, there is no standardised way to get VM/system information
> from different operating systems. Linux nuts use /proc, BSD folk use
> the above, Solaris folk use whatever Solaris has (I honestly forget
> but probably some subset of kvm), and so on and so forth.
That's basicly correct.
-- Brooks
> --
> | Jeremy Chadwick jdc at parodius.com |
> | Parodius Networking http://www.parodius.com/ |
> | UNIX Systems Administrator Mountain View, CA, USA |
> | Making life hard for others since 1977. |
>
> On Wed, Jan 25, 2006 at 10:02:28AM -0300, Fernan Aguero wrote:
> > +----[ Brooks Davis <brooks at one-eyed-alien.net> (24.Jan.2006 23:06):
> > |
> > | On Tue, Jan 24, 2006 at 03:56:57PM -0200, Rainer Alves wrote:
> > | > Fernan Aguero wrote:
> > | > >The program builds fine, but because it uses /proc/meminfo
> > | > >to check for available memory, when you run it, it will
> > | > >complain about the lack of /proc/meminfo and won't let you
> > | > >do anything.
> > | > >
> > | > ...
> > | > >How does one gets the values of i) memory used by the
> > | > >program/process and ii) amount of RAM available in the
> > | > >computer without using /proc/meminfo in FreeBSD?
> > | >
> > | > Take a loot at sysutils/muse, which uses /dev/mem to gather this info:
> > |
> > | Please don't do this. Really! There's no point in gratuitously
> > | groveling around in the kernel's live memory image to get data you have
> > | access to via unprivileged calls.
> > |
> > +----]
> >
> > Brooks,
> >
> > what are these unprivileged calls? can you list a few so we
> > can check the corresponding man pages? Are they BSD
> > specific?
> >
> > Again I'm not versed in C so what follows is just what I
> > could grasp from a few google searches.
> >
> > It seems like in linux you can also use unprivileged calls
> > to get this info, but you have also the option of using the
> > /proc filesystem. I don't know what are these unprivileged
> > calls like in linux ... but perhaps they are pretty standard
> > across systems?
> >
> > I'm not positive about this but I just have the impression
> > that there should be a generic (not linux-specific or BSD
> > specific) way to get this info, like a generic call that has
> > the same name and similar arguments across different OS (of
> > course the internal implementation should be different in
> > each OS) ... does such thing exist?
> >
> > Fernan
> > _______________________________________________
> > freebsd-ports at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> > To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
> _______________________________________________
> freebsd-ports at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe at freebsd.org"
--
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20060125/d073360e/attachment.bin
More information about the freebsd-ports
mailing list