Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / src / OSspecific / POSIX / memInfo / memInfo.H
blobf9a3ed4743b8cc8a4d54e0a26b81bf440b5649c2
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::memInfo
27 Description
28     Memory usage information for the process running this object.
30 Note
31     Uses the information from /proc/\<pid\>/status
33 SourceFiles
34     memInfo.C
36 \*---------------------------------------------------------------------------*/
38 #ifndef memInfo_H
39 #define memInfo_H
41 #include "OSspecific.H"
42 #include "POSIX.H"
43 #include "IFstream.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
50 /*---------------------------------------------------------------------------*\
51                            Class memInfo Declaration
52 \*---------------------------------------------------------------------------*/
54 class memInfo
56     // Private data
58         //- Peak memory used by the process (VmPeak in /proc/\<pid\>/status)
59         int peak_;
61         //- Memory used by the process (VmSize in /proc/\<pid\>/status)
62         int size_;
64         //- Resident set size of the process (VmRSS in /proc/\<pid\>/status)
65         int rss_;
68 public:
70     // Constructors
72         //- Construct null
73         memInfo();
76     //- Destructor
77     ~memInfo();
80     // Member Functions
82         //- Parse /proc/\<pid\>/status
83         const memInfo& update();
85         // Access
87             //- Access the stored peak memory (VmPeak in /proc/\<pid\>/status)
88             //  The value is stored from the previous update()
89             int peak() const
90             {
91                 return peak_;
92             }
94             //- Access the stored memory size (VmSize in /proc/\<pid\>/status)
95             //  The value is stored from the previous update()
96             int size() const
97             {
98                 return size_;
99             }
101             //- Access the stored rss value (VmRSS in /proc/\<pid\>/status)
102             //  The value is stored from the previous update()
103             int rss() const
104             {
105                 return rss_;
106             }
108             //- True if the memory information appears valid
109             bool valid() const;
112     // IOstream Operators
114         //- Read peak/size/rss from stream
115         friend Istream& operator>>(Istream&, memInfo&);
117         //- Write peak/size/rss to stream
118         friend Ostream& operator<<(Ostream&, const memInfo&);
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
124 } // End namespace Foam
126 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
128 #endif
130 // ************************************************************************* //