casacore
HostInfoHpux.h
Go to the documentation of this file.
1//# HostInfo_hpux.h: HP/UX specific memory, swap, and CPU code.
2//# $Id$
3
4 /*
5 ** This is a greatly MODIFIED version of a "top" machine dependent file.
6 ** The only resemblance it bears to the original is with respect to the
7 ** mechanics of finding various system details. The copyright details
8 ** follow.
9 **
10 ** --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
11 **
12 ** Top users/processes display for Unix
13 ** Version 3
14 **
15 ** This program may be freely redistributed,
16 ** but this entire comment MUST remain intact.
17 **
18 ** Copyright (c) 1984, 1989, William LeFebvre, Rice University
19 ** Copyright (c) 1989 - 1994, William LeFebvre, Northwestern University
20 ** Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
21 ** Copyright (c) 1996, William LeFebvre, Group sys Consulting
22 ** Copyright (c) 2002, Associated Universities Inc.
23 */
24
25#ifndef CASA_HOSTINFOHPUX_H
26#define CASA_HOSTINFOHPUX_H
27
28# if defined(HOSTINFO_DO_IMPLEMENT)
29
30/*
31 * AUTHOR: Darrell Schiebel <drs@nrao.edu>
32 *
33 * ORIGINAL AUTHOR: John Haxby <john_haxby@hp.com>
34 * ORIGINAL CONTRIBUTORS: Rich Holland <holland@synopsys.com>
35 * Kevin Schmidt <kevin@mcl.ucsb.edu>
36 */
37
38#include <stdio.h>
39#include <errno.h>
40#include <stdlib.h>
41#include <unistd.h>
42#include <sys/param.h>
43#include <sys/pstat.h>
44
45namespace casacore { //# NAMESPACE CASACORE - BEGIN
46
47// <summary>
48// HostInfo for HP-UX machines.
49// </summary>
50
51// <use visibility=local>
52
53// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="" demos="">
54// </reviewed>
55
56// <prerequisite>
57// <li> <linkto class=HostInfo>HostInfo</linkto>
58// </prerequisite>
59
60// <synopsis>
61// This file provides the HP-UX specific functions for HostInfo.
62// It is selectively included by HostInfo.cc.
63// </synopsis>
64//
65// <group name="HostInfo">
66
67/* these are for getting the memory statistics */
68
69/* Log base 2 of 1024 is 10 (2^10 == 1024) */
70#define LOG1024 10
71
72/* define pagetok in terms of pageshift */
73#define pagetok(size) ((size) << pageshift)
74
75class HostMachineInfo {
76friend class HostInfo;
77
78 HostMachineInfo( );
79 void update_info( );
80
81 int valid;
82 int cpus;
83
84 ptrdiff_t swap_total;
85 ptrdiff_t swap_used;
86 ptrdiff_t swap_free;
87
88 ptrdiff_t memory_total;
89 ptrdiff_t memory_used;
90 ptrdiff_t memory_free;
91
92 int pageshift; /* log base 2 of the pagesize */
93};
94
95// </group>
96
97
98HostMachineInfo::HostMachineInfo( ) :valid(1) {
99
100 struct pst_static info;
101 int pagesize;
102
103 if (pstat_getstatic (&info, sizeof (info), 1, 0) < 0) {
104 perror ("pstat_getstatic");
105 valid = 0;
106 }
107
108 /*
109 * Calculate pageshift -- the value needed to convert pages to Kbytes.
110 * This will usually be 2.
111 */
112 pageshift = 0;
113 for (pagesize = info.page_size; pagesize > 1; pagesize >>= 1)
114 pageshift += 1;
115 pageshift -= LOG1024;
116
117 static struct pst_dynamic dynamic;
118
119 pstat_getdynamic (&dynamic, sizeof (dynamic), 1, 0);
120 cpus = dynamic.psd_proc_cnt;
121 memory_total = pagetok (dynamic.psd_rm);
122}
123
124void HostMachineInfo::update_info( ) {
125
126 static struct pst_dynamic dynamic;
127
128 pstat_getdynamic (&dynamic, sizeof (dynamic), 1, 0);
129 memory_used = pagetok (dynamic.psd_arm);
130 memory_free = memory_total - memory_used;
131 swap_total = pagetok (dynamic.psd_vm);
132 swap_used = pagetok (dynamic.psd_avm);
133 swap_free = swap_total - swap_used;
134}
135
136# endif
137
138} //# NAMESPACE CASACORE - END
139
140#endif
this file contains all the compiler specific defines
Definition: mainpage.dox:28