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

📄 hd.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.  * *//***************************************************************** * sim_disk.h * * Simple SCSI disk device emulation. Emulates a number of * independent disks. Correctly models disk latencies and * DMA transfers, but does not model disk controller contention. * * Created by: ?? * Revised by: Dan Teodosiu, 07/96 * * Attention: this file is also included by the remote access * server. Avoid dependencies. ****************************************************************/ #ifndef _SIM_DISK_H#define _SIM_DISK_H#if 0#include "simtypes.h"#endif#define SectorSize		      512          /* disk sector size *//* Note: the constant below determines the maximum number of * disks we can simulate in SimOS. */#define SIM_MAX_DISKS                 512          /* max. disks / system *//* Note: the following constants are related to the OS's view * of the disk controllers/units. The OS starts using a certain * disk by issuing a command to it. */#define SIM_DISK_CMD_SIZE	      12           /* SCSI command size */#define SIM_DISK_MAX_DMA_LENGTH       1024         /* max. DMA'ed pages */#define SIM_DISK_SHADOW_BLKSIZE 4096    /* size of blocks in the shadow file */#define ENCODE(_NODE,_CTRL,_UNIT) \  ( ( ((_UNIT) & 0xff) << 0 ) |   \    ( ((_CTRL) & 0xff) << 8 ) |   \    ( ((_NODE) & 0xff) << 16 ) )#define DECODE_NODE(_E) ( ((_E) >> 16) & 0xff )#define DECODE_CTRL(_E) ( ((_E) >> 8)  & 0xff )#define DECODE_UNIT(_E) ( ((_E) >> 0)  & 0xff )/*** SimOS interface ***//* Initialize disk data structures for all nodes in the system. * When a controller wishes to interrupt, int_f will be called. * NOTE: this doesn't fully allocate storage yet, since doing so might *       be very wasteful at this point. Instead, sim_disk_touch() below *       should be called whenever accessing a disk for the first time. */extern void sim_disk_init(int nodes, /* total number of nodes in system */			  int uc,    /* units per controller */			  void (*int_f)(int node, int ctrl, int unit, int on),			  int restoreFromChkpt);/* Signals that a disk is to start being accessed. This will complete * storage allocation and initialization for the specified disk. * It is an error to call this routine more than once for a given * disk. */extern void sim_disk_touch(int node, int ctrl, int unit);/*** OS interface ***//* Get status for disk number (ctrl, unit). "done" will be set to 0 for a disk * with a pending i/o operation. */extern void sim_disk_status(int node, int ctrl, int unit,			    int* done, int* bytes_tr, int* errno_val);/* Start an i/o operation on the specified disk number (ctrl, unit). * This routine returns quickly, and schedules the transfer to take * place at the correct simulated time. */extern void sim_disk_startio(int node, int ctrl, int unit,			     unsigned char cmd[SIM_DISK_CMD_SIZE], /*SCSI cmd*/			     PA            pages[SIM_DISK_MAX_DMA_LENGTH],			     int           offset);/* Tell "controller" that an i/o operation on specified unit is complete. */extern void sim_disk_iodone(int node, int ctrl, int unit);extern void sim_disk_simpleIO(long op,long unit,long count,long pAddr,long block);#endif /* _SIM_DISK_H */

⌨️ 快捷键说明

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