You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

126 lines
4.7 KiB

/* Microsoft Reference Implementation for TPM 2.0
*
* The copyright in this software is being made available under the BSD License,
* included below. This software may be subject to other third party and
* contributor rights, including patent rights, and no such rights are granted
* under this license.
*
* Copyright (c) Microsoft Corporation
*
* All rights reserved.
*
* BSD License
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list
* of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice, this
* list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
// This file contains the instance data for the Platform module. It is collected
// in this file so that the state of the module is easier to manage.
#ifndef _PLATFORM_DATA_H_
#define _PLATFORM_DATA_H_
#ifdef _PLATFORM_DATA_C_
#define EXTERN
#else
#define EXTERN extern
#endif
// From Cancel.c
// Cancel flag. It is initialized as FALSE, which indicate the command is not
// being canceled
EXTERN int s_isCanceled;
#ifndef HARDWARE_CLOCK
typedef uint64_t clock64_t;
// This is the value returned the last time that the system clock was read. This
// is only relevant for a simulator or virtual TPM.
EXTERN clock64_t s_realTimePrevious;
// These values are used to try to synthesize a long lived version of clock().
EXTERN clock64_t s_lastSystemTime;
EXTERN clock64_t s_lastReportedTime;
// This is the rate adjusted value that is the equivalent of what would be read from
// a hardware register that produced rate adjusted time.
EXTERN clock64_t s_tpmTime;
#endif // HARDWARE_CLOCK
// This value indicates that the timer was reset
EXTERN int s_timerReset;
// This value indicates that the timer was stopped. It causes a clock discontinuity.
EXTERN int s_timerStopped;
// This variable records the time when _plat__TimerReset is called. This mechanism
// allow us to subtract the time when TPM is power off from the total
// time reported by clock() function
EXTERN uint64_t s_initClock;
// This variable records the timer adjustment factor.
EXTERN unsigned int s_adjustRate;
// For LocalityPlat.c
// Locality of current command
EXTERN unsigned char s_locality;
// For NVMem.c
// Choose if the NV memory should be backed by RAM or by file.
// If this macro is defined, then a file is used as NV. If it is not defined,
// then RAM is used to back NV memory. Comment out to use RAM.
#if (!defined VTPM) || ((VTPM != NO) && (VTPM != YES))
# undef VTPM
# define VTPM YES // Default: Either YES or NO
#endif
// For a simulation, use a file to back up the NV
#if (!defined FILE_BACKED_NV) || ((FILE_BACKED_NV != NO) && (FILE_BACKED_NV != YES))
# undef FILE_BACKED_NV
# define FILE_BACKED_NV (VTPM && YES) // Default: Either YES or NO
#endif
#if SIMULATION
# undef FILE_BACKED_NV
# define FILE_BACKED_NV YES
#endif // SIMULATION
EXTERN unsigned char s_NV[NV_MEMORY_SIZE];
EXTERN int s_NvIsAvailable;
EXTERN int s_NV_unrecoverable;
EXTERN int s_NV_recoverable;
// For PPPlat.c
// Physical presence. It is initialized to FALSE
EXTERN int s_physicalPresence;
// From Power
EXTERN int s_powerLost;
// For Entropy.c
EXTERN uint32_t lastEntropy;
#define DEFINE_ACT(N) EXTERN ACT_DATA ACT_##N;
FOR_EACH_ACT(DEFINE_ACT)
EXTERN int actTicksAllowed;
#endif // _PLATFORM_DATA_H_