- 博客(17)
- 资源 (19)
- 收藏
- 关注
转载 DM9000网卡驱动分析
原始出处:http://infohacker.blog.51cto.com/6751239/1221348Preface 内核源码版本:linux-2.6.18DM9000芯片 DM9000是一款高度集成低功耗快速以太网处理器,该芯片集成了MAC和PHY。DM9000可以和CPU直接连接,支持8位、16位和32位数据总线宽度。该芯片支持10M和100
2013-12-29 10:34:36 917
转载 网卡驱动·linux内核网络分层结构
原始出处:http://infohacker.blog.51cto.com/6751239/1221140 Linux内核对网络驱动程序使用统一的接口,并且对于网络设备采用面向对象的思想设计。 Linux内核采用分层结构处理网络数据包。分层结构与网络协议的结构匹配,既能简化数据包处理流程,又便于扩展和维护。内核网络结构 在Linu
2013-12-29 10:22:38 1085
转载 Linux中IS_ERR()函数的理解
在Linux源码中的fs部分,经常会碰到这样的函数(位于kernel/include/linux/fs.h):/* * Kernel>static> retval = PTR_ERR(dir_page); >IS_ERR()有一些妙处。内核中的函数常常返回指针,问题是如果出错,也希望能够通过返回的指针体现出来。所幸的是,内核返回的指针一般是指向页面的边
2013-12-25 22:06:39 914
转载 工作队列(workqueue) create_workqueue/schedule_work/queue_work
项目需要,在驱动模块里用内核计时器timer_list实现了一个状态机。郁闷的是,运行时总报错“Scheduling>一、workqueue简介workqueue与tasklet类似,都是允许内核代码请求某个函数在将来的时间被调用(抄《ldd3》上的)每个workqueue就是一个内核进程。workqueue与tasklet的区别: 1.tasklet是通过软中断实
2013-12-25 20:26:03 990
转载 linux工作队列和等待队列的区别
work queue是一种bottom half,中断处理的后半程,强调的是动态的概念,即work是重点,而queue是其次。wait queue是一种「任务队列」,可以把一些进程放在上面睡眠等待某个事件,强调静态多一些,重点在queue上,即它就是一个queue,这个queue如何调度,什么时候调度并不重要。对这2个容易混淆的队列做简单概念上的区别,怎么用? 等待队列
2013-12-25 19:19:14 672
原创 中断处理中不能睡眠的原因
这个问题实际上是一个老生常谈的问题,答案也很简单,Linux在软中断上下文中是不能睡眠的,原因在于Linux的软中断实现上下文有可能是中断上下文,如果在中断上下文中睡眠,那么会导致Linux无法调度,直接的反应是系统Kernel Panic,并且提示dequeue_task出错。所以,在软中断上下文中,我们不能使用信号量等可能导致睡眠的函数,这一点在编写IO回调函数时需要特别注意。在最近的一个项目
2013-12-25 14:55:44 2535
转载 C++中extern “C”含义深层探索
原文地址:http://www.cppblog.com/Macaulish/archive/2008/06/17/53689.html1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定
2013-12-16 10:54:08 378
转载 各种排序算法的稳定性和时间复杂度小结
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。冒泡法: 这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡: 复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。直接插入排序:O(n*n)选择排序:O(n*n)快速排序:平均时间复杂度log2(n)*n,
2013-12-16 10:52:20 445
转载 ARM中断及其处理
1,关于硬件部分的介绍。1.1ARM920T的中断两种中断模式:FIQ,IRQ。1.2几个寄存器SRCPND:请求中断的中断源。可以有多个位被置为1,可读可写,用完清0。只对irq模式有效。INTPND:当前正在执行的中断服务程序。只有一个为被置为1,可读可写,用完清0只对irq模式有效。INTMOD:某一位置1,则该位的中断源被设置为FIQ模式,否则为IRQ模式。INTMSK:某
2013-12-16 10:43:22 808
转载 linux驱动开发相关头文件说明
#include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。#include 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。#include在linux-2.6.31_TX2440
2013-12-16 10:36:26 1055
转载 getaddrinfo函数
今天在看完APUE第16章:网络IPC:套接字后,就开始编写书中的示例代码,结果出现了问题:调用getaddrinfo函数时,返回错误:Servname not supported for ai_socktype,觉得很费解,就直接google之,发现下面这篇好文,不仅解决了问题,还使我更加理解了如何使用getaddrinfo来编写服务器/客户端程序。 原文地址:blog.csdn
2013-12-13 21:38:32 704
转载 linux 信号量
Linux信号量(semaphore)是一种互斥机制。即对某个互斥资源的访问会收到信号量的保护,在访问之前需要获得信号量。在操作完共享资源后,需释放信号量,以便另外的进程来获得资源。获得和释放应该成对出现。 获得信号量集,需要注意的是,获得的是一个集合,而不是一个单一的信号量。 #include #include #inclu
2013-12-11 18:45:40 689
转载 poll函数
poll函数起源于SVR3,最初局限于流设备。SVR4取消了这种限制,允许poll工作在任何描述字上。poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。 1.#include 2. 3.int poll(struct pollfd *fdarray, unsigned long nfds, int timeout); 4.
2013-12-08 20:11:30 420
转载 建议性锁和强制性锁
fcntl有强大的功能,它能够复制一个现有的描述符,获得/设置文件描述符标记,获得/设置文件状态标记,获得/设置异步I/O所有权,获得/设置纪录锁。当多个用户共同使用,操作一个文件的情况,Linux通常采用的方法就是给文件上锁,来避免共享资源产生竞争的状态。fcntl文件锁有两种类型:建议性锁和强制性锁建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已
2013-12-08 19:23:38 637
转载 qt 的close和系统的close冲突。close(),close(fd)
系统函数使用::来调用,所以close(fd)应该这样:::close(fd);其他函数亦然。注意,别忘了加头文件:#include /*Unix 标准函数定义*/ #include /*文件控制定义*/
2013-12-06 11:07:26 1262
转载 守护进程,setsid()函数
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。守护进程的编程本身并不复杂,复杂的是各种版本的Uni
2013-12-06 09:53:54 514
转载 dup() 和 dup2()函数的介绍
dup() 和 dup2() 2011-10-07 11:06:31| 分类:Linux学习心得 | 标签:dup dup2 linux c |字号 订阅dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。#include int dup(int newfd);int dup2(int n
2013-12-05 18:51:08 476
[rar文件] Ldd(linux设备驱动程序) snull修改文件
2014-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人