Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 May 2014 03:28:24 -0500
From:      Scot Hetzel <swhetzel@gmail.com>
To:        FreeBSD Ports <freebsd-ports@freebsd.org>
Subject:   Re: Patch wanted: VmRSS, VmSize and VmStk in /proc/pid/status
Message-ID:  <CACdU%2Bf-h-kR%2BT%2BGTXH_u1zhQwk5jD9aEO6rQD6eQTn_rWb8eug@mail.gmail.com>
In-Reply-To: <20140512213551.GE60374@graf.pompo.net>
References:  <20140512213551.GE60374@graf.pompo.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, May 12, 2014 at 4:35 PM, Thierry Thomas <thierry@freebsd.org> wrote:
> Hello,
>
> In the new versions of french/aster, there is this piece of Linux code:
>
> -----------------------------------------------------------
>     static char filename[80];
>     static char sbuf[1024];
>     char* S;
>     int fd, num_read;
>     long lmem;
>     pid_t numpro;
>
>     pid_t getpid(void);
>
>     numpro = getpid();
>
>     sprintf(filename, "/proc/%ld/status", (long)numpro);
>     fd = open(filename, O_RDONLY, 0);
>     if (fd==-1) return -1;
>     num_read=read(fd,sbuf,(sizeof sbuf)-1);
>     close(fd);
>
>     S=strstr(sbuf,"VmData:")+8;
>     val[0] = (INTEGER)atoi(S);
>
>     S=strstr(sbuf,"VmSize:")+8;
>     val[1] = (INTEGER)atoi(S);
>
>     if ( strstr(sbuf,"VmPeak:") != NULL ) {
>         S=strstr(sbuf,"VmPeak:")+8;
>         val[2] = atoi(S);
>     } else {
>         val[2] = -1 ;
>     }
>
>     S=strstr(sbuf,"VmRSS:")+7;
>     val[3] = (INTEGER)atoi(S);
>
>     S=strstr(sbuf,"VmStk:")+7;
>     lmem = atoi(S);
>     return lmem ;
> -----------------------------------------------------------
>
> Of course, it does'nt work on FreeBSD, because our status has a
> different structure.
>
> As a quick & dirty work-around, I patched it to replace /proc by
> /compat/linux/proc and it works. Unfortunately, this is not a good
> solution, because this port is no more packageable (this piece of code
> is run at the end of the build).
>
> It's why I'm looking for help here: does somebody knows how the
> corresponding values of these Vm... can be found in FreeBSD?
>

You could try reading the source for linprocfs to see how it gets those values:

https://svnweb.freebsd.org/base/head/sys/compat/linprocfs/linprocfs.c?revision=263620&view=markup#l748


-- 
DISCLAIMER:

No electrons were maimed while sending this message. Only slightly bruised.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACdU%2Bf-h-kR%2BT%2BGTXH_u1zhQwk5jD9aEO6rQD6eQTn_rWb8eug>