在路上...

The development of life
我们一直都在努力,有您的支持,将走得更远...

站内搜索: Google

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2009年9月2日

摘要: register i = rEP3_DMA_CON; for(i=0;i<10;i++);/* register是variable的一种存储类型,叫做寄存器型。一个变量要是被定义为这种类型,他就会被存储在通用寄存器中,所以存储速度快。这种类型的好处就是: 如果你需要频繁地使用该变量,可以避免多次从内存里进行存储,从而提高了运行效率.对编译器只是一种提示,是不是register还看编译器怎么... 阅读全文
posted @ 2009-09-02 23:16 palam 阅读(636) 评论(0) 推荐(0)

摘要:   多线程编程是一个很有意思也很有用的技术,使用多线程技术的网络蚂蚁是目前最常用的下载工具之一,使用多线程技术的grep比单线程的grep要快上几倍,类似的例子还有很多。希望大家能用多线程技术写出高效实用的好程序来 阅读全文
posted @ 2009-09-02 23:15 palam 阅读(286) 评论(0) 推荐(0)

摘要: /*守护进程实例子*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/types.h>#include <unistd.h>#include <sys/wait.h>#define MAX... 阅读全文
posted @ 2009-09-02 23:13 palam 阅读(1052) 评论(0) 推荐(0)

摘要: //守护进程的调试方法是通过linux的syslog即系统日志服务来实现的。程序运行信息将输入到"/var/log/messages"//系统日志文件中。syslogd的配置文件为/etc/syslog.conf。该机制提供了三个syslog函数分别为openlog/syslog/closelog//openlog:用于打开系统日志服务的一条连接//syslog:向日志文件中写入消息//close... 阅读全文
posted @ 2009-09-02 23:11 palam 阅读(751) 评论(0) 推荐(0)

摘要: 本文出自:BBS水木清华站 作者:Mccartney (coolcat) (2002-01-29 20:28:07)3 使用同步对象来编程 本章定义了四种可用的同步类型,并且讨论实现同步的注意事项。 互斥锁(mutex) 条件变量(condition variable) 多读单写锁(multi-read,single-write lock) 信号量(semophore) 进程间同步(process... 阅读全文
posted @ 2009-09-02 23:11 palam 阅读(251) 评论(0) 推荐(0)

摘要: 什么是Shell? shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。 shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilitie... 阅读全文
posted @ 2009-09-02 23:09 palam 阅读(623) 评论(0) 推荐(0)

摘要: 结合阻塞与非阻塞访问、poll函数可以较好地解决设备的读写,但是如果有了异步通知就更方便了。异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序根本就不需要查询设备状态,这一点非常类似于硬件上"中断"地概念,比较准确的称谓是"信号驱动(SIGIO)的异步I/O"。  我们先来看一个使用信号驱动的例子,它通过signal(SIGIO, input_handler)对STDIN_FILEN... 阅读全文
posted @ 2009-09-02 23:08 palam 阅读(407) 评论(0) 推荐(0)

摘要: 【fcntl系统调用】 功能描述:根据文件描述词来操作文件的特性。 用法: int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); 参数: fd:文件描述词。 cmd:操作命令。 arg:供命令使用的参数。 lock:同上。... 阅读全文
posted @ 2009-09-02 23:06 palam 阅读(8162) 评论(1) 推荐(0)

摘要: kpp.c---------------------------------------------#include <linux/kernel.h>#include <linux/module.h>#include <linux/fs.h>#include <linux/slab.h>#include <linux/init.h>#in... 阅读全文
posted @ 2009-09-02 23:05 palam 阅读(1138) 评论(0) 推荐(0)

摘要: const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 事实上这个概念谁都有只是三种声明方式非常相似很容易记混。 Bjarne在他的The C++ Programming Language里面给出过一个助记的方法: 把一个声明从右向左读。 char * const cp; ( * 读成 pointer to cp is a cons... 阅读全文
posted @ 2009-09-02 23:04 palam 阅读(474) 评论(0) 推荐(0)

摘要: 1.用 cat /proc/devices 可以查看当前已经使用的设备对应的主设备号 cat /proc/interrupts 查看记录那个设备在使用那个中断号 cat /proc/tty/drivers 可查看当前系统中所有tty设备的相关信息 arm-linux-gcc -v 2.在控制平台从用户到超级用户的切换命令 : su -root3.将bin目录添加到环境变量中去:export PA... 阅读全文
posted @ 2009-09-02 23:02 palam 阅读(264) 评论(0) 推荐(0)

摘要: tar.tar文件解压:首先用file命令查看文件类型(可能是bz2或者gz),命令格式:file filename.tar.tar我以MPlayer-0.91.tar.tar为例:[root@localhost ~]# file MPlayer-0.91.tar.tarMPlayer-0.91.tar.tar: bzip2 compressed data, block size = 900k由b... 阅读全文
posted @ 2009-09-02 23:01 palam 阅读(3985) 评论(0) 推荐(0)

摘要: 先用$ gzip -dv *命令解压,然后用 $ tar xvf *命令解压,---------------安装6.21.1. 安装 Ncurses 1.准备编译 Ncurses : ./configure --prefix=/usr --with-shared --without-debug2.编译软件包:make这个软件包没有附带测试程序。3.安装软件包:make install4.赋予 nc... 阅读全文
posted @ 2009-09-02 22:05 palam 阅读(626) 评论(0) 推荐(0)

摘要: 一、GPIO寄存器定义1.#define GPCON(x) __REG2(0x56000000, (x) * 0x10) 这句是定义2410的GPIO的控制寄存器,注意:__REG2的参数是寄存器的物理地址,这个物理地址经_REG2宏转换为虚拟地址,对照2410的手册可以得到一下对应关系:GPCON(1) ------ PORT A 0x56000000GPCON(2) ------ PORT B... 阅读全文
posted @ 2009-09-02 22:04 palam 阅读(545) 评论(0) 推荐(0)

摘要: 软件准备:gcc-3.2.2-5.i386.rpm :用来编译ncurses-5.6.tar.gz:用来配合make menuconfig 命令配置内核bison-2.4.tar.gz :语法解析器flex-2.5.35.tar.bz2 :词法解析器m4-1.4.9.tar.gz: modutils-2.4.26.tar.bz2 : module-init-tools-3.2.2.tar.bz2:... 阅读全文
posted @ 2009-09-02 22:01 palam 阅读(343) 评论(0) 推荐(1)

摘要: 0.包含头文件:#include <linux/timer.h>1.定义时间结构体变量:static struct timer_list kbd_timer;2.初始化时间结构体变量:init_timer(&kbd_timer);3.指定定时器超时服务函数:void kbd_timer_handler(unsigned long){...}kbd_timer.funciton ... 阅读全文
posted @ 2009-09-02 21:40 palam 阅读(660) 评论(0) 推荐(0)

摘要: 一、linux保存环境变量的文件位于/etc/profile,当你打开此文件可以看到各种环境变量,,当然你可以直接在修改这个文件,保存后注销系统,然后再重新登陆,即会生效,二、下面介绍的是用命令的方式设置环境变量,这是linux的方便之处哦,个人认为,并不代表大多数人意见,主要命令:export,set,env;1.举个简单例子:# export JOHNSCC="Hello!" //格式: ex... 阅读全文
posted @ 2009-09-02 21:40 palam 阅读(344) 评论(0) 推荐(0)

摘要: va_list ap; //声明一个变量来转换参数列表 va_start(ap,fmt); //初始化变量 va_end(ap); //结束变量列表,和va_start成对使用 可以根据va_arg(ap,type)取出参数 已经经过调试成功的输出程序#include<stdio.h>#include <stdarg.h>#define bufsize 80char buf... 阅读全文
posted @ 2009-09-02 21:39 palam 阅读(800) 评论(0) 推荐(0)

摘要: ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。 RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要... 阅读全文
posted @ 2009-09-02 21:37 palam 阅读(771) 评论(0) 推荐(0)

摘要: 我所使用的内核是2.4.20-8。问题出现在request_irq后立即产生中断,分析后发现原因是上次的中断申请标志没有被清除所导致的。经过查看源代码(如代码段1.0)发现只有在 do_IRQ(……)函数中清除中断标志,而这个函数是中断开放时才被调用。因此我们不能忽略申请中断后,所产生的每一次中断。view plaincopy to clipboardprint?代码段 1... 阅读全文
posted @ 2009-09-02 21:35 palam 阅读(1547) 评论(0) 推荐(0)

摘要: PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。PCLint识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组... 阅读全文
posted @ 2009-09-02 21:34 palam 阅读(1175) 评论(0) 推荐(0)

摘要: 软中断是利用硬件中断的概念,用软件方式进行模拟,实现宏观上的异步执行效果。很多情况下,软中断和"信号"有些类似,同时,软中断又是和硬中断相对应的,"硬中断是外部设备对CPU的中断","软中断通常是硬中断服务程序对内核的中断","信号则是由内核(或其他进程)对某个进程的中断"(《Linux内核源代码情景分析》第三章)。软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得名来自于将硬件中断处理分离成"上半部"和"下半部"两个阶段的机制:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;而下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行。bottom half的应用也是激励内核发展出目前的软中断机制的原因,因此,我们先从bottom half的实现开始。 阅读全文
posted @ 2009-09-02 21:33 palam 阅读(332) 评论(0) 推荐(0)

摘要: 我们在 Debian GNU/Linux 中有时软件源的网络速度慢,在使用 apt 安装源中的软件时总是因源服务器负荷大而时间很长,所以想换个软件源或添加软件源又不知道怎么做,现在就给您讲一下 Debian GNU/Linux 中软件源的修改方法。步骤很简单,只要修改在 /etc/apt/sources.list 文件中的软件源地址就可以了,但要记得这个文件不是谁都能修改的,要有系统管理员权限才行。 阅读全文
posted @ 2009-09-02 21:32 palam 阅读(1238) 评论(0) 推荐(0)

摘要: 信号量的API有:DECLARE_MUTEX(name)   该宏声明一个信号量name并初始化它的值为0,即声明一个互斥锁。DECLARE_MUTEX_LOCKED(name)   该宏声明一个互斥锁name,但把它的初始值设置为0,即锁在创建时就处在已锁状态。因此对于这种锁,一般是先释放后获得。void sema_init (struct semaphore *sem, int val);  ... 阅读全文
posted @ 2009-09-02 21:30 palam 阅读(447) 评论(0) 推荐(0)

摘要: 一、内核裁减与编译1、安装make ,gcc, make-kpkg,运行menuconfig等等和编译内核相关的工具。安装命令如下$sudo apt-get install build-essential kernel-package libncurses5-dev如果无法安装请检查/etc/apt/sources.list2、解压源代码可以解压到任意目录,我们在这里解压到/usr/srctar ... 阅读全文
posted @ 2009-09-02 21:29 palam 阅读(1325) 评论(0) 推荐(0)

摘要: 当前P2P(peer to peer)的应用越来越多,用户人数急剧增加。P2P的一个主要应用领域就是文件共享,其中最有代表性的就是BT和eMule这两个软件。这类P2P文件共享传输一般具有下面两个特点:  长时间开机,以便用户可以下载更多的内容,这就要求机器的功耗不能太大;  对性能要求不高,目前国内主要的宽带上网方式是ADSL,最高带宽是6MBps(既750K字节/秒)。这类P2P文件传输的真正瓶颈在于网速。 阅读全文
posted @ 2009-09-02 21:25 palam 阅读(1429) 评论(0) 推荐(0)

摘要: 本文详细的介绍了Linux内核中的同步机制:原子操作、信号量、读写信号量和自旋锁的API,使用要求以及一些典型示例 阅读全文
posted @ 2009-09-02 21:24 palam 阅读(292) 评论(0) 推荐(0)

摘要: 首先我们用 which alien 命令查看是否安装了alien。如果没有安装,使用命令 apt-get install alien 进行安装如果没有源,这个时候我们需要修改源的文件,给其添加源,对于debian 5.0 (其他版本不知是否可行,因为我用的就是5.0)我们可以在 /etc/apt/sources.list 文件中添加 如下一行deb ftp://ftp.tw.debian.org/... 阅读全文
posted @ 2009-09-02 21:23 palam 阅读(4523) 评论(0) 推荐(0)

摘要: 做的新板,无论是主机telnet还是ftp,都要老半天。今天突然发现,把DNS设为网关后很快就能连上。原因还不知道,看来TCP/IP知识还是要补补了。修改DNS方式:1.用echo命令echo ‘nameserver *.*.*.* ’ > /etc/resolv.conf2.直接修改 /etc/resolv.conf中的地址不过郁闷的是还是ping不通外网!!总算可... 阅读全文
posted @ 2009-09-02 21:22 palam 阅读(781) 评论(0) 推荐(0)

摘要: 最近一直想在Linux中开发S1mp3项目,可是我在VMware中装上 Debian/Linux后就是装不上VMware-tools,在网上搜集了一下资料没有一个适合我的,而且讲的都是很简单就装上来,没办法,只能自己 下手,经过几个小时的努力终于解决了,现在把自己的方法公布给大家,防止大家走弯路。用到了以下几个命令apt-get、apt-cache、uname-a首先检查的Debian在安装时,根... 阅读全文
posted @ 2009-09-02 21:20 palam 阅读(1115) 评论(0) 推荐(0)