亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 931 | 回復: 0
打印 上一主題 下一主題

linux啟動分析(5)---start_kernel 續(xù) [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-05-21 09:25 |只看該作者 |倒序瀏覽

================================
Author: taoyuetao
Email:
tao_yuetao@yahoo.com.cn
Blog:
http://blog.chinaunix.net/u/31100/

07-05-21
================================
說完asmlinkage,開始看源代碼,第一個函數(shù):lock_kernel(),
這是為了在SMP系統(tǒng)下設(shè)計的,它定義在kernel/include/linux/smp_lock.h,如果是SMP系統(tǒng),則會
定義CONFIG_SMP,否則lock_kernel()將是空函數(shù),如果定義CONFIG_SMP的話,則會包含kernel/include/
asm/smplock.h頭文件,lock_kernel()就定一在該文件中,首先我們來看一下smp_lock.h文件:
#ifndef CONFIG_SMP
#define lock_kernel()               do { } while(0)
#define unlock_kernel()             do { } while(0)
#define release_kernel_lock(task, cpu)      do { } while(0)
#define reacquire_kernel_lock(task)     do { } while(0)   
#define kernel_locked() 1
#else
#include
#endif /* CONFIG_SMP */                                   
我們的平臺是單cpu的(沒有定義CONFIG_SMP),所以lock_kernel是空函數(shù),不過仍然對它進行一下說明,
如果定義了CONFIG_SMP,則include kernel/include/asm-arm/smplock.h文件,看一下該文件:
static inline void lock_kernel(void)
{
     if (!++current->lock_depth)
        spin_lock(&kernel_flag);
}
static inline void unlock_kernel(void)
{
     if (--current->lock_depth 0,即表明該進程被切換走之前握有核心鎖,
必須調(diào)用reacquire_kernel_lock()再次鎖定;
代碼printk(linux_banner)將linux的一些標語打印在內(nèi)核啟動的開始部分,需要說明的是雖然這是
在內(nèi)核一開始運行時就打印了,但是它沒有馬上輸出到控制臺上,它只是將liunx_banner存儲到printk
的內(nèi)部緩沖中,因為這時printk的輸出設(shè)備,一般都是串口還沒有初始化,只有到輸出設(shè)備初始化完畢
在緩沖中的數(shù)據(jù)才被輸出,后面會看到在哪個位置linux_banner才真正輸出到終端。linux_banner定義在
kernel/init/version.c中:
const char *linux_banner =
  "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
  LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
這里面的字符串定義在文件kernel/include/linux/compile.h和kernel/include/linux/version.h中,
compile.h中的內(nèi)容:
#define UTS_VERSION "#1 Thu, 01 Feb 2007 13:32:14 +0800"
#define LINUX_COMPILE_TIME "13:32:14"
#define LINUX_COMPILE_BY "taoyue"
#define LINUX_COMPILE_HOST "swlinux.cecwireless.com.cn"
#define LINUX_COMPILE_DOMAIN "cecwireless.com.cn"
#define LINUX_COMPILER "gcc version 3.2.1"
version.h中的內(nèi)容:
#define UTS_RELEASE "2.4.19-rmk7-pxa2"
#define LINUX_VERSION_CODE 132115
#define KERNEL_VERSION(a,b,c) (((a)  .ver1
     @if [ -n "$(CONFIG_SMP)" ] ; then echo -n " SMP" >> .ver1; fi
     @if [ -f .name ]; then  echo -n \-`cat .name` >> .ver1; fi
     @LANG=C echo ' '`date -R` >> .ver1
     @echo \#define UTS_VERSION \"`cat .ver1 | $(uts_truncate)`\" > .ver
     @LANG=C echo \#define LINUX_COMPILE_TIME \"`date +%T`\" >> .ver
     @echo \#define LINUX_COMPILE_BY \"`whoami`\" >> .ver
     @echo \#define LINUX_COMPILE_HOST \"`hostname | $(uts_truncate)`\" >> .ver
     @([ -x /bin/dnsdomainname ] && /bin/dnsdomainname > .ver1) || \
      ([ -x /bin/domainname ] && /bin/domainname > .ver1) || \
      echo > .ver1
     @echo \#define LINUX_COMPILE_DOMAIN \"`cat .ver1 | $(uts_truncate)`\" >> .ver
     @echo \#define LINUX_COMPILER \"`$(CC) $(CFLAGS) -v 2>&1 | tail -1`\" >> .ver
     @mv -f .ver $@
     @rm -f .ver1
include/linux/version.h: ./Makefile
     @expr length "$(KERNELRELEASE)" \ /dev/null || \
      (echo KERNELRELEASE \"$(KERNELRELEASE)\" exceeds $(uts_len) characters >&2; false)
     @echo \#define UTS_RELEASE \"$(KERNELRELEASE)\" > .ver
     @echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)` >> .ver
     @echo '#define KERNEL_VERSION(a,b,c) (((a) >.ver
     @mv -f .ver $@
     
可以修改的參數(shù)是:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 19
EXTRAVERSION = -rmk7-pxa2


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/31100/showart_305922.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP