内核驱动的一些技术处理函数
来源:互联网 发布:淘宝卖家辅助工具 编辑:程序博客网 时间:2024/06/08 00:27
//***********************************************************
1./* 工作队列: */
step 1)/* 定义和初始化: */
static struct workqueue_struct *wq = NULL;
static struct work_struct work_delayed;
wq = create_workqueue("skeleton_dev_wq")
INIT_WORK(&work_delayed, work_queue_func, NULL);
static void work_queue_func(struct work_struct *work_wq)
{
}
step 2)/* 使用 */
queue_delayed_work(wq, &work_delayed, 50)
step 3)/* 注销 */
cancel_delayed_work(&work_delayed)
destroy_workqueue(wq)
2./* 定时器: */
step 1)/* 定义和初始化 */
struct timer_list tmr;
init_timer(&tmr);
tmr.function = TestTimerCallback;
static void TestTimerCallback(unsigned long data)
{
}
step 2)/* 使用: */
tmr.expires = jiffies + 100
add_timer(&tmr)
step 3)/* 注销 */
del_timer(&tmr)
3./* tasklet */
step 1)/* 定义和初始化 */
#include <linux/interrupt.h>
//声明一个名叫tasklet_test的tasklet,它的处理函数为tasklet_test_handle()
DECLARE_TASKLET(tasklet_test, tasklet_test_handle, 0);
static void tasklet_test_handle(unsigned long arg)
{
}
step 2)/* 使用 */
//调度这个tasklet: 调度一下执行一次
tasklet_schedule(&tasklet_test);
step 3)/* 注销 */
//禁用这个tasklet
tasklet_kill(&tasklet_test);
4./* wait queue */
step 1)/* 定义和初始化 */
#include <linux/workqueue.h>
static wait_queue_head_t wqChgEvent;
init_waitqueue_head(&wqChgEvent);
step 2)/* 使用 */
wait_event_interruptible_timeout()/* 等待 */
wake_up_interruptible(&wqChgEvent)/* 被唤醒 */
step 3)/* 注销 */
5./* thread */
step 1)/* 定义和初始化 */
static int test_kernel_thread(void *dummy)
{
}
step 2)/* 使用 */
kthread_run(test_kernel_thread, chgInfo, "kernel thread test")
step 3)/* 注销 */
//***********************************************************
1./* spinlock => 死等,不会引起进程间切换 */
step 1)/* 定义和初始化 */
static spinlock_t lockEvent;
step 2)/* 使用 */
spin_lock_irqsave(&lockEvent, flags)
// 临界资源: 如一个变量
spin_unlock_irqrestore(lockEvent, flags
step 3)/* 注销 */
2./* semaphore => 可能引起进程间切换 */
step 1)/* 定义和初始化 */
#include <linux/semaphore.h>
step 2)/* 使用 */
up()
// 临界资源
down()
step 3)/* 注销 */
- 内核驱动的一些技术处理函数
- 驱动的一些基本函数
- 内核的驱动和在cpu的大小端无关,内核提供一套函数来处理大小端的区别
- <学习笔记>Windows驱动开发技术详解__Windows内核函数
- linux 内核驱动相关的函数记录
- 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)
- 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)
- epoll 事件处理的技术内核分析
- 常用的一些处理函数
- 常用的一些处理函数
- 常用的一些处理函数
- 内核 驱动 -- 常用函数
- 中断处理程序、中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)
- 中断处理程序、中断上下文中处理延时及一些函数的调用规则(调IIC中断驱动有感)
- printk()函数的使用 内核调试技术
- 【Tiny6410 And Linux】—(5.1)—RamDisk 驱动实现(内核缺省的处理函数 __make_request())——原理
- 【Tiny6410 And Linux】—(5.1)—RamDisk 驱动实现(内核缺省的处理函数 __make_request())——代码
- s3c2440 OHCI驱动的一些函数
- 使用 Apache MINA 开发高性能网络应用程序[转]
- FLASH 中如何做到与加载SWF文件之间的交互!
- Java_web开发_SSH spring中取得Bean实例的方法
- 悲剧啊
- pb-connect-oracle-error1
- 内核驱动的一些技术处理函数
- C++变量初始化问题总结
- assert() 函数用法
- 【数据库】使用ADO方法连接数据库的OPEN方法的字符串问题
- mknod详解Linux学习
- 【shell】expr命令---数值计算+字符处理
- request_irq() | 注册中断服务
- oracle无监听
- 在京高校大学生“准”程序员召集令(新发布上课时间及地点)