随笔分类 -  内核代码艺术

Linux Kernel代码艺术——数组初始化
摘要:前几天看内核中系统调用代码,在系统调用向量表初始化中,有下面这段代码写的让我有点摸不着头脑:const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = { /* * Smells like a compiler bug -- it doesn't work * when the & below is removed. */ [0 ... __NR_syscall_max] = &sys_ni_syscall,#include };咱先不管上面代码的意思,先来回顾一下 C 语言中数组初始化的相关知识,然后... 阅读全文

posted @ 2013-09-26 18:57 hazir 阅读(4176) 评论(10) 推荐(6) 编辑

Linux Kernel代码艺术——系统调用宏定义
摘要:我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量、宏、函数等的定义处。但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数名的特点是sys_×××,例如我们想找open函数的内核系统调用代码,在SI提供的符号表中搜索sys_open,能找到函数的声明:asmlinkage long sys_open(const char __user *filename, int flags, umode_t mode);原本SI提供从函数名按住Ctrl单击鼠标左键能跳转到定义处的功能,但运用在系统调用 阅读全文

posted @ 2013-09-19 22:12 hazir 阅读(4943) 评论(0) 推荐(2) 编辑

Linux Kernel 代码艺术——编译时断言
摘要:本系列文章主要写我在阅读Linux内核过程中,关注的比较难以理解但又设计巧妙的代码片段(不关注OS的各个模块的设计思想,此部分我准备写在“深入理解Linux Kernel” 系列文章中),一来通过内核代码复习一下C语言及汇编语言的语法,二来学习内核开发大牛们书写代码的风格及思路。在内核文件 include/linux/bug.h中,有下面两行的宏定义:1 2 3 4 5 6 /* Force a compilation... 阅读全文

posted @ 2013-07-15 21:08 hazir 阅读(3700) 评论(1) 推荐(2) 编辑

一个代码可以创造一个世界,也可以毁灭一个世界!

点击右上角即可分享
微信分享提示