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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? layout_g2_load.c

?? disksim是一個(gè)非常優(yōu)秀的磁盤(pán)仿真工具
?? C
字號(hào):
/* 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 <libparam/libparam.h>#include <libparam/bitvector.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include "layout_g2.h"#include "modules/dm_layout_g2_param.h"extern struct dm_layout_if layout_g2;typedef enum { REVOLUTIONS, SECTORS, NONE } skew_unit_t;#include "modules/dm_layout_g2_zone_param.h"static int defects_len = 0;static struct dm_pbn *defects;voidg2_load_zones(struct dm_layout_g2 *l, 	      struct lp_list *zl);// sort by ascending trackstatic int trackcmp(const void *p1,		    const void *p2){  struct dm_layout_g2_node *n1 = (struct dm_layout_g2_node *)p1;  struct dm_layout_g2_node *n2 = (struct dm_layout_g2_node *)p2;  if(n1->loc.cyl < n2->loc.cyl) {    return -1;  }  else if(n1->loc.cyl > n2->loc.cyl) {    return 1;  }  if(n1->loc.head < n2->loc.head) {    return -1;  }  else if(n1->loc.head > n2->loc.head) {    return 1;  }  if(n1->loc.sector < n2->loc.sector) {    return -1;  }  else if(n1->loc.sector > n2->loc.sector) {    return 1;  }  return 0;}static int layout_g2_loadmap(struct dm_layout_g2 *l) {  FILE *fd;  char junk[1024];  char countstr[16];  char *mapfile;  int extentguess;  int extents_ct = 0;  struct dm_pbn pbn;  int lbn,c,h,s,count;  int lastc, lasth;  int cyls, heads;  int i, j;  // index [cyl][head], number of extents for that track  int **track_ext_counts;  struct dm_layout_g2_node *curr;  struct dm_layout_g2_node *track_extents;  struct dm_pbn *currdefect;  mapfile = lp_search_path(lp_cwd, l->mapfile);  fd = fopen(mapfile, "r");  ddbg_assert3(fd != 0, ("failed to open layout mappings file %s", l->mapfile));  // ignore first 2 lines  fgets(junk, sizeof(junk), fd);  fgets(junk, sizeof(junk), fd);  if(fscanf(fd, "%d cylinders, %*d rot, %d heads\n", &cyls, &heads) != 2) {    ddbg_assert2(0, "*** error: layout_g2_loadmap: need <cyls> ... <heads>\n");  }  //  printf("*** layout_g2: %s %s\n", vendor, model);  //  printf("*** layout_g2: %d %d\n", cyls, heads);  extentguess = cyls * heads * 2; // 0t tracks  extentguess += extentguess/4;         // if there are a lot of defects  l->ltop_map = calloc(extentguess, sizeof(struct dm_layout_g2_node));  curr = &l->ltop_map[0];  l->ptol_map = calloc(cyls, sizeof(struct dm_layout_g2_cyl));  for(i = 0; i < cyls; i++) {    l->ptol_map[i].surfaces = calloc(heads, sizeof(struct dm_layout_g2_surf));  }  track_ext_counts = calloc(cyls, sizeof(int *));  for(i = 0; i < cyls; i++) {    track_ext_counts[i] = calloc(heads, sizeof(int));  }  curr = &l->ltop_map[0];  // ltop map  while(fscanf(fd, "lbn %d --> cyl %d, head %d, sect %d, %s %d\n",	       &curr->lbn,	       &curr->loc.cyl,	       &curr->loc.head,	       &curr->loc.sector,	       countstr,	       &curr->len) == 6)   {    if(!strcmp(countstr, "seqcnt")) {      curr->len++;    }    track_ext_counts[curr->loc.cyl][curr->loc.head]++;    curr++;    extents_ct++;    l->ltop_map_len++;  }  // copy the ltop map and sort it by track  track_extents = calloc(extents_ct, sizeof(struct dm_layout_g2_node));  memcpy(track_extents, l->ltop_map, extents_ct * sizeof(struct dm_layout_g2_node));  qsort(track_extents, extents_ct, sizeof(struct dm_layout_g2_node), 	trackcmp);  // ptol map  curr = &track_extents[0];  for(i = 0; i < cyls; i++) {    for(j = 0; j < heads; j++) {      int k;      int extents_len = track_ext_counts[i][j];      l->ptol_map[i].surfaces[j].extents = calloc(extents_len, sizeof(struct dm_layout_g2_node));      l->ptol_map[i].surfaces[j].extents_len = extents_len;      for(k = 0; k < extents_len; k++) {	l->ptol_map[i].surfaces[j].extents[k] = *curr;	curr++;      }    }  }  // free the extra extent list  free(track_extents);  //  ddbg_assert2(extents_ct > (cyls * heads), "EOF on layout mappings file??");  //  l->extents_len = extents_ct;  // populate the defect list  defects = calloc(extents_ct >> 3, sizeof(struct dm_pbn));  currdefect = &defects[0];  while(fscanf(fd, "Defect at cyl %d, head %d, sect %d\n",	       &currdefect->cyl,	       &currdefect->head,	       &currdefect->sector) == 3)  {    currdefect++;    defects_len++;  }  fclose(fd);  return 0;}static void precompute_skews(struct dm_disk_if *d){  int i = 0;  struct dm_layout_g2 *l = (struct dm_layout_g2 *)d->layout;  struct dm_layout_g2_zone *z = &l->zones[0];    for(i = 0; i < d->dm_cyls; i++) {    l->ptol_map[i].first_ltop_extent = -1;  }  l->ptol_map[0].first_ltop_extent = 0;    for(i = 0 ; i < l->ltop_map_len; i++) {    int currcyl = l->ltop_map[i].loc.cyl;      if(l->ptol_map[currcyl].first_ltop_extent == -1) {      l->ptol_map[currcyl].first_ltop_extent = i;      if(z->cylhigh < currcyl) {	z++;      }            // start with the skew of the previous cylinder      if(currcyl == z->cyllow) {	l->ptol_map[currcyl].skew = z->zskew;      }      else {	l->ptol_map[currcyl + 1].skew = l->ptol_map[currcyl].skew;      }    }    if(l->ltop_map[i+1].loc.cyl != l->ltop_map[i].loc.cyl) {      l->ptol_map[currcyl+1].skew += z->csskew;    }    else if(l->ltop_map[i+1].loc.head != l->ltop_map[i].loc.head) {      l->ptol_map[currcyl+1].skew += z->hsskew;    }     }}// Defects are now loaded from the raw layout file itself.  bucy/20030714//  int //  g2_load_defects(struct lp_list *l) {//    int i;//    defects_len = 0;//    defects = calloc(l->values_len / 3, sizeof(struct dm_pbn));//    for(i = 0; i < l->values_len / 3; i++) {//      if(l->values[i*3]) {//        defects[i].cyl = l->values[3*i]->v.i;//        defects[i].head = l->values[3*i+1]->v.i;//        defects[i].sector = l->values[3*i+2]->v.i;//        defects_len++;//      }//    }//    return 0;//  }static int pbncmp(const void *ptr1, const void *ptr2){  const struct dm_pbn *p1 = ptr1;  const struct dm_pbn *p2 = ptr2;  if(p1->cyl < p2->cyl) return -1;  else if(p2->cyl < p1->cyl) return 1;  if(p1->head < p2->head) return -1;  else if(p2->head < p1->head) return 1;  if(p1->sector < p2->sector) return -1;  else if(p2->sector < p1->sector) return 1;  else return 0;}// sort by ascending PBNsvoid g2_finish_defects(struct dm_layout_g2 *l) {  l->defects = defects;  qsort(l->defects, defects_len, sizeof(struct dm_pbn), pbncmp);    l->defects_len = defects_len;  defects = 0;  defects_len = 0;}struct dm_layout_if *dm_layout_g2_loadparams(struct lp_block *b, struct dm_disk_if *parent) {  int i;  int rv;  struct dm_layout_g2 *result = malloc(sizeof(struct dm_layout_g2));  memset(result, 0, sizeof(struct dm_layout_g2));  //  #include "modules/dm_layout_g2_param.c"  lp_loadparams(result, b, &dm_layout_g2_mod);  rv = layout_g2_loadmap(result);  ddbg_assert(rv == 0);  free(result->mapfile); // strdup()ed in loader code  result->mapfile = 0;  // find the zone param  result->hdr = layout_g2;  parent->layout = (struct dm_layout_if *)result;  // do the skew precomputation  precompute_skews(parent);  g2_finish_defects(result);  return (struct dm_layout_if *)result;}static intg2_load_zone(struct dm_layout_g2_zone *result, 	     struct lp_block *b){  //#include "modules/dm_layout_g2_zone_param.c"  lp_loadparams(result, b, &dm_layout_g2_zone_mod);  return 0; // avoid a warning}voidg2_load_zones(struct dm_layout_g2 *l, 	      struct lp_list *zl){  int i;  int z = 0;  l->zones_len = 0;  for(i = 0; i < zl->values_len; i++) {    if(zl->values[i] != 0) {      l->zones_len++;    }  }  l->zones = malloc(l->zones_len * sizeof(struct dm_layout_g2_zone));  memset(l->zones, 0, l->zones_len * sizeof(struct dm_layout_g2_zone));    for(i = 0; i < zl->values_len; i++) {    if(!zl->values[i]) continue;    g2_load_zone(&l->zones[z], zl->values[i]->v.b);    z++;  }}// dummyint dm_layout_g2_zone_loadparams(struct lp_block *b){   ddbg_assert(0);   return DM_OK;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲蜜臀av乱码久久精品| 热久久一区二区| 国产精品进线69影院| 久久精品一区二区三区av| 日韩精品一区二区三区蜜臀| 欧美一区二区福利在线| 在线播放视频一区| 在线不卡中文字幕| 日韩你懂的在线观看| 精品久久久久久久久久久久包黑料 | 精品日本一线二线三线不卡| 日韩欧美在线观看一区二区三区| 日韩欧美一级片| 精品国产一区久久| 国产欧美精品一区二区三区四区| 久久久电影一区二区三区| 中文字幕精品综合| 成人免费在线视频| 亚洲高清免费视频| 蜜臀精品久久久久久蜜臀 | 99视频国产精品| 色综合久久久网| 91麻豆精品91久久久久久清纯| 欧美精品在线观看一区二区| 日韩欧美卡一卡二| 亚洲欧美激情小说另类| 亚洲va欧美va国产va天堂影院| 性欧美大战久久久久久久久| 美女精品自拍一二三四| 国产精品自在欧美一区| 99久久国产综合精品色伊| 欧美色综合网站| 欧美精品一区二区不卡| 国产精品久久久久久亚洲伦| 一区二区三区欧美久久| 麻豆精品在线观看| 成人晚上爱看视频| 欧美日韩久久久一区| 久久综合九色综合久久久精品综合| 国产精品女主播av| 婷婷亚洲久悠悠色悠在线播放| 国产在线精品一区二区不卡了| 不卡视频在线观看| 91精品国产手机| 亚洲国产精品精华液ab| 午夜免费欧美电影| 风间由美一区二区av101| 在线视频国内自拍亚洲视频| 日韩欧美一二三| 亚洲日本欧美天堂| 国产一区欧美日韩| 欧美日韩二区三区| 国产精品美女视频| 蜜桃传媒麻豆第一区在线观看| 91网站在线播放| 久久免费偷拍视频| 性欧美疯狂xxxxbbbb| jvid福利写真一区二区三区| 日韩亚洲欧美中文三级| 亚洲免费在线视频| 国产成人av影院| 日韩一级片网站| 亚洲一区二区三区四区五区黄| 国产99久久久久| 日韩欧美在线观看一区二区三区| 亚洲免费视频成人| 国产99一区视频免费| 精品国产一区二区国模嫣然| 亚洲午夜电影在线| 成人一区二区在线观看| 7777精品伊人久久久大香线蕉最新版 | 国产在线不卡视频| 91久久精品日日躁夜夜躁欧美| 日韩欧美第一区| 中文字幕亚洲在| 国产九九视频一区二区三区| 欧美日韩免费视频| 亚洲综合网站在线观看| 激情丁香综合五月| 在线播放欧美女士性生活| 综合欧美一区二区三区| 国模套图日韩精品一区二区| 欧美色国产精品| 国产蜜臀97一区二区三区| 精品一区二区三区视频| 欧美日韩国产免费一区二区| 国产精品久久久久久亚洲伦| 日韩不卡一区二区三区| 在线精品观看国产| 久久这里只有精品首页| 亚洲一区av在线| 91视频一区二区三区| 欧美不卡激情三级在线观看| 亚洲成人av中文| 91久久精品一区二区三区| 中文字幕日韩av资源站| 国产精品2024| 精品国产成人系列| 午夜精品福利一区二区三区av| 欧美午夜寂寞影院| 亚洲人成在线观看一区二区| 粉嫩高潮美女一区二区三区| 欧美成人国产一区二区| 午夜不卡av免费| 欧美视频在线不卡| 亚洲一区二区三区在线看| 色呦呦日韩精品| 亚洲天堂成人在线观看| 丁香一区二区三区| 国产三级久久久| 国产成人自拍在线| 国产欧美日韩亚州综合 | 美日韩黄色大片| 欧美日韩亚洲国产综合| 亚洲综合色噜噜狠狠| 在线中文字幕一区| 欧美国产精品久久| 色香蕉久久蜜桃| 亚洲精品久久久久久国产精华液| av不卡一区二区三区| 亚洲人成影院在线观看| 色一区在线观看| 一区二区三区不卡视频| 欧美网站大全在线观看| 亚洲午夜精品网| 51精品秘密在线观看| 奇米一区二区三区av| 日韩亚洲欧美综合| 韩国成人精品a∨在线观看| 欧美大片在线观看一区二区| 亚洲午夜激情网页| 精品国产亚洲在线| 国产不卡一区视频| 日韩国产欧美在线播放| 欧美一区在线视频| 国内外精品视频| 国产嫩草影院久久久久| youjizz国产精品| 亚洲一区视频在线| 欧美日韩mp4| 国产一区免费电影| 国产精品久久久久久户外露出| 91网站在线播放| 亚洲视频香蕉人妖| 日韩欧美一区二区在线视频| 国产乱淫av一区二区三区| 国产蜜臀97一区二区三区| 99久久婷婷国产| 日韩国产精品久久久久久亚洲| 精品国内二区三区| 成人黄色综合网站| 亚洲国产乱码最新视频 | 国产精品嫩草影院com| 色香色香欲天天天影视综合网| 日韩精品乱码av一区二区| 日韩视频在线一区二区| 99麻豆久久久国产精品免费 | 久久亚洲捆绑美女| 99久久国产综合精品女不卡| 亚洲高清免费观看 | 香蕉成人啪国产精品视频综合网| 日韩一区二区免费电影| 成人av网站大全| 午夜精品久久久久久久| 亚洲国产精品av| 欧美日本乱大交xxxxx| 国产精品18久久久久久久网站| 国产精品福利一区| 日韩视频一区二区| av电影天堂一区二区在线观看| 艳妇臀荡乳欲伦亚洲一区| 欧美精品在线一区二区三区| 成人丝袜18视频在线观看| 亚洲国产精品久久久久婷婷884 | 欧美不卡一二三| 在线精品视频一区二区| 国产成人精品影院| 日韩在线卡一卡二| 国产精品午夜在线| 91麻豆精品国产91久久久资源速度 | 国产欧美日韩综合精品一区二区| 欧美性受xxxx| 成人精品免费网站| 成人黄色网址在线观看| 天天av天天翘天天综合网色鬼国产| 国产婷婷色一区二区三区在线| 日本二三区不卡| a级精品国产片在线观看| 久久不见久久见中文字幕免费| 亚洲精品国产第一综合99久久| 国产性做久久久久久| 日韩精品影音先锋| 成人avav在线| 豆国产96在线|亚洲| 久久超碰97中文字幕| 视频在线观看91| 亚洲国产成人av网| 一区二区三区欧美在线观看| 中文字幕一区二区三区在线播放| 久久综合国产精品|