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

📄 disksim_iodriver.h

📁 disksim是一个非常优秀的磁盘仿真工具
💻 H
字号:
/* * DiskSim Storage Subsystem Simulation Environment (Version 4.0) * Revision Authors: John Bucy, Greg Ganger * Contributors: John Griffin, Jiri Schindler, Steve Schlosser * * Copyright (c) of Carnegie Mellon University, 2001-2008. * * This software is being provided by the copyright holders under the * following license. By obtaining, using and/or copying this software, * you agree that you have read, understood, and will comply with the * following terms and conditions: * * Permission to reproduce, use, and prepare derivative works of this * software is granted provided the copyright and "No Warranty" statements * are included with all reproductions and derivative works and associated * documentation. This software may also be redistributed without charge * provided that the copyright and "No Warranty" statements are included * in all redistributions. * * NO WARRANTY. THIS SOFTWARE IS FURNISHED ON AN "AS IS" BASIS. * CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER * EXPRESSED OR IMPLIED AS TO THE MATTER INCLUDING, BUT NOT LIMITED * TO: WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY * OF RESULTS OR RESULTS OBTAINED FROM USE OF THIS SOFTWARE. CARNEGIE * MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT * TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT. * COPYRIGHT HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE * OR DOCUMENTATION. * *//* * DiskSim Storage Subsystem Simulation Environment (Version 2.0) * Revision Authors: Greg Ganger * Contributors: Ross Cohen, John Griffin, Steve Schlosser * * Copyright (c) of Carnegie Mellon University, 1999. * * Permission to reproduce, use, and prepare derivative works of * this software for internal use is granted provided the copyright * and "No Warranty" statements are included with all reproductions * and derivative works. This software may also be redistributed * without charge provided that the copyright and "No Warranty" * statements are included in all redistributions. * * NO WARRANTY. THIS SOFTWARE IS FURNISHED ON AN "AS IS" BASIS. * CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF ANY KIND, EITHER * EXPRESSED OR IMPLIED AS TO THE MATTER INCLUDING, BUT NOT LIMITED * TO: WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY * OF RESULTS OR RESULTS OBTAINED FROM USE OF THIS SOFTWARE. CARNEGIE * MELLON UNIVERSITY DOES NOT MAKE ANY WARRANTY OF ANY KIND WITH RESPECT * TO FREEDOM FROM PATENT, TRADEMARK, OR COPYRIGHT INFRINGEMENT. *//* * DiskSim Storage Subsystem Simulation Environment * Authors: Greg Ganger, Bruce Worthington, Yale Patt * * Copyright (C) 1993, 1995, 1997 The Regents of the University of Michigan  * * This software is being provided by the copyright holders under the * following license. By obtaining, using and/or copying this software, * you agree that you have read, understood, and will comply with the * following terms and conditions: * * Permission to use, copy, modify, distribute, and sell this software * and its documentation for any purpose and without fee or royalty is * hereby granted, provided that the full text of this NOTICE appears on * ALL copies of the software and documentation or portions thereof, * including modifications, that you make. * * THIS SOFTWARE IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, * BUT NOT LIMITATION, COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR * THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY * THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT * HOLDERS WILL BEAR NO LIABILITY FOR ANY USE OF THIS SOFTWARE OR * DOCUMENTATION. * *  This software is provided AS IS, WITHOUT REPRESENTATION FROM THE * UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND * WITHOUT WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER * EXPRESSED OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS * OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE FOR ANY DAMAGES, * INCLUDING SPECIAL , INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, * WITH RESPECT TO ANY CLAIM ARISING OUT OF OR IN CONNECTION WITH THE * USE OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS * BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF SUCH DAMAGES * * The names and trademarks of copyright holders or authors may NOT be * used in advertising or publicity pertaining to the software without * specific, written prior permission. Title to copyright in this software * and any associated documentation will at all times remain with copyright * holders. */#ifndef DISKSIM_IODRIVER_H#define DISKSIM_IODRIVER_H#include "config.h"#include "disksim_iosim.h" // for device #include "disksim_stat.h"  // for statgen/* Device driver types */#define STANDALONE	1/* & NOTSTANDALONE, which corresponds to a driver that is actually part of *//* the process-flow model (i.e., a system-level simulation rather than a   *//* standalone storage subsystem simulation). *//* Device driver ctlr flags */#define DRIVER_C700		0x2#define DRIVER_CTLR_BUSY	0x4/* Device driver computation times */#define IODRIVER_IMMEDSCHED_TIME		0.0#define IODRIVER_WRITE_DISCONNECT_TIME		0.0#define IODRIVER_READ_DISCONNECT_TIME		0.0#define IODRIVER_RECONNECT_TIME			0.0#define IODRIVER_BASE_COMPLETION_TIME		0.0#define IODRIVER_COMPLETION_RESPTODEV_TIME	0.0#define IODRIVER_COMPLETION_RESPTOSCHED_TIME	0.0#define IODRIVER_COMPLETION_SCHEDTOEND_TIME	0.0#define IODRIVER_COMPLETION_SCHEDTOWAKEUP_TIME	0.0#define IODRIVER_COMPLETION_WAKEUPTOEND_TIME	0.0#define IODRIVER_COMPLETION_RESPTOWAKEUP_TIME	0.0#define IODRIVER_COMPLETION_RESPTOREQ_TIME	0.0    /* e.g., Software RAID *//* Special Constant Queue/Access times */#define IODRIVER_TRACED_ACCESS_TIMES	-1.0#define IODRIVER_TRACED_QUEUE_TIMES	-2.0#define IODRIVER_TRACED_BOTH_TIMES	-3.0typedef struct iodriver {  int		type;  int		usequeue;  int		numoutbuses;  int		outbus;  double	consttime;     /* Use value if positive, or traced if neg. */  double	scale;  int		numdevices;  int		numctlrs;  struct ioq *	queue;  device *	devices;  ctlr *	ctlrs;  char        *name;} iodriver;typedef struct iodriver_info {   int numiodrivers;   iodriver **iodrivers;   int iodrivers_len;   int numsysorgs;   struct logorg **sysorgs;   int sysorgs_len;   struct ioq *overallqueue;   int drv_printsizestats;   int drv_printlocalitystats;   int drv_printblockingstats;   int drv_printinterferestats;   int drv_printqueuestats;   int drv_printcritstats;   int drv_printidlestats;   int drv_printintarrstats;   int drv_printstreakstats;   int drv_printstampstats;   int drv_printperdiskstats;   statgen emptyqueuestats;   statgen initiatenextstats;} iodriver_info_t;/* one remapping #define for each variable in iodriver_info_t */#define numiodrivers            (disksim->iodriver_info->numiodrivers)#define iodrivers               (disksim->iodriver_info->iodrivers)#define numsysorgs              (disksim->iodriver_info->numsysorgs)#define sysorgs                 (disksim->iodriver_info->sysorgs)#define overallqueue            (disksim->iodriver_info->overallqueue)#define drv_printsizestats      (disksim->iodriver_info->drv_printsizestats)#define drv_printlocalitystats  (disksim->iodriver_info->drv_printlocalitystats)#define drv_printblockingstats  (disksim->iodriver_info->drv_printblockingstats)#define drv_printinterferestats (disksim->iodriver_info->drv_printinterferestats)#define drv_printqueuestats     (disksim->iodriver_info->drv_printqueuestats)#define drv_printcritstats      (disksim->iodriver_info->drv_printcritstats)#define drv_printidlestats      (disksim->iodriver_info->drv_printidlestats)#define drv_printintarrstats    (disksim->iodriver_info->drv_printintarrstats)#define drv_printstreakstats    (disksim->iodriver_info->drv_printstreakstats)#define drv_printstampstats     (disksim->iodriver_info->drv_printstampstats)#define drv_printperdiskstats   (disksim->iodriver_info->drv_printperdiskstats)#define emptyqueuestats         (disksim->iodriver_info->emptyqueuestats)#define initiatenextstats       (disksim->iodriver_info->initiatenextstats)/* exported disksim_iodriver.c functions */void    iodriver_read_toprints (FILE *parfile);void    iodriver_read_specs (FILE *parfile);void    iodriver_read_physorg (FILE *parfile);void    iodriver_read_logorg (FILE *parfile);void    iodriver_param_override (char *paramname, char *paramval, int first, int last);void    iodriver_sysorg_param_override (char *paramname, char *paramval, int first, int last);void    iodriver_setcallbacks (void);void    iodriver_initialize (int standalone);void    iodriver_resetstats (void);void    iodriver_printstats (void);void    iodriver_cleanstats (void);event * iodriver_request (int iodriverno, ioreq_event *curr);void    iodriver_schedule (int iodriverno, ioreq_event *curr);double  iodriver_tick (void);double  iodriver_raise_priority (int iodriverno, int opid, int devno, int blkno, void *chan);void    iodriver_interrupt_arrive (int iodriverno, intr_event *intrp);void    iodriver_access_complete (int iodriverno, intr_event *intrp);void    iodriver_respond_to_device (int iodriverno, intr_event *intrp);void    iodriver_interrupt_complete (int iodriverno, intr_event *intrp);void    iodriver_trace_request_start (int iodriverno, ioreq_event *curr);int iodriver_load_logorg(struct lp_block *b);int load_iodriver_topo(struct lp_topospec *t, int len);void iodriver_cleanup(void);#endif /* DISKSIM_IODRIVER_H */

⌨️ 快捷键说明

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