扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:51CTO.COM 2007年10月18日
关键字:
在本页阅读全文(共3页)
让我们解释一下diff用来指明这三种情况时使用的符号:
*****************************************************************************
添加(ADDITION):
看补丁文件中如下的行: (相对于arch/i386/kernel/signal.c文件的新旧两个版本)
*** 419,431 ****
--- 419,437 ----
? current->exec_domain->signal_invmap[sig]
: sig),
&frame->sig);
+ if (err)
+ goto give_sigsegv;
使用+号指明在“&frame->sig);”这一行后面要加两个新行。这两个新行就是用+符号开头的两行。
*** 419,431 ****向读者指明可以从旧文件的419行到431行来查阅这些变化;同样的,--- 419,437 ----向读者指明可以从新文件的419到437行来查阅这些变化。这样一来,新旧一比较,就可以知道哪些地方发生了什么变化。
不过在新版本的diff中,似乎并不是用这种方法来表明新旧文件对应的行号的,而使用@这个符号,对应于上例中的:
*** 419,431 ****
--- 419,437 ----
我们看到的新的标识可能是:
@@ -419,431 +419,437 @@
对于这种表示方法,我还不是很懂,如果有哪位朋友比较懂的话,非常欢迎你将这部分内容加进来。
不过,有一点需要说明一下,就是这个行号并不是完全必需的,其实这个行号在给源代码打补丁的时候是没有用的,这里提示出来主要是给开发人员比较分析时使用的。
置换(REPLACEMENT):
看补丁文件中如下的行: (相对于arch/i386/kernel/signal.c文件的新旧两个版本)
***************
*** 367,377 ****
printk("I/O APIC #%d Version %d at 0x%lX.\n",
m->mpc_apicid,m->mpc_apicver,
m->mpc_apicaddr);
! /*
! * we use the first one only currently
! */
! if (ioapics == 1)
! mp_ioapic_addr = m->mpc_apicaddr;
}
mpt+=sizeof(*m);
count+=sizeof(*m);
然后后面又紧跟着如下的行:
--- 368,376 ----
printk("I/O APIC #%d Version %d at 0x%lX.\n",
m->mpc_apicid,m->mpc_apicver,
m->mpc_apicaddr);
! mp_apics [mp_apic_entries] = *m;
! if (++mp_apic_entries >MAX_IO_APICS)
! --mp_apic_entries;
}
mpt+=sizeof(*m);
count+=sizeof(*m);
这里就指明了在旧版本文件中用!符号标识的5行被在新版本文件中用!标识的3行替换了。
由此可见,符号!就意味着替换。但是为什么会有替换,而不是先删除再添加,这里我就不清楚了。还是得请知道的朋友指点一下了。
删除(DELETION):
看补丁文件中如下的行: (相对于drivers/net/Config.in文件的新旧两个版本)
***************
*** 93,100 ****
fi
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
tristate 'RealTek 8129/8139 (not 8019/8029!) support' CONFIG_RTL8139
- tristate 'SiS 900 PCI Fast Ethernet Adapter support' CONFIG_SIS900
- tristate 'Packet Engines Yellowfin Gigabit-NIC support' CONFIG_YELLOWFIN
fi
bool 'Other ISA cards' CONFIG_NET_ISA
if [ "$CONFIG_NET_ISA" = "y" ]; then
--- 94,99 ----
***************
在旧版本文件中用-符号标识的两行说明这两行在新版本的文件中不会再出现了,也就是说,在新版本的文件中,这两行被删除了。
建立一个自己的补丁
你现在修改并测试了一个新的Linux版本,就称它为Linux-2.4.5kh3,这个版本和你当前使用的称作Linux-2.4.5kh2的“老”版本有一些些不同。
现在你想制作一个可以将Linux-2.4.5kh2升级到Linux-2.4.5kh3的补丁程序。顺便多说句废话,理所当然的这个补丁程序要比Linux内核的源代码小的多。
这个补丁文件一般使用一张软盘就可以装下来,因此这对于升级另一台计算机上的旧的操作系统内核是非常有用的。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。