operatingsystem_aix.cpp

来自「Pegasus is an open-source implementation」· C++ 代码 · 共 356 行

CPP
356
字号
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================////%////////////////////////////////////////////////////////////////////////////#include <Pegasus/Common/Config.h>#include <Pegasus/Common/System.h>#include <Pegasus/Common/Logger.h>#include "OperatingSystem.h"#include <iostream>#include <set>#include <sys/utsname.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/param.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <unistd.h>#include <time.h>#include <utmpx.h>#include <regex.h>#include <dirent.h>PEGASUS_USING_STD;OperatingSystem::OperatingSystem(void){}OperatingSystem::~OperatingSystem(void){}static Boolean _getOSName(String& osName){    struct utsname  unameInfo;    // Call uname and check for any errors.    if (uname(&unameInfo) < 0)    {       return false;    }    osName.assign(unameInfo.sysname);    return true;}static Boolean getUtilGetHostName(String& csName){     char    hostName[PEGASUS_MAXHOSTNAMELEN + 1];     struct  hostent *he;     if (gethostname(hostName, sizeof(hostName)) != 0)     {         return false;     }     hostName[sizeof(hostName)-1] = 0;     // Now get the official hostname.  If this call fails then return     // the value from gethostname().     if (he=gethostbyname(hostName))     {         csName.assign(he->h_name);     }     else     {         csName.assign(hostName);     }     return true;}Boolean OperatingSystem::getCSName(String& csName){      return getUtilGetHostName(csName);}Boolean OperatingSystem::getName(String& osName){      return _getOSName(osName);}Boolean OperatingSystem::getCaption(String& caption){      caption.assign("The current Operating System");     return true;}Boolean OperatingSystem::getDescription(String& description){      description.assign("This instance reflects the Operating System"           " on which the CIMOM is executing (as distinguished from instances"           " of other installed operating systems that could be run).");   return true;}Boolean OperatingSystem::getInstallDate(CIMDateTime& installDate){    return false;}Boolean OperatingSystem::getStatus(String& status){   status.assign("Unknown");   return true;}Boolean OperatingSystem::getVersion(String& osVersion){    struct utsname  unameInfo;    // Call uname and check for any errors.    if (uname(&unameInfo) < 0)    {       return false;    }    osVersion.assign(unameInfo.release);    return true;}Boolean OperatingSystem::getOSType(Uint16& osType){    osType = AIX;    return true;}Boolean OperatingSystem::getOtherTypeDescription(String& otherTypeDescription){    struct utsname  unameInfo;    char version[sizeof(unameInfo.release) + sizeof(unameInfo.version)];    // Call uname and check for any errors.    if (uname(&unameInfo) < 0)    {       return false;    }    sprintf(version, "%s %s", unameInfo.version, unameInfo.release);    otherTypeDescription.assign(version);    return true;}static CIMDateTime time_t_to_CIMDateTime(time_t *time_to_represent){   const int CIM_DATE_TIME_ASCII_LEN = 256;   const CIMDateTime NULLTIME;   CIMDateTime dt;   char date_ascii_rep[CIM_DATE_TIME_ASCII_LEN];   char utc_offset[20];   struct tm broken_time;   struct timeval   tv;   struct timezone  tz;   dt = NULLTIME;   localtime_r(time_to_represent, &broken_time);   gettimeofday(&tv,&tz);   if (strftime(date_ascii_rep, CIM_DATE_TIME_ASCII_LEN,                "%Y%m%d%H%M%S.000000", &broken_time))   {      snprintf(utc_offset, 20, "%+04ld", -tz.tz_minuteswest);      strncat(date_ascii_rep, utc_offset, CIM_DATE_TIME_ASCII_LEN);      dt = String(date_ascii_rep);   }   return dt;}Boolean OperatingSystem::getLastBootUpTime(CIMDateTime& lastBootUpTime){    return false;}Boolean OperatingSystem::getLocalDateTime(CIMDateTime& localDateTime){   time_t now;   now = time(NULL);   localDateTime = time_t_to_CIMDateTime(&now);   return true;}Boolean OperatingSystem::getCurrentTimeZone(Sint16& currentTimeZone){    struct timeval   tv;    struct timezone  tz;    // Get the time from the system.    gettimeofday(&tv,&tz);    currentTimeZone = -tz.tz_minuteswest;    return true;}Boolean OperatingSystem::getNumberOfLicensedUsers(Uint32& numberOfLicensedUsers){    return false;}Boolean OperatingSystem::getNumberOfUsers(Uint32& numberOfUsers){    struct utmpx * utmpp;    numberOfUsers = 0;    while ((utmpp = getutxent()) != NULL)    {        if (utmpp->ut_type == USER_PROCESS)        {            numberOfUsers++;        }    }    endutxent();    return true;}Boolean OperatingSystem::getNumberOfProcesses(Uint32& numberOfProcesses){      return false;}Boolean OperatingSystem::getMaxNumberOfProcesses(Uint32& mMaxProcesses){    return false;}Boolean OperatingSystem::getTotalSwapSpaceSize(Uint64& mTotalSwapSpaceSize){    return false;}Boolean OperatingSystem::getTotalVirtualMemorySize(Uint64& total){    return false;}Boolean OperatingSystem::getFreeVirtualMemory(Uint64& freeVirtualMemory){    return false;}Boolean OperatingSystem::getFreePhysicalMemory(Uint64& total){    return false;}Boolean OperatingSystem::getTotalVisibleMemorySize(Uint64& memory){    return false;}Boolean OperatingSystem::getSizeStoredInPagingFiles(Uint64& total){    return false;}Boolean OperatingSystem::getFreeSpaceInPagingFiles(Uint64& freeSpaceInPagingFiles){    return false;}Boolean OperatingSystem::getMaxProcessMemorySize(Uint64& maxProcessMemorySize){    return false;}Boolean OperatingSystem::getDistributed(Boolean& distributed){    distributed = false;    return true;}Boolean OperatingSystem::getMaxProcsPerUser(Uint32& maxProcsPerUser){    return false;}Boolean OperatingSystem::getSystemUpTime(Uint64& mUpTime){    return false;}Boolean OperatingSystem::getOperatingSystemCapability(String& scapability){#ifdef _SC_AIX_KERNEL_BITMODE    char               capability[80];    long               ret;    ret = sysconf (_SC_AIX_KERNEL_BITMODE);    if (ret != -1)    {        sprintf (capability, "%d bit", ret);        scapability.assign(capability);        return true;    }#endif	return false;}Uint32 OperatingSystem::_reboot(){   return false;}Uint32 OperatingSystem::_shutdown(){   return false;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?