linux内核
文章平均质量分 82
狂奔的蜗牛Alex
这个作者很懒,什么都没留下…
展开
-
自旋锁(spinlock)
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,\"自旋\"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_tryloc转载 2012-08-21 13:58:01 · 319 阅读 · 0 评论 -
Select()系统调用及文件描述符集fd_set的应用
Select()系统调用及文件描述符集fd_set的应用在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。select()的调用形式为:#include #include int select(int maxfd, f转载 2012-10-23 16:00:52 · 760 阅读 · 0 评论 -
字节对齐详解-----(三)gcc 的字节对齐扩展
gcc 的字节对齐扩展一、在阅读ffmpeg代码时经常看到类似下面的语句: #pragma pack(n) #pragma pack() 和 __attribute((aligned (8))) __attribute__ ((packed)); 例如: # ifdef __GNUC__ static inline uint32_t unalign转载 2012-08-21 13:58:02 · 2492 阅读 · 0 评论 -
使用ioctl和内核交换数据
使用ioctl和内核交换数据1. 前言使用ioctl系统调用是用户空间向内核交换数据的常用方法之一,从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,能是所有一个内核设备即可。2. 基本过程在内核空间中ioctl是非常多内核操作结构的一个成员函数,如文件操作结构struct file_operations(include/linux/f转载 2012-08-21 13:58:04 · 712 阅读 · 0 评论 -
copy_to_user,copy_from_user,get_user,put_user函数比较
copy_to_user-- Copy a block of data into user space. copy_from_user -- Copy a block of data from user space.get_user -- Get a simple variable from user space.put_user -- Write a simple v原创 2012-08-21 13:58:01 · 433 阅读 · 0 评论 -
字节对齐详解-----(一)字节对齐问题概述
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数转载 2012-10-23 15:52:03 · 1083 阅读 · 0 评论 -
字节对齐详解-----(二)ARM下的对齐处理
ARM下的对齐处理from DUI0067D_ADS1_2_CompLib 3.13 type qulifiers 有部分摘自ARM编译器文档对齐部分 一.对齐的使用: 1.__align(num) 这个用于修改最高级别对象的字节边界。在汇编中使用LDRD或者STRD时就要用到此命令__align(8)进行修饰限制。来保证数据对象是相应对齐。这个修饰对象的命令最转载 2012-08-21 13:58:02 · 3624 阅读 · 0 评论 -
module_param和module_param_array
module_param(name, type, perm)name: 模块參数名称(就像一个变量名一样)type: 参数类型(同样类似于变量类型),有byte(unsigned char), short, ushort, int, uint, long, ulong, charp(相当于char *,不超过1024字节的字符串), bool, invbool(反boo转载 2012-08-21 13:58:05 · 378 阅读 · 0 评论 -
Linux内核中的platform机制
一、platform设备模型 从Linux 2.6起引入了一套新的驱动管理和注册机制:platform_device和platform_driver。Linux中大部分的设备驱动,都可以使用这套机制,设备用platform_device表示,驱动用platform_driver进行注册。 Linux platform. driver机制和传统的device dr原创 2012-08-21 13:58:05 · 1468 阅读 · 0 评论 -
struct vm_area_struct
Linux内核中,关于虚存管理的最基本的管理单元应该是struct vm_area_struct了,它描述的是一段连续的、具有相同访问属性的虚存空间,该虚存空间的大小为物理内存页面的整数倍。 下面是struct vm_area_struct结构体的定义:QUOTE:struct vm_area_struct {struct mm_struc原创 2012-08-21 13:58:01 · 520 阅读 · 0 评论 -
poll函数可用的测试值
poll函数 poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 4.原创 2012-10-23 16:02:58 · 726 阅读 · 0 评论