📄 disksim_disk.h
字号:
int reqwater; int sectbysect; int enablecache; int contread; int minreadahead; int maxreadahead; int keeprequestdata; int readaheadifidle; int fastwrites; int numdirty; // "Combine seq writes" int writecomb; // "Stop prefetch in sector" int stopinsector; // "Disconnect write if seek" int disconnectinseek; // ctlr int immedstart; int immedend; // list of all the cache segments(?) segment *seglist; // overheads -- mostly in controller code double overhead_command_readhit_afterread; double overhead_command_readhit_afterwrite; double overhead_command_readmiss_afterread; double overhead_command_readmiss_afterwrite; double overhead_command_writehit_afterread; double overhead_command_writehit_afterwrite; double overhead_command_writemiss_afterread; double overhead_command_writemiss_afterwrite; double overhead_complete_read; double overhead_complete_write; double overhead_data_prep; double overhead_reselect_first; double overhead_reselect_other; double overhead_disconnect_read_afterread; double overhead_disconnect_read_afterwrite; double overhead_disconnect_write; // "extra" overhead/delay/latency ... cache/ctlr struct diskreq_t *extradisc_diskreq; int extra_write_disconnect; double extradisc_command; double extradisc_disconnect1; double extradisc_inter_disconnect; double extradisc_disconnect2; double extradisc_seekdelta; double minimum_seek_delay; // looks like more globals // int firstblkontrack; // int endoftrack; // passes into global_currtime, involved in global_currangle computation double currtime; dm_time_t currtime_i; // only appears in cache code -- disk_interferestats() int lastgen; // flags on previous request to current (?) int lastflags; // time at which some transaction was started; only appears in // controller code double starttrans; // "Bulk sector transfer time" double blktranstime; disk_state_t outstate; // cache/controller diskreq *pendxfer; diskreq *currenthda; diskreq *effectivehda; diskreq *currentbus; diskreq *effectivebus; // number of blocks transferred for this request (?) // only appears in controller code int blksdone; int busowned; ioreq_event *buswait; ioreq_event *outwait; int numinbuses; int inbuses[MAXINBUSES]; int depth[MAXINBUSES]; int slotno[MAXINBUSES]; diskstat stat; int printstats; // zero-latency parameters int immed; int immedread; int immedwrite;} disk;typedef struct disk_info { disk **disks; int disks_len; /* allocated size of disks */ int numdisks; int disk_printhack; /* disk_printhack = 0, 1, or 2 */ double disk_printhacktime; int numsyncsets; int extra_write_disconnects;/* From disksim_diskmap.c -- gross mechanism for returning a value */ // int remapsector;/* From disksim_diskctlr.c */ int bandstart; int swap_forward_only;/* From disksim_diskmech.c */ // int trackstart; /* really yucky usage */ double addtolatency; // int global_seekdistance; /* really yucky usage */ double disk_seek_stoptime; int disk_last_distance; double disk_last_seektime; double disk_last_latency; double disk_last_xfertime; double disk_last_acctime; int disk_last_cylno; int disk_last_surface; /* Free blocks added stats etc*/ double disk_last_angle; double multi_disk_last_seektime[MAXDISKS][MAXSTATS]; double multi_disk_last_latency[MAXDISKS][MAXSTATS]; int multi_disk_last_cylno[MAXDISKS][MAXSTATS]; int multi_disk_last_surface[MAXDISKS][MAXSTATS]; double multi_disk_last_angle[MAXDISKS][MAXSTATS]; double multi_disk_last_xfertime[MAXDISKS][MAXSTATS]; int do_free_blocks; int multi_disk_last[MAXDISKS]; disk *lastdisk;/* From disksim_diskcache.c */ int LRU_at_seg_list_head;/* "globals" are used instead of locals. values may be set and passed *//* do NOT assume these have useful values at any point in time *//* unless they have just been set */ // int global_currcylno; // int global_currsurface; // double global_currtime; // double global_currangle;/* *ESTIMATED* command processing overheads for buffer cache hits. These *//* values are not actually used for determining request service times. */ double buffer_partial_servtime; double reading_buffer_partial_servtime; double buffer_whole_servtime; double reading_buffer_whole_servtime;} disk_info_t;/* one remapping #define for each variable in disk_info_t *///#define disks (disksim->diskinfo->disks)#define multi_disk_last_seektime (disksim->diskinfo->multi_disk_last_seektime)#define multi_disk_last_latency (disksim->diskinfo->multi_disk_last_latency)#define multi_disk_last_cylno (disksim->diskinfo->multi_disk_last_cylno)#define multi_disk_last_surface (disksim->diskinfo->multi_disk_last_surface)#define multi_disk_last_angle (disksim->diskinfo->multi_disk_last_angle)#define multi_disk_last_xfertime (disksim->diskinfo->multi_disk_last_xfertime)#define multi_disk_last (disksim->diskinfo->multi_disk_last)#define do_free_blocks (disksim->diskinfo->do_free_blocks)#define disk_last_angle (disksim->diskinfo->disk_last_angle)#define lastdisk (disksim->diskinfo->lastdisk)#define numdisks (disksim->diskinfo->numdisks)#define disk_printhack (disksim->diskinfo->disk_printhack)#define disk_printhacktime (disksim->diskinfo->disk_printhacktime)#define numsyncsets (disksim->diskinfo->numsyncsets)#define extra_write_disconnects (disksim->diskinfo->extra_write_disconnects)//#define remapsector (disksim->diskinfo->remapsector)#define bandstart (disksim->diskinfo->bandstart)#define swap_forward_only (disksim->diskinfo->swap_forward_only)// #define trackstart (disksim->diskinfo->trackstart)#define addtolatency (disksim->diskinfo->addtolatency)//#define global_seekdistance (disksim->diskinfo->global_seekdistance)#define disk_seek_stoptime (disksim->diskinfo->disk_seek_stoptime)#define disk_last_distance (disksim->diskinfo->disk_last_distance)#define disk_last_seektime (disksim->diskinfo->disk_last_seektime)#define disk_last_latency (disksim->diskinfo->disk_last_latency)#define disk_last_xfertime (disksim->diskinfo->disk_last_xfertime)#define disk_last_acctime (disksim->diskinfo->disk_last_acctime)#define disk_last_cylno (disksim->diskinfo->disk_last_cylno)#define disk_last_surface (disksim->diskinfo->disk_last_surface)#define LRU_at_seg_list_head (disksim->diskinfo->LRU_at_seg_list_head)//#define global_currcylno (disksim->diskinfo->global_currcylno)//#define global_currsurface (disksim->diskinfo->global_currsurface)//#define global_currtime (disksim->diskinfo->global_currtime)//#define global_currangle (disksim->diskinfo->global_currangle)#define buffer_partial_servtime (disksim->diskinfo->buffer_partial_servtime)#define reading_buffer_partial_servtime (disksim->diskinfo->reading_buffer_partial_servtime)#define buffer_whole_servtime (disksim->diskinfo->buffer_whole_servtime)#define reading_buffer_whole_servtime (disksim->diskinfo->reading_buffer_whole_servtime)/* * disksim_diskctlr.c functions */int disk_buffer_stopable_access (disk *currdisk, diskreq *currdiskreq);int disk_enablement_function (ioreq_event *);/* * disksim_diskcache.c functions */segment * disk_buffer_select_segment(disk *currdisk, diskreq *currdiskreq, int set_extradisc);segment * disk_buffer_recyclable_segment(disk *currdisk, int isread);diskreq * disk_buffer_seg_owner(segment *seg, int effective);int disk_buffer_attempt_seg_ownership(disk *currdisk, diskreq *currdiskreq);int disk_buffer_get_max_readahead(disk *currdisk, segment *seg, ioreq_event *curr);int disk_buffer_block_available(disk *currdisk, segment *seg, int blkno);int disk_buffer_reusable_segment_check(disk *currdisk, segment *currseg);int disk_buffer_overlap(segment *seg, ioreq_event *curr);int disk_buffer_check_segments(disk *currdisk, ioreq_event *currioreq, int *buffer_reading);void disk_buffer_set_segment(disk *currdisk, diskreq *currdiskreq);void disk_buffer_segment_wrap(segment *seg, int endblkno);void disk_buffer_remove_from_seg(diskreq *currdiskreq);void disk_interferestats(disk *currdisk, ioreq_event *curr);/* * externalized disksim_disk*.c functions (should be here?) */INLINE struct disk *getdisk (int diskno);struct disk *getdiskbyname(char *name);void disk_set_syncset (int setstart, int setend);void disk_setcallbacks(void);void disk_initialize(void);void disk_resetstats(void);void disk_printstats(void);void disk_printsetstats(int *set, int setsize, char *sourcestr);void disk_cleanstats(void);int disk_set_depth(int diskno, int inbusno, int depth, int slotno);int disk_get_depth(int diskno);int disk_get_inbus(int diskno);INLINE int disk_get_busno(ioreq_event *curr);int disk_get_slotno(int diskno);int disk_get_number_of_blocks(int diskno);int disk_get_maxoutstanding(int diskno);int disk_get_numdisks(void);int disk_get_numcyls(int diskno);double disk_get_blktranstime(ioreq_event *curr);int disk_get_avg_sectpercyl(int devno);void disk_get_mapping(int maptype, int diskno, int blkno, int *cylptr, int *surfaceptr, int *blkptr);void disk_event_arrive(ioreq_event *curr);int disk_get_distance(int diskno, ioreq_event *req, int exact, int direction);double disk_get_servtime(int diskno, ioreq_event *req, int checkcache, double maxtime);double disk_get_seektime(int diskno, ioreq_event *req, int checkcache, double maxtime);double disk_get_acctime(int diskno, ioreq_event *req, double maxtime);void disk_bus_delay_complete(int devno, ioreq_event *curr, int sentbusno);void disk_bus_ownership_grant(int devno, ioreq_event *curr, int busno, double arbdelay);/* default disk dev header */extern struct device_header disk_hdr_initializer;int disk_load_syncsets(struct lp_block *b);int disk_setup_mapping(struct disk *d);#endif /* DISKSIM_DISK_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -