⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 machine_params.h

📁 一个用在mips体系结构中的操作系统
💻 H
字号:
/* * Copyright (C) 1996-1998 by the Board of Trustees *    of Leland Stanford Junior University. *  * This file is part of the SimOS distribution.  * See LICENSE file for terms of the license.  * *//***************************************************************** * machine_params.h *   * $Author: bosch $ * $Date: 1998/02/10 00:28:30 $ *****************************************************************/#ifndef MACHINE_PARAMS_H#define MACHINE_PARAMS_H#include "tcl_init.h"#include "syslimits.h"#define MAX_PARAM_STRING_LENGTH 128#define MAX_MACHINES 16/* Per-machine data structure */typedef struct MachineSpecificStruct {   /* CPU */   int NumCPUs;   int FirstCPU;   /* number of this machines first CPU out of all CPUs */   int LastCPU;    /* number of this machines last CPU out of all CPUs */   int NumCells;   int CPUsPerCell;   int log2CPUsPerCell;   /* MEMSYS */   int MemSizeSpecified;   int NumMemories;   int FirstMemory;   int LastMemory;   /* DISK */   char *DiskModel;   int HPDiskScaling;   int FixedDiskDelay;   int NumUnitsPerController;   int NumDiskCtrls[SIM_MAXCPUS];   /* CONSOLE */   int NumConsoles;   int FirstConsole;   int LastConsole;   /* ETHERNET */   int NumEtherControllers;   int FirstEtherController;   int LastEtherController;   /* CLOCK */   int NumClocks;   int FirstClock;   int LastClock;   /* Derived fields:       These aren't set directly by the user but are derived from the above */   int MemSize;    /* Base address of this machine's simulated memory */    MA SimMemAddr;} MachineSpecificStruct;/* All-machine data structure */typedef struct MachinesStruct {/* Per Machine Settings */   MachineSpecificStruct machine[MAX_MACHINES];   /* All Machines Settings */   /* Machines */   int NumMachines;      /* CPU */   char *CpuModel;   char *CpuISA;   int TotalCPUs;   int MaxCPUsPerMachine;   /* Number of CPUs on machine with the most */   int CpuClock;   /* TLB */   char *TlbOrg;     /* CACHE */   char *CacheModel;   int ICacheSizeSpecified;   int ICacheAssoc;   int ICacheLineSize;   int ICacheInclusion;   int DCacheSizeSpecified;   int DCacheAssoc;   int DCacheLineSize;   int SCacheSizeSpecified;   int SCacheLineSize;   int SCacheAssoc;   int SCacheHitTimeSpecified;   int WriteBufferSize;   int UpgradesOnUP;   int NAKRetryTime;   /* MEMSYS */   char *MemSysModel;   int TotalMemories;     /* Perfect */   int PerfectMemLatencySpecified;     /* BusUma */   int MemCycleTimeSpecified;   int UpgradeTimeSpecified;   int DirtyPenaltySpecified;   int BusBW;      /* MAGIC */   int SIPSLatencySpecified;   int IPILatencySpecified;   int InitialTimeSpecified;     /* Numa */   int NumaBusTimeSpecified;   int NumaPILocalDCTimeSpecified;   int NumaPIRemoteDCTimeSpecified;   int NumaNILocalDCTimeSpecified;   int NumaNIRemoteDCTimeSpecified;   int NumaMemTimeSpecified;   int NumaNetTimeSpecified;   int NumaStripeSize;   /* CONSOLE */   char *ConsoleModel;   int TotalConsoles;   int MaxConsolesPerMachine;   /* Number of consoles on machine with the most */      /* ETHERNET */   char *EthernetModel;   int TotalEtherControllers;   int MaxEtherControllersPerMachine;    /* CLOCK */   int TotalClocks;   int MaxClocksPerMachine;    int IntrClockFrequency;   /* FPROM */   int FPROMSize;   int FRAMSize;   /* Derived fields:       These aren't set directly by the user but are derived from the above */   int DCacheSize;   int ICacheSize;   int SCacheSize;   int log2ICacheLineSize;   int log2ICacheSize;   int log2ICacheAssoc;   int iCacheIndex;   int log2DCacheLineSize;   int log2DCacheSize;   int log2DCacheAssoc;   int dCacheIndex;   int log2SCacheSize;   int log2SCacheLineSize;   int log2SCacheAssoc;   int sCacheIndex;   int MemCycleTime;   int PerfectMemLatency;   int UpgradeTime;   int DirtyPenalty;   int SCacheHitTime;   int SIPSLatency;   int IPILatency;   int InitialTime;   int NumaBusTime;   int NumaPILocalDCTime;   int NumaPIRemoteDCTime;   int NumaNILocalDCTime;   int NumaNIRemoteDCTime;   int NumaMemTime;   int NumaNetTime;} MachinesStruct;/* Per-machine macros */#define NUM_CPUS(_m)            machines.machine[_m].NumCPUs#define FIRST_CPU(_m)           machines.machine[_m].FirstCPU#define LAST_CPU(_m)            machines.machine[_m].LastCPU#define NUM_CELLS(_m)           machines.machine[_m].NumCells#define CPUS_PER_CELL(_m)       machines.machine[_m].CPUsPerCell#define log2CPUS_PER_CELL(_m)   machines.machine[_m].log2CPUsPerCell#define MEM_SIZE(_m)            machines.machine[_m].MemSize#define MEM_SIZE_SPECIFIED(_m)  machines.machine[_m].MemSizeSpecified#define NUM_MEMORIES(_m)        machines.machine[_m].NumMemories#define FIRST_MEMORY(_m)        machines.machine[_m].FirstMemory#define LAST_MEMORY(_m)         machines.machine[_m].LastMemory#define DISK_MODEL(_m)          machines.machine[_m].DiskModel#define HP_DISK_SCALING(_m)     machines.machine[_m].HPDiskScaling#define FIXED_DISK_DELAY(_m)    machines.machine[_m].FixedDiskDelay#define NUM_DISK_CONTROLLERS(_m,_n)  machines.machine[_m].NumDiskCtrls[_n]#define NUM_UNITS_PER_CONTROLLER(_m) machines.machine[_m].NumUnitsPerController#define NUM_CONSOLES(_m)            machines.machine[_m].NumConsoles#define FIRST_CONSOLE(_m)           machines.machine[_m].FirstConsole#define LAST_CONSOLE(_m)            machines.machine[_m].LastConsole#define NUM_ETHER_CONTROLLERS(_m)   machines.machine[_m].NumEtherControllers#define FIRST_ETHER_CONTROLLER(_m)  machines.machine[_m].FirstEtherController#define LAST_ETHER_CONTROLLER(_m)   machines.machine[_m].LastEtherController#define NUM_CLOCKS(_m)              machines.machine[_m].NumClocks#define FIRST_CLOCK(_m)             machines.machine[_m].FirstClock#define LAST_CLOCK(_m)              machines.machine[_m].LastClock/* Base of simulated memory */#define SIM_MEM_ADDR(_m)            machines.machine[_m].SimMemAddr/* All-machine macros */#define NUM_MACHINES            machines.NumMachines#define TOTAL_CPUS              machines.TotalCPUs#define TOTAL_MEMORIES          machines.TotalMemories#define TOTAL_CONSOLES          machines.TotalConsoles#define TOTAL_ETHER_CONTROLLERS machines.TotalEtherControllers#define TOTAL_CLOCKS            machines.TotalClocks#define MAX_CPUS_PER_MACHINE              machines.MaxCPUsPerMachine#define MAX_CONSOLES_PER_MACHINE          machines.MaxConsolesPerMachine#define MAX_ETHER_CONTROLLERS_PER_MACHINE machines.MaxEtherControllersPerMachine#define MAX_CLOCKS_PER_MACHINE            machines.MaxClocksPerMachine/* * DISCO compatibility note: * For compatibility with older DISCO checkpoints, we allow more * disk controller-carrying nodes than actual processing nodes. This * is a HACK and should be removed. Just drop the following #define * and uncomment the one below. */#define DISK_NODES              SIM_MAXCPUS/* #define DISK_NODES              TOTAL_CPUS */#define CPU_CLOCK               machines.CpuClock#define BUS_BW                  machines.BusBW#define PERFECTMEM_LATENCY      machines.PerfectMemLatency#define MEM_CYCLE_TIME          machines.MemCycleTime#define UPGRADE_TIME            machines.UpgradeTime#define DIRTY_PENALTY           machines.DirtyPenalty#define CACHE_MODEL             machines.CacheModel#define ICACHE_LINE_SIZE        machines.ICacheLineSize#define log2ICACHE_LINE_SIZE    machines.log2ICacheLineSize#define ICACHE_SIZE             machines.ICacheSize#define log2ICACHE_SIZE         machines.log2ICacheSize#define ICACHE_INDEX            machines.iCacheIndex#define ICACHE_INCLUSION        machines.ICacheInclusion#define DCACHE_LINE_SIZE        machines.DCacheLineSize#define log2DCACHE_LINE_SIZE    machines.log2DCacheLineSize#define DCACHE_SIZE             machines.DCacheSize#define log2DCACHE_SIZE         machines.log2DCacheSize#define DCACHE_INDEX            machines.dCacheIndex#define SCACHE_ASSOC            machines.SCacheAssoc#define log2SCACHE_ASSOC        machines.log2SCacheAssoc#define SCACHE_SIZE             machines.SCacheSize#define log2SCACHE_SIZE         machines.log2SCacheSize#define SCACHE_LINE_SIZE        machines.SCacheLineSize#define log2SCACHE_LINE_SIZE    machines.log2SCacheLineSize#define SCACHE_HIT_TIME         machines.SCacheHitTime#define SCACHE_INDEX            machines.sCacheIndex#define NAK_RETRY_TIME          machines.NAKRetryTime#define WRITE_BUFFER_SIZE       machines.WriteBufferSize#define IPI_LATENCY             machines.IPILatency#define SIPS_LATENCY            machines.SIPSLatency#define NUMA_BUS_TIME           machines.NumaBusTime#define NUMA_PILOCAL_DC_TIME    machines.NumaPILocalDCTime#define NUMA_PIREMOTE_DC_TIME   machines.NumaPIRemoteDCTime#define NUMA_NILOCAL_DC_TIME    machines.NumaNILocalDCTime#define NUMA_NIREMOTE_DC_TIME   machines.NumaNIRemoteDCTime#define NUMA_MEM_TIME           machines.NumaMemTime#define NUMA_NET_TIME           machines.NumaNetTime#define NUMA_STRIPE_SIZE        machines.NumaStripeSize#define MEMSYS_MODEL            machines.MemSysModel#define UPGRADES_ON_UP          machines.UpgradesOnUP#define FPROM_SIZE              machines.FPROMSize#define FRAM_SIZE               machines.FRAMSize#define INTRCLOCK_FREQUENCY     machines.IntrClockFrequency/* For compatibility when restoring version 3 MOOSE checkpoints */#define MOOSE_MAXVMS            8extern MachinesStruct machines;extern void MachineInitialize(Tcl_Interp *);extern void MachineSettingsComplete(void);extern char *MachineAccess(ClientData clientData, Tcl_Interp *interp,                           char *name1, char *name2, int flags);/* * Macros for mapping to machine or machine cpu from cpu number */extern int* MachineFromCPU;#define M_FROM_CPU(_cpu)     (MachineFromCPU[(_cpu)])#define MCPU_FROM_CPU(_cpu)  (_cpu - FIRST_CPU(M_FROM_CPU(_cpu)))#endif

⌨️ 快捷键说明

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