
linux
轻描淡写
暂无
展开
-
linux内核字符设备驱动相关的函数以及结构体
1. struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struc原创 2011-09-13 21:39:32 · 532 阅读 · 0 评论 -
Linux内核中等待队列的几种用法
Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要转载 2012-04-06 13:22:07 · 341 阅读 · 0 评论 -
linux内核组成
linux内核主要由以下几个部分组成1.模块加载函数模块加载时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作例:static int __init init_function(void){ //初始化代码 }module_init(init_function);2.模块卸载函数模块卸载时,模块的卸载函数会自动被内核执行,完成原创 2012-04-05 13:44:24 · 466 阅读 · 0 评论 -
linux内核空间与用户空间互访操作
由于内核空间与用户空间不能直接互访,所以需要借助函数调用来完成1.unsigned long copy_from_user(void *to,const void __user *from,unsigned long count);此函数将用户空间内容复制到内核空间,复制成功返回0否则返回不能被复制的字节数2.unsigned long copy_to_user(v原创 2012-03-31 13:57:49 · 501 阅读 · 0 评论 -
linux内核定时器
简单介绍一下linux提供内涵定时器的相关数据结构struct timer_list { struct list_head entry; unsigned long expires;//定时器到期时间 void (*function)(unsigned long);//定时器到期后执行的函数 unsigned long da原创 2012-03-30 14:45:01 · 393 阅读 · 0 评论 -
linux原子操作
原子操作指的是在执行过程中不会被别的代码路径所中断的操作,下面列出原子操作相关的函数1.void atomic_set(atomic_t *v,int i); //设置原子变量的值为i2.atomic_t v = ATOMIC_INIT(0); //定义原子变量V并初始化为03.atomic_read(atomic_t *v); //返回原子变量的值4.void atom原创 2012-03-27 17:34:28 · 1885 阅读 · 0 评论 -
linux下vim命令详解
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,转载 2012-03-26 09:50:44 · 220 阅读 · 0 评论 -
I2C总线驱动
//////////////I2C.h//////////#define I2C_SCL=0 ()#define I2C_SCL=1 ()#define I2C_SDA=0 ()#define I2C_SDA=1 ()#原创 2011-09-14 20:21:48 · 319 阅读 · 0 评论 -
Linux的I2C体系结构
Linux的I2C体系结构分为3个组成部分1. I2C核心2. I2C总线驱动3. I2C设备驱动 Linux下实现I2C驱动的主要工作1. 提供I2C适配器的硬件驱动2. 提供I2C适配器的原创 2011-09-14 21:28:40 · 477 阅读 · 0 评论 -
linux字符设备驱动例子
无聊,照着书上边抄边写,贴上来共享一下,非常不规范,仅供娱乐/********************************************************#include #include MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){ printk(KERN_EMERG "H原创 2012-04-25 15:47:19 · 398 阅读 · 0 评论