随笔分类 -  Linux实践应用研究院

1

浅析Linux等待队列
摘要:(转载) bojan 收录于2010-10-09 阅读数: 公众公开 我也要收藏 在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。等待很早就作为一个基本的功能单位出现在Linux内核中,它以队列为基础数据结构,与进程调度机制紧密结合,能够用于实现内核中的异步事件通知机制。我们从它的使用范例着手,看看等待队列是如何实现异步信号功能的。以下代码节选自kernel/printk.c。DECLARE_WAIT_QUEUE_HEAD(log_wait); // 初始化等待队列头log_waitstatic DEFINE_SPINLOCK(logbuf_lock); 阅读全文

posted @ 2011-01-14 13:50 呵呵,呵呵 阅读(6846) 评论(1) 推荐(0)

linux进程的休眠(等待队列)
摘要:(转载) bojan 收录于2010-10-09 阅读数: 公众公开 我也要收藏 当进程以阻塞的方式通信,在得到结果前进程会挂起休眠。为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则:一、永远不要在原子上下文中进入休眠。二、进程休眠后,对环境一无所知。唤醒后,必须再次检查以确保我们等待的条件真正为真简单休眠完成唤醒任务的代码还必须能够找到我们的进程,这样才能唤醒休眠的进程。需要维护一个称为等待队列的数据结构。等待队列就是一个进程链表,其中包含了等待某个特定事件的所有进程。linux维护一个“等待队列头”来管理,wait_queue_head_t,定义在linux/wait.hstr 阅读全文

posted @ 2011-01-14 13:49 呵呵,呵呵 阅读(22393) 评论(1) 推荐(0)

Linux内核中等待队列的几种用法
摘要:(转载) bojan 收录于2010-10-09 阅读数: 公众公开 我也要收藏 Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变为真)2. 手工休眠方式一: 1)建立并初始化一个等待队列项 DEFINE_WAIT(my_wait) == wait_queue_t my_wait; 阅读全文

posted @ 2011-01-14 13:46 呵呵,呵呵 阅读(1596) 评论(0) 推荐(0)

linux等待队列使用步骤
摘要:(转载) bojan 收录于2010-10-09 阅读数: 公众公开 我也要收藏 在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。wait queue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现). Linux-2.6提供如下关于等待队列的操作: (1) 定义"等待队列头" wait_queue_head_t my_queue; (2) 初始化"等待队列头" init_waitqueue_ 阅读全文

posted @ 2011-01-14 13:44 呵呵,呵呵 阅读(11497) 评论(0) 推荐(0)

内核的等待队列
摘要:内核的等待队列内核的等待队列creator sz111@126.com1. 等待队列在内核中有着极其重要的作用,作为异步操作,他的实现简单而又强大。 它通过一个双链表和把等待tast的头,和等待的进程列表链接起来。从上图可以清晰看到。所以我们知道,如果要实现一个等待队列,首先要有两个部分。队列头和队列项。下面看他们的数据结构。struct list_head { struct list_head *next, *prev;};struct __wait_queue_head { spinlock_t lock; struct list_head task_list;};typedef stru 阅读全文

posted @ 2011-01-14 12:00 呵呵,呵呵 阅读(855) 评论(0) 推荐(0)

fd_set 用法
摘要:fd_set 用法默认分类 2008-12-11 10:29:17 阅读3921 评论1 字号:大中小订阅 select()函数主要是建立在fd_set类型的基础上的。fd_set(它比较重要所以先介绍一下)是一组文件描述字(fd)的集合,它用一位来表示一个fd(下面会仔细介绍),对于fd_set类型通过下面四个宏来操作: fd_set set; FD_ZERO(&set); /* 将set清零使集合中不含任何fd*/ FD_SET(fd, &set); /* 将fd加入set集合 */ FD_CLR(fd, &set); /* 将fd从set集合中清除 */ FD_ISSET(fd 阅读全文

posted @ 2011-01-13 16:08 呵呵,呵呵 阅读(3732) 评论(0) 推荐(0)

select函数详细分析
摘要:Linux程序设计 2007-07-05 22:25:48 阅读340 评论0 字号:大中小订阅 select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看到“On success, a file descriptor for the new socket is returned.”而man 2 open可以看到“open() and 阅读全文

posted @ 2011-01-13 15:44 呵呵,呵呵 阅读(1720) 评论(0) 推荐(0)

Linux驱动学习记录
摘要:[转]2.4内核注册驱动要用:int register_chrdev (unsigned int major, const char *name, struct file_operations *fops);2.4内核注销驱动要用:int unregister_chrdev( unsigned int major, const char *name );2.4内核驱动注册完后,要用以下代码创建设备文件 static devfs_handle_t devfs_handle; devfs_handle = devfs_register( NULL, DEVICE_NAME, DEVFS_FL_DE 阅读全文

posted @ 2011-01-13 14:26 呵呵,呵呵 阅读(923) 评论(0) 推荐(0)

ARM amba总线介绍
摘要:什么是AMBA片上总线?随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规... 阅读全文

posted @ 2010-10-28 10:39 呵呵,呵呵 阅读(675) 评论(0) 推荐(0)

嵌入式Linux驱动程序
摘要:转自:一塌糊涂的BLOG在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。字符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的... 阅读全文

posted @ 2010-10-26 15:57 呵呵,呵呵 阅读(469) 评论(0) 推荐(0)

Linux设备模型之platform总线
摘要:------------------------------------------ 出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完platform总线之后,... 阅读全文

posted @ 2010-10-26 10:11 呵呵,呵呵 阅读(1632) 评论(0) 推荐(0)

Linux设备驱动程序学习(13)-Linux设备模型(总线、设备、驱动程序和类)
摘要:Linux设备驱动程序学习(13)-Linux设备模型(总线、设备、驱动程序和类)【转】文章的例子和实验使用《LDD3》所配的lddbus模块(稍作修改)。提示:在学习这部分内容是一定要分析所有介绍的源代码,知道他们与上一部分内容(kobject、kset、attribute等等)的关系,最好要分析一个实际的“flatform device”设备,不然会只学到表象,到后面会... 阅读全文

posted @ 2010-10-26 09:53 呵呵,呵呵 阅读(1376) 评论(0) 推荐(0)

Linux总线驱动
摘要:Linux驱动之设备总线驱动设计【转】 一、总线驱动设计过程 总线驱动数据结构定义,struct bus_type ,主要需要定义的是name 和match 成员,uevent为热插拔的前对环境变量的设置。定义一个总线设备,对于CPU核心来说,总线也只是一个外设而已,所以需要定义总线设备,struct device ,主要要定义的成员是BUS_ID 和 release 两个成员。定义总线属性B... 阅读全文

posted @ 2010-10-26 09:33 呵呵,呵呵 阅读(2470) 评论(0) 推荐(0)

Linux设备驱动并发控制
摘要:【转】深入浅出Linux设备驱动并发控制介绍 (2007-05-28 22:32)  在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发'竞态',因此我们必须对共享资源进行并发控制。Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。  自旋锁与信号量'类似而不类',类似说的是它们功能上的相似性,'不类'指代它们... 阅读全文

posted @ 2010-10-20 13:17 呵呵,呵呵 阅读(858) 评论(0) 推荐(0)

字符设备驱动程序细节
摘要:Linux设备驱动程序之读书笔记(一)2009-10-13 15:56【转】Linux设备驱动程序之读书笔记(一) ——第三章字符设备驱动程序○、说明笔记适用于Linux的2.6.10以后的内核。笔记以Linux Device Driver3提供的scull程序(scull目录中的main.c和scull.h)为记录主线,并以该驱动程序中的各种系统调用和函数调用流程为记录顺... 阅读全文

posted @ 2010-10-20 10:48 呵呵,呵呵 阅读(781) 评论(0) 推荐(0)

用户空间的open,read,write,llseek等函数在内核中对应的函数
摘要:【转】发表于 2009-12-12 14:42 | 只看该作者平时网络部分的东西碰的多些,这块一开始还真不知道怎么写,因为肯定和在用户空间下是不同的。google过后,得到以下答案。一般可以用两种方法:第一种是用系统调用。第二种方法是filp->open()等函数。下面分别来说下这两种方法。1 利用系统调用:sys_open,sys_write,sys_read等。其实分析过sys_open... 阅读全文

posted @ 2010-10-20 10:46 呵呵,呵呵 阅读(6757) 评论(0) 推荐(0)

module_param宏
摘要:关于module_param()宏 (转) 在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param() module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:#define module_param(name, type, perm) module_para... 阅读全文

posted @ 2010-10-20 10:30 呵呵,呵呵 阅读(918) 评论(0) 推荐(0)

象棋理论
摘要:我最近把象棋研究了一番,虽然没有看什么棋谱,也没有在变化上发现,但是确实有一个不小的进步。呵呵。。。你们不信,我不说。孙子兵法:知己知彼,百战不殆。 阅读全文

posted @ 2010-10-19 12:11 呵呵,呵呵 阅读(379) 评论(0) 推荐(0)

LCD液晶屏的Linux驱动开发
摘要:LCD在裸机上的测试已经完成了。现在要做他的驱动程序。但是不知从何着手,唉,郁闷。看了很多驱动开发,都是浅浅的谈了点儿,各个函数的意义。又做了简单的memory驱动。都是这些。实在找不出什么新鲜的,有依据的开发LCD驱动的资料。国嵌教育的东西也是很浅。。。如何办呢?自己发明一个。。。?另外驱动的意义和应用的关系是什么? DM365的控制寄存器和地址真是超复杂和麻烦。。。没有资料。我真是个勇士。。。... 阅读全文

posted @ 2010-10-19 11:34 呵呵,呵呵 阅读(677) 评论(0) 推荐(0)

开发路
摘要:亲爱的朋友们,  在这里安家,是我的荣幸。多多指教。  我的工程师之路,要在DM365这块硬骨头开始了。其实想想,觉得很不易。  因为本人对于C的爱好,和单片机的兴趣,完全可以去玩玩arm cortex,avr...资源众多,无需费神劳苦思索别人芯片。。。  但是,苦于利润,和新鲜。我们开始开发dm365。  网上真是没有资料。  裸机的资源我还在研究,能看的只有官方发布的PDF。想LCD控制器这... 阅读全文

posted @ 2010-10-08 11:40 呵呵,呵呵 阅读(461) 评论(0) 推荐(0)

1

导航