From owner-freebsd-ports@FreeBSD.ORG Wed Jan 25 16:06:14 2006 Return-Path: X-Original-To: freebsd-ports@freebsd.org Delivered-To: freebsd-ports@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8C35F16A41F for ; Wed, 25 Jan 2006 16:06:14 +0000 (GMT) (envelope-from jdc@parodius.com) Received: from mx1.parodius.com (mx1.parodius.com [64.62.145.229]) by mx1.FreeBSD.org (Postfix) with ESMTP id B899B43D5D for ; Wed, 25 Jan 2006 16:06:13 +0000 (GMT) (envelope-from jdc@parodius.com) Received: by mx1.parodius.com (Postfix, from userid 500) id 59E435D8E; Wed, 25 Jan 2006 08:06:13 -0800 (PST) Date: Wed, 25 Jan 2006 08:06:13 -0800 From: Jeremy Chadwick To: freebsd-ports@freebsd.org Message-ID: <20060125160613.GA34407@pentarou.parodius.com> Mail-Followup-To: freebsd-ports@freebsd.org References: <20060124172317.GF72149@iib.unsam.edu.ar> <43D66A69.4010005@gmail.com> <20060125020259.GB5928@odin.ac.hmc.edu> <20060125130228.GA79842@iib.unsam.edu.ar> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060125130228.GA79842@iib.unsam.edu.ar> X-PGP-Key: http://jdc.parodius.com/pubkey.asc User-Agent: Mutt/1.5.11 Subject: Re: porting an app that checks /proc/meminfo X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 25 Jan 2006 16:06:14 -0000 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 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. To anyone else: if I'm wrong, please correct me. -- | 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 (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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-ports > To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org"