
linux内核
lbaihao
zephyr,data structure, algorithm, protocol,darknet,architecture
展开
-
linux 内核调试(一)
要先修改linux kernel 源代码的顶层Makefile CC = $(CROSS_COMPILE)gcc 修改为CC = $(CROSS_COMPILE)gcc -g这样编译的内核模块就带有debug信息 #arm-linux-objdump -S -D opps.ko>log#vi log这样就可以看到汇编和C源文件的混合代码原创 2015-08-07 22:57:58 · 1581 阅读 · 0 评论 -
Linux /Android ARM 64 bit/32 bit 编程移植
32bit user @ 64 bit kernell Usecompat_ioctl( ) but not onlyunlock_ioctl() in kernel driverlcompat_ioctl( ) :支持64bit的driver必须要实现的ioctl,当有32bit的userspace application call 64bit kernel的IOCT原创 2016-11-17 23:52:30 · 3849 阅读 · 0 评论 -
struct file struct inode
(1)每个进程在进程表中都有一个记录项,记录项包含一张打开的文件描述符表,可将视为矢量,每个描述符占用一项,与每个文件描述符相关联的是:a)文件描述符标志(close_on_exec).b))指向一个文件表项的指针。(2)内核为所用打开文件维持一张文件表,每个文件表项包含:a)文件状态标志(读写等等)b)当前文件偏移量。c)指向该文件V节点表项的指针。(3)每个打开文件原创 2016-10-27 22:46:54 · 434 阅读 · 0 评论 -
linux 3.10 Device Tree 设备树 DTS文件语法
本帖最后由 radixdigit 于 2014-8-28 09:33 编辑Device Tree的用法基本数据格式Device tree是一种简单的节点和属性的树形结构。属性是键值对,而节点可能包括属性和子节点。例如,下面是.dts格式的树形结构:/ { node1 { a-string-property = "A string";原创 2016-05-21 01:06:43 · 2863 阅读 · 0 评论 -
linux内核注意事项
1) 驱动中的延时语句一般禁止使用mdelay(),msleep的话特别是较短10~20ms的时候常常会因为系统调度变成更长的时间,精度较差,需要较为精确的ms级别延时请使用usleep_range(a, b),比如原来mdelay(1)、mdelay(10)可改为usleep_range(1000, 2000)、usleep_range(10000, 12000),如果是长达30ms或以上的延时原创 2015-10-30 11:23:03 · 1398 阅读 · 0 评论 -
linux 内核链表
linux内核中大量使用如下数据结构实现双向链表: struct list_head { struct list_head *next, *prev;}; 如果需要有某种数据结构的双向队列,就在这种结构内部放一个list_head数据结构成员。struct kobject { const char *name; stru原创 2015-11-04 15:45:43 · 460 阅读 · 0 评论 -
linux 内核链表(二)
在开始写linux内核双向循环链表之前,我一直在想我要不要用长篇大论的文字来描述linux内核双向循环链表呢?经过认真的思考之后,我否决了用枯燥的文字向读者描述linux内核双向循环链表的想法,因为对于编程语言来说我相信大多数的读者都应该不喜欢面对枯燥的文字,更喜欢看到代码,同时那也是读者阅读文字后想要实现的东西,所以我决定在这里采用代码加上适当的文字描述的方法来进行讲解,这就使得我不可能用一篇的原创 2015-11-04 20:16:50 · 511 阅读 · 0 评论 -
linux 内核链表( 四 )
大多数的读者在学习编程语言的时候都不喜欢那些枯燥的文字描述,包括我自己在开始学习编程的时候也是这样,对于代码的热情远远高于文字,所以我在我写东西的时候也不喜欢用枯燥的文字描述来向读者讲解,更喜欢用代码加上适当的文字描述的方式进行讲解,因为有些东西可能用枯燥的文字描述半天还不如实实在在的给读者呈现出一段简单的代码,让读者理解得更加的透彻些。但是并不是说文字描述就没用,文字描述也很重要,只是绝大部分读原创 2015-11-04 20:19:09 · 457 阅读 · 0 评论 -
linux 链表(list_entry) 用法
Linux内核中,获取节点地址的函数list_entry():list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个结构的成员指针找到其容器的指针。但是正因为如原创 2015-10-16 17:31:11 · 4099 阅读 · 0 评论 -
linux内核对rootfs的挂载
在系统启动过程的最后阶段,linux内核在调用sys_mount挂载实际根文件系统之前,先调用了init_mount_tree()这个函数挂载了一个虚拟的根文件系统,这是一个基于内存的根文件系统,类似于ramfs文件系统,在挂载完这个“虚拟的”文件系统之后,建立了VFS根目录,也就是“/” 目录。然后才调用sys_mount()挂载真正的根文件系统(比如SD卡上的ext4),最后将它的挂载点移动到原创 2015-09-29 23:15:34 · 2567 阅读 · 0 评论 -
Atitit.linux 内核 新特性 新功能
1. Linux 3.2内核新特性 2012-02-12 22:41:4711.1. EXT4:支持更大的块21.2. BTRFS:更快的数据清理、tree roots自动备份、详细的错误消息、元数据手动检查21.3. 进程带宽控制器21.4. 新架构:Hexagon21.5. Device Mapper中的自动精简配置和递归快照21.6. I/O转载 2016-11-21 22:20:30 · 776 阅读 · 0 评论