Cerium Update

main 関数はライブラリに閉じました。
というわけで、ユーザ側の main() は

int cerium_main(int argc, char *argv[]);

となります。引数は通常の main と同じものが渡されます
cerium_main で < 0 を返す (例えば -1) と
プログラムが終了するようにしています。
cerium_main を正常に抜けると、ライブラリ側で
main loop が回り、全タスク終了と共にプログラムが終了します。

ユーザプログラムで main() を書いてしまった場合

 /home/gongo/Game_project/Cerium/TaskManager/kernel/main.cc:15: multiple definition of `main' 
 main.o:/home/gongo/Game_project/Cerium/example/HelloWorld/main.cc:64: first defined here
 /usr/bin/ld: Warning: size of symbol `main' changed from 116 in main.o to 472 in 
 /home/gongo/Game_project/Cerium/TaskManager/libCellManager.a(main.o) 
 /home/gongo/Game_project/Cerium/TaskManager/libCellManager.a(main.o): In function `main':

cerium_main を書いてない場合

 main.cc:(.text+0x158): undefined reference to `cerium_main(int, char**)'

とかいうコンパイルorリンカエラーが出ると思うので、参考に。

あと、Cerium の標準オプションとして

 -chelp Print this message
 -cpu   Number of CPU (default 1)

を実装しました。近々増やしていく予定です

TaskManager? へのアクセスですが、今までは

 TaskManager *manager = new TaskManager(CPU_NUM);

とかやってたはずですが、現在はライブラリ側で生成しているので、 TaskManager?.h を include すると、中で

 extern TaskManager *manager;

とかしてるので、すぐ使えます。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-03-10 (土) 18:37:41 (4423d)