- 博客(15)
- 资源 (7)
- 收藏
- 关注
原创 宋宝华:那些年你误会的Linux DMA(关于Linux DMA ZONE和API最透彻的一篇)
创作目的互联网、Linux内核书籍上充满了各种关于Linux DMA ZONE和dma_alloc_coherent、dma_map_single等的各种讲解,由于很多童鞋缺乏自身独立的...
2019-11-29 08:04:28 4696 1
转载 物联网操作系统亿元融资诞生!RT-Thread一出好戏刚开始!
近日,国内领先的物联网操作系统RT-Thread暨睿赛德科技对外宣布,公司获得近亿元人民币的B轮融资,本轮融资由GGV纪源资本领投,A轮领投方君联资本追投,Skillne...
2019-11-27 08:16:00 1237
原创 吴章金: 实例解析 Linux C 语言程序之变量类型
license: "cc-by-nc-nd-4.0""本文从编译、二进制程序文件和运行角度逐级解析了 Linux C 语言程序中几种变量类型"吴章金老师《360度剖析Linux ELF系列文章》:背景说明前几天,有同学在 “泰晓原创团队” 讨论群问道:请教下,谭 C,8.9.3,用 static 声明静态局部变量,在实际中可有案例。看到这个问题,立即浮现的概念是 RUN ONCE,内核源码找...
2019-11-26 13:57:57 1019
原创 解决Linux内核问题实用技巧之-dev/mem的新玩法
/dev/mem里有什么简单来讲,/dev/mem是系统物理内存的映像文件,这里的 “物理内存” 需要进一步解释。物理内存是指我们插在内存槽上的内存条吗?当然是,但物理内...
2019-11-20 08:16:00 5003 4
原创 吴章金:通过操作 Section 为 Linux ELF 程序新增数据
license: "cc-by-nc-nd-4.0"《360度剖析Linux ELF系列》相关文章:背景介绍Section 是 Linux ELF 程序格式的一种核心数据表达方式,用来存放一个一个的代码块、数据块(包括控制信息块),这样一种模块化的设计为程序开发提供了很大的灵活性。需要增加一个功能,增加一份代码或者增加一份数据都可以通过新增一个 Section 来实现。Section 的操作在 L...
2019-11-18 07:00:01 1359
原创 宋宝华: Linux死锁的成因和常规调试方法(预告片)
有一次给一群码农演讲,我喷口水喷了快一个小时,说spinlock等的正确使用以及死锁的原因。下面有个人突然问,“老师,请问什么叫死锁?”。我心里想,把这个人拉出去枪毙一万...
2019-11-15 13:51:32 1621 1
转载 DPDK 报文调度/保序 终极解决方案 Event Dev 简介(硬件加速也很可能是鸿蒙微内核IPC性能的钥匙)...
01背景介绍网络报文的分发以及保序一直以来是让人头痛的问题, 为了完整的解释Event Dev的背景,我们可以从两个基本概念的定义开始:报文分发是指针对网络通信报文的某种...
2019-11-12 18:00:47 2047
原创 吴章金: 深度剖析 Linux共享库的“位置无关”实现原理
license: "cc-by-nc-nd-4.0"背景简介>PIC = position independent code-fpic Generate position-independent code (PIC) suitable for use in a shared library共享库有一个很重要的特征,就是可以被多个可执行文件共享,以达到节省磁盘和内存空间的目标:共享意味着不仅磁...
2019-11-10 17:25:04 1212
原创 邓凡平:技术探讨之请教方舟编译器的十个问题
From:阿拉神农神农和朋友们的杂文集缘起华为的方舟编译器终于走出开源的第一步,官方地址为https://www.openarkcompiler.cn/home 。我个人于今年4月在机械工业出版社出版了“深入理解Android”系列书籍的最后一本书——《深入理解Android Java虚拟机ART》一书。这本书围绕Android系统中Java虚拟机ART做了详尽的源码分析。其中,第六章更是以...
2019-11-10 17:25:04 5230
原创 宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)上集
共享单车、共享充电宝、共享雨伞,世间的共享有千万种,而我独爱共享内存。早期的共享内存,着重于强调把同一片内存,map到多个进程的虚拟地址空间(在相应进程找到一个VMA区域),以便于CPU可以在各个进程访问到这片内存。现阶段广泛应用于多媒体、Graphics领域的共享内存方式,某种意义上不再强调映射到进程虚拟地址空间的概念(那无非是为了让CPU访问),而更强调以某种“句柄”的形式,让大家知道某一片视...
2019-11-08 08:00:00 13842 3
转载 Linux C程序真的不能访问NULL指针吗?
本文将介绍如何对NULL指针地址建立合法映射,从而合法访问NULL指针。本文表达的宗旨:任何虚拟地址,只要有合法的页表映射,就能访问!提到C语言编程,我想几乎所有人都遭遇过NULL指针。我们的代码中总是在不断的判断指针是否为NULL:if (p1 != NULL) { //... } if (p2 == NULL) { exit(-1); }如果我们忘记了这种判断,我们会...
2019-11-07 08:21:00 1292
转载 2019年RT-Thread开发者大会来袭,参与赢四重好礼
前言物联网操作系统已是大势所趋,越来越多的设备在研发设计之初就被要求上物联网操作系统。物联网操作系统不仅能够满足开发的软硬件分离,以及解决开发平台、通信协议等碎片化的问题...
2019-11-07 08:21:00 1165
原创 吴章金: 如何创建一个*可执行*的共享库
license: "cc-by-nc-nd-4.0"前言前段时间,有多位同学在“泰晓原创团队”微信群聊到 C 语言相关的两个问题:如何让共享库文件也可以直接执行如何在可执行文件中用dlopen解析自身的函数这两个需求汇总起来,可以大体理解为如何让一个程序既可以作为共享库,又能够直接运行。这类需求在 Linux 下面其实很常见,比如 ld-linux.so 和 libc.so:$file/l...
2019-11-06 18:28:39 1532 2
原创 宋宝华: 僵尸进程的成因以及僵尸可以被“杀死”吗?
僵尸不可能被杀死,因为它已经死了,不存在再死一次的问题。死的对立面是活,死者已死。只有活的进程才可能被杀死。什么是僵尸首先要明确一点,僵尸进程的含义是:子进程已经死了,但是父进程还没有wait它的一个中间状态,这个时候子进程是一个僵尸。正常情况下子死,父wait,清理掉子进程的task_struct,释放子进程的PID:编译上述程序,运行,我们看到2个a.out进程:杀死子进程4578,看到父进程...
2019-11-04 18:47:05 5295 5
转载 戴君毅: Linus都要再三修正的max()宏是怎样演变的
大家好,又与大家见面了,今天我们继续聊一聊关于Linux内核中的max()宏。在前两篇文章中,小编的同门@梁金荣 同学已经非常贴心地将Linux内核中的max()宏为我们...
2019-11-01 19:06:43 989
LDD6410 S3C6410开发板开发与使用手册
2010-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人