Loading...
Searching...
No Matches
HostInfoHurd.h
Go to the documentation of this file.
/*
** This is a greatly MODIFIED version of a "top" machine dependent file.
** The only resemblance it bears to the original is with respect to the
** mechanics of finding various system details. The copyright details
** follow.
**
** This is a modified version of the osf1 version.
**
** --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
**
** Top users/processes display for Unix
** Version 3
**
** This program may be freely redistributed,
** but this entire comment MUST remain intact.
**
** Copyright (c) 1984, 1989, William LeFebvre, Rice University
** Copyright (c) 1989 - 1994, William LeFebvre, Northwestern University
** Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
** Copyright (c) 1996, William LeFebvre, Group sys Consulting
** Copyright (c) 2002, Associated Universities Inc.
*/
/*
** LIBS: -lstdc++
**
** AUTHOR: Darrell Schiebel <drs@nrao.edu>
**
** ORIGINAL AUTHOR: Anthony Baxter <anthony@aaii.oz.au>
** ORIGINAL CONTRIBUTORS: David S. Comay <dsc@seismo.css.gov>
** Claus Kalle
** Pat Welch <tpw@physics.orst.edu>
** William LeFebvre <lefebvre@dis.anl.gov>
** Rainer Orth <ro@techfak.uni-bielefeld.de>
**
*/
#ifndef CASA_HOSTINFOHURD_H
#define CASA_HOSTINFOHURD_H
# if defined(HOSTINFO_DO_IMPLEMENT)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
extern "C" {
#include <mach/mach.h>
}
namespace casacore { //# NAMESPACE CASACORE - BEGIN
// <summary>
// HostInfo for GNU HURD machines.
// </summary>
// <use visibility=local>
// <reviewed reviewer="UNKNOWN" date="before2004/08/25" tests="" demos="">
// </reviewed>
// <prerequisite>
// <li> <linkto class=HostInfo>HostInfo</linkto>
// </prerequisite>
// <synopsis>
// This file provides the GNU HURD specific functions for HostInfo.
// It is selectively included by HostInfo.cc.
// </synopsis>
//
// <group name="HostInfo">
/* Log base 2 of 1024 is 10 (2^10 == 1024) */
#define LOG1024 10
/* these are for getting the memory statistics */
static int pageshift; /* log base 2 of the pagesize */
static int pagesize_;
/* define pagetok in terms of pageshift */
#define pagetok(size) ((size) << pageshift)
class HostMachineInfo {
friend class HostInfo;
HostMachineInfo( );
void update_info( );
int valid;
int cpus;
ptrdiff_t memory_total;
ptrdiff_t memory_used;
ptrdiff_t memory_free;
ptrdiff_t swap_total;
ptrdiff_t swap_used;
ptrdiff_t swap_free;
};
// </group>
HostMachineInfo::HostMachineInfo( ) : valid(1) {
int pagesize;
kern_return_t ret;
struct host_basic_info basic_info;
mach_msg_type_number_t count = HOST_BASIC_INFO_COUNT;
/* get the page size with "getpagesize" and calculate pageshift from it */
pagesize_ = pagesize = getpagesize();
pageshift = 0;
while (pagesize > 1)
{
pageshift++;
pagesize >>= 1;
}
/* we only need the amount of log(2)1024 for our conversion */
pageshift -= LOG1024;
ret = host_info( mach_host_self(), HOST_BASIC_INFO, (host_info_t) &basic_info, &count );
if ( ret != KERN_SUCCESS ) {
valid = 0;
} else {
memory_total = basic_info.memory_size / 1024;
cpus = basic_info.avail_cpus;
}
}
void HostMachineInfo::update_info( ) {
vm_statistics_data_t vmstats;
kern_return_t kr;
/* memory information */
kr = vm_statistics( mach_task_self(), &vmstats);
if ( kr != KERN_SUCCESS ) {
valid = 0;
return;
}
memory_used = pagetok(vmstats.active_count + vmstats.wire_count);
memory_free = memory_total - memory_used;
swap_used = pagetok( vmstats.active_count + vmstats.inactive_count + vmstats.wire_count );
swap_free = pagetok( vmstats.free_count );
swap_total = pagetok( vmstats.active_count + vmstats.inactive_count +
vmstats.wire_count + vmstats.free_count );
}
} //# NAMESPACE CASACORE - END
# endif
#endif
casacore
this file contains all the compiler specific defines
Definition mainpage.dox:28
stdio.h
stdlib.h