2011年12月28日

RTC

摘要: RTC Use the hwclock utility to test RTC. The RTC device node created is /dev/rtc0http://linux.die.net/man/8/hwclockhttp://www.ti.com/lit/ug/sprufm3c/sprufm3c.pdf 阅读全文

posted @ 2011-12-28 17:46 呵呵,呵呵 阅读(244) 评论(0) 推荐(0) 编辑

2011年1月14日

浅析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 呵呵,呵呵 阅读(6792) 评论(1) 推荐(0) 编辑

linux进程的休眠(等待队列)

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

posted @ 2011-01-14 13:49 呵呵,呵呵 阅读(22130) 评论(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 呵呵,呵呵 阅读(1567) 评论(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 呵呵,呵呵 阅读(11409) 评论(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 呵呵,呵呵 阅读(840) 评论(0) 推荐(0) 编辑

2011年1月13日

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 呵呵,呵呵 阅读(3669) 评论(0) 推荐(0) 编辑

select函数:

摘要: 【转】 select函数:  系统提供select函数来实现多路复用输入/输出模型。原型:  #include sys/time.h  #include unistd.h  select函数:  系统提供select函数来实现多路复用输入/输出模型。原型:  #include sys/time.h  #include unistd.h  int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);  参数maxfd是需要监视的最大的文件描述符值+1;rdset,w 阅读全文

posted @ 2011-01-13 15:47 呵呵,呵呵 阅读(1957) 评论(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 呵呵,呵呵 阅读(1705) 评论(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 呵呵,呵呵 阅读(911) 评论(0) 推荐(0) 编辑

导航