HostInfoHpux.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CASA_HOSTINFOHPUX_H
00026 #define CASA_HOSTINFOHPUX_H
00027
00028 # if defined(HOSTINFO_DO_IMPLEMENT)
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <stdio.h>
00039 #include <errno.h>
00040 #include <stdlib.h>
00041 #include <unistd.h>
00042 #include <sys/param.h>
00043 #include <sys/pstat.h>
00044
00045 namespace casacore {
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 #define LOG1024 10
00071
00072
00073 #define pagetok(size) ((size) << pageshift)
00074
00075 class HostMachineInfo {
00076 friend class HostInfo;
00077
00078 HostMachineInfo( );
00079 void update_info( );
00080
00081 int valid;
00082 int cpus;
00083
00084 ptrdiff_t swap_total;
00085 ptrdiff_t swap_used;
00086 ptrdiff_t swap_free;
00087
00088 ptrdiff_t memory_total;
00089 ptrdiff_t memory_used;
00090 ptrdiff_t memory_free;
00091
00092 int pageshift;
00093 };
00094
00095
00096
00097
00098 HostMachineInfo::HostMachineInfo( ) :valid(1) {
00099
00100 struct pst_static info;
00101 int pagesize;
00102
00103 if (pstat_getstatic (&info, sizeof (info), 1, 0) < 0) {
00104 perror ("pstat_getstatic");
00105 valid = 0;
00106 }
00107
00108
00109
00110
00111
00112 pageshift = 0;
00113 for (pagesize = info.page_size; pagesize > 1; pagesize >>= 1)
00114 pageshift += 1;
00115 pageshift -= LOG1024;
00116
00117 static struct pst_dynamic dynamic;
00118
00119 pstat_getdynamic (&dynamic, sizeof (dynamic), 1, 0);
00120 cpus = dynamic.psd_proc_cnt;
00121 memory_total = pagetok (dynamic.psd_rm);
00122 }
00123
00124 void HostMachineInfo::update_info( ) {
00125
00126 static struct pst_dynamic dynamic;
00127
00128 pstat_getdynamic (&dynamic, sizeof (dynamic), 1, 0);
00129 memory_used = pagetok (dynamic.psd_arm);
00130 memory_free = memory_total - memory_used;
00131 swap_total = pagetok (dynamic.psd_vm);
00132 swap_used = pagetok (dynamic.psd_avm);
00133 swap_free = swap_total - swap_used;
00134 }
00135
00136 # endif
00137
00138 }
00139
00140 #endif