摘要: 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针 虽然: char *pa, *pb; 也可行,但相对来说没有用typedef的形式直观,尤其在需要大量指针的地方,typedef的方式更省事。用途二: 用在旧的C代码中(具体多旧没有查),帮助struct.以前的代码中,... 阅读全文
posted @ 2012-01-12 23:22 only_eVonne 阅读(530) 评论(0) 推荐(1) 编辑
摘要: 软中断、tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来。下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任务队列的函数都消失了,只剩下了前三者。本文重点在于介绍这三者之间的关系。(函数细节将不会在本文中出现,可以参考文献,点这里)(1)上半部和下半部的区别上半部指的是中断处理程序,下半部则指的是一些虽然与中断有相关性但是可以延后执行的任务。举个例子:在网络传输中,网卡接收到数据包这个事件不一定需要马上被处理,适合用下半部去实现;但是用户敲击键盘这样的事件就必须马上被响应,应该用中断实现。两者的主要区别 阅读全文
posted @ 2012-01-12 22:39 only_eVonne 阅读(11670) 评论(0) 推荐(1) 编辑
摘要: 一、中断处理为什么要下半部?Linux在中断处理中间中断处理分了上半部和下半部,目的就是提高系统的响应能力和并发能力。通俗一点来讲:当一个中断产生,调用该中断对应的处理程序(上半部)然后告诉系统,对应的后半部可以执行了。然后中断处理程序就返回,下半部会在合适的时机有系统调用。这样一来就大大的减少了中断处理所需要的时间。二、那些工作应该放在上半部,那些应该放在下半部?没有严格的规则,只有一些提示:1、对时间非常敏感,放在上半部。2、与硬件相关的,放在上半部。3、不能被其他中断打断的工作,放在上半部。以上三点之外的,考虑放在下半部。三、下半部机制在Linux中是怎么实现的?下半部在Linux中有以 阅读全文
posted @ 2012-01-12 22:23 only_eVonne 阅读(2473) 评论(0) 推荐(0) 编辑