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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? layout_g4_load.c

?? disksim是一個非常優(yōu)秀的磁盤仿真工具
?? C
字號:
/* diskmodel (version 1.1) * Authors: John Bucy, Greg Ganger * Contributors: John Griffin, Jiri Schindler, Steve Schlosser * * Copyright (c) of Carnegie Mellon University, 2003-2005 * * 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.   */#include "layout_g4.h"#include "layout_g4_private.h"#include <libparam/libparam.h>#include <libddbg/libddbg.h>#include <stdlib.h>#include "modules/dm_layout_g4_param.h"// offset of element p in array base of size sstatic intaoffset(void *base, void *p, int s) {  return (p - base) / s;}struct lp_list *marshal_g4_remaps(struct remap *remaps, int n) {  struct lp_list *l = lp_new_list();  int i;  l->linelen = 6;  for(i = 0; i < n; i++) {    struct lp_value *v;    struct remap *ri = &remaps[i];    v = lp_new_intv(ri->off);    lp_list_add(l,v);    v = lp_new_intv(ri->count);    lp_list_add(l,v);    v = lp_new_intv(ri->dest.cyl);    lp_list_add(l,v);    v = lp_new_intv(ri->dest.head);    lp_list_add(l,v);    v = lp_new_intv(ri->dest.sector);    lp_list_add(l,v);    v = lp_new_intv(ri->spt);    lp_list_add(l,v);  }  return l;}struct lp_list *marshal_g4_slip(struct slip *slips, int n) {  struct lp_list *l = lp_new_list();  int i = 0;  l->linelen = 2;  if(slips[0].off == 0 && slips[0].count == 0) {    i = 1;  }  for( ; i < n; i++) {    struct lp_value *v;    v = lp_new_intv(slips[i].off);    lp_list_add(l,v);    v = lp_new_intv(slips[i].count - slips[i-1].count);    lp_list_add(l,v);  }  return l;}struct lp_list *marshal_g4_tp(struct track *t, int len) {  struct lp_list *l = lp_new_list();  int i;  l->linelen = 3;  for(i = 0; i < len; i++) {    struct lp_value *v;    v = lp_new_intv(t[i].low);    lp_list_add(l, v);    v = lp_new_intv(t[i].high);    lp_list_add(l, v);    v = lp_new_intv(t[i].spt);    lp_list_add(l, v);  }  return l;}struct lp_list *marshal_g4_idx_ent(struct idx_ent *e, 		   struct idx *idx, 		   struct track *track,		   struct lp_list *l) {  int i;  struct lp_value *v;  char *ctstr; // child type  int coffset; // offset of child in its array  printf("%s() lbn %d alen %f off %f\n", __func__, e->lbn,	 dm_angle_itod(e->alen), dm_angle_itod(e->off));  v = lp_new_intv(e->lbn);  lp_list_add(l, v);  v = lp_new_intv(e->cyl);  lp_list_add(l, v);  v = lp_new_doublev(dm_angle_itod(e->off));  lp_list_add(l, v);  v = lp_new_intv(e->len);  lp_list_add(l, v);  v = lp_new_intv(e->cyllen);  lp_list_add(l, v);  v = lp_new_doublev(dm_angle_itod(e->alen));  lp_list_add(l, v);  v = lp_new_intv(e->runlen);  lp_list_add(l, v);  v = lp_new_intv(e->cylrunlen);  lp_list_add(l, v);  switch(e->childtype) {  case IDX:    ctstr = "IDX";    coffset = aoffset(idx, e->child.i, sizeof(*e->child.i));    break;  case TRACK:    ctstr = "TRACK";    coffset = aoffset(track, e->child.t, sizeof(*e->child.t));    break;  default: ddbg_assert(0); break;  }  v = lp_new_stringv(ctstr);  lp_list_add(l, v);  v = lp_new_intv(coffset);  lp_list_add(l, v);  if(e->childtype == TRACK) {    v = lp_new_intv(e->head);    lp_list_add(l, v);  }  return l;}struct lp_list *marshal_g4_idx(struct idx *idx, int n, struct idx *idxen, struct track *track) {  int i, j;  struct lp_list *l = lp_new_list();  l->linelen = 1;  for(i = 0; i < n; i++) {    struct idx *ii = &idx[i];    struct lp_list *lent = lp_new_list();    struct lp_value *vlent = lp_new_listv(lent);    // this breaks if an index has a mixture of track and index    // children    if(idx[i].ents[0].childtype == TRACK) {      lent->linelen = 11;    }    else {      lent->linelen = 10;    }    for(j = 0; j < ii->ents_len; j++) {      marshal_g4_idx_ent(&ii->ents[j],  idxen, track, lent);    }    lp_list_add(l, vlent);  }  return l;}struct lp_block *marshal_layout_g4(struct dm_layout_g4 *lin) {  struct lp_block *b = lp_new_block();  struct lp_list *l;  struct lp_value *v;  struct lp_param *p;  b->source_file = 0;  b->name = 0;  lp_lookup_type("dm_layout_g4", &b->type);  l = marshal_g4_tp(lin->track, lin->track_len);  v = lp_new_listv(l);  p = lp_new_param("TP", 0, v);  lp_add_param(&b->params, &b->params_len, p);  l = marshal_g4_idx(lin->idx, lin->idx_len, lin->idx, lin->track);  v = lp_new_listv(l);  p = lp_new_param("IDX", 0, v);  lp_add_param(&b->params, &b->params_len, p);  l = marshal_g4_slip(lin->slips, lin->slips_len);  v = lp_new_listv(l);  p = lp_new_param("Slips", 0, v);  lp_add_param(&b->params, &b->params_len, p);  l = marshal_g4_remaps(lin->remaps, lin->remaps_len);  v = lp_new_listv(l);  p = lp_new_param("Remaps", 0, v);  lp_add_param(&b->params, &b->params_len, p);  return b;}#if 0int **do_ptol_map(struct rect *r, int surfs){  int i;  int acc = 0;  int cyls = r->ents[0].cyl;  struct rect_ent *ri;  int **result;  for(i = 0; i < r->ents_len; i++) {    if(r->ents[i].cyl > cyls) {      cyls = r->ents[i].cyl;    }  }  cyls = cyls - r->ents[0].cyl + 1;  result = calloc((cyls + 1) * surfs , sizeof(int));  for(i = 0; i < cyls; i++) {    result[i] = &result[(i+1) * surfs];  }  for(i = 0, ri = &r->ents[0]; i < r->ents_len; i++, ri++) {    result[ri->cyl][ri->surf] = acc;    acc += ri->len;  }  return result;}#endif#define TP_FIELDS 3int g4_load_tp(struct dm_layout_g4 *r,	   struct lp_list *l){  int i;    ddbg_assert(r->track_len == 0);  r->track_len = l->values_pop / TP_FIELDS;  r->track = calloc(r->track_len, sizeof(*r->track));  for(i = 0; i < r->track_len; i++) {    r->track[i].low = l->values[TP_FIELDS*i]->v.i;    r->track[i].high = l->values[TP_FIELDS*i+1]->v.i;    r->track[i].spt = l->values[TP_FIELDS*i+2]->v.i;    r->track[i].sw = dm_angle_dtoi(1.0 / r->track[i].spt);  }  return 0;}// this is now the minimum since they're variable lenth#define IDX_FIELDS 10int g4_load_idx(struct dm_layout_g4 *r,	   struct lp_list *l){  int i, j;  // offset in l  int loff = 0;    r->idx_len = l->values_pop;  r->idx = calloc(r->idx_len, sizeof(*r->idx));  for(i = 0; i < r->idx_len; i++) {    int reallen = 0;    struct idx *opi = &r->idx[i];    struct lp_list *li = l->values[i]->v.l;    struct idx_ent *entj;    loff = 0;        // this is a little sloppy yields an upper bound, not an    // exact number    opi->ents_len = li->values_pop / IDX_FIELDS;    opi->ents = calloc(opi->ents_len, sizeof(*opi->ents));    for(j = 0, entj = opi->ents; 	j < opi->ents_len && loff < li->values_pop; 	j++, entj++)     {      int off;      entj->lbn = li->values[loff++]->v.i;      entj->cyl = li->values[loff++]->v.i;      entj->off = dm_angle_dtoi(li->values[loff++]->v.d);      entj->len = li->values[loff++]->v.i;      entj->cyllen = li->values[loff++]->v.i;      entj->alen = dm_angle_dtoi(li->values[loff++]->v.d);      entj->runlen = li->values[loff++]->v.i;      entj->cylrunlen = li->values[loff++]->v.i;      if(!strcmp(li->values[loff]->v.s, "TRACK")) {	loff++;	entj->childtype = TRACK;	off = li->values[loff++]->v.i;	ddbg_assert(off < r->track_len);	entj->child.t = &r->track[off];	entj->head = li->values[loff++]->v.i;      }      else if(!strcmp(li->values[loff]->v.s, "IDX")) {	loff++;	entj->childtype = IDX;	// XXX weird recursion	off = li->values[loff++]->v.i;	ddbg_assert(off < r->idx_len);	entj->child.i = &r->idx[off];      }      else {	ddbg_assert(0);      }      reallen++;    }    opi->ents_len = reallen;  }  return 0;}#define SLIP_FIELDS 2int g4_load_slips(struct dm_layout_g4 *r,	      struct lp_list *l){  int i;  int tot = 0;  r->slips_len = l->values_pop / SLIP_FIELDS;  r->slips_len; // add "0" entry  // allocate one extra; see below  r->slips = calloc(r->slips_len+1, sizeof(*r->slips));  for(i = 0; i < r->slips_len; i++) {    r->slips[i].off = l->values[SLIP_FIELDS * i]->v.i;    tot += l->values[SLIP_FIELDS * i + 1]->v.i;    r->slips[i].count = tot;  }  // 0th lbn could be slipped  if(r->slips[0].off > 0) {     memmove(r->slips + 1, r->slips, r->slips_len * sizeof(*r->slips));    r->slips[0].off = 0;    r->slips[0].count = 0;    r->slips_len++;  }  return 0;}#define REMAP_FIELDS 6int g4_load_remaps(struct dm_layout_g4 *r,	       struct lp_list *l){  int i;  r->remaps_len = l->values_pop / REMAP_FIELDS;  r->remaps = calloc(r->remaps_len, sizeof(*r->remaps));  for(i = 0; i < r->remaps_len; i++) {    r->remaps[i].off = l->values[REMAP_FIELDS * i]->v.i;    r->remaps[i].count = l->values[REMAP_FIELDS * i + 1]->v.i;    r->remaps[i].dest.cyl = l->values[REMAP_FIELDS * i + 2]->v.i;    r->remaps[i].dest.head = l->values[REMAP_FIELDS * i + 3]->v.i;    r->remaps[i].dest.sector = l->values[REMAP_FIELDS * i + 4]->v.i;    r->remaps[i].spt = l->values[REMAP_FIELDS * i + 5]->v.i;  }  return 0;}struct dm_layout_if *dm_layout_g4_loadparams(struct lp_block *b,			struct dm_disk_if *parent){  int i;  struct dm_layout_g4 *result = calloc(1, sizeof(*result));    result->hdr = layout_g4;  result->parent = parent;  lp_loadparams(result, b, &dm_layout_g4_mod);  // XXX ick  result->root = &result->idx[result->idx_len - 1];  // XXX shouldn't do this  parent->layout = (struct dm_layout_if *)result;  return (struct dm_layout_if *)result;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品伦理一区二区| 国产精品久久久99| 欧美高清视频一二三区 | 国产精品亚洲午夜一区二区三区| 亚洲国产精品尤物yw在线观看| 亚洲一区二区四区蜜桃| 亚洲桃色在线一区| 日韩成人免费电影| 久久精品国产色蜜蜜麻豆| 精品一区二区影视| 国产成人免费网站| 欧洲av在线精品| 欧美日韩国产首页在线观看| 7799精品视频| 久久久一区二区| 亚洲免费观看高清完整版在线观看熊| 亚洲永久精品国产| 亚洲电影在线免费观看| 日韩精品成人一区二区在线| 无码av免费一区二区三区试看| 捆绑紧缚一区二区三区视频 | 欧美乱妇23p| 国产女人水真多18毛片18精品视频 | 日韩一区二区高清| 国产精品久久久久四虎| 天堂影院一区二区| 成人免费av在线| 欧美丰满嫩嫩电影| 久久久综合激的五月天| 亚洲小少妇裸体bbw| 成人午夜大片免费观看| 欧美不卡在线视频| 日韩精品一级中文字幕精品视频免费观看| 国产成人a级片| 欧美成人福利视频| 麻豆视频一区二区| 日韩三级.com| 人妖欧美一区二区| 91久久线看在观草草青青| 国产精品久久午夜夜伦鲁鲁| 蜜臀91精品一区二区三区 | 亚洲国产精品传媒在线观看| 蜜桃精品视频在线| av爱爱亚洲一区| 亚洲激情男女视频| 色婷婷久久综合| 一级精品视频在线观看宜春院| 成人黄色小视频| 中文字幕一区二区三区精华液 | 亚洲免费毛片网站| 精品视频免费在线| 日韩av网站在线观看| 日韩午夜在线影院| 粉嫩绯色av一区二区在线观看| 中文字幕av一区二区三区高| 99精品久久99久久久久| 中文字幕中文字幕一区| 欧美午夜影院一区| 国产精品99久久久久久久vr| 国产精品国产三级国产普通话蜜臀 | 欧美色图在线观看| 久久精品国产在热久久| 亚洲欧洲一区二区三区| 色综合色综合色综合| 亚洲国产精品欧美一二99| 国产日韩欧美在线一区| 欧美日韩你懂得| www.综合网.com| 奇米色一区二区三区四区| 日韩精品专区在线影院观看| 成人做爰69片免费看网站| 一区二区三区国产精品| 日韩欧美一卡二卡| 欧美日韩一级视频| 在线看日韩精品电影| 国产98色在线|日韩| 日本免费新一区视频| 亚洲视频一区二区免费在线观看| 日韩精品在线一区二区| 在线观看欧美精品| 欧美日韩久久一区二区| 91丨九色丨蝌蚪富婆spa| 成人激情免费电影网址| 国产白丝网站精品污在线入口| 久久成人免费网| 免费观看在线色综合| 亚洲国产精品久久久男人的天堂| 亚洲国产精品av| 制服丝袜日韩国产| 91精品国产综合久久精品| 日韩一区二区中文字幕| 91麻豆精品久久久久蜜臀| 制服丝袜国产精品| 精品久久久久99| 久久精品视频在线看| 中文字幕精品一区| 亚洲乱码一区二区三区在线观看| 国产精品久久久久久久久搜平片| 国产色产综合色产在线视频| 国产精品污网站| 亚洲国产日韩a在线播放性色| 日韩和欧美一区二区| 久久 天天综合| 成人97人人超碰人人99| 欧美婷婷六月丁香综合色| 欧美三级中文字幕| 国产欧美一区二区三区网站| 欧美国产欧美综合| 日本va欧美va欧美va精品| 成人性生交大片免费看在线播放| 色综合一区二区| 国产午夜精品美女毛片视频| 亚洲女爱视频在线| 粉嫩欧美一区二区三区高清影视| 91视频你懂的| 日韩精品一区二区三区中文精品| 亚洲免费大片在线观看| 国产一区二区福利| 欧美一级免费大片| 一区二区久久久久久| av激情亚洲男人天堂| 久久品道一品道久久精品| 日本伊人精品一区二区三区观看方式| 91久久精品国产91性色tv| 日韩精品一区二区三区视频播放| 中文字幕日韩欧美一区二区三区| 日本va欧美va精品| 欧美军同video69gay| 亚洲一线二线三线视频| 91麻豆文化传媒在线观看| 日韩码欧中文字| 欧美在线999| 亚洲福利一区二区| 欧美午夜精品理论片a级按摩| 亚洲欧洲色图综合| 欧美色图在线观看| 午夜精品一区二区三区电影天堂 | 欧美精品一区二区三区蜜桃| 久久精品久久久精品美女| 国产日韩欧美高清在线| 国产自产高清不卡| 国产日韩欧美综合在线| 懂色av噜噜一区二区三区av| 精品国产乱码久久久久久牛牛| 久久99国产精品麻豆| 久久免费看少妇高潮| 99麻豆久久久国产精品免费优播| 亚洲欧美国产三级| 欧美一区二区三区色| 国产精品乡下勾搭老头1| 亚洲人午夜精品天堂一二香蕉| 欧美福利视频导航| 高清视频一区二区| 天堂成人免费av电影一区| 日韩欧美一二三区| 91欧美一区二区| 麻豆国产欧美一区二区三区| 国产精品久久三| 久久久久国产一区二区三区四区| 色猫猫国产区一区二在线视频| 久久99国产乱子伦精品免费| 亚洲精品免费一二三区| 26uuu国产在线精品一区二区| 色香色香欲天天天影视综合网| 亚洲国产日韩在线一区模特| 中文字幕av不卡| 精品国产免费久久 | 亚洲精选视频免费看| 久久精品视频一区二区| 精品国产髙清在线看国产毛片| 欧美色综合网站| 欧美日韩精品系列| 在线视频观看一区| 99视频一区二区| 99re这里都是精品| 99精品视频在线免费观看| 成人黄色小视频| 99视频精品在线| 日本高清免费不卡视频| 91麻豆国产福利在线观看| 色伊人久久综合中文字幕| 91成人在线精品| 欧美三级在线播放| 欧美精品777| 欧美一区2区视频在线观看| 91精品欧美福利在线观看| 欧美日本一道本在线视频| 欧美一级夜夜爽| 国产农村妇女精品| 亚洲激情图片小说视频| 日韩av中文字幕一区二区三区| 免费高清在线一区| 国v精品久久久网| 欧美日韩一卡二卡| 久久蜜桃一区二区| 亚洲在线成人精品| 国产精品一区二区果冻传媒| av一区二区三区黑人| 欧美日韩国产系列| 国产精品麻豆一区二区|