易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux内核入门(三)—— C语言基本功

    linux是一个复杂的软件系统,其内核源代码往往会用到一些在应用程序设计中部常见语言成分和编程技巧,这些都是分析内核源代码的基本功,希望大家能重点掌握。
    首先,gcc编译器从语言里吸收了“inline”和“const”。inline函数的大量使用,有利于提高运行效率,由此相当一部分代码从.c文件移入了.h文件。
    gcc增加了一种新的基本数据类型“long
long int”用于支持64位CPU结构。
   
许多C语言都支持一些“属性描述符”,如“aligned”,“packed”等。相当于一些新的保留字。但是,在原来的C语言这些词并非保留字,而是一
些普通的变量,这样就会产生一些冲突。例如:inline在老的代码中已经是作为变量在使用了,为了解决这个问题,gcc将作为保留字的“inline”
设计成__inline__,这样就不会冲突了。
    gcc还支持一个保留字“attribute”,用来作属性描述。如:attribute__
<<packed>>,这样packed就成为属性描述符(一种特殊保留字)而非变量了。
    gcc中有大量对宏操作的使用,大家肯定会对内核代码中的一些宏操作的定义方式感到不解,如:
#define DUMP_WRITE(addr, nr) do{ memcpy(bufp,addr,nr);

                                
bufp+=nr;}while(0)
这是必须的,是为了防止在IF-ELSE语句中使用该宏定义时发生错误。

   
linux内核代码中大量使用链表,但其使用方法与我们在《数据结构》中学到的不大一样,大家可以回顾一下我们在课堂上学习链表的时候,通常除了对其数据
结构进行了定义,还定义了若干对该结构的操作。但对于大量使用链表的linux内核来说,如果定义了一个结构就要定义其相关的操作的话,显然代码量不小。
为了提高效率,内核采用了一套通用的,一般的,可以用到各种不同数据结构的队列操作。在include/linux/ list.h中,有如下申明:
st


相关文档:

Linux下安装apache

1.下载apache源码包,进入页面http://httpd.apache.org/download.cgi,下来后放入/usr/local/src目录中
2.解压:
cd /usr/local/src
tar --zxvf httpd-2.2.15.tar.gz
3.cd httpd-2.2.15
./configure --prefix=/usr/local/src/apache2 \
--enable-so \
--enable-rewrite
make;make install
4.启动服务 service httpd s ......

Linux下快速搭建ntp时间同步服务器

一、搭建时间同步服务器
1、编译安装ntp server
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.4p4.tar.gz
tar zxvf ntp-4.2.4p4.tar.gz
cd ntp-4.2.4p4
./configure --prefix=/usr/local/ntp --enable-all-clocks --enable-parse-clocks
make && make install
注:如以上下载地址无法访问, ......

Linux环境下用c语言写的播放wav文件的小程序

#include <unistd.h>
#include <fcntl.h>
#include
<sys/types.h>
#include <sys/ioctl.h>
#include
<stdlib.h>
#include <stdio.h>
#include
<linux/soundcard.h>
/* 下面的三个参数是跟具体文件相关的,文件什么样,就要设置成什么样 */
#define RATE 11025&nbs ......

Linux内核入门(一)——体系架构

Linux是一套免费使用和自由传播的类Unix操作系统,它最先用于基于x86系列CPU的计算机上。这个系统是由世界各地的成千上万的程序员设计和实现的。其目的是建立不受任何商品化软件的版权制约的、全世界都能自由使用的Unix兼容产品。
我们不去介绍操作系统的历史了,也不管操作系统这门学科上对操作系统的分类了,闲话少说,L ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号