LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1163|回复: 4

看看这儿还有谁玩 L4 的吗

[复制链接]
发表于 2005-9-5 13:39:20 | 显示全部楼层 |阅读模式
有无同好 ?
发表于 2005-9-5 14:30:29 | 显示全部楼层
L4慢得受不了

linuxforum有个微内核研究小组:
http://www.linuxforum.net/forum/ ... &o=7&fpart=
回复 支持 反对

使用道具 举报

发表于 2005-9-13 00:27:32 | 显示全部楼层
l4是个什么东西?
回复 支持 反对

使用道具 举报

发表于 2005-9-13 09:03:29 | 显示全部楼层
自己编译过系统,运行过例子,看过一点源码,读过一部分定义文档。
回复 支持 反对

使用道具 举报

发表于 2006-11-22 15:37:52 | 显示全部楼层
gpt_t *gpt_init(void)
{
  gpt_t *gpt;
  dw_t i;
  /* TRACE(T_PROCS); */
   

  if ( gpt = gpt_mem_alloc() )
  {
    for (i = 0; i < ( 1ul << GPTROOTSIZE); i++)  /* ??? */
    {
      /* Define a NULL_GUARD to signify an empty entry and cause a mismatch on lookup. */
      gpt.guard = NULL_GUARD(WORDLEN,GPTROOTSIZE,i);
    }
  }
  return (gpt_t *)((udw_t)gpt | 15);
}


gpt_t *gpt_mem_alloc(void)
{
  gpt_t *p;
  kernel_vars *k;
  k = KERNEL_BASE;
  
  if (k->gpt_free_list != 0)
  {
    p = (gpt_t *) (k->gpt_free_list);
    k->gpt_free_list = p->u.ptr;
    return p;
  }
  else
  {
    udw_t f;
    f = (udw_t) k_frame_alloc();
    if (f == 0)
    {
      panic("L4 PANIC: Page table memory pool exhausted"); /* ok */
    }
   
    for (p = (gpt_t *) f; (udw_t) p < f + FRAMESIZE; p +=  (1ul << GPTSIZE))
    {
      p->u.ptr = k->gpt_free_list;
      k->gpt_free_list = (udw_t)p;
    }
    p = (gpt_t *) (k->gpt_free_list);
    k->gpt_free_list = p->u.ptr;
    return p;
  }
}

其中k_frame_alloc()是分配1帧(4096bytes);
在上面打问号的一行
    for (i = 0; i < ( 1ul << GPTROOTSIZE); i++)  /* ??? */
由于前面 gpt = gpt_mem_alloc() 是给gpt分配了一个gpt_t结构,但是为什么在循环里会使用
gpt并循环8次(GPTROOTSIZE = 3)
谢谢哪位高手指点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表