2012年2月28日
摘要: 转载于网易博客:http://jiafeng26.blog.163.com/blog/static/1754251920100140134147/windows是个多用户多任务的操作系统,支持多个程序同时运行,如果你的程序不想让用户同时运行一个以上,那应该怎样做呢? 本文将介绍避免用户同时运行多个程序的例子。需要用到的函数CreateMutex ,CreateMutex 函数是windows中一个并不常用的函数,该函数对象在系统中只能存在一个实例且是互斥体,所以利用这种特性就很简单的实现了我们的要求。【函数原声明】:functionCreateMutex(lpMutexAttributes:P 阅读全文
posted @ 2012-02-28 15:13 陶毛毛 阅读(6461) 评论(0) 推荐(0) 编辑
摘要: 转载于百度空间:http://hi.baidu.com/graspa/blog/item/d17d928b4ec949d0fc1f1007.html/cmtid/ccf49bd4288f080fa08bb74e一、有必要了解INI文件的结构:;注释[小节名]关键字=值...---- INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值。---- 值的类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示。---- 注释以分号“;”开头。二、定义---- 1、在Interface的Uses节增加IniFiles 阅读全文
posted @ 2012-02-28 14:39 陶毛毛 阅读(2868) 评论(0) 推荐(0) 编辑
  2012年2月8日
摘要: 本文转帖于:http://blog.csdn.net/swt914/article/details/6574458Kernel 中断处理图1. Linux 定义了名字为irq_desc 的中断例程描述符表:(include/linux/irq.h) struct irqdesc irq_desc[NR_IRQS];NR_IRQS 表示中断源的数目。2. irq_desc []是一个指向irq_desc_t 结构的数组, irq_desc_t 结构是各个设备中断服务例程的描述符。Irq_desc_t 结构体中的成员action 指向该中断号对应的irqaction 结构体链表。Irqaction 阅读全文
posted @ 2012-02-08 18:56 陶毛毛 阅读(2383) 评论(0) 推荐(0) 编辑
  2012年1月8日
摘要: 本文转载于CSDN博客:转载请注明原文地址http://blog.csdn.net/billowszpt/article/details/7184302linux设备驱动归纳总结(三):7.异步通知fasyncxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信号与与一个函数对应,没当接收到这个信号就会调用相应的函数。xxxxxxxxx 阅读全文
posted @ 2012-01-08 14:49 陶毛毛 阅读(9195) 评论(0) 推荐(2) 编辑
摘要: 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/unbutun/article/details/4722448轮询函数轮询的概念和作用使用非阻塞I/O的应用程序通常会使用select()和poll(),poll和select用于查询设备的状态,以便用户程序获知是否能对设备进行非阻塞的访问,它们都需要设备驱动程序中的poll函数支持。Select()和poll()系统调用最终会引发设备驱动设备中的poll()函数被执行。poll()函数为最终执行体)Linux下select调用的过程:1.用户层应用程序调用select(),底层调用poll())2.核心层调用sy 阅读全文
posted @ 2012-01-08 13:47 陶毛毛 阅读(4129) 评论(0) 推荐(0) 编辑
  2012年1月7日
摘要: 本帖转载于CSDN博客http://blog.csdn.net/murui/article/details/2318280Linux内核的同步机制:等待队列Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待队列项中都包含一个list_head类型 阅读全文
posted @ 2012-01-07 20:00 陶毛毛 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yunsongice/archive/2010/05/18/5605264.aspx读/写自旋锁同样是在保护SMP体系下的共享数据结构而引入的,它的引入是为了增加内核的并发能力。只要内核控制路径没有对数据结构进行修改,读/写自旋锁就允许多个内核控制路径同时读同一数据结构。如果一个内核控制路径想对这个结构进行写操作,那么它必须首先获取读/写锁的写锁,写锁授权独占访问这个资源。这样设计的目的,即允许对数据结构并发读可以提高系统性能。每个读/写自旋锁都是一个rwlock_t结构:typedef struct { raw_ 阅读全文
posted @ 2012-01-07 15:19 陶毛毛 阅读(2260) 评论(0) 推荐(0) 编辑
摘要: 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yunsongice/archive/2010/05/18/5605264.aspx加锁(locking)是一种广泛应用的同步技术。当内核控制路径必须访问共享数据结构或进入临界区时,就需要为自己获取一把“锁”。由锁机制保护的资源非常类似于限制于房间内的资源,当某人进入房间时,就把门锁上。如果内核控制路径希望访问资源,就试图获取钥匙“打开门”。当且仅当资源空闲时,它才能成功。然后,只要它还想使用这个资源,门就依然锁着。当内核控制路径释放了锁时,门就打开,另一个内核控制路径就可以进入房间。Linux锁的应用之一在多处理 阅读全文
posted @ 2012-01-07 15:05 陶毛毛 阅读(4256) 评论(0) 推荐(0) 编辑
  2012年1月6日
摘要: 本文转载于:http://edsionte.com/techblog/archives/1393 如何找到一个有效的切入点去深入分析内核源码,这是一个令人深思的问题。本文以前文中未详细说明的函数为切入点,深入分析char_dev.c文件的代码。如果你已经拥有了C语言基础和一些数据结构基础,那么还等什么?Let’s go! 在《字符设备驱动分析》一文中,我们说到register_chrdev_r... 阅读全文
posted @ 2012-01-06 16:05 陶毛毛 阅读(2153) 评论(0) 推荐(1) 编辑
  2012年1月5日
摘要: 在Linux的文件Module.h中包含着一些宏,这些宏的作用是用来对模块的声明和描述。下面我们把这些宏中常用的罗列在下面。 MODULE_AUTHOR (author); //声明模块的作者 MODULE_DESCRIPTION (description); //声明模块的描述 MODULE_... 阅读全文
posted @ 2012-01-05 22:05 陶毛毛 阅读(711) 评论(0) 推荐(0) 编辑