# -*- Mode: Python -*-
# vim: filetype=python
#
# This work is licensed under the terms of the GNU GPL, version 2 or later.
# See the COPYING file in the top-level directory.

##
# = Common machine types
##

##
# @S390CpuEntitlement:
#
# An enumeration of CPU entitlements that can be assumed by a virtual
# S390 CPU
#
# Since: 8.2
##
{ 'enum': 'S390CpuEntitlement',
  'data': [ 'auto', 'low', 'medium', 'high' ] }

##
# @CpuTopologyLevel:
#
# An enumeration of CPU topology levels.
#
# @thread: thread level, which would also be called SMT level or
#     logical processor level.  The @threads option in
#     SMPConfiguration is used to configure the topology of this
#     level.
#
# @core: core level.  The @cores option in SMPConfiguration is used
#     to configure the topology of this level.
#
# @module: module level.  The @modules option in SMPConfiguration is
#     used to configure the topology of this level.
#
# @cluster: cluster level.  The @clusters option in SMPConfiguration
#     is used to configure the topology of this level.
#
# @die: die level.  The @dies option in SMPConfiguration is used to
#     configure the topology of this level.
#
# @socket: socket level, which would also be called package level.
#     The @sockets option in SMPConfiguration is used to configure
#     the topology of this level.
#
# @book: book level.  The @books option in SMPConfiguration is used
#     to configure the topology of this level.
#
# @drawer: drawer level.  The @drawers option in SMPConfiguration is
#     used to configure the topology of this level.
#
# @default: default level.  Some architectures will have default
#     topology settings (e.g., cache topology), and this special
#     level means following the architecture-specific settings.
#
# Since: 9.2
##
{ 'enum': 'CpuTopologyLevel',
  'data': [ 'thread', 'core', 'module', 'cluster', 'die',
            'socket', 'book', 'drawer', 'default' ] }
