driver
jgw2008
这个作者很懒,什么都没留下…
展开
-
函数snd_soc_register_codec()分析
函数snd_soc_register_codec()的主要作用是注册codec到ASoC,另外呼叫函数snd_soc_register_dais()注册DAI(Digital Audio Interface).原创 2016-10-12 18:13:09 · 7916 阅读 · 0 评论 -
函数 INIT_WORK() / schedule_work()
1. 初始化工作队列INIT_WORK();2. 调度工作队列 schedule_work();工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列。说白了就是系统延时调度的一个自定义函数。1、定义struct work_struct irq_queue;2、初始化INIT_WORK(&irq_qu转载 2016-09-29 16:50:02 · 9607 阅读 · 0 评论 -
函数 mutex_init() / mutex_lock() / mutex_unlock()
1. 初始化互斥体 -- mutex_init();2. 获得互斥体 -- mutex_lock();3. 释放互斥体 -- mutex_unlock();mutex不能使用在 中断的上下文 中。1. mutex_init(), 注意mutex使用之前都需要先init/** * mutex_init - initialize the mutex * @mut原创 2016-09-29 14:50:51 · 19384 阅读 · 0 评论 -
函数INIT_DELAYED_WORK() / queue_delayed_work()
转自 http://b8807053.pixnet.net/blog/post/292002646-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8queue_delayed_work%E5%87%BD%E6%95%B81. delayed_workqueue主要用在需要延遲處理任務的驅動中,這些驅動的特性主要是不能使用中斷。delayed_workqueu转载 2016-09-29 13:50:35 · 1820 阅读 · 0 评论 -
Linux Driver教程PPT
国内外有很多大学的教学PPT都是公开,这一点十分有利于大家学习。下面的链接,是来自 旧金山大学(University of San Francisco)的计算机科学系(department of computer science)的教程,讲述Linux Driver,http://cs.usfca.edu/~cruse/cs635/Course Textbooks:原创 2016-09-29 11:47:23 · 1073 阅读 · 0 评论 -
函数INIT_DELAYED_WORK()/schedule_delayed_work() / cancel_delayed_work_sync()
Delay work 相关的函数1. 初始化delay work -- INIT_DELAYED_WORK()2. 调度delay work -- schedule_delayed_work()3. 取消delay work -- cancel_delayed_work_sync()1. 函数INIT_DELAYED_WORK()-- 初始化delay work并设置tim原创 2016-09-28 20:11:31 · 13862 阅读 · 0 评论 -
Linux workqueue工作原理
1. 什么是workqueue Linux中的Workqueue机制就是为了简化内核线程的创建。通过调用workqueue的接口就能创建内核线程。并且可以根据当前系统CPU的个数创建线程的数量,使得线程处理的事务能够并行化。workqueue是内核中实现简单而有效的机制,他显然简化了内核daemon的创建,方便了用户的编程. 工作队列(workqueue)是另外一种将转载 2016-09-28 19:35:02 · 335 阅读 · 0 评论 -
函数module_platform_driver()
函数 module_platform_driver(xxx);该函数定义在include/linux/platform_device.h文件中: #define module_platform_driver(__platform_driver) \ module_driver(__platform_driver, platform_driver_register,原创 2016-09-28 15:05:59 · 7576 阅读 · 0 评论 -
函数dev_get_drvdata()
函数dev_get_drvdata(), 是用来返回driver的私有数据的,其函数实现如下。另外,与之相对应的保存driver的私有数据的函数是dev_set_drvdata()。void *dev_get_drvdata(const struct device *dev){ if (dev && dev->p) return dev->p->driver_data; re原创 2016-09-28 18:40:02 · 3676 阅读 · 0 评论 -
函数 platform_set_drvdata()
Probe函数中定义的私有数据,是如何保存起来的呢?方法之一就是呼叫 函数platform_set_drvdata().下面看一下函数platform_set_drvdata()的实现,static inline void platform_set_drvdata(struct platform_device *pdev, void *data){ dev_set原创 2016-09-28 18:17:14 · 5575 阅读 · 0 评论 -
函数 devm_kzalloc()
函数 devm_kzalloc() 和kzalloc()一样都是内核内存分配函数,但是devm_kzalloc()是跟设备(device)有关的,当设备(device)被detached或者驱动(driver)卸载(unloaded)时,内存会被自动释放。另外,当内存不在使用时,可以使用函数devm_kfree()释放。而kzalloc()则需要手动释放(使用kfree()),但如果工程师检查原创 2016-09-28 16:52:46 · 19365 阅读 · 0 评论 -
内核通知链原理及机制
一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会被执转载 2016-09-29 18:20:53 · 350 阅读 · 0 评论