设为首页 加入收藏

TOP

Linux的初始内核自解压分析(四)
2014-11-24 01:34:44 来源: 作者: 【 】 浏览:5
Tags:Linux 初始 内核 解压 分析
lg)high_buffer_start)) {
  ; 如果高端片段的最小起始地址小于它实际应加载的地址,则将它置为实际地址,
  ; 这样高端片段就无需再次移动了,否则它要向前移动
  high_buffer_start = (uch *)(0x100000 + low_buffer_size);
  mv->hcount = 0;
  }
  else mv->hcount = -1; 待定
  mv->high_buffer_start = high_buffer_start;
  }
  void close_output_buffer_if_we_run_high(struct moveparams *mv)
  {
  if (bytes_out > low_buffer_size) {
  mv->lcount = low_buffer_size;
  if (mv->hcount)
  mv->hcount = bytes_out - low_buffer_size;求出高端片段的字节数
  } else { 如果解压后内核只有低端的一个片段
  mv->lcount = bytes_out;
  mv->hcount = 0;
  }
  }
  int decompress_kernel(struct moveparams *mv, void *rmode)
  {
  real_mode = rmode;
  if (SCREEN_INFO.orig_video_mode == 7) {
  vidmem = (char *) 0xb0000;
  vidport = 0x3b4;
  } else {
  vidmem = (char *) 0xb8000;
  vidport = 0x3d4;
  }
  lines = SCREEN_INFO.orig_video_lines;
  cols = SCREEN_INFO.orig_video_cols;
  if (free_mem_ptr else setup_output_buffer_if_we_run_high(mv);
  makecrc();
  puts("Uncompressing Linux... ");
  gunzip();
  puts("Ok, booting the kernel.\n");
  if (high_loaded) close_output_buffer_if_we_run_high(mv);
  return high_loaded;
  }


首页 上一页 1 2 3 4 下一页 尾页 4/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux+C语言:数字图像处理源程序 下一篇深度介绍Linux内核是如何工作的

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: