- 博客(44)
- 资源 (8)
- 收藏
- 关注

转载 驱动程序使用tasklet机制
转载于http://blog.chinaunix.net/u/15169/showart.php?id=82989驱动程序在初始化时,通过函数task_init建立一个tasklet,然后调用函数tasklet_schedule将这个tasklet放在tasklet_vec链表的头部,并唤醒后台线程ksoftirqd。当后台线程ksoftirqd运行调用__do_softirq时,会执行在中断
2009-08-04 16:16:00
815
转载 Linux学习总结—内存分段和分页管理
1.x86 内存架构和Linux的分段管理x86 内存架构在 x86 架构中,内存被划分成 3 种类型的地址:· 逻辑地址 (logical address) 是存储位置的地址,它可能直接对应于一个物理位置,也可能不直接对应于一个物理位置。逻辑地址通常在请求控制器中的信息时使用。· 线性地址 (linear address) (或称为平面地
2009-11-07 17:33:00
720
原创 文件测试
文件测试操作----------------返回true如果... -e 文件存在-a 文件存在 这个选项的效果与-e相同.但是它已经被弃用了,并且不鼓励使用-f file是一个regular文件(不是目录或者设备文件)-s 文件长度不为0-d 文件是个目录-b 文件是个块设备(软盘,cdrom
2009-11-02 19:07:00
549
转载 微内核与宏内核比较
内核体系结构---微内核与宏内核比较内核按照体系结构分为两类:微内核(microkernel)与宏内核(macrokernel). 微内核的系统有WindowNT,Minix,Mach,etc.宏内核的系统有Unix,Linux,etc.通过比较Minix和Linux来比较微内核和宏内核是很有意思的,因为当年两个系统的创始人对两种内核的优劣有过争论.两个系统的内核是通过进程的创建FORK
2009-11-01 14:44:00
966
转载 基于嵌入式linux设备驱动程序设计
Linux为是一个成熟而稳定的操作系统。将Linux植入嵌入式设备具有众多的优点,包括可剪裁和容易移植等,所以Linux操作系统在嵌入式领域获得了广泛的应用。嵌入式Linux一直是嵌入式领域的研究热点,与PC架构不同,嵌入式系统的硬件具有多样性和差异性,嵌入式系统的开发需要对特定系统进行硬件设计,同时还要针对这些硬件来编写驱动程序。Linux内核就是通过驱动程序来同外围设备打交道的,系统设计
2009-11-01 14:44:00
832
1
原创 CFLAGS --使用(gcc 3)
CFLAGS 简介 CFLAGS 是决定 Gentoo 系统效能与稳定的关键之一。恰当的 CFLAGS 能在效能、编译时间、与系统稳定度中取得平衡,失败的 CFLAGS 可能导致编译失败,甚至系统损毁。那么,在茫茫 CFLAGS 海中,如何才能捞到命中注定那根针呢? 此文件的 CFLAGS 针对 x86 与 x86-64 平台上的 GCC 3.4 (GNU Compiler Collect
2009-11-01 14:43:00
1517
转载 c++ volatile用法(转)
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值(From Memory),而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:1) 并行设备的硬件寄存器(如:状态寄存器)2) 一个中断服务子程序中会访问到的非自动变量(Non-automatic v
2009-11-01 14:42:00
486
转载 关于volatile关键字的说明以及测试
关于volatile关键字的说明以及测试 收藏 volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。使用该关键字的例子如下:int volatile nVint;当要求使用volatile 声明的变量的
2009-11-01 14:42:00
401
原创 内核无法挂载根文件系统的原因总结
1.对应的根设备文件是否存在? 比如init=/dev/mtdblock2, 那么对应的mtdblock2设备文件是否已经创建?2.对应的块设备驱动是否已经加载进内核?3.对应的文件系统模块是否已经加载进内核?4.init程序是否可以执行?, 我是指将用到了armv5指令的init运行到了只支持armv4t指令集的机器上.另外如果没有通过内核参数的方式将init的位置传给内核,
2009-11-01 14:41:00
1143
原创 通用线程:POSIX 线程详解,第 3 部分
级别: 初级Daniel Robbins, 总裁兼 CEO, Gentoo Technologies, Inc.2000 年 9 月 01 日本文是 POSIX 线程三部曲系列的最后一部分,Daniel 将详细讨论如何使用条件变量。条件变量是 POSIX 线程结构,可以让您在遇到某些条件时“唤醒”线程。可以将它们看作是一种线程安全的信号发送。Daniel 使用目前您所学到的知识实现了一
2009-11-01 14:40:00
465
转载 在C++本地类中添加托管类的变量
使用gcroot可以实现在C++本地类中添加托管类变量.例子:#include //必须包含using namespace System;using namespace System::Collections::Generic;using namespace System::Text;using namespace System::IO::Ports;using namespace Sy
2009-11-01 14:37:00
5894
原创 crc 算法
chk3(s) char *s; { unsigned int c, q; LONG crc = 0; while ((c = *s++) != /0) { if (parity) c &= 0177; q = (crc ^ c) & 017; /* Low-order nibble */ crc = (crc >> 4) ^ (q *
2009-11-01 14:37:00
657
原创 mmap
mmap笔记1.与mmap相关的错一般有两个,是由mmap发出的SIGSEGV和SIGBUS两个信号产生的。SIGSEGV产生于,存取区域不存在或对只读区域进行写操作。SIGBUS产生于:文件的存取部分已经不存在,如2所描述的情况。2.memcpy只是复制一块存储区域,因此在用mmap对文件等进行操作时,需要在目标文件尾(源文件大小偏移之后)加上结束符,否则mmap会发出SIGBUS信号,从而出现
2009-11-01 14:36:00
767
原创 驱动网站
http://tie.163.nethttp://www.cetinet.com/http://jiaomcu.shareyou.net/more.htmhttp://www.lvr.com/usbcode.htmhttp://www.chinadz.com/icver/0038.htmsdkh.51.net/dz/usb.htm http://www-eu5.semiconductors.phi
2009-11-01 14:36:00
472
转载 linux解释器与system实现
linux解释器与system的实现在实现中都调用了fork,execv,waitpid三个函数,由解释器和system函数所给出的参数表创建新进程,由新进程实现解释器和system所实现的功能.(待续)
2009-11-01 14:35:00
479
原创 二进制、字符I/O、格式化I/O
二进制I/O与字符I/O区别: 1. 对于字符I/O有终结字符,如NULL,或换行符,因此在读写的内容中不能含有这些特殊字符,而对于二进制I/O而言,它是通过一次读写一个字节,然后循环读写所需的字节数,至于读进什么东西对二进制I/O是透明的. 2.(待续)
2009-11-01 14:35:00
1029
转载 Linux解释器原理
Linux解释器原理引言使用Shell进行工作的人们对Unix/Linux下的Shell编程都很熟悉,在所有的Shell编程的书中都会提到#!/bin/bash,而这里到底包含了些什么?对操作系统而言,这一行字符串意味着什么?你可能会说,不就是会让/bin/bash程序来解释这个脚本程序吗?当然你是对的,看看我们的标题,这里我们谈谈解释器,让我们一起来看看脚本文件里的第一句到底对系统而言意味着
2009-11-01 14:33:00
466
转载 [zz]LKM Rootkits on Linux x86 v2.6
[zz]LKM Rootkits on Linux x86 v2.6 收藏 转载自水木KernelTech版。关于hack系统调用表的一篇文章,里面还涉及了上学期ICS Lab中的二进制代码注入,很好很强大。略作整理(为什么技术博客默认的字体不是等宽的 T.T) =-|================================================-{ www.enye-sec.
2009-11-01 14:31:00
544
原创 assert() 用法及注意事项
assert() 用法及注意事项assert功能是测试一个条件并可能是程序终止。它首先测试条件,如果为假,则调用abort使程序退出。注意事项:1. 在函数开始前,检查参数的合法性2. 每个assert只检验一个条件,因为同时检查多个条件时,如果测试失败,就不能断言是由那个条件失败引起的3. 不能改变环境语句,因为assert只在DEBUG生效,如果这样做,就会在程序运
2009-11-01 14:29:00
621
转载 内存分布
一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变
2009-11-01 14:29:00
408
转载 Linux操作系统中/sbin/init程序的执行过程
当init启动后,它通过执行各种启动事务来继续引导进程(检查并监视文件系统,启动后台程序daemons,等等),直至完成用户所有操作环境的设置工作。这里主要涉及4个程序:init、getty(agetty)、login和shell程序。这4个程序之间的关系见下图所示。 init进程的主要任务是根据/etc/rc文件中设置的信息,执行其中设置的命令,然后根据/etc/inittab文件
2009-11-01 14:26:00
451
原创 IT十年经典书下载
IT十年经典书下载 看了“近10年最强的50本计算机图书,您读过几本? ”,我整理一下可以下到的,还真是不少。大家共享十年经典书籍下载 今天无意中看到优快云上一篇“近10年最强的50本计算机图书,您读过几本? ”,就决定去找一下,买是不可能了,本月大赤字,上月笔记本6200,房租4000,陪人医药费400,我已经一无所有,于是只有下鸟,于是整理出这么多的东西来,希望大家喜欢软件工
2009-11-01 14:25:00
504
原创 用于主题检测的临时日志(32c2881b-5626-4533-a5c7-9a18e37d6d02 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
这是一个未删除的临时日志。请手动删除它。(e342cb0a-64ce-4707-b54c-cdaeef0dec05 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)
2009-10-23 12:26:00
1383
原创 bochs模拟器
linux-0.11跑起来了,整个开发环境也熟习了,要开始来调试0.11内核了。刚刚装了bochs的的20090818的环境,在gdb的gui里遇到了,no refence to pthread_create。库的链接应该不可能出现问题。但问题出在哪? 网上查看后,发现是编译选项没有加-pthread的选项。在Makefile.in里找到CC CXX,在其后加上 -pthread就行了。OK
2009-10-22 20:17:00
658
原创 Fedora 下 lvm的挂载
今天不加思索的把lib库下的libc给删了,初衷是更换它。不经大脑换来的系统的崩溃--系统的绝大部分命令、及大部分的服务程序都无法运行。没办法,只有修复。 随之,是半天的无用功。首先,FC的文件系统不是普通的ext3、ext4,而是一个所谓的LVM,还不能直接被挂载。经过一番的折腾,原来的虚拟机的磁盘总算是给挂上了: 在LVM中存在着两个概念: 应该就做盘组和
2009-10-21 19:23:00
1857
1
转载 Qt Event
QT Embedded二三事之QEventLoop 事件是GUI应用的核心概念,GUI应用就是通过执行一个个事件来完成其功能的。围绕事件而设计的事件循环,事件分发,事件截取(hook),这些都是GUI Framework的核心部分和运行的基础,是把其它所有对象联接起的纽带。在QT中,事件循环和事件机制被封装在QEventLoop中。本文就简略介绍一下,QT中的事件运行机制。 1.事件分
2009-09-11 13:20:00
2860
转载 QtEmbedded鼠标驱动流程分析(下)
原文链接:http://www.cuteqt.com/blog/?p=759 Qt代码版本:qt-embedded-linux-opensource-src-4.5.2在上篇中,我们提到了src/gui/embedded/qmousedriverfactory_qws.cpp 中QMouseDriverFactory::create(…)函数加载一个QMouseHandler
2009-09-10 14:36:00
859
转载 QtEmbedded鼠标驱动流程分析(上)
原文链接:http://www.cuteqt.com/blog/?p=572 注:此驱动对应英文handler和内核的驱动(driver)不是一回事如果认真看过shiroki写的QtEmbedded键盘驱动分析(上篇,下篇),那么自己再来看鼠标驱动的流程基本上也是大同小异,软件的实现框架是一模一样的。只不过搜索引擎可能不知道这个事情,那么我就把键盘两字改为鼠标再写一篇。
2009-09-10 14:33:00
726
转载 moc 源码
http://cep.xor.aps.anl.gov/software/qt4-x11-4.2.2-browser/d5/d3c/moc_8cpp-source.htmlmoc源码,网站不错00001 /****************************************************************************00002 **00003
2009-08-24 19:02:00
4473
转载 Qt源码分析之信号和槽机制
Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用多了,也复杂多了MFC中的消息机制没有采用C++中的虚函数机制,原因是消
2009-08-24 18:45:00
669
转载 Qt源码分析之QObject
原文地址 http://blog.youkuaiyun.com/oowgsoo/archive/2007/03/14/1529284.aspx Qt的QObject1.试验代码:#include #include #include int main(int argc, char *argv[]){ QApplication app(argc, argv); int size = size
2009-08-24 18:43:00
621
转载 singal slot 三种调用机制
signal/slot目前有三种调用方式1.DirectConnection和以前一样,在emit处直接invoke你的slot函数,一般情况是sender,receiver在同一线程e.g. emit currentRowChanged(...); 2.QueuedConnection将发送Event给你的receiver所在的线程postEvent(QEv
2009-08-18 19:08:00
629
转载 singal/slot实现机制
使用过qt的人都知道,signal/slot是Qt对象以及其派生类对象之间的一种高效通信接口,它是Qt的核心特性,也是区别与其他工具包的重要地方。它完全独立于标准的C/C++语言,因此用正确的处理好信号和槽,必须借助于一个成为moc(Meta Object Compiler)的qt工具,该工具是一个C++预处理程序,能为高层次的事件处理自动生成所需要的附加代码。1.与回调函数的不同:回调
2009-08-18 19:05:00
861
转载 /proc//smap
Sizes are not what ps makes them look like.Here is a small document that might help you:Understanding Memory usage in GNOME.Miguel de Icaza (miguel@gnu.org)People usually look at the memory sizes for
2009-08-18 18:56:00
1462
转载 Qt slot 链接问题
1.问题: QGLViewer中的函数不能正常link.解决: 翻看其源代码,发现是因为从源码安装libQGLViewer时,编译用了Qt 3,而我的程序中用Qt4 编译.所以必须重新用Qt4编译.但是,更改QTDIR 环境变量为Qt4后,重新编译的话,qmake生成makefile时就提示出错.进一步发现,是因为虽然设了QTDIR为Qt4,头文件和库文件都会使用Qt4,但是mo
2009-08-18 18:52:00
914
转载 Linux设备驱动程序学习(9)-与硬件通信
原文地址:http://blog.chinaunix.net/u1/59291/showart_461605.html 在学习有关I/O总线的内容时,最好先看看相关的知识:从PC总线到ARM的内部总线 I/O 端口和 I/O 内存每种外设都是通过读写寄存器来进行控制。在硬件层,内存区和 I/O 区域没有概念上的区别: 它们都是通过向在地址总线和控制总线发出电平信号来进
2009-08-05 09:49:00
727
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人