ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/utils/physmem.c
(Generate patch)

Comparing trunk/OOPSE-4/src/utils/physmem.c (file contents):
Revision 1996 by tim, Fri Feb 11 22:35:05 2005 UTC vs.
Revision 3327 by xsun, Wed Jan 23 21:23:15 2008 UTC

# Line 1 | Line 1
1   /* Calculate the size of physical memory.
2   Copyright 2000, 2001, 2003 Free Software Foundation, Inc.
2  
3 <   This program is free software; you can redistribute it and/or modify
3 >   Copyright (C) 2000, 2001, 2003, 2005, 2006 Free Software
4 >   Foundation, Inc.
5 >
6 >   This program is free software: you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8 <   the Free Software Foundation; either version 2, or (at your option)
9 <   any later version.
8 >   the Free Software Foundation; either version 3 of the License, or
9 >   (at your option) any later version.
10  
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
# Line 12 | Line 14
14     GNU General Public License for more details.
15  
16     You should have received a copy of the GNU General Public License
17 <   along with this program; if not, write to the Free Software Foundation,
16 <   Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
17 >   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
18  
19   /* Written by Paul Eggert.  */
20  
21   #include "config.h"
22  
23 < #if HAVE_UNISTD_H
23 < # include <unistd.h>
24 < #endif
23 > #include "physmem.h"
24  
25 + #include <unistd.h>
26 +
27   #if HAVE_SYS_PSTAT_H
28   # include <sys/pstat.h>
29   #endif
# Line 74 | Line 75 | typedef WINBOOL (WINAPI *PFN_MS_EX) (lMEMORYSTATUSEX*)
75   typedef WINBOOL (WINAPI *PFN_MS_EX) (lMEMORYSTATUSEX*);
76   #endif
77  
78 + #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
79 +
80   /* Return the total amount of physical memory.  */
81   double
82 < physmem_total ()
82 > physmem_total (void)
83   {
84   #if defined _SC_PHYS_PAGES && defined _SC_PAGESIZE
85    { /* This works on linux-gnu, solaris2 and cygwin.  */
# Line 134 | Line 137 | physmem_total ()
137      size_t len = sizeof physmem;
138      static int mib[2] = { CTL_HW, HW_PHYSMEM };
139  
140 <    if (sysctl (mib, 2, &physmem, &len, NULL, 0) == 0
140 >    if (sysctl (mib, ARRAY_SIZE (mib), &physmem, &len, NULL, 0) == 0
141          && len == sizeof (physmem))
142        return (double) physmem;
143    }
# Line 174 | Line 177 | physmem_total ()
177    }
178   #endif
179  
180 <  /* Return 0 if we can't determine the value.  */
181 <  return 0;
180 >  /* Guess 64 MB.  It's probably an older host, so guess small.  */
181 >  return 64 * 1024 * 1024;
182   }
183  
184   /* Return the amount of physical memory available.  */
185   double
186 < physmem_available ()
186 > physmem_available (void)
187   {
188   #if defined _SC_AVPHYS_PAGES && defined _SC_PAGESIZE
189    { /* This works on linux-gnu, solaris2 and cygwin.  */
# Line 240 | Line 243 | physmem_available ()
243      size_t len = sizeof usermem;
244      static int mib[2] = { CTL_HW, HW_USERMEM };
245  
246 <    if (sysctl (mib, 2, &usermem, &len, NULL, 0) == 0
246 >    if (sysctl (mib, ARRAY_SIZE (mib), &usermem, &len, NULL, 0) == 0
247          && len == sizeof (usermem))
248        return (double) usermem;
249    }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines