摘要:
在阅读源码的过程中,发现找不到fork函数的定义。后来在linux/init/main.c中找到了这样一条语句static inline _syscall0(int,fork)原来这里就是fork函数的定义。系统在linux/include/unistd.h有一个宏定义。#define _sysca... 阅读全文
摘要:
最近看linux0.11源码时,看到任务切换函数switch_to,感觉很晦涩,于是在网上查了一些资料,现在终于有些眉目,特记录于此,以方便大家参考,有什么错误或不足之处,还请大家指出~switch_to源码/** switch_to(n) should switch tasks to task ... 阅读全文
摘要:
在linux 0.11版本源代码中,在文件linux/include/asm/system.h中有一个宏定义 move_to_user_mode() 1 #define move_to_user_mode() \ 2 __asm__ ("movl %%esp,%%eax\n\t" \ 3 ... 阅读全文
摘要:
在阅读linux源码的过程中遇到了下面的略显奇怪的结构体数组定义。static struct hd_struct{ long start_sect; long nr_sects;}hd[10]={{0,0},};经测试,猜测应该是只对该数组的第一个元素进行初始化为{0,0},而其... 阅读全文
摘要:
void 指针的步长为1,而其他类型的指针的步长与其所定义的数据结构有关。example: 1 #include 2 main() 3 { 4 int a[10]; 5 int *m=a; 6 void *n=(void *)a; 7 ... 阅读全文
摘要:
jmpi是段间跳转指令,用于x86实模式下, 如:BOOTSEG = 0x0c70 jmpi 4, #BOOTSEG 假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当然段cs的值也变为0x0c70,接下来将执行指令0x0c70:0004处的指令。 实模式下寻址是为了兼容8... 阅读全文
摘要:
在linux源码中经常遇到__asm__函数。它其实是函数asm的宏定义#define __asm__ asm,asm函数让系统执行汇编语句。__asm__常常与__volatile__一起出现。__volatile__限制编译器不能对下面的汇编语句进行优化处理。分析下面语句__asm__("mov... 阅读全文
摘要:
#define 语句用于宏定义,在c中,我们可以用其实现函数的功能。如下语句#define test(a,b) a>b?a:b很显然,这是一个比较大小的语句。这里a,b相当于函数中的参数。but,如果我们想写一些复杂的语句怎么办。有办法,如下。#define test(a,b) ({\ ... 阅读全文
摘要:
http://www.cnblogs.com/vamei/p/3232088.html包含了一个绘制关系图的包 阅读全文
摘要:
比如定义宏,#define FREE1(p) if (p) free (p)然后这样调用:if (expression)FREE1(p);elseprintf(“expression was false.\n”) ;展开:if (expression)if (p) free (p);elseprin... 阅读全文