1 // Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License.
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #include "MemorySpy.hxx"
25 #if defined(PCLINUX) || defined(PCLINUX64) || defined(PCLINUX64_32)
31 MemorySpy::MemorySpy()
34 _sizeofPage=getpagesize();
36 sprintf( workStr, "/proc/%d/statm", _currentPid);
37 _statmFile=fopen ( workStr, "r" );
40 MemorySpy::~MemorySpy()
46 long MemorySpy::getCurrentMemoryUsage()
50 fseek( _statmFile, 0L, 0 );
52 if(!fread( workStr, 1, 50, _statmFile ))
54 return parseString(workStr);
57 long MemorySpy::parseString(char* line)
59 char *po, *po2,hstr[0x100];
63 memset( hstr, 0, sizeof( hstr ));
69 if ( ( *po != 0x20 ) )
77 tab[i] = atol( hstr ) * _sizeofPage;
79 memset( hstr, 0, sizeof( hstr ));
82 if ( ( *po != 0x20 )&&( *po != '\n' ) )
89 if ( strlen( hstr ) != 0 )
91 tab[i] = atol( hstr ) * _sizeofPage;
98 #include <sys/param.h>
99 #include <sys/pstat.h>
100 #include <sys/unistd.h>
102 MemorySpy::MemorySpy()
106 MemorySpy::~MemorySpy()
110 long MemorySpy::getCurrentMemoryUsage()
112 struct pst_dynamic dyn;
113 if (pstat_getdynamic(&dyn, sizeof(dyn), 1, 0) == -1)
116 return dyn.psd_vm * getpagesize();