// ===================================================================
// Title:       System Operating System 2.7
// Filename:    System27_OperatingSystem.mof
// Version:     2.7.0
// Release:     Final
// Date:        03/31/03
// ===================================================================
// Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The System Model defines system related management 
//              concepts. This file defines the specific concepts for
//              operating systems.
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.7 Final
// CR935 - Rename OperationSystem.OSTypes value "VM/ESA" to "VM" and
//         add new "z/OS" value
//
// Change Log for v2.7
// CR757 - Change the subclassing of OperatingSystem from Logical
//         Element to EnabledLogicalElement
// CR767 - Add the Compostion qualifer to InstalledOS
// CR770 - Extend OperatingSystem.OSType to include "Windows XP"
//       - Add model correspondence to OperatingSystem.OSType
// CR876 - Rename the "Digital Unix" operating system type to
//         "Tru64 UNIX".
// ===================================================================

#pragma locale ("en_US")


// ===================================================================
// OperatingSystem
// ===================================================================
[Version ("2.7.0"), Description (
    "An OperatingSystem is software/firmware that makes a "
    "ComputerSystem's hardware usable, and implements and/or "
    "manages the resources, file systems, processes, user "
    "interfaces, services, ... available on the ComputerSystem.") ] 
class CIM_OperatingSystem : CIM_EnabledLogicalElement {
    
    [Propagated ("CIM_ComputerSystem.CreationClassName"),
        Key, MaxLen (256), Description (
            "The scoping ComputerSystem's CreationClassName.") ]
    string CSCreationClassName;
    
    [Propagated ("CIM_ComputerSystem.Name"), Key, MaxLen (256),
        Description ("The scoping ComputerSystem's Name.") ]
    string CSName;
    
    [Key, MaxLen (256), Description (
        "CreationClassName indicates the name of the class or the "
        "subclass used in the creation of an instance. When used "
        "with the other key properties of this class, this property "
        "allows all instances of this class and its subclasses to "
        "be uniquely identified.") ]
    string CreationClassName;
    
    [Override ("Name"), Key, MaxLen (256), Description (
        "The inherited Name serves as key of an OperatingSystem "
        "instance within a ComputerSystem."),
        MappingStrings {"MIF.DMTF|Operating System|001.2"} ]
    string Name;
    
    [Description (
        "A integer indicating the type of OperatingSystem."),
        ValueMap {"0", "1", "2", "3", "4", 
            "5", "6", "7", "8", "9", 
            "10", "11", "12", "13", "14", 
            "15", "16", "17", "18", "19", 
            "20", "21", "22", "23", "24", 
            "25", "26", "27", "28", "29", 
            "30", "31", "32", "33", "34", 
            "35", "36", "37", "38", "39", 
            "40", "41", "42", "43", "44", 
            "45", "46", "47", "48", "49", 
            "50", "51", "52", "53", "54", 
            "55", "56", "57", "58", "59", 
            "60", "61", "62", "63", "64", 
            "65", "66", "67", "68"}, 
        Values {"Unknown", "Other", "MACOS", "ATTUNIX", "DGUX", 
            "DECNT", "Tru64 UNIX", "OpenVMS", "HPUX", "AIX", 
            //10 
            "MVS", "OS400", "OS/2", "JavaVM", "MSDOS", 
            "WIN3x", "WIN95", "WIN98", "WINNT", "WINCE", 
            //20 
            "NCR3000", "NetWare", "OSF", "DC/OS", "Reliant UNIX", 
            "SCO UnixWare", "SCO OpenServer", "Sequent", 
            "IRIX", "Solaris", 
            //30 
            "SunOS", "U6000", "ASERIES", "TandemNSK", "TandemNT", 
            "BS2000", "LINUX", "Lynx", "XENIX", "VM", 
            //40 
            "Interactive UNIX", "BSDUNIX", "FreeBSD", "NetBSD", 
            "GNU Hurd", "OS9", "MACH Kernel", "Inferno", "QNX", 
            "EPOC", 
            //50 
            "IxWorks", "VxWorks", "MiNT", "BeOS", "HP MPE", 
            "NextStep", "PalmPilot", "Rhapsody", "Windows 2000", 
            "Dedicated", 
            //60 
            "OS/390", "VSE", "TPF","Windows (R) Me", 
            "Caldera Open UNIX", "OpenBSD", "Not Applicable",
            "Windows XP", "z/OS"},
       ModelCorrespondence {
            "CIM_OperatingSystem.OtherTypeDescription",
            "CIM_SoftwareElement.TargetOperatingSystem"} ]
    uint16 OSType;
    
    [Description (
        "A string describing the manufacturer and OperatingSystem "
        "type - used when the OperatingSystem property, OSType, is "
        "set to 1 or 59 (\"Other\" or \"Dedicated\"). The format of "
        "the string inserted in OtherTypeDescription should be "
        "similar in format to the Values strings defined for OSType. "
        "OtherTypeDescription should be set to NULL when OSType is "
        "any value other than 1 or 59."),
        MaxLen (64),
        ModelCorrespondence {"CIM_OperatingSystem.OSType"} ]
    string OtherTypeDescription;
    
    [Description(
        "A string describing the Operating System's version "
        "number. The format of the version information is as follows: "
        "<Major Number>.<Minor Number>.<Revision> or "
        "<Major Number>.<Minor Number>.<Revision Letter>."),
        MappingStrings {"MIF.DMTF|Operating System|001.3"} ]
    string Version;
    
    [Description ("Time when the OperatingSystem was last booted."),
        MappingStrings {"MIF.DMTF|General Information|001.5"} ]
    datetime LastBootUpTime; 
    
    [Description (
        "OperatingSystem's notion of the local date and time of day."),
        MappingStrings {"MIB.IETF|HOST-RESOURCES-MIB.hrSystemDate",
            "MIF.DMTF|General Information|001.6"} ]
    datetime LocalDateTime;
    
    [Description (
        "CurrentTimeZone indicates the number of minutes the "
        "OperatingSystem is offset from Greenwich Mean Time. "
        "Either the number is positive, negative or zero."),
        Units("Minutes") ]
    sint16 CurrentTimeZone;
    
    [Description (
        "Number of user licenses for the OperatingSystem. "
        "If unlimited, enter 0.") ]
    uint32 NumberOfLicensedUsers;
    
    [Description (
        "Number of user sessions for which the OperatingSystem is "
        "currently storing state information."), Gauge,
        MappingStrings {"MIF.DMTF|Host System|001.4",
            "MIB.IETF|HOST-RESOURCES-MIB.hrSystemNumUsers"} ]
    uint32 NumberOfUsers;
    
    [Description (
        "Number of process contexts currently loaded or running on "
        "the OperatingSystem."), Gauge, 
        MappingStrings {"MIF.DMTF|Host System|001.5",
            "MIB.IETF|HOST-RESOURCES-MIB.hrSystemProcesses"} ]
    uint32 NumberOfProcesses;
    
    [Description (
        "Maximum number of process contexts the OperatingSystem can "
        "support. If there is no fixed maximum, the value should be 0."
        "On systems that have a fixed maximum, this object can help "
        "diagnose failures that occur when the maximum is reached."), 
        MappingStrings {"MIF.DMTF|Host System|001.6",
            "MIB.IETF|HOST-RESOURCES-MIB.hrSystemMaxProcesses"} ]
    uint32 MaxNumberOfProcesses;
    
    [Description (
        "Total swap space in Kbytes. This value may be "
        "NULL (unspecified) if swap space is not distinguished from "
        "page files.  However, some Operating Systems distinguish "
        "these concepts.  For example, in UNIX, whole processes can "
        "be 'swapped out' when the free page list falls and remains "
        "below a specified amount."),
        Units("KiloBytes") ]
    uint64 TotalSwapSpaceSize;
    
    [Description (
        "Number of Kbytes of virtual memory. For example, "
        "this may be calculated by adding the amount of total RAM to "
        "the amount of paging space (ie, adding the amount of "
        "memory in/aggregated by the ComputerSystem to the property, "
        "SizeStoredInPagingFiles."),
        Units("KiloBytes"),
        MappingStrings {"MIF.DMTF|System Memory Settings|001.5"} ]
    uint64 TotalVirtualMemorySize;
    
    [Gauge, Description (
        "Number of Kbytes of virtual memory currently unused and "
        "available. For example, this may be calculated by adding "
        "the amount of free RAM to the amount of free paging space "
        "(ie, adding the properties, FreePhysicalMemory and FreeSpace"
        "InPagingFiles)."),
        Units("KiloBytes"), 
        MappingStrings {"MIF.DMTF|System Memory Settings|001.6"} ]
    uint64 FreeVirtualMemory;
    
    [Gauge, Description (
        "Number of Kbytes of physical memory currently unused and "
        "available."),
        Units("KiloBytes"),
        MappingStrings{"MIF.DMTF|System Memory Settings|001.2", 
            "MIF.UNIX|Host Physical Memory|6.1"} ] 
    uint64 FreePhysicalMemory;
    
    [Description (
        "The total amount of physical memory (in Kbytes) available "
        "to the OperatingSystem. This value does not necessarily "
        "indicate the true amount of physical memory, but what is "
        "reported to the OperatingSystem as available to it."),
        Units("KiloBytes") ]
    uint64 TotalVisibleMemorySize;
    
    [Description (
        "The total number of KBytes that can be stored in the "
        "OperatingSystem's paging files. 0 indicates that there "
        "are no paging files."),
        Units("KiloBytes"),
        MappingStrings {"MIF.DMTF|System Memory Settings|001.3"} ]
    uint64 SizeStoredInPagingFiles;
    
    [Gauge, Description (
        "The total number of KBytes that can be mapped into the "
        "OperatingSystem's paging files without causing any other "
        "pages to be swapped out. 0 indicates that there are no "
        "paging files."),
        Units("KiloBytes"),
        MappingStrings {"MIF.DMTF|System Memory Settings|001.4"} ]
    uint64 FreeSpaceInPagingFiles;
    
    [Description (
        "Maximum number of Kbytes of memory that can be allocated "
        "to a Process. For Operating Systems with no virtual memory, "
        "this value is typically equal to the total amount of "
        "physical Memory minus memory used by the BIOS and OS. For "
        "some Operating Systems, this value may be infinity - in "
        "which case, 0 should be entered. In other cases, this value "
        "could be a constant - for example, 2G or 4G."),
        Units("KiloBytes") ]
    uint64 MaxProcessMemorySize;
    
    [Description (
        "Boolean indicating whether the OperatingSystem is "
        "distributed across several ComputerSystem nodes. If so, "
        "these nodes should be grouped as a Cluster.") ]
    boolean Distributed;
    
    [Description (
        "A value that indicates the maximum processes that a user "
        "can have associate with it.") ]
    uint32  MaxProcessesPerUser;
    
    [Description (
        "Requests a reboot of the OperatingSystem. The return value "
        "should be 0 if the request was successfully executed, "
        "1 if the request is not supported and some other value "
        "if an error occurred. In a subclass, the set of possible "
        "return codes could be specified, using a ValueMap qualifier "
        "on the method. The strings to which the ValueMap contents "
        "are 'translated' may also be specified in the subclass as "
        "a Values array qualifier.") ]
    uint32 Reboot();
    
    [Description (
        "Requests a shutdown of the OperatingSystem. The return "
        "value should be 0 if the request was successfully executed, "
        "1 if the request is not supported and some other value if "
        "an error occurred. It is up to the implementation or subclass "
        "of OperatingSystem to establish dependencies between "
        "the Shutdown and Reboot methods, and for example, to provide "
        "more sophisticated capabilities such as scheduled shutdown/"
        "reboot, etc. In a subclass, the set of possible return "
        "codes could be specified, using a ValueMap qualifier on "
        "the method. The strings to which the ValueMap contents are "
        "'translated' may also be specified in the subclass as a "
        "Values array qualifier.") ]
    uint32 Shutdown();
};


// ===================================================================
// InstalledOS
// ===================================================================
[Association, Aggregation, Composition, Version ("2.7.0"), 
    Description (
    "A link between the ComputerSystem and the OperatingSystem(s) "
    "installed or loaded on it. An OperatingSystem is 'installed' "
    "on a ComputerSystem, when placed on one of its StorageExtents "
    "- for example, copied to a disk drive or downloaded to "
    "Memory. Using this definition, an OperatingSystem is "
    "'installed' on a NetPC when downloaded via the network.") ]
class CIM_InstalledOS : CIM_SystemComponent {
    
    [Override ("GroupComponent"), Aggregate, Min (1), Max (1),
        Description ("The ComputerSystem.") ]
    CIM_ComputerSystem REF GroupComponent;
    
    [Override ("PartComponent"), Weak,
        Description (
            "The OperatingSystem installed on the ComputerSystem.") ]
    CIM_OperatingSystem REF PartComponent;
    
    [Description (
        "Boolean indicating that the OperatingSystem is the default "
        "OS for the ComputerSystem."),
        MappingStrings {"MIF.DMTF|Operating System|001.4"} ]
    boolean PrimaryOS;
};


// ===================================================================
// RunningOS
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "RunningOS indicates the currently executing OperatingSystem. "
    "At most one OperatingSystem can execute at any time on a "
    "ComputerSystem. 'At most one' is specified, since the Computer"
    "System may not be currently booted, or its OperatingSystem "
    "may be unknown.") ]
class CIM_RunningOS : CIM_Dependency {
    
    [Override ("Antecedent"), Max (1),
        Description (
           "The OperatingSystem currently running on the "
           "ComputerSystem.") ]
    CIM_OperatingSystem REF Antecedent;
    
    [Override ("Dependent"), Max (1),
        Description ("The ComputerSystem.") ]
    CIM_ComputerSystem REF Dependent;
};


// ===================================================================
// BootOSFromFS
// ===================================================================
[Association, Version ("2.6.0"), Description (
    "A link between the OperatingSystem and the FileSystem(s) from "
    "which this OperatingSystem is loaded. The association is many-"
    "to-many since a Distributed OS could depend on several File"
    "Systems in order to correctly and completely load.") ]
class CIM_BootOSFromFS : CIM_Dependency {
    
    [Override ("Antecedent"), Description (
        "The FileSystem from which the OperatingSystem is loaded.") ]
    CIM_FileSystem REF Antecedent;
    
    [Override ("Dependent"),
        Description ("The OperatingSystem.") ]
    CIM_OperatingSystem REF Dependent;
};


// ===================================================================
// end of file
// ===================================================================
