NT4/private/ntos/nthals/halalpha/environ.h
2020-09-30 17:12:29 +02:00

168 lines
4.6 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*++
Copyright (c) 1992, 1993 Digital Equipment Corporation
Module Name:
environ.h
Abstract:
This module contains definitions for environment variable support
under the HAL. (Parts taken from J. Derosa's FWP.H)
Author:
Jeff McLeman (DEC) 17-Sep-1992
Revision History:
--*/
//
// Define the private configuration packet structure, which contains a
// configuration component as well as pointers to the component's parent,
// peer, child, and configuration data.
//
typedef struct _CONFIGURATION_PACKET {
CONFIGURATION_COMPONENT Component;
struct _CONFIGURATION_PACKET *Parent;
struct _CONFIGURATION_PACKET *Peer;
struct _CONFIGURATION_PACKET *Child;
PVOID ConfigurationData;
} CONFIGURATION_PACKET, *PCONFIGURATION_PACKET;
//
// The compressed configuration packet structure used to store configuration
// data in NVRAM.
//
typedef struct _COMPRESSED_CONFIGURATION_PACKET {
UCHAR Parent;
UCHAR Class;
UCHAR Type;
UCHAR Flags;
ULONG Key;
UCHAR Version;
UCHAR Revision;
USHORT ConfigurationDataLength;
USHORT Identifier;
USHORT ConfigurationData;
} COMPRESSED_CONFIGURATION_PACKET, *PCOMPRESSED_CONFIGURATION_PACKET;
//
// Defines for Identifier index.
//
#define NO_CONFIGURATION_IDENTIFIER 0xFFFF
#ifdef EISA_PLATFORM
//
// Defines for the non-volatile configuration tables.
//
#define NV_NUMBER_OF_ENTRIES 40
#define NV_LENGTH_OF_IDENTIFIER (1024 - (NV_NUMBER_OF_ENTRIES * 16) - 8)
#define NV_LENGTH_OF_DATA (2048 -16)
#define LENGTH_OF_ENVIRONMENT 1024
#define LENGTH_OF_EISA_DATA 2044
#define MAXIMUM_ENVIRONMENT_VALUE 256
#define MAX_NUMBER_OF_ENVIRONMENT_VARIABLES 40
//
// The non-volatile configuration table structure.
//
typedef struct _NV_CONFIGURATION {
COMPRESSED_CONFIGURATION_PACKET Packet[NV_NUMBER_OF_ENTRIES]; // 0 to 640-4
UCHAR Identifier[NV_LENGTH_OF_IDENTIFIER]; // 640 to (1K - 8 - 4)
ULONG Monitor; // 1K-8
ULONG Floppy; // 1K-4
ULONG Floppy2; // 1K
ULONG KeyboardType; // 1K+4
UCHAR Data[NV_LENGTH_OF_DATA]; // Unused space 1K+8 to 3K-8-4
UCHAR Checksum1[4]; // Data checksum 3K-8
UCHAR Environment[LENGTH_OF_ENVIRONMENT]; // Env Variables 3K-4 to 4K-4-4
UCHAR Checksum2[4]; // Env checksum 4K-4
UCHAR EisaData[LENGTH_OF_EISA_DATA]; // Eisa Data (4K to 6K-4)
UCHAR Checksum3[4]; // EisaData checksum
} NV_CONFIGURATION, *PNV_CONFIGURATION;
//
// Defines for the volatile configuration tables.
// smd - Increased the number of entries, length of Identifier and length
// of data.
//
#define NUMBER_OF_ENTRIES 200
#define LENGTH_OF_IDENTIFIER (3*1024)
#define LENGTH_OF_DATA 2048
//
// The volatile configuration table structure.
//
typedef struct _CONFIGURATION {
CONFIGURATION_PACKET Packet[NUMBER_OF_ENTRIES];
UCHAR Identifier[LENGTH_OF_IDENTIFIER];
UCHAR Data[LENGTH_OF_DATA];
UCHAR EisaData[LENGTH_OF_EISA_DATA];
} CONFIGURATION, *PCONFIGURATION;
#else // EISA_PLATFORM
//
// Defines for the Non-Volatile configuration tables.
//
// SMD - We have reduced the size of the NVRAM from 6K to 3K
// If needed we could take a few bytes from ENVIRONMENT
// since there is tons of empty space there.
//
#define LENGTH_OF_ENVIRONMENT ((3*1024) - 16 - 4)
#define MAXIMUM_ENVIRONMENT_VALUE 256
#define MAXIMUM_NUMBER_OF_ENVIRONMENT_VARIABLES 28
#define MAX_NUMBER_OF_ENVIRONMENT_VARIABLES 28
//
// The non-volatile configuration table structure.
//
typedef struct _NV_CONFIGURATION {
ULONG Monitor; //0
ULONG Floppy; //4
ULONG Floppy2; //8
ULONG KeyboardType; //12
UCHAR Environment[LENGTH_OF_ENVIRONMENT]; //16 to (3K-4)
UCHAR Checksum[4];
} NV_CONFIGURATION, *PNV_CONFIGURATION;
//
// Defines for the Volatile configuration tables.
//
#define NUMBER_OF_ENTRIES 40
#define LENGTH_OF_IDENTIFIER (1024 - (NUMBER_OF_ENTRIES * 16))
#define LENGTH_OF_DATA 2048
//
// The volatile configuration table structure.
//
typedef struct _CONFIGURATION {
CONFIGURATION_PACKET Packet[NUMBER_OF_ENTRIES];
UCHAR Identifier[LENGTH_OF_IDENTIFIER];
UCHAR Data[LENGTH_OF_DATA];
} CONFIGURATION, *PCONFIGURATION;
#endif // EISA_PLATFORM
//
// The value of HalpCMOSRamBase must be set at initialization:
//
#define NVRAM_CONFIGURATION HalpCMOSRamBase