亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? libparam.h

?? disksim是一個非常優秀的磁盤仿真工具
?? H
字號:
/* libparam (version 1.0) * 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.   */#ifndef _LIBPARAM_LIBPARAM_H#define _LIBPARAM_LIBPARAM_H#ifdef __cplusplusextern "C" {#endif#include <stdio.h>struct lp_block;#define MAX_PARAM_LEN 1024struct lp_varspec {  char *name;  int type;   /* actually lp_type_t */  int req;    /* is this variable required? */};/* types of config parameters  * builtin types have numbers less than 0; modules have numbers >= 0 */typedef enum {   BLOCK = -1,  S     = -2,  I     = -3,  D     = -4,  LIST  = -5,  TOPOSPEC = -6} lp_type_t;extern char *lp_builtin_names[];/* #define MAX_BUILTIN_TYPE TOPOSPEC */// #include "modules/modules.h"struct lp_value;struct lp_list;struct lp_list *lp_list_add(struct lp_list *l, 			    struct lp_value *v);// invariant: values not sparsestruct lp_list {  char *source_file;  struct lp_value **values;  /* allocated size of values */  int values_len;   /* number of non-NULL values */  int values_pop;  // for pretty-printing -- print a newline in between this many  // entries  int linelen;};struct lp_topospec {   char *source_file;  char *type;   char *name;   struct lp_list *l; };struct lp_value {  char *source_file;  union {    char *s;     int i;    double d;    struct lp_block *b;    struct lp_list *l;    struct { struct lp_topospec *l; int len; } t;  } v;  lp_type_t t;};// create valuesstruct lp_value *lp_new_intv(int);struct lp_value *lp_new_doublev(double);struct lp_value *lp_new_stringv(char *);struct lp_value *lp_new_listv(struct lp_list *);struct lp_value *lp_new_blockv(struct lp_block *);// constructorsstruct lp_list *lp_new_list(void);struct lp_block *lp_new_block(void);struct lp_param {  char *source_file;  char *name;   struct lp_value *v;};struct lp_param *lp_new_param(char *name, char *source, struct lp_value *);struct lp_list *lp_new_intlist(int *l, int len);/* super is NULL for builtin types, e.g. DEVICEBLOCK */struct lp_subtype {  char *super;  char *sub;  struct lp_block *spec; /* parse tree for sub */};struct lp_inst {  char *source_file;  struct lp_list *l;  char *name;};// "tlt == Top Level Thing"struct lp_tlt {  char *source_file;  enum {    TLT_BLOCK,    TLT_TOPO,    TLT_INST  } what;  union {    struct lp_inst *inst;    struct lp_block *block;    struct lp_topospec *topo;  } it;};typedef int*(*lp_modloader_t)(struct lp_block *, int);typedef void(*lp_paramloader_int)(void *, int);typedef void(*lp_paramloader_double)(void *, double);typedef void(*lp_paramloader_string)(void *, char *);typedef void(*lp_paramloader_block)(void *, struct lp_block *);typedef void(*lp_paramloader_list)(void *, struct lp_list *);/*  typedef union { *//*    lp_paramloader_int i; *//*    lp_paramloader_double d; *//*    lp_paramloader_string s; *//*    lp_paramloader_block blk; *//*    lp_paramloader_list l; *//*  } lp_paramloader_union; */// takes a bitvector for the params loaded thus far, returns// the number of a needed dep or -1 if there are nonetypedef int(*lp_paramdep_t)(char *);/* map subtype names to parent types */extern struct lp_subtype **lp_typetbl;extern int lp_typetbl_len;extern struct lp_tlt **lp_tlts;extern int lp_tlts_len;struct lp_tlt *lp_new_tl_topo(struct lp_topospec *, char *);struct lp_tlt *lp_new_tl_inst(struct lp_inst *, char *);struct lp_tlt *lp_new_tl_block(struct lp_block *, char *);void lp_add_tlt(struct lp_tlt *);void lp_init_typetbl(void);void lp_release_typetbl(void);int lp_add_type(char *newt, char *parent);char *lp_lookup_type(char *name, int *);char *lp_lookup_base_type(char *name, int *n);/* apply these macros to a struct lp_param *   */#define PTYPE(x) ((x)->v->t)#define IVAL(x) ((x)->v->v.i)#define DVAL(x) ((x)->v->v.d)#define SVAL(x) ((x)->v->v.s)#define BVAL(x) ((x)->v->v.b)#define LVAL(x) ((x)->v->v.l)/* extract the type of a block.  apply this to a struct lp_block *  */#define BTYPE(x) ((x)->type)/* some handy macros for doing dumb stuff *//* is x in [y,z] */#define RANGE(x,y,z) (((x) >= (y)) && ((x) <= (z)))#define BADVALMSG(N) fprintf(stderr, "*** error: Bad value for %s\n", N);void load_block(struct lp_block *);void load_topo(struct lp_topospec *t, int);// client must provide one of thesetypedef void(*lp_topoloader_t)(struct lp_topospec *t, int);void lp_register_topoloader(lp_topoloader_t);struct lp_block_val {  struct lp_param **params;  int params_len;};/* need mod_t */struct lp_block {  char *source_file;  char *name;  int type;  lp_modloader_t loader;    struct lp_param **params;  int params_len;};void push_file(FILE *f);int disksim_paramwrap(void);struct lp_input_file {     struct yy_buffer_state *b;     int lineno;     char *filename;};  extern struct lp_input_file input_files[];extern int top_file;extern FILE *libparamin;  // extern struct yy_buffer_state *yy_current_buffer;extern char *lp_filename;extern char *lp_cwd;#define LP_MAX_SP 128extern char **lp_searchpath;extern int lp_searchpath_len;extern int lp_lineno;int *lp_override_inst(struct lp_block *b, 	      char *cname, 	      lp_modloader_t loader,	      char **overrides,	      int overrides_len);typedef void(*lp_load_callback)(void *, int *);// a module descriptionstruct lp_mod {  // unique; used in input files  char *name;   // the variable specs for this module  struct lp_varspec *modvars;  int modvars_len;    // loader function  lp_modloader_t fn;  // when we successfully instantiate an object of this type,   // we will call <callback>(ctx, ptr) where ptr is a pointer to the object  // why not do this in the loader?  because the loader might come from  // libdiskmodel and as a user of it, you want to do something with  // each dm_disk without modifying the dm code itself.  lp_load_callback callback;  void *ctx;    // array of per-parameter loader functions  // index with foo_mod_t  void **param_loaders;  lp_paramdep_t *param_deps;};extern struct lp_mod **lp_modules;// register a module// returns -1 on errorint lp_register_module(struct lp_mod *);// extern FILE *outputfile;// i.e. disksim command-line parameter overridesextern char **lp_overrides;extern int lp_overrides_len;void unparse_param(struct lp_param *p, FILE *outfile);void unparse_list(struct lp_list *l, FILE *outfile);void unparse_block(struct lp_block *b, FILE *outfile);void unparse_value(struct lp_value *v, FILE *outfile);void unparse_topospec(struct lp_topospec *t, FILE *outfile);void unparse_type(int, FILE *);void lp_unparse_tlts(struct lp_tlt **, int, FILE *, char *);// int disksim_loadparams(char *inputfile);struct lp_block *lp_lookup_spec(char *name);int lp_setup_subtype(struct lp_block *parent,		     struct lp_block *child);int lp_add_param(struct lp_param ***b, int *plen,		 struct lp_param *p);int lp_param_name(int, char *);int lp_mod_name(char *);// puts a pointer to an array of top level things into the 2nd argument,// the length of that array in the 3rd arg// 5th arg is an array of overrides (devspec, paramname, newval)// 6th arg is number of overridesint lp_loadfile(FILE *in, struct lp_tlt ***, int *, char *, char **, int);// free the parse tree referenced by pt containing len tltsvoid lp_destroy(struct lp_tlt **pt, int len);int *lp_instantiate(char *targ, char *name);intlp_loadparams(void *it, struct lp_block *b, struct lp_mod *m);#define LP_PATH_MAX 1024// search the path for name// returns a pathname (caller-frees) or 0 if it isn't foundchar *lp_search_path(char *cwd, char *name);int lp_inst_list(struct lp_inst *i);int dumb_split(char *s, char **t, int *i);    #ifdef __cplusplus}#endif#endif // _LIBPARAM_LIBPARAM_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲黄色免费网站| 亚洲va国产va欧美va观看| 6080yy午夜一二三区久久| 一本色道**综合亚洲精品蜜桃冫| 成人午夜激情片| av成人免费在线| 日本道在线观看一区二区| 色婷婷av久久久久久久| 91影院在线观看| 日本乱人伦aⅴ精品| 欧美在线不卡视频| 6080yy午夜一二三区久久| 91精品欧美综合在线观看最新| 欧美视频精品在线观看| 欧美精品免费视频| 久久伊99综合婷婷久久伊| 国产欧美日韩卡一| 一区二区三区在线看| 亚洲成人一二三| 九色porny丨国产精品| 国产精品一二三区| 91蜜桃免费观看视频| 欧美性大战久久久| 精品国产精品一区二区夜夜嗨| 久久伊99综合婷婷久久伊| 中文字幕日本不卡| 污片在线观看一区二区| 国产精品一区免费视频| 91久久线看在观草草青青| 5566中文字幕一区二区电影| 久久尤物电影视频在线观看| 亚洲日本va午夜在线影院| 视频一区二区国产| 成人美女视频在线看| 欧美日韩在线播| 久久九九99视频| 午夜精品久久久久久久| 成人丝袜18视频在线观看| 在线看日本不卡| 国产亚洲一区字幕| 午夜激情久久久| 懂色av一区二区在线播放| 欧美日韩免费高清一区色橹橹| 久久久精品免费观看| 亚洲一区二区影院| 成人av资源在线| 日韩免费高清电影| 亚洲线精品一区二区三区 | 欧美性色aⅴ视频一区日韩精品| 日韩色在线观看| 亚洲手机成人高清视频| 国产伦理精品不卡| 日韩欧美精品在线| 亚洲 欧美综合在线网络| 99re成人精品视频| 国产欧美日韩久久| 国内一区二区视频| 欧美一区二区三区四区视频| 国产精品成人免费在线| 国内精品视频666| 日韩免费视频一区| 美女视频黄a大片欧美| 欧美日韩亚洲综合在线 | 美女视频黄久久| 欧美日韩一区二区在线观看视频| 国产欧美va欧美不卡在线| 精品在线亚洲视频| 91精品午夜视频| 婷婷六月综合网| 4438x成人网最大色成网站| 一区二区三区四区五区视频在线观看 | eeuss鲁一区二区三区| 久久一区二区三区四区| 国产美女av一区二区三区| 精品日韩在线一区| 国产精品一区一区三区| 久久久五月婷婷| 国产福利91精品| 中文字幕欧美日本乱码一线二线| 国产一区二区三区日韩| 久久综合色婷婷| 国产99久久精品| 国产精品久久午夜夜伦鲁鲁| av影院午夜一区| 亚洲香蕉伊在人在线观| 欧美色网站导航| 蜜桃精品在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲婷婷在线视频| 成人视屏免费看| 中文字幕av一区 二区| 99久久久久免费精品国产 | 日韩电影免费一区| 久久女同精品一区二区| 成人免费视频国产在线观看| 国产精品蜜臀av| 欧美性大战xxxxx久久久| 天天综合天天综合色| 日韩欧美国产一二三区| 国产精品99久| 一区二区三区在线播| 日韩一区二区三区精品视频| 精品一区二区三区免费| 国产精品欧美久久久久无广告| 99久久精品国产毛片| 三级一区在线视频先锋 | 欧美日免费三级在线| 久久超碰97人人做人人爱| 久久精品亚洲精品国产欧美kt∨| 99久久er热在这里只有精品66| 性做久久久久久久免费看| 久久久久高清精品| 欧美三级日韩三级国产三级| 国产麻豆9l精品三级站| 亚洲一二三区在线观看| 久久亚洲二区三区| 欧美日韩一级视频| 成人免费毛片高清视频| 日韩专区一卡二卡| 中文字幕国产精品一区二区| 欧美性受xxxx黑人xyx| 成人av电影在线| 日韩av一区二| 亚洲综合免费观看高清完整版在线 | 欧美日韩视频在线一区二区| 国产真实乱对白精彩久久| 亚洲影院理伦片| 国产精品欧美经典| 久久这里都是精品| 欧美一区二区三区免费大片| 91久久国产最好的精华液| 成人永久看片免费视频天堂| 久久国产乱子精品免费女| 五月开心婷婷久久| 亚洲一区av在线| 亚洲美女偷拍久久| 亚洲欧美在线高清| 国产欧美日产一区| 国产亚洲一区二区三区在线观看| 欧美一区二区视频网站| 在线观看日韩高清av| 色综合色综合色综合| 波多野结衣在线aⅴ中文字幕不卡| 久久69国产一区二区蜜臀| 爽好久久久欧美精品| 亚洲综合色网站| 亚洲精品国产无天堂网2021| 亚洲欧洲日韩一区二区三区| 中文字幕电影一区| 国产日韩欧美a| 国产欧美一区二区三区沐欲| 久久日韩精品一区二区五区| 日韩免费高清视频| 欧美精品一区二区三区蜜臀| 欧美不卡视频一区| 精品电影一区二区| 久久精品无码一区二区三区| 久久久久国产精品麻豆ai换脸| 久久久久99精品国产片| 国产午夜精品福利| 中文字幕av一区二区三区免费看 | 欧美一级专区免费大片| 91精品国产欧美一区二区| 欧美一区二区成人| 久久久午夜精品理论片中文字幕| 久久久亚洲午夜电影| 国产精品无圣光一区二区| 最新国产精品久久精品| 亚洲免费资源在线播放| 无码av免费一区二区三区试看 | 国产精品1区二区.| 91在线国内视频| 欧美午夜理伦三级在线观看| 欧美精品久久天天躁| 精品成人在线观看| 亚洲欧美综合色| 视频精品一区二区| 国产成人免费视频网站高清观看视频 | 欧美最新大片在线看| 91精品国产美女浴室洗澡无遮挡| 精品少妇一区二区三区在线播放 | 免费的国产精品| 国产精品99久| 欧美日韩精品一区二区在线播放| 日韩一二三四区| 中文字幕一区二区三区在线不卡| 亚洲午夜日本在线观看| 国产美女在线精品| 欧美日韩国产综合一区二区三区| 欧美岛国在线观看| 一区二区在线观看免费| 老汉av免费一区二区三区| 一本大道久久精品懂色aⅴ| 精品国产凹凸成av人网站| 亚洲激情自拍视频| 国产精品夜夜嗨| 3d动漫精品啪啪一区二区竹菊| 国产亚洲欧美日韩日本| 日韩精品午夜视频| 91国偷自产一区二区开放时间|