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

📄 disksim_disk.h

📁 目前最精确的磁盘模拟器的第3版
💻 H
📖 第 1 页 / 共 2 页
字号:
  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 + -