5. 内核C语言
2017-12-28 15:11
211 查看
1.__buildin_return_address(LEVEL)
打印函数的堆栈地址,level表示第几层调用地址,0表示第一层,即当前函数,1表示第二层,一次类推.
2.__buildin_frame_address(LEVEL)
打印函数的结构地址,0表示第一层,即当前函数结构地址.这个结构是堆栈中保存局部变量和寄存器的一块区域.
3.__WEAK
函数和初始化的全局变量是强符号(__stroge),未初始化的全局变量是弱符号.
a.同名的强符号只能有一个,否者编译器报错(默认都是强符号的);
b.允许一个强符号一个弱符号,但定义会选择强符号;
c.当多个弱符号时,连接器选择占用空间最大的哪个;
4.liba.so,libb.so都存在函数A,用attribute((visibility(“hidden”))),抑制在链接库时的函数导出,防止因先后链接次序造成的问题.
5.a##x表示把a字符和x字符合并成一个字符串.
6.APIC Timer,PIT针对多CPU环境升级,每个CPU都有一个APIC,因精度不高且有BUG所以很少用.
HPET(High Procision Event TImer)更高精度,更宽计数器(64位).
TSC(Time Stamp Counter)64位寄存器,单步递增性时钟.
7.cache写机制
write through : cpu向cache写,且向memory写.两者保持一致,但速度慢.
post write : cpu写cache,再写另一个更新缓存器,合适时才写memory.一定提高cache访问速度,但连续多次缓冲区不够用,写memory.
write back : cpu写cache,不写memory.cache被新数据更新时,才写memory.
8.Makefile
patsubst 例,将.c文件名称变成.s后缀名称: New=
打印函数的堆栈地址,level表示第几层调用地址,0表示第一层,即当前函数,1表示第二层,一次类推.
2.__buildin_frame_address(LEVEL)
打印函数的结构地址,0表示第一层,即当前函数结构地址.这个结构是堆栈中保存局部变量和寄存器的一块区域.
3.__WEAK
函数和初始化的全局变量是强符号(__stroge),未初始化的全局变量是弱符号.
a.同名的强符号只能有一个,否者编译器报错(默认都是强符号的);
b.允许一个强符号一个弱符号,但定义会选择强符号;
c.当多个弱符号时,连接器选择占用空间最大的哪个;
4.liba.so,libb.so都存在函数A,用attribute((visibility(“hidden”))),抑制在链接库时的函数导出,防止因先后链接次序造成的问题.
5.a##x表示把a字符和x字符合并成一个字符串.
6.APIC Timer,PIT针对多CPU环境升级,每个CPU都有一个APIC,因精度不高且有BUG所以很少用.
HPET(High Procision Event TImer)更高精度,更宽计数器(64位).
TSC(Time Stamp Counter)64位寄存器,单步递增性时钟.
7.cache写机制
write through : cpu向cache写,且向memory写.两者保持一致,但速度慢.
post write : cpu写cache,再写另一个更新缓存器,合适时才写memory.一定提高cache访问速度,但连续多次缓冲区不够用,写memory.
write back : cpu写cache,不写memory.cache被新数据更新时,才写memory.
8.Makefile
patsubst 例,将.c文件名称变成.s后缀名称: New=
相关文章推荐
- 深入php内核,从底层c语言剖析php实现原理
- Linux内核工程导论——内核为何使用C语言
- (9)《基于Linux的C编程与内核导读》--C语言编程实例
- 深入php内核,从底层c语言剖析php实现原理
- 链表的c语言实现以及根据linux内核中链表的实现过程
- 队列的C语言实现(通过内核链表)
- 读内核积累 C语言 相关 特殊使用
- 文档总结21-C语言中的结构体与内核宏
- linux内核之hlist哈希链表的应用---C语言代码实现(内核态)
- 学习笔记--内核中C语言和汇编的使用
- C语言再学习 -- 查看版本及内核信息(转)
- 关于linux环境下c语言内核开发中头文件分类
- Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 【转】
- Linux内核入门(三)—— C语言基本功
- c语言双向循环链表实现-使用内核链表
- Linux0.11内核--汇编和C语言混合编程之参数传递
- 深入php内核,从底层c语言剖析php实现原理
- Linux0.11内核--汇编和C语言混合编程之参数传递
- 链表的c语言实现以及根据linux内核中链表的实现过程
- Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7)