1
0
mirror of synced 2026-01-28 12:18:43 +00:00
Files
andrastantos.cray-sim/simulator/sim_lib/sim_iop_disk.h
2020-09-09 15:11:45 -07:00

63 lines
1.9 KiB
C++

#ifndef __SIM_IOP_DISK_H__
#define __SIM_IOP_DISK_H__
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <boost/asio.hpp>
#include "utils.h"
#include "cray_types.h"
#include "cray_logger.h"
#include "cray_channels.h"
#include "debug_events.h"
#include <stdint.h>
#include <vector>
#include <boost/lexical_cast.hpp>
#include <boost/format.hpp>
#include <boost/timer/timer.hpp>
#include "config_file.h"
#include "ui.h"
#include "cray_mainframe.h"
#include <queue>
class SimIopDisk_c {
public:
SimIopDisk_c(const Configuration_c &aConfig, const std::string &aDiskId, class SimIopCluster_c &aParent);
~SimIopDisk_c() {}
void Read(std::streamoff aCylinder, std::streamoff aHead, std::streamoff aSector, uint32_t aSectorCnt, CAddr_t aMainframeAddr);
void Write(std::streamoff aCylinder, std::streamoff aHead, std::streamoff aSector, uint32_t aSectorCnt, CAddr_t aMainframeAddr);
void Read(std::streamoff aSectorIdx, uint32_t aSectorCnt, CAddr_t aMainframeAddr);
void Write(std::streamoff aSectorIdx, uint32_t aSectorCnt, CAddr_t aMainframeAddr);
void GetStatus(StatusReport_c &aStatus, boost::timer::nanosecond_type aElapsedTime, bool aLongFormat) const;
std::string GetName() const;
void RegisterCommands(CommandHooks_t &aHooks);
void MasterClear();
uint32_t GetPhysicalDeviceId() const { return mPysicalDeviceId; }
uint8_t GetIopNumber() const { return mIopNumber; }
uint8_t GetUnit() const { return mUnit; }
uint32_t GetSectorSize() const { return mSectorSize; }
protected:
std::string mDiskId;
CLogger_c mLogger;
SimIopCluster_c &mParent;
std::string mImageFileName;
uint8_t mIopNumber;
uint8_t mUnit;
uint32_t mPysicalDeviceId;
std::streamoff mNumHeads;
std::streamoff mNumSectors;
std::streamoff mNumCylinders;
uint32_t mSectorSize;
// Statistics
std::streamoff mCurrentHead;
std::streamoff mCurrentSector;
std::streamoff mCurrentCylinder;
uint32_t mReads;
uint32_t mWrites;
};
#endif // __SIM_IOP_DISK_H__