linux-2.6.33/DEFINE()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#t9383d9a]
#backlinks
*説明 [#lae723bc]
-パス: [[linux-2.6.33/include/linux/kbuild.h]]
-Kbuild と連携して定数を定義するヘッダファイルを生成する...
--例: asm-offsets.h(x86) の場合
ファイル生成の流れ:
arch/x86/kernel/asm-offsets.c --(Kbuild で実行する cpp...
arch/x86/kernel/asm-offset.s --(Kbuild で実行する sed...
include/generated/asm-offset.h
----------
まず Kbuild の依存関係定義から、
asm-offsets.c をプリプロセッサで処理する。
gcc (引数略) -S -o arch/x86/kernel/asm-offsets.s \
arch/x86/kernel/asm-offsets.c
すると、
DEFINE(PAGE_SIZE_asm, PAGE_SIZE)
は、
->PAGE_SIZE_asm $4096 PAGE_SIZE #
のようなコードになる。
下記のような sed で置換する。
sed -ne '/^->/{s:->#\(.*\):/* \1 */:; \
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* ...
s:->::; p;}' arch/x86/kernel/asm-offsets.s
すると、
->PAGE_SIZE_asm $4096 PAGE_SIZE #
は、
#define PAGE_SIZE_asm 4096 /* PAGE_SIZE # */
のようなコードになる。
--引数省略しないバージョン
gcc -Wp,-MD,arch/x86/kernel/.asm-offsets.s.d \
-nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.3.2/inc...
-I/usr/src/linux-2.6.33/arch/x86/include -Iinclude \
-include include/generated/autoconf.h -D__KERNEL__ \
-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
-Werror-implicit-function-declaration \
-Wno-format-security -fno-delete-null-pointer-checks \
-Os -m32 -msoft-float -mregparm=3 -freg-struct-return \
-mpreferred-stack-boundary=2 -march=i686 -mtune=core2 \
-Wa,-mtune=generic32 -ffreestanding -DCONFIG_AS_CFI=1 \
-DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare \
-fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-s...
-mno-3dnow -fno-stack-protector -fno-omit-frame-pointer \
-fno-optimize-sibling-calls -Wdeclaration-after-statemen...
-Wno-pointer-sign -fno-strict-overflow \
-D"KBUILD_STR(s)=#s" \
-D"KBUILD_BASENAME=KBUILD_STR(asm_offsets)" \
-D"KBUILD_MODNAME=KBUILD_STR(asm_offsets)" \
-fverbose-asm \
-S -o arch/x86/kernel/asm-offsets.s \
arch/x86/kernel/asm-offsets.c
**引数 [#id8ca000]
-sym
--定義するシンボル名
-val
--定義する値
--最終的に .h には、
#define sym val
のような定義が生成される。
詳細は DEFINE() の説明を参照してください。
**返り値 [#qb422d28]
-なし、関数ではない
**参考 [#e8af904a]
-DEFINE() の他にも下記関数がある。
--[[linux-2.6.33/BLANK()]]
--[[linux-2.6.33/OFFSET()]]
--[[linux-2.6.33/COMMENT()]]
*実装 [#w34dab9e]
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (va...
*コメント [#i720f898]
終了行:
*参照元 [#t9383d9a]
#backlinks
*説明 [#lae723bc]
-パス: [[linux-2.6.33/include/linux/kbuild.h]]
-Kbuild と連携して定数を定義するヘッダファイルを生成する...
--例: asm-offsets.h(x86) の場合
ファイル生成の流れ:
arch/x86/kernel/asm-offsets.c --(Kbuild で実行する cpp...
arch/x86/kernel/asm-offset.s --(Kbuild で実行する sed...
include/generated/asm-offset.h
----------
まず Kbuild の依存関係定義から、
asm-offsets.c をプリプロセッサで処理する。
gcc (引数略) -S -o arch/x86/kernel/asm-offsets.s \
arch/x86/kernel/asm-offsets.c
すると、
DEFINE(PAGE_SIZE_asm, PAGE_SIZE)
は、
->PAGE_SIZE_asm $4096 PAGE_SIZE #
のようなコードになる。
下記のような sed で置換する。
sed -ne '/^->/{s:->#\(.*\):/* \1 */:; \
s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* ...
s:->::; p;}' arch/x86/kernel/asm-offsets.s
すると、
->PAGE_SIZE_asm $4096 PAGE_SIZE #
は、
#define PAGE_SIZE_asm 4096 /* PAGE_SIZE # */
のようなコードになる。
--引数省略しないバージョン
gcc -Wp,-MD,arch/x86/kernel/.asm-offsets.s.d \
-nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.3.2/inc...
-I/usr/src/linux-2.6.33/arch/x86/include -Iinclude \
-include include/generated/autoconf.h -D__KERNEL__ \
-Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
-Werror-implicit-function-declaration \
-Wno-format-security -fno-delete-null-pointer-checks \
-Os -m32 -msoft-float -mregparm=3 -freg-struct-return \
-mpreferred-stack-boundary=2 -march=i686 -mtune=core2 \
-Wa,-mtune=generic32 -ffreestanding -DCONFIG_AS_CFI=1 \
-DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare \
-fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-s...
-mno-3dnow -fno-stack-protector -fno-omit-frame-pointer \
-fno-optimize-sibling-calls -Wdeclaration-after-statemen...
-Wno-pointer-sign -fno-strict-overflow \
-D"KBUILD_STR(s)=#s" \
-D"KBUILD_BASENAME=KBUILD_STR(asm_offsets)" \
-D"KBUILD_MODNAME=KBUILD_STR(asm_offsets)" \
-fverbose-asm \
-S -o arch/x86/kernel/asm-offsets.s \
arch/x86/kernel/asm-offsets.c
**引数 [#id8ca000]
-sym
--定義するシンボル名
-val
--定義する値
--最終的に .h には、
#define sym val
のような定義が生成される。
詳細は DEFINE() の説明を参照してください。
**返り値 [#qb422d28]
-なし、関数ではない
**参考 [#e8af904a]
-DEFINE() の他にも下記関数がある。
--[[linux-2.6.33/BLANK()]]
--[[linux-2.6.33/OFFSET()]]
--[[linux-2.6.33/COMMENT()]]
*実装 [#w34dab9e]
#define DEFINE(sym, val) \
asm volatile("\n->" #sym " %0 " #val : : "i" (va...
*コメント [#i720f898]
ページ名: