LDD读书笔记第十一章-内核的数据类型
Linux数据类型
| Arch | char | short | int | long | ptr | long-long | u8 | u16 | u32 | u64 |
| i386 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| alpha | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
| armv41 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| ia64 | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
| m86k | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| mips | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| ppc | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| sparc | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| sparc64 | 1 | 2 | 4 | 4 | 4 | 8 | 1 | 2 | 4 | 8 |
| x86_64 | 1 | 2 | 4 | 8 | 8 | 8 | 1 | 2 | 4 | 8 |
需要注意的是sparc64架构运行的是32位用户空间。但是在内核空间是64位的。
在当前的所有平台上指针和long型的大小总相同
u8等固定大小的值有其有符号版本以s代替u如:s8
如果需要在用户空间使用固定大小的话使用双下划线版本如__u8
固定大小的类型是linux特有的 如果考虑向其他unix变种移植应使用C99标准类型变量如:uint8_t
[阅读全文] »
LDD读书笔记第十章-中断处理
当硬件需要处理器关注时(如硬盘读取完成,通知可以继续读取其他内容。),产生某个事件通知处理器。这种机制叫做中断。一个中断仅仅是个信号。
准备并口
在没有设定产生中断之前,设备不会产生中断。
对于并口标准来说设置端口2(0x37a:0×378+2,0x27a:0×278+2或者其他)的第四位来启用中断报告,初始化的时候用outb莱斯设置这个位。
中断启用时,每当引脚10(ACK)位的电平发生从底到高改变时,并口就会产生一个中断。

[阅读全文] »
LDD读书笔记第九章-与硬件通信
I/O端口和I/O内存
i/o寄存器和常规内存
为了防止边界效应的干扰,驱动程序必须确保不使用高速缓存,并且在访问寄存器时不发生读或写指令的从新排序。
高速缓存:把底层硬件配置成在访问IO区域时禁止硬件缓存。
从新排序:使用内存屏障
[阅读全文] »
川子-《郑钱花》歌词
偶然间看到。
反映着这个社会的某些事情。
那歌声,那嗓音。
值得深思。
值得思考。
川子,北京南城土著。他自幼生性刚猛、桀骜不驯,早年因为打架斗殴饱受牢狱之苦。在狱中,川子开始学习吉他写歌,因为表现出色获得减刑。出狱后,川子的精 神世界发生了彻底的改变,他不再同过去的朋友圈子密切交往,甚至不太喜欢结识新的朋友。他的世界一下子狭小得让人透不过气来,家人还有他的爱犬嘟嘟几乎成 了他生活中的唯一。
[阅读全文] »
