linux驱动编程
q345852047
这个作者很懒,什么都没留下…
展开
-
结构体内存分配问题(转)
结构体内存分配问题(转)1)sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用。(2)终于搞懂struct结构体内存分配问题了,结构体中各个成员字节对齐遵循以下几个原则:1.结构体每个成员相对于结构体首地址的偏移量(offset)都是(这个)成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding); 例如有以下转载 2012-03-13 11:33:21 · 9078 阅读 · 0 评论 -
kmalloc vmalloc malloc区别
kmalloc()和vmalloc()介绍kmalloc()用于申请较小的、连续的物理内存1. 以字节为单位进行分配,在中2. void *kmalloc(size_t size, int flags)分配的内存物理地址上连续,虚拟地址上自然连续3. gfp_mask标志:什么时候使用哪种标志?如下:———————————————————————————————-情形转载 2012-03-15 20:34:43 · 777 阅读 · 0 评论 -
sk_buff结构分析
文章出自:http://www.cnblogs.com/iceocean/articles/1594160.html前言:以下是根据《深入理解Linux网络技术内幕》对sk_buff的相关总结,由于是刚刚看这本书(太厚了),不免在前期出现错误,随着对此书的深入我会在修改前面的错误,也希望各位牛人给予指点。帮助我成长。sk_buff分析:sk_buff是Linux网络代码中最重要原创 2012-03-19 14:24:52 · 746 阅读 · 0 评论 -
Linux添加自定义系统调用
一、 什么是系统调用 在Linux的世界里,我们经常会遇到系统调用这一术语,所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再通过一定的方式把系统调用给用户,一般都通过门(gate)陷入(trap)实现。系统调用就是用户空间应用程序和内核提供的服务之间的一个接口。由于服务是在内核中提供的,因此无法执行直接调用;相反,您必须使用一个转载 2012-07-04 15:07:29 · 903 阅读 · 0 评论 -
(void __user *)arg 中__user的作用
__user宏简单告诉编译器(通过noderef)不应该解除这个指针的引用(因为在当前地址空间中它是没有意义的)。 (void __user *)arg 指的是arg值是一个用户空间的地址,不能直接进行拷贝等,要使用例如copy_from_user,copy_to_user等函数。默认是内核空间,因为这是驱动,是在内核空间运行的。 直接拷贝不了,因为一个是在用户空间,一原创 2012-07-03 09:39:23 · 13383 阅读 · 0 评论