- 博客(22)
- 收藏
- 关注
转载 LINUX 2.6 内核下多C文件模块编译方法
MODULE_NAME :=testRESMAN_CORE_OBJS :=hello1.oRESMAN_GLUE_OBJS :=hello2.o$(MODULE_NAME)-objs := $(RESMAN_CORE_OBJS) $(RESMAN_GLUE_OBJS)obj-m :=test.oKERNELDIR ?= /lib/modules/$(shell uname -r
2014-03-26 09:22:01 1435
转载 input子系统学习(2)
下面我们看下handler和input_dev之间是如何联系起来的,handle这个结构体就是联系两者的纽带,在前面分析input_register_handler时曾提到过handle。点击(此处)折叠或打开struct input_handle { void *private; //私有数据 in
2014-03-22 15:52:00 413
转载 input子系统学习(1)
input子系统学习进行简单的总结。先看driver/input/input.c入口函数input_init点击(此处)折叠或打开static int __init input_init(void){ //此函数主要代码 input_init_abs_bypass(); err = class_regis
2014-03-22 14:51:33 494
转载 信号量(semaphore)
信号量(semaphore) Linux内核的信号量在概念和原理上与用户态的System V的IPC机制信号量是一样的,但是它绝不可能在内核之外使用,因此它与System V的IPC机制信号量毫不相干。 信号量在创建时需要设置一个初始值,表示同时可以有几个任务可以访问该信号量保护的共享资源,初始值为1就变成互斥锁(Mutex),即同时只能有一个任务可以访问信号量保护的共享资源。
2014-03-21 10:04:40 655
转载 AWK命令详解(大全)
什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk还远没达到它应有的知名度。awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能:它既不是具有独立意义的英文单词,也不是几个相关单词的缩写。事实上,awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernig
2014-03-14 15:11:04 433
转载 堆和栈
一、预备知识―程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)― 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ― 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态
2014-03-12 15:00:10 362
转载 malloc()和calloc()
malloc()函数有一个参数,即要分配的内存空间的大小:void*malloc(size_tsize);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void*calloc(size_tnumElements,size_tsizeOfElement);如果调用成功,函数malloc()和函数callo
2014-03-12 14:54:58 361
转载 linux驱动加载命令和驱动模块信息查看
驱动操作命令: insmod / modprobe 加载驱动 rmmod 卸载驱动 lsmod 查看系统中所有已经被加载了的所有的模块以及模块间的依赖关系 modinfo 获得模块的信息
2014-03-11 15:04:42 923
转载 Qt头文件中的QT_BEGIN_NAMESPACE
在源代码中是这样定义的:1# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {2# define QT_END_NAMESPACE }也就是说,如果你定义以下内容:1Q
2014-03-07 19:11:57 776
转载 struct inode 和 struct file
1、struct inode──字符设备驱动相关的重要结构介绍内核中用inode结构表示具体的文件,而用file结构表示打开的文件描述符。Linux2.6.27内核中,inode结构体具体定义如下:struct inode {struct hlist_node i_hash;struct list_head i_list;struct list_head
2014-03-07 10:38:15 350
转载 class_create()函数应用
//主要是在/sys/class/ 下创建一个 “name”的文件夹 ! 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_cr
2014-03-07 10:13:48 1451
转载 linux驱动结构之class及相关结构体
设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。struct class{ const char *name; //类名称 struct module *owner; //对应模块
2014-03-07 10:05:14 860
转载 使用cdev_add注册字符设备
1.2.3 使用cdev_add注册字符设备在Linux 2.6内核中的字符设备用cdev结构来描述,其定义如下:struct cdev { struct kobject kobj; struct module *owner; //所属模块 const struct file_operations *ops; //文件操作结构 stru
2014-03-07 09:49:39 576
转载 linux内核cdev_init系列函数(字符设备的注册)
内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 const
2014-03-06 22:17:46 390
转载 register_chrdev_region和alloc_chrdev_region
分配并注册主次设备号 设备号是在驱动module中分配并注册的,也就是说,驱动module拥有这个设备号(我的理解),而/dev目录下的设备文件是根据这个设备号创建的,因此,当访问/dev目录下的设备文件时,驱动module就知道,自己该出场服务了(当然是由内核通知)。 在Linux内核看来,主设备号标识设备对应的驱动程序,告诉Linux内核使用哪一个驱动程序为该设备(也就是/
2014-03-06 22:05:22 501
转载 void及void指针含义的深刻解析
void的含义void即“无类型”,void *则为“无类型指针”,可以指向任何数据类型。void指针使用规范①void指针可以指向任意类型的数据,亦即可用任意数据类型的指针对void指针赋值。例如:int * pint;void *pvoid;pvoid = pint; /* 不过不能 pint= pvoid; */如果要将pvoid赋给其他类型指针,
2014-03-06 20:40:20 386
转载 linux 内核分析之list_head
本文详细分析了 2.6.x 内核中链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。一、 链表数据结构简介链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序
2014-03-06 17:17:26 444
转载 _raw_readl() 与ioread32()有什么区别
有啥子区别?都是在驱动中读(写)虚拟地址吧? -- ARM架构下: #define __raw_readl(a) (__chk_io_ptr(a), *(volatile unsigned int __force *)(a)) #define ioread32(p) ({ unsigned int __v = le32_to_cpu((__force
2014-03-06 16:37:37 3796
转载 Linux驱动结构学习笔记 pci之pci_dev
每种类的PCI设备都可以用结构类型pci_dev来描述。更为准确地说,应该是每一个PCI功能,即PCI逻辑设备都唯一地对应有一个pci_dev设备描述符。该数据结构的定义如下(include/linux/pci.h):struct pci_dev {struct list_head global_list;/* 全局链表元素global_list:每一个pci_dev结构都通过
2014-03-05 10:59:42 1197
原创 __init, __initdata, __devinit 和 __devinitdata的作用
在LDD中第二章有提到2.7. Initialization and Shutdown Initialization functions should be declared static, since they are not meant to be visible outside the specific file; there is no hard rule about
2014-03-05 10:35:28 1359
转载 error: asm/arch/regs-gpio.h: No such file or directory 此类问题的解决办法
注:基于linux2.6.31内核的问题解决方案,其思路适用于其他内核版本。不少嵌入式Button或是Led驱动程序的头文件都包含,和等这几个头文件。在这这些头文件中定义了硬件相关的资源描述,如I/O,中断的宏定义。当我们直接include上述头文件时,就会出现如下的错误。error: asm/hardware.h: No such file or directory
2014-03-01 15:46:01 7375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人