同步官方代码,除了几个测试用例并无更新

    百图画鸿蒙 + 百文说内核 + 百万注源码  => 挖透鸿蒙内核源码
    鸿蒙研究站 | http://weharmonyos.com (国内)
              | https://weharmony.github.io (国外)
    oschina | https://my.oschina.net/weharmony
    博客园 | https://www.cnblogs.com/weharmony/
    知乎 | https://www.zhihu.com/people/weharmonyos
    csdn | https://blog.csdn.net/kuangyufei
    51cto | https://harmonyos.51cto.com/column/34
    掘金 | https://juejin.cn/user/756888642000808
    公众号 | 鸿蒙研究站 (weharmonyos)
上级 944808f8
......@@ -11,7 +11,7 @@
* 因为内核代码本身并不太多,都是浓缩的精华,精读是让各个知识点高频出现,不孤立成点状记忆,没有足够连接点的知识点是很容易忘的,点点成线,线面成体,连接越多,记得越牢,如此短时间内容易结成一张高浓度,高密度的系统化知识网,训练大脑肌肉记忆,驻入大脑直觉区,想抹都抹不掉,终生携带,随时调取。跟骑单车一样,一旦学会,即便多年不骑,照样跨上就走,游刃有余。
### 热爱是所有的理由和答案
* 因大学时阅读 `linux 2.6` 内核痛并快乐的经历,一直有个心愿,如何让更多对内核感兴趣的朋友减少阅读时间,加速对计算机系统级的理解,而不至于过早的放弃。但因过程种种,多年一直没有行动,基本要放弃这件事了。恰逢 `2020/9/10` 鸿蒙正式开源,重新激活了多年的心愿,就有那么点如黄河之水一发不可收拾了。
* 目前对内核源码的注解完成 `80%` ,博客分析完成`70+篇`,百图画鸿蒙完成`20张`,空闲时间几乎被占用,每天很充实,时间不够用,连做梦内核代码都在鱼贯而入。加注并整理是件很有挑战的事,时间单位上以年计,已持续一年半,期间得到众多小伙伴的支持与纠错,让此念越发强烈,坚如磐石。:P
* 目前对内核源码的注解完成 `80%` ,博客分析完成`80+篇`,百图画鸿蒙完成`20张`,空闲时间几乎被占用,每天很充实,时间不够用,连做梦内核代码都在鱼贯而入。加注并整理是件很有挑战的事,时间单位上以年计,已持续一年半,期间得到众多小伙伴的支持与纠错,让此念越发强烈,坚如磐石。:P
### (〃・ิ‿・ิ)ゞ鸿蒙内核开发者
* 感谢开放原子开源基金会,致敬鸿蒙内核开发者提供了如此优秀的源码,一了多年的夙愿,津津乐道于此。从内核一行行的代码中能深深感受到开发者各中艰辛与坚持,及鸿蒙生态对未来的价值,这些是张嘴就来的网络喷子们永远不能体会到的。可以毫不夸张的说鸿蒙内核源码可作为大学:C语言,数据结构,操作系统,汇编语言,计算机系统结构,计算机组成原理,微机接口 七门课程的教学项目。如此宝库,不深入研究实在是暴殄天物,于心不忍,坚信鸿蒙大势所趋,未来可期,其必定成功,也必然成功,誓做其坚定的追随者和传播者。
......@@ -39,85 +39,86 @@
按时间顺序:
* [v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体](https://my.oschina.net/weharmony/blog/4572304)
* [v02.06 鸿蒙内核源码分析(进程管理) | 谁在管理内核资源](https://my.oschina.net/weharmony/blog/4574429)
* [v03.06 鸿蒙内核源码分析(时钟任务) | 调度的源动力从哪来](https://my.oschina.net/weharmony/blog/4574493)
* [v04.03 鸿蒙内核源码分析(任务调度) | 内核调度的单元是谁](https://my.oschina.net/weharmony/blog/4595539)
* [v05.05 鸿蒙内核源码分析(任务管理) | 如何管理任务池](https://my.oschina.net/weharmony/blog/4603919)
* [v06.03 鸿蒙内核源码分析(调度队列) | 内核调度也需要排队](https://my.oschina.net/weharmony/blog/4606916)
* [v07.08 鸿蒙内核源码分析(调度机制) | 任务是如何被调度执行的](https://my.oschina.net/weharmony/blog/4623040)
* [v08.03 鸿蒙内核源码分析(总目录) | 百万汉字注解 百篇博客分析](https://my.oschina.net/weharmony/blog/4626852)
* [v09.04 鸿蒙内核源码分析(调度故事) | 用故事说内核调度](https://my.oschina.net/weharmony/blog/4634668)
* [v10.03 鸿蒙内核源码分析(内存主奴) | 皇上和奴才如何相处](https://my.oschina.net/weharmony/blog/4646802)
* [v11.03 鸿蒙内核源码分析(内存分配) | 内存有哪些分配方式](https://my.oschina.net/weharmony/blog/4646802)
* [v12.04 鸿蒙内核源码分析(内存管理) | 虚拟内存全景图是怎样的](https://my.oschina.net/weharmony/blog/4652284)
* [v13.05 鸿蒙内核源码分析(源码注释) | 每天死磕一点点](https://my.oschina.net/weharmony/blog/4686747)
* [v14.02 鸿蒙内核源码分析(内存汇编) | 谁是虚拟内存实现的基础](https://my.oschina.net/weharmony/blog/4692156)
* [v15.03 鸿蒙内核源码分析(内存映射) | 映射真是个好东西](https://my.oschina.net/weharmony/blog/4694841)
* [v16.02 鸿蒙内核源码分析(内存规则) | 内存管理到底在管什么](https://my.oschina.net/weharmony/blog/4698384)
* [v17.04 鸿蒙内核源码分析(物理内存) | 怎么管理物理内存](https://my.oschina.net/weharmony/blog/4842408)
* [v18.02 鸿蒙内核源码分析(源码结构) | 内核文件各自含义](https://my.oschina.net/weharmony/blog/4869137)
* [v19.04 鸿蒙内核源码分析(位图管理) | 特节俭的苦命孩子](https://my.oschina.net/weharmony/blog/4888467)
* [v20.03 鸿蒙内核源码分析(用栈方式) | 谁来提供程序运行场地](https://my.oschina.net/weharmony/blog/4893388)
* [v21.07 鸿蒙内核源码分析(线程概念) | 是谁在不断的折腾CPU](https://my.oschina.net/weharmony/blog/4915543)
* [v22.03 鸿蒙内核源码分析(汇编基础) | CPU上班也要打卡](https://my.oschina.net/weharmony/blog/4920361)
* [v23.04 鸿蒙内核源码分析(汇编传参) | 如何传递复杂的参数](https://my.oschina.net/weharmony/blog/4927892)
* [v24.03 鸿蒙内核源码分析(进程概念) | 如何更好的理解进程](https://my.oschina.net/weharmony/blog/4937521)
* [v25.05 鸿蒙内核源码分析(并发并行) | 听过无数遍的两个概念](https://my.oschina.net/weharmony/blog/4940329)
* [v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志](https://my.oschina.net/weharmony/blog/4944129)
* [v27.05 鸿蒙内核源码分析(互斥锁) | 同样是锁它却更丰满](https://my.oschina.net/weharmony/blog/4945465)
* [v28.04 鸿蒙内核源码分析(进程通讯) | 九种进程间通讯方式速揽](https://my.oschina.net/weharmony/blog/4947398)
* [v29.05 鸿蒙内核源码分析(信号量) | 谁在解决任务间的同步](https://my.oschina.net/weharmony/blog/4949720)
* [v30.07 鸿蒙内核源码分析(事件控制) | 多对多任务如何同步](https://my.oschina.net/weharmony/blog/4950956)
* [v31.02 鸿蒙内核源码分析(定时器) | 内核最高级任务竟是它](https://my.oschina.net/weharmony/blog/4951625)
* [v32.03 鸿蒙内核源码分析(CPU) | 整个内核是一个死循环](https://my.oschina.net/weharmony/blog/4952034)
* [v33.03 鸿蒙内核源码分析(消息队列) | 进程间如何异步传递大数据](https://my.oschina.net/weharmony/blog/4952961)
* [v34.04 鸿蒙内核源码分析(原子操作) | 谁在为完整性保驾护航](https://my.oschina.net/weharmony/blog/4955290)
* [v35.03 鸿蒙内核源码分析(时间管理) | 内核基本时间单位是谁](https://my.oschina.net/weharmony/blog/4956163)
* [v36.05 鸿蒙内核源码分析(工作模式) | 程序界的韦小宝是谁](https://my.oschina.net/weharmony/blog/4965052)
* [v37.06 鸿蒙内核源码分析(系统调用) | 开发者永远的口头禅](https://my.oschina.net/weharmony/blog/4967613)
* [v38.06 鸿蒙内核源码分析(寄存器) | 讲真 全宇宙只佩服它](https://my.oschina.net/weharmony/blog/4969487)
* [v39.06 鸿蒙内核源码分析(异常接管) | 社会很单纯 复杂的是人](https://my.oschina.net/weharmony/blog/4973016)
* [v40.03 鸿蒙内核源码分析(汇编汇总) | 汇编可爱如邻家女孩](https://my.oschina.net/weharmony/blog/4977924)
* [v41.03 鸿蒙内核源码分析(任务切换) | 看汇编如何切换任务](https://my.oschina.net/weharmony/blog/4988628)
* [v42.05 鸿蒙内核源码分析(中断切换) | 系统因中断活力四射](https://my.oschina.net/weharmony/blog/4990948)
* [v43.05 鸿蒙内核源码分析(中断概念) | 海公公的日常工作](https://my.oschina.net/weharmony/blog/4992750)
* [v44.04 鸿蒙内核源码分析(中断管理) | 没中断太可怕](https://my.oschina.net/weharmony/blog/4995800)
* [v45.05 鸿蒙内核源码分析(Fork) | 一次调用 两次返回](https://my.oschina.net/weharmony/blog/5010301)
* [v46.05 鸿蒙内核源码分析(特殊进程) | 老鼠生儿会打洞](https://my.oschina.net/weharmony/blog/5014444)
* [v47.02 鸿蒙内核源码分析(进程回收) | 临终托孤的短命娃](https://my.oschina.net/weharmony/blog/5017716)
* [v48.05 鸿蒙内核源码分析(信号生产) | 年过半百 活力十足](https://my.oschina.net/weharmony/blog/5022149)
* [v49.03 鸿蒙内核源码分析(信号消费) | 谁让CPU连续四次换栈运行](https://my.oschina.net/weharmony/blog/5027224)
* [v50.03 鸿蒙内核源码分析(编译环境) | 编译鸿蒙防掉坑指南](https://my.oschina.net/weharmony/blog/5028613)
* [v51.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main](https://my.oschina.net/weharmony/blog/5030288)
* [v52.05 鸿蒙内核源码分析(静态站点) | 码农都不爱写注释和文档](https://my.oschina.net/weharmony/blog/5042657)
* [v53.03 鸿蒙内核源码分析(ELF解析) | 敢忘了她姐俩你就不是银](https://my.oschina.net/weharmony/blog/5048746)
* [v54.04 鸿蒙内核源码分析(静态链接) | 一个小项目看中间过程](https://my.oschina.net/weharmony/blog/5049918)
* [v55.04 鸿蒙内核源码分析(重定位) | 与国际接轨的对外发言人](https://my.oschina.net/weharmony/blog/5055124)
* [v56.05 鸿蒙内核源码分析(进程映像) | 程序是如何被加载运行的](https://my.oschina.net/weharmony/blog/5060359)
* [v57.02 鸿蒙内核源码分析(编译过程) | 简单案例说透中间过程](https://my.oschina.net/weharmony/blog/5064209)
* [v58.03 鸿蒙内核源码分析(环境脚本) | 编译鸿蒙原来很简单](https://my.oschina.net/weharmony/blog/5132725)
* [v59.04 鸿蒙内核源码分析(构建工具) | 顺瓜摸藤调试构建过程](https://my.oschina.net/weharmony/blog/5135157)
* [v60.04 鸿蒙内核源码分析(gn应用) | 如何构建鸿蒙系统](https://my.oschina.net/weharmony/blog/5137565)
* [v61.03 鸿蒙内核源码分析(忍者ninja) | 忍者的特点就是一个字](https://my.oschina.net/weharmony/blog/5139034)
* [v62.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件](https://my.oschina.net/weharmony/blog/5152858)
* [v63.04 鸿蒙内核源码分析(文件系统) | 用图书管理说文件系统](https://my.oschina.net/weharmony/blog/5165752)
* [v64.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念](https://my.oschina.net/weharmony/blog/5168716)
* [v65.05 鸿蒙内核源码分析(挂载目录) | 为何文件系统需要挂载](https://my.oschina.net/weharmony/blog/5172566)
* [v66.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是根总](https://my.oschina.net/weharmony/blog/5177087)
* [v67.03 鸿蒙内核源码分析(字符设备) | 绝大多数设备都是这类](https://my.oschina.net/weharmony/blog/5200946)
* [v68.02 鸿蒙内核源码分析(VFS) | 文件系统是个大家庭](https://my.oschina.net/weharmony/blog/5211662)
* [v69.04 鸿蒙内核源码分析(文件句柄) | 你为什么叫句柄](https://my.oschina.net/weharmony/blog/5253251)
* [v70.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](https://my.oschina.net/weharmony/blog/5258434)
* [v71.03 鸿蒙内核源码分析(Shell编辑) | 两个任务 三个阶段](https://my.oschina.net/weharmony/blog/5269307)
* [v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口](https://my.oschina.net/weharmony/blog/5282207)
* [v73.01 鸿蒙内核源码分析(参考文档) | 阅读内核源码必备工具](https://my.oschina.net/weharmony/blog/5346868)
* [v74.01 鸿蒙内核源码分析(控制台) | 一个让很多人模糊的概念](https://my.oschina.net/weharmony/blog/5356308)
* [v75.01 鸿蒙内核源码分析(远程登录) | 内核如何接待远方的客人](https://my.oschina.net/weharmony/blog/5375838)
* [v76.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式](https://my.oschina.net/weharmony/blog/5412148)
* [v77.02 鸿蒙内核源码分析(消息封装) | 剖析LiteIpc(上)进程通讯内容](https://my.oschina.net/weharmony/blog/5421867)
* [v78.01 鸿蒙内核源码分析(消息映射) | 剖析LiteIpc(下)进程通讯机制](https://my.oschina.net/weharmony/blog/5436744)
* [v79.01 鸿蒙内核源码分析(用户态锁) | 如何使用快锁Futex(上)](https://my.oschina.net/weharmony/blog/5446656)
* [v01.12 鸿蒙内核源码分析(双向链表) | 谁是内核最重要结构体](https://harmonyos.51cto.com/posts/3922)
* [v02.06 鸿蒙内核源码分析(进程管理) | 谁在管理内核资源](https://harmonyos.51cto.com/posts/3924)
* [v03.06 鸿蒙内核源码分析(时钟任务) | 调度的源动力从哪来](https://harmonyos.51cto.com/posts/3925)
* [v04.03 鸿蒙内核源码分析(任务调度) | 内核调度的单元是谁](https://harmonyos.51cto.com/posts/3926)
* [v05.05 鸿蒙内核源码分析(任务管理) | 如何管理任务池](https://harmonyos.51cto.com/posts/3933)
* [v06.03 鸿蒙内核源码分析(调度队列) | 内核调度也需要排队](https://harmonyos.51cto.com/posts/3934)
* [v07.08 鸿蒙内核源码分析(调度机制) | 任务是如何被调度执行的](https://harmonyos.51cto.com/posts/3935)
* [v08.03 鸿蒙内核源码分析(总目录) | 百万汉字注解 百篇博客分析](https://harmonyos.51cto.com/posts/3936)
* [v09.04 鸿蒙内核源码分析(调度故事) | 用故事说内核调度](https://harmonyos.51cto.com/posts/3937)
* [v10.03 鸿蒙内核源码分析(内存主奴) | 皇上和奴才如何相处](https://harmonyos.51cto.com/posts/3938)
* [v11.03 鸿蒙内核源码分析(内存分配) | 内存有哪些分配方式](https://harmonyos.51cto.com/posts/3940)
* [v12.04 鸿蒙内核源码分析(内存管理) | 虚拟内存全景图是怎样的](https://harmonyos.51cto.com/posts/3941)
* [v13.05 鸿蒙内核源码分析(源码注释) | 每天死磕一点点](https://harmonyos.51cto.com/posts/3942)
* [v14.02 鸿蒙内核源码分析(内存汇编) | 谁是虚拟内存实现的基础](https://harmonyos.51cto.com/posts/3943)
* [v15.03 鸿蒙内核源码分析(内存映射) | 映射真是个好东西](https://harmonyos.51cto.com/posts/3944)
* [v16.02 鸿蒙内核源码分析(内存规则) | 内存管理到底在管什么](https://harmonyos.51cto.com/posts/3945)
* [v17.04 鸿蒙内核源码分析(物理内存) | 怎么管理物理内存](https://harmonyos.51cto.com/posts/3946)
* [v18.02 鸿蒙内核源码分析(源码结构) | 内核文件各自含义](https://harmonyos.51cto.com/posts/3947)
* [v19.04 鸿蒙内核源码分析(位图管理) | 特节俭的苦命孩子](https://harmonyos.51cto.com/posts/3954)
* [v20.03 鸿蒙内核源码分析(用栈方式) | 谁来提供程序运行场地](https://harmonyos.51cto.com/posts/4023)
* [v21.07 鸿蒙内核源码分析(线程概念) | 是谁在不断的折腾CPU](https://harmonyos.51cto.com/posts/4024)
* [v22.03 鸿蒙内核源码分析(汇编基础) | CPU上班也要打卡](https://harmonyos.51cto.com/posts/4049)
* [v23.04 鸿蒙内核源码分析(汇编传参) | 如何传递复杂的参数](https://harmonyos.51cto.com/posts/4097)
* [v24.03 鸿蒙内核源码分析(进程概念) | 如何更好的理解进程](https://harmonyos.51cto.com/posts/4098)
* [v25.05 鸿蒙内核源码分析(并发并行) | 听过无数遍的两个概念](https://harmonyos.51cto.com/posts/4099)
* [v26.08 鸿蒙内核源码分析(自旋锁) | 当立贞节牌坊的好同志](https://harmonyos.51cto.com/posts/4107)
* [v27.05 鸿蒙内核源码分析(互斥锁) | 同样是锁它却更丰满](https://harmonyos.51cto.com/posts/4124)
* [v28.04 鸿蒙内核源码分析(进程通讯) | 九种进程间通讯方式速揽](https://harmonyos.51cto.com/posts/4143)
* [v29.05 鸿蒙内核源码分析(信号量) | 谁在解决任务间的同步](https://harmonyos.51cto.com/posts/4144)
* [v30.07 鸿蒙内核源码分析(事件控制) | 多对多任务如何同步](https://harmonyos.51cto.com/posts/4149)
* [v31.02 鸿蒙内核源码分析(定时器) | 内核最高级任务竟是它](https://harmonyos.51cto.com/posts/4246)
* [v32.03 鸿蒙内核源码分析(CPU) | 整个内核是一个死循环](https://harmonyos.51cto.com/posts/4274)
* [v33.03 鸿蒙内核源码分析(消息队列) | 进程间如何异步传递大数据](https://harmonyos.51cto.com/posts/4312)
* [v34.04 鸿蒙内核源码分析(原子操作) | 谁在为完整性保驾护航](https://harmonyos.51cto.com/posts/4413)
* [v35.03 鸿蒙内核源码分析(时间管理) | 内核基本时间单位是谁](https://harmonyos.51cto.com/posts/4430)
* [v36.05 鸿蒙内核源码分析(工作模式) | 程序界的韦小宝是谁](https://harmonyos.51cto.com/posts/4519)
* [v37.06 鸿蒙内核源码分析(系统调用) | 开发者永远的口头禅](https://harmonyos.51cto.com/posts/4815)
* [v38.06 鸿蒙内核源码分析(寄存器) | 讲真 全宇宙只佩服它](https://harmonyos.51cto.com/posts/5032)
* [v39.06 鸿蒙内核源码分析(异常接管) | 社会很单纯 复杂的是人](https://harmonyos.51cto.com/posts/7248)
* [v40.03 鸿蒙内核源码分析(汇编汇总) | 汇编可爱如邻家女孩](https://harmonyos.51cto.com/posts/7287)
* [v41.03 鸿蒙内核源码分析(任务切换) | 看汇编如何切换任务](https://harmonyos.51cto.com/posts/7310)
* [v42.05 鸿蒙内核源码分析(中断切换) | 系统因中断活力四射](https://harmonyos.51cto.com/posts/7328)
* [v43.05 鸿蒙内核源码分析(中断概念) | 海公公的日常工作](https://harmonyos.51cto.com/posts/7460)
* [v44.04 鸿蒙内核源码分析(中断管理) | 没中断太可怕](https://harmonyos.51cto.com/posts/7609)
* [v45.05 鸿蒙内核源码分析(Fork) | 一次调用 两次返回](https://harmonyos.51cto.com/posts/7632)
* [v46.05 鸿蒙内核源码分析(特殊进程) | 老鼠生儿会打洞](https://harmonyos.51cto.com/posts/7656)
* [v47.02 鸿蒙内核源码分析(进程回收) | 临终托孤的短命娃](https://harmonyos.51cto.com/posts/8826)
* [v48.05 鸿蒙内核源码分析(信号生产) | 年过半百 活力十足](https://harmonyos.51cto.com/posts/8827)
* [v49.03 鸿蒙内核源码分析(信号消费) | 谁让CPU连续四次换栈运行](https://harmonyos.51cto.com/posts/8828)
* [v50.03 鸿蒙内核源码分析(编译环境) | 编译鸿蒙防掉坑指南](https://harmonyos.51cto.com/posts/8858)
* [v51.04 鸿蒙内核源码分析(ELF格式) | 应用程序入口并非main](https://harmonyos.51cto.com/posts/8859)
* [v52.05 鸿蒙内核源码分析(静态站点) | 码农都不爱写注释和文档](https://harmonyos.51cto.com/posts/8861)
* [v53.03 鸿蒙内核源码分析(ELF解析) | 敢忘了她姐俩你就不是银](https://harmonyos.51cto.com/posts/8862)
* [v54.04 鸿蒙内核源码分析(静态链接) | 一个小项目看中间过程](https://harmonyos.51cto.com/posts/8890)
* [v55.04 鸿蒙内核源码分析(重定位) | 与国际接轨的对外发言人](https://harmonyos.51cto.com/posts/8891)
* [v56.05 鸿蒙内核源码分析(进程映像) | 程序是如何被加载运行的](https://harmonyos.51cto.com/posts/8892)
* [v57.02 鸿蒙内核源码分析(编译过程) | 简单案例说透中间过程](https://harmonyos.51cto.com/posts/9089)
* [v58.03 鸿蒙内核源码分析(环境脚本) | 编译鸿蒙原来很简单](https://harmonyos.51cto.com/posts/9090)
* [v59.04 鸿蒙内核源码分析(构建工具) | 顺瓜摸藤调试构建过程](https://harmonyos.51cto.com/posts/9091)
* [v60.04 鸿蒙内核源码分析(gn应用) | 如何构建鸿蒙系统](https://harmonyos.51cto.com/posts/9248)
* [v61.03 鸿蒙内核源码分析(忍者ninja) | 忍者的特点就是一个字](https://harmonyos.51cto.com/posts/9249)
* [v62.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件](https://harmonyos.51cto.com/posts/9250)
* [v63.04 鸿蒙内核源码分析(文件系统) | 用图书管理说文件系统](https://harmonyos.51cto.com/posts/9335)
* [v64.06 鸿蒙内核源码分析(索引节点) | 谁是文件系统最重要的概念](https://harmonyos.51cto.com/posts/9336)
* [v65.05 鸿蒙内核源码分析(挂载目录) | 为何文件系统需要挂载](https://harmonyos.51cto.com/posts/9696)
* [v66.07 鸿蒙内核源码分析(根文件系统) | 谁先挂到`/`谁就是根总](https://harmonyos.51cto.com/posts/3936)
* [v67.03 鸿蒙内核源码分析(字符设备) | 绝大多数设备都是这类](https://harmonyos.51cto.com/posts/3936)
* [v68.02 鸿蒙内核源码分析(VFS) | 文件系统是个大家庭](https://harmonyos.51cto.com/posts/3936)
* [v69.04 鸿蒙内核源码分析(文件句柄) | 你为什么叫句柄](https://harmonyos.51cto.com/posts/3936)
* [v70.05 鸿蒙内核源码分析(管道文件) | 如何降低数据流动成本](https://harmonyos.51cto.com/posts/3936)
* [v71.03 鸿蒙内核源码分析(Shell编辑) | 两个任务 三个阶段](https://harmonyos.51cto.com/posts/3936)
* [v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口](https://harmonyos.51cto.com/posts/3936)
* [v73.01 鸿蒙内核源码分析(参考文档) | 阅读内核源码必备工具](https://harmonyos.51cto.com/posts/9011)
* [v74.01 鸿蒙内核源码分析(控制台) | 一个让很多人模糊的概念](https://harmonyos.51cto.com/posts/3936)
* [v75.01 鸿蒙内核源码分析(远程登录) | 内核如何接待远方的客人](https://harmonyos.51cto.com/posts/9712)
* [v76.01 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式](https://harmonyos.51cto.com/posts/10340)
* [v77.02 鸿蒙内核源码分析(消息封装) | 剖析LiteIpc(上)进程通讯内容](https://harmonyos.51cto.com/posts/10346)
* [v78.01 鸿蒙内核源码分析(消息映射) | 剖析LiteIpc(下)进程通讯机制](https://harmonyos.51cto.com/posts/10347)
* [v79.01 鸿蒙内核源码分析(用户态锁) | 如何使用快锁Futex(上)](https://harmonyos.51cto.com/posts/10402)
* [v80.01 鸿蒙内核源码分析(内核态锁) | 如何实现快锁Futex(下)](https://harmonyos.51cto.com/posts/10456)
#### 三: 百万注内核 | 处处扣细节 | 细胞血管
* 百万汉字注解内核目的是要看清楚其毛细血管,细胞结构,等于在拿放大镜看内核。内核并不神秘,带着问题去源码中找答案是很容易上瘾的,你会发现很多文章对一些问题的解读是错误的,或者说不深刻难以自圆其说,你会慢慢形成自己新的解读,而新的解读又会碰到新的问题,如此层层递进,滚滚向前,拿着放大镜根本不愿意放手。
......@@ -154,6 +155,7 @@
### 四大码仓发布 | 源码同步官方
内核注解同时在 [gitee](https://gitee.com/weharmony/kernel_liteos_a_note) | [github](https://github.com/kuangyufei/kernel_liteos_a_note) | [coding](https://weharmony.coding.net/public/harmony/kernel_liteos_a_note/git/files) | [codechina](https://codechina.csdn.net/kuangyufei/kernel_liteos_a_note) 发布,并与官方源码按月保持同步,同步历史如下:
* `2022/02/18` -- 官方无代码更新, 只有测试用例的完善
* `2022/01/20` -- 同步官方代码,本次官方对测试用例和MMU做了较大调整
* `2021/12/20` -- 增加`LMS`模块,完善`PM,Fat Cache`
* `2021/11/12` -- 加入`epoll`支持,对`shell`模块有较大调整,微调`process``task`,更正单词拼写错误
......
......@@ -405,7 +405,7 @@ typedef struct {
UINTPTR userArea; ///< 用户空间的堆区开始位置
UINTPTR userMapBase; ///< 用户空间的栈顶位置,内存来自用户空间,和topOfStack有本质的区别.
UINT32 userMapSize; /**< user thread stack size ,real size : userMapSize + USER_STACK_MIN_SIZE | 用户栈大小 */
FutexNode futex; ///< 快锁节点功能 , 一个任务只能等一把快锁
FutexNode futex; ///< 指明任务在等待哪把快锁,一次只等一锁,锁和任务的关系是(1:N)关系
#endif
UINT32 processID; /**< Which belong process */
LOS_DL_LIST joinList; /**< join list | 联结链表,允许任务之间相互释放彼此 */
......
......@@ -348,7 +348,7 @@ STATIC FutexNode *OsFutexDeleteAlreadyWakeTaskAndGetNext(const FutexNode *node,
return tempNode;
}
/// 插入一把新Futex锁到哈希桶中
/// 插入一把新Futex锁到哈希桶中,只有是新的key时才会插入,因为其实存在多个FutexNode是一个key
STATIC VOID OsFutexInsertNewFutexKeyToHash(FutexNode *node)
{
FutexNode *headNode = NULL;
......
......@@ -46,6 +46,7 @@ static UINT32 testcase(VOID)
s = dcgettext("www.huawei.com", "TestString1\n", LC_MESSAGES);
printf("[INFO]%s:%d,%s,s=%s\n", __FILE__, __LINE__, __func__, s);
ICUNIT_ASSERT_STRING_EQUAL(s, "TestString1\n", s);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -127,6 +127,7 @@ static UINT32 testcase(VOID)
testcase2();
testcase3();
testcase4();
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -92,6 +92,7 @@ static UINT32 testcase(VOID)
{
testcase1();
testcase2();
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -51,6 +51,7 @@ static UINT32 testcase(VOID)
s = dngettext("www.huawei.com", "TestString1\n", "TestString2\n", 2);
printf("[INFO]%s:%d,%s,s=%s\n", __FILE__, __LINE__, __func__, s);
ICUNIT_ASSERT_STRING_EQUAL(s, "TestString2\n", s);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -121,6 +121,7 @@ static UINT32 testcase(VOID)
testcase1(); /* test the domain is NULL */
testcase2(); /* test the domain is different with the setlocale */
testcase3(); /* if n != 1,then dngettext will choose msgid2's string */
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -143,6 +143,7 @@ static UINT32 testcase(VOID)
(VOID)RecoveryFileEnv(pathList, 1);
status = WEXITSTATUS(status);
ICUNIT_ASSERT_EQUAL(status, 0, status);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -56,6 +56,7 @@ static UINT32 testcase1(VOID)
s = gettext("Monday/n\n");
ICUNIT_ASSERT_STRING_EQUAL(s, "Monday/n\n", s);
setlocale(LC_ALL, "C");
return LOS_OK;
OUT:
......
......@@ -58,6 +58,7 @@ static UINT32 testcase(VOID)
strftime(buffer, 80, "%c", timer);
printf("Date is: %s\n", buffer);
ICUNIT_ASSERT_NOT_EQUAL_NULL(buffer, NULL, -1);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -59,6 +59,7 @@ static UINT32 testcase(VOID)
strftime(buffer, 80, "%c", timer);
printf("Date is: %s\n", buffer);
ICUNIT_ASSERT_NOT_EQUAL_NULL(buffer, NULL, -1);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -46,6 +46,7 @@ static UINT32 testcase(VOID)
s = ngettext("0123456789", "0123456789", 2);
ICUNIT_ASSERT_STRING_EQUAL(s, "0123456789", s);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -90,6 +90,7 @@ static UINT32 testcase(VOID)
char *string = nl_langinfo(CRNCYSTR);
ICUNIT_ASSERT_NOT_EQUAL_NULL(string, NULL, string);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -58,6 +58,7 @@ static UINT32 testcase(VOID) {
char *string = nl_langinfo_l(CRNCYSTR, (locale_t)"zh_CN.UTF-8");
ICUNIT_ASSERT_NOT_EQUAL_NULL(string, NULL, string);
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -69,6 +69,7 @@ static UINT32 testcase1(VOID)
TEST_PRINT("[INFO]%s:%d,%s,ret=%d,buf=%s\n", __FILE__, __LINE__, __func__, ret, buf);
ICUNIT_GOTO_EQUAL(ret, 23, ret, OUT);
ICUNIT_GOTO_EQUAL(errno, 0, errno, OUT);
setlocale(LC_ALL, "C");
return LOS_OK;
OUT:
......
......@@ -129,6 +129,7 @@ static UINT32 testcase(VOID)
testcase2();
testcase3();
testcase4();
setlocale(LC_ALL, "C");
return LOS_OK;
}
......
......@@ -49,6 +49,7 @@ static UINT32 Testcase(VOID)
++result;
}
ICUNIT_GOTO_EQUAL(result, 4, result, EXIT); // 4, except value
setlocale(LC_ALL, "C");
return LOS_OK;
EXIT:
......
......@@ -49,6 +49,7 @@ static UINT32 Testcase(VOID)
len3 = mbrlen(str + 1, sz - 1, &mb);
ICUNIT_GOTO_EQUAL(len3, -1, len3, EXIT);
setlocale(LC_ALL, "C");
return LOS_OK;
EXIT:
......
......@@ -34,6 +34,7 @@ static void *ThreadFuncTest(void *arg)
{
printf("Subthread starting infinite loop\n");
while (1) {
pthread_testcancel();
}
}
......@@ -80,6 +81,9 @@ static int ClockTest(void)
ret = ThreadClock("Subthread CPU time: ", clockid);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ret = pthread_cancel(thread);
ICUNIT_ASSERT_EQUAL(ret, 0, ret);
return 0;
}
......
git add -A
git commit -m ' 围绕FutexNode注解相关逻辑
git commit -m ' 同步官方代码,除了几个测试用例并无更新
百图画鸿蒙 + 百文说内核 + 百万注源码 => 挖透鸿蒙内核源码
鸿蒙研究站 | http://weharmonyos.com (国内)
| https://weharmony.github.io (国外)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册