linux内核中Kconfig文档的作用以及Kconfig的语法
2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。
上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。
因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)
*Kconfig
*Makefile
要想知道怎么修改这两种文件,就要知道两种文档的语法结构。
First: Kconfig
每个菜单项都有一个关键字标识,最常见的就是config。
语法:
config symbol
options
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
symbol就是新的菜单项,options是在这个新的菜单项下的 ......
Red Hat Linux 学习笔记
1. 在linux 上和其他计算机共享文件,需要在linux上搭建ftp server (vsftp)
2. 启动linux上的ftp server 使用命令:service vsftpd start
3. 验证linux vsftp是否启动 使用命令:ftp localhost
4. 查看linux中ip地址 使用命令:ifconfig
5. 配置IP linux的IP地址:
(1). 如果在启用linux的时候发现eth0有如下错误:
这个是redhat linux 9.0的bug ,你需要这样操作解决这个问题:
详细请看:http://www.cnblogs.com/eoiioe/archive/2008/09/15/1291247.html
6. 上面一切正常,可以在windows 上 ping Linux的 ip地址,如果ping 不通肯能由于linux防火墙在作怪
(1). 关闭linux 防火墙 service iptables stop
7. 查看linux vsftpd.conf 配置文件:cd etc/vsftpd/vsftpd.con ......
说明:
大家好,我用的是虚拟机下linux环境进行安装的oracle 11g 数据库,有些不妥的地方请多多指教。
首先要参考原版的安装使用说明文档,根据上面的描述的要求进行安装操作。
如下是手动操作的方法:
一.检查linux环境RPM包的是否完全安装,并记录缺少的RPM包文件并进行安装。
[root@mylinux ~]# rpm -qa |grep binut
binutils-2.15.92.0.2-24
[root@mylinux ~]# rpm -qa |grep compat
compat-gcc-32-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
compat-libgcc-296-2.96-132.7.2
compat-libcom_err-1.0-5
compat-gcc-32-c++-3.2.3-47.3
compat-db-4.1.25-9
java-1.4.2-gcj-compat-1.4.2.0-27jpp
compat-libstdc++-296-2.96-132.7.2
[root@mylinux ~]# rpm -qa |grep elfutils
elfutils-libelf-0.97.1-5
elfutils-0.97.1-5
[root@mylinux ~]# rpm -qa |grep gcc
libgcc-3.4.6-9
gcc-g77-3.4.6-9
compat-gcc-32-3.2.3-47.3
gcc-c++-3.4.6-9
gcc-java-3.4.6-9
compat-libgcc-296-2.96-132.7.2
compat-gcc-32-c++-3.2.3-47.3
gcc-3.4.6-9
[root@mylinux ~]# rpm -qa |grep glibc
glibc-common-2.3.4-2.39
glibc-headers-2.3.4-2 ......
说明:
大家好,我用的是虚拟机下linux环境进行安装的oracle 11g 数据库,有些不妥的地方请多多指教。
首先要参考原版的安装使用说明文档,根据上面的描述的要求进行安装操作。
如下是手动操作的方法:
一.检查linux环境RPM包的是否完全安装,并记录缺少的RPM包文件并进行安装。
[root@mylinux ~]# rpm -qa |grep binut
binutils-2.15.92.0.2-24
[root@mylinux ~]# rpm -qa |grep compat
compat-gcc-32-3.2.3-47.3
compat-libstdc++-33-3.2.3-47.3
compat-libgcc-296-2.96-132.7.2
compat-libcom_err-1.0-5
compat-gcc-32-c++-3.2.3-47.3
compat-db-4.1.25-9
java-1.4.2-gcj-compat-1.4.2.0-27jpp
compat-libstdc++-296-2.96-132.7.2
[root@mylinux ~]# rpm -qa |grep elfutils
elfutils-libelf-0.97.1-5
elfutils-0.97.1-5
[root@mylinux ~]# rpm -qa |grep gcc
libgcc-3.4.6-9
gcc-g77-3.4.6-9
compat-gcc-32-3.2.3-47.3
gcc-c++-3.4.6-9
gcc-java-3.4.6-9
compat-libgcc-296-2.96-132.7.2
compat-gcc-32-c++-3.2.3-47.3
gcc-3.4.6-9
[root@mylinux ~]# rpm -qa |grep glibc
glibc-common-2.3.4-2.39
glibc-headers-2.3.4-2 ......
Linux 同步方法剖析
内核原子,自旋锁和互斥锁
文档选项
将此页作为电子邮件发送
级别: 中级
M. Tim Jones, 顾问工程师, Emulex
2007 年 11 月 19 日
在学习 Linux® 的过程中,您也许接触过并发(concurrency)、临界段(critical section)和锁定,但是如何在内核中使用这些概念呢?本文讨论了 2.6 版内核中可用的锁定机制,包括原子运算符(atomic operator)、自旋锁(spinlock)、读/写锁(reader/writer lock)和内核信号量(kernel semaphore)。 本文还探讨了每种机制最适合应用到哪些地方,以构建安全高效的内核代码。
本文讨论了 Linux 内核中可用的大量同步或锁定机制。这些机制为 2.6.23 版内核的许多可用方法提供了应用程序接口(API)。但是在深入学习 API 之前,首先需要明白将要解决的问题。
developerWorks 上 Tim 的更多 剖析... 系列
Linux 文件系统剖析
Linux 网络堆栈剖析
Linux 内核剖析
Linux slab 分配器剖析
Tim 的所有 Anatomy of... 文章
并发和锁定
当存在并发特性时,必须使用同步方法。当在同一时间段出现两个或更多进程并且这些进程彼此交互(例如,共享相同的资源)时,就存在并发 现象。
在单 ......
#include <stdio.h>
#include <sys/select.h>
#include <termios.h>
#include <unistd.h>
#include <ctype.h>
#define STDIN 0
int main()
{
struct timeval tv = {0,0};
struct termios term , termbak;
char ch;
fd_set fd;
FD_ZERO(&fd);
FD_SET( STDIN ,&fd);
tcgetattr(STDIN, &term);
termbak = term;
term.c_lflag &= ~(ICANON|ECHO);
tcsetattr(STDIN, TCSANOW, &term);
while(1)
{
FD_ZERO(&fd);
FD_SET( STDIN ,&fd);
if( 1 == select( STDIN+1,&fd,NULL,NULL,&tv)
&nbs ......
大部分人用ping命令只是作为查看另一个系统的网络连接是否正常的一种简单方法。在这篇文章中,作者将介绍如何用C语言编写一个模拟ping命令功能的程序。
ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。
例如,在Linux终端上执行ping localhost命令将会看到以下结果:
PING localhost.localdomain (127.0.0.1) from 127.0.0.1 : 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=0 ttl=255 time=112 usec
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=255 time=79 usec
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=255 time=78 usec
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=255 time=82 usec
--- localhost.localdomain ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss&n ......