之所以要写本文,主要是当我看到Linux内核中链表的设计,让我叹为观止。Linux实现的方式与众不同,它不是将数据结构塞入链表中,而是将链表节点塞入数据结构中。在Linux源码中,链表在头文件中声明。它的节点的原型如下:struct list_head{ struct list_he...
分类:
系统相关 时间:
2015-04-04 18:15:40
阅读次数:
222
1)进入源码官网https://www.kernel.org/页面如下:2)主线的git 地址,当点mainline 后面的 “browse ”时,如下:点一下,企鹅右边的 index:kernel/git/torvalds/linux.git,即可找到 主线源码的 git 地址具体如下(三者都是相...
分类:
系统相关 时间:
2015-04-03 14:55:40
阅读次数:
222
#yuminstallpam-develZlib#tarxzvfzlib-1.2.3.tar.gz#cdzlib-1.2.3#./configure--prefix=/usr/local/zlib#make#makeinstallOpenSSL#tarxzvfopenssl-0.9.8d.tar.gz#cdopenssl-0.9.8d#./Configure#./conifg--prefix=/usr/local/openssl#make#maketest#makeinstallOpenSSH#tarxzvf..
分类:
系统相关 时间:
2015-04-01 07:14:15
阅读次数:
237
在阅读源码的过程中,发现找不到fork函数的定义。后来在linux/init/main.c中找到了这样一条语句static inline _syscall0(int,fork)原来这里就是fork函数的定义。系统在linux/include/unistd.h有一个宏定义。#define _sysca...
分类:
系统相关 时间:
2015-03-17 13:53:26
阅读次数:
165
void 指针的步长为1,而其他类型的指针的步长与其所定义的数据结构有关。example: 1 #include 2 main() 3 { 4 int a[10]; 5 int *m=a; 6 void *n=(void *)a; 7 ...
分类:
系统相关 时间:
2015-03-13 16:16:51
阅读次数:
167
准备工作在XX去所有下载安装包 mysql.zip把相应的包放在 /opt 目录下 解压mysql.zip 检测系统是否安装MySQL1、执行 #rpm -qa | grep -i mysql如果出现:[root@localhost Mysql]# rpm -qa|grep -i mysql [ro...
分类:
数据库 时间:
2015-03-11 14:36:18
阅读次数:
232
jmpi是段间跳转指令,用于x86实模式下, 如:BOOTSEG = 0x0c70 jmpi 4, #BOOTSEG 假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当然段cs的值也变为0x0c70,接下来将执行指令0x0c70:0004处的指令。 实模式下寻址是为了兼容8...
分类:
系统相关 时间:
2015-03-10 13:43:52
阅读次数:
187
在linux源码中经常遇到__asm__函数。它其实是函数asm的宏定义#define __asm__ asm,asm函数让系统执行汇编语句。__asm__常常与__volatile__一起出现。__volatile__限制编译器不能对下面的汇编语句进行优化处理。分析下面语句__asm__("mov...
分类:
系统相关 时间:
2015-03-04 16:18:24
阅读次数:
198
本文首发于烂泥行天下公司服务器比较多,需要把apache源码包制作成rpm包,然后放到公司内网yum源上进行下载安装。apache的rpm包安装方式比源码安装方式比较快,这能节约不少的时间。有关内网yum源的搭建,可以参考《烂泥:yum的使用及配置》这篇文章。一、安装rpm-build查阅相..
分类:
Web程序 时间:
2015-03-04 13:09:53
阅读次数:
182
#define 语句用于宏定义,在c中,我们可以用其实现函数的功能。如下语句#define test(a,b) a>b?a:b很显然,这是一个比较大小的语句。这里a,b相当于函数中的参数。but,如果我们想写一些复杂的语句怎么办。有办法,如下。#define test(a,b) ({\ ...
分类:
系统相关 时间:
2015-03-03 18:15:48
阅读次数:
143