美文网首页
2. seL4-Capabilities

2. seL4-Capabilities

作者: Savior2016 | 来源:发表于2023-09-11 19:20 被阅读0次

这是seL4运行机制的第1篇。
截图中的代码和log不额外说明,都是指截图的最后一行

首先,我们从代码开始,这是最直观的东西。从程序中语言化的概念性的东西有点过于玄虚,汉化之后就更加铺所迷离的。

首先初始化capabilities并编译:

./init --tut capabilities
ninja

然后运行:

./simulate

最开始我们会看到下面的log:

原始输出.png
对照程序来看,首先我们看到了CNode里面slots的数量。
slot数量.png
对应到程序的下面一行:
slot数量对应的程序.png
然后是输出CNode的大小为0:
后续log.png
对应到程序的:
输出大小0对应的程序.png
这里需要计算CNode的大小。
CNode的结构.png
CNode里面包含的是capability,每个capability所在的位置叫一个slot。
所以我们计算CNode的大小也就是计算这些slot占了多少空间,slot的大小是用seL4_SlotBits定义的(为了平台的兼容性),所以计算方法如下:
CNode大小的计算.png
size_t initial_cnode_object_size_bytes = initial_cnode_object_size * (1u << seL4_SlotBits); 

再次编译运行,就计算出大小了:


计算出CNode大小.png

我们再往下看log,它最后报了一个错误:


failed

对应的代码是这里:


code.png

为啥呢?
这明显他把一个capability复制到了first_free_slot:


first

然后又搞了一个last_slot,这里面根本没有任何capability:


last_slot

所以按照提示,我们把first_free_slot复制给他就行了:


copy
    error = seL4_CNode_Copy(seL4_CapInitThreadCNode, last_slot, seL4_WordBits,
                                       seL4_CapInitThreadCNode, first_free_slot, seL4_WordBits,
                                       seL4_AllRights);
    ZF_LOGF_IF(error, "Failed to copy cap!");

再次编译运行,输出是:


log

对应下面的程序:


image.png

根据提示我们知道这里应该删除slot。
我们使用下面的函数删除:


image.png
seL4_CNode_Revoke(seL4_CapInitThreadCNode, seL4_CapInitThreadTCB, seL4_WordBits);

也可以用seL4_CNode_Delete,这个函数需要删除两次,seL4_CNode_Revoke可以把所有复制出capability都删除。

另外,seL4_CNode_Move函数在移动的源位置为空时就会出现seL4_FailedLookup错误。

编译运行,结果如下:


image.png

这次又报错没有挂起线程了。
对应下面的代码:


image.png

使用seL4_TCB_Suspend函数挂起:

image.png
seL4_TCB_Suspend(seL4_CapInitThreadTCB);

再次编译运行:


done

相关文章

  • 2.

    越长大越觉得被喜欢真的是一件很幸福的事情。

  • 2.

    屠然走得太急了,关门时的巨大动静她没注意到是震醒了床上的人,他施施然的睁开眼,不见昨晚醉酒的人,微微笑了笑“还...

  • 2.

    (二) 玄衣男子脚边的碎石子从崖边滚了下去,久久没有听见回声。 雨水落在发梢,从头发上...

  • 2.

    我跟我妈抱怨,为什么她把我生得身上这么多汗毛? 我妈说,那是因为我返祖。返祖? ! 返祖?...

  • 2.

    分手的第二天,今天感觉好多了,没有昨天那么想你,也许是今天上班了吧。 中午午睡的时候,闭上眼睛脑海里都...

  • 2.

    2.入宫 清晨,第一抹阳光照进房间,伴随着窗外一声一声嘹亮地鸡鸣,躺在床上的人动了动. 樱内撑起身子坐在床上,用左...

  • 2.

    寒食 唐 韩翃 春城无处不飞花,寒食东风御柳斜。...

  • 2.

    昨天晚上9点的时候坐床上学习 我妈说:“你肯定一会儿就睡着了。” 我:“不会的!” 然而。。。。。。 今天早上凌晨...

  • 2.

    屬於記性差,非常差的那一類人。 差到什麼程度呢? 20歲之前的事情幾乎記不太清楚。 當身邊人侃侃而談曾經的畫面,我...

  • 2.

    写给我最爱的人 青梅竹马不是你 情窦初开不是你 只愿细水长流是你 柴米油盐是你 ...

网友评论

      本文标题:2. seL4-Capabilities

      本文链接:https://www.haomeiwen.com/subject/xolamdtx.html