(toppers-users 1294) Re: フルセット版カーネルサービスコールの実装について
Futoshi Okazaki
okazaki.futoshi @ renesas.com
2003年 12月 2日 (火) 15:46:35 JST
岡崎です。
長文でのご説明ありがとうございます。
>この話題をusersでして良いのかどうかの判断がつかないのですが...
> # フルセットの話題ならipa-oss,1.4の話題ならdev辺りが相当かと
確かに。
そっちのメーリングリストの存在を忘れていました。
>まず,JSP1.4から何がどう変わっているかについてから.
>
>JSP1.4から,これまでslp_tskやwup_tskなどの全てのAPIを
>一つのオブジェクトファイルにしていたものを,
>slp_tsk.o, wup_tsk.o のようにAPI毎のオブジェクトファイルを
>生成するようになっています.そして,カーネルに必要な全ての
>ファイルをまとめたライブラリ,libkernel.aを作成します.
Makefile.kernelにある「#各ソースファイルから生成されるオブジェクトファイルの定
義」がそれですね。
sample\Makefileの
$(KERNEL_LCOBJS): %.o:
$(CC) -D__$(*F) -o $@ -c $(CFLAGS) $(KERNEL_CFLAGS) $<
で、-D__$(*F)で確かにdefine指定していますね。
「#各ソースファイルから生成されるオブジェクトファイルの定義」が、ソースファイル
から生成される
オブジェクトファイルの名前と、define定義名を兼ね、
sh-hitachi-elf-gcc -D__slp_tsk -o slp_tsk.o ・・・・ ../kernel/task_sync.c
sh-hitachi-elf-gcc -D__tslp_tsk -o tslp_tsk.o ・・・・ ../kernel/task_sync.c
sh-hitachi-elf-gcc -D__wup_tsk -o wup_tsk.o ・・・・ ../kernel/task_sync.c
:
:
sh-hitachi-elf-gcc -D__sus_tsk -o sus_tsk.o ・・・・ ../kernel/task_sync.c
とtask_sync.cから順に生成していたんですね。そのための#ifdefだったとは・・・。
(これだと確かにtask_sync.oは生成されませんね)
>最初にMakefileが正しく1.4のものなのかを確認する必要がありそうです.
>1.4対応のMakefileであれば,task_sync.oは生成されません.
>libkernel.aが存在するか,または nm libkernel.a でslp_tskが存在するか
>を確認してみてください.
1.4のものです。
ただ、DOS上でコンパイルをしたくて、H8Sの生成方法を参考に
(H8Sの開発環境はCygwinとDOS窓を併用していて、コンパイル/リンクはDOS上で行って
いる)
sample\Makefile.h8sを改造してやっていたため、説明いただいた様にはなっていません
でした。
>以上,何かの参考になれば幸いです.
カーネルライブラリの生成過程について、とても参考になりよく分かりました。
ご説明を参考に、カーネルライブラリの生成まわりを修正してみます。
ありがとうございました。