ホーム/2008-11-01

ホーム/2008-11-01

# Cerium Update

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

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

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

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

1
2
3
4
5
 /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 を書いてない場合

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

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

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

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

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

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

1
 TaskManager *manager = new TaskManager(CPU_NUM);

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

1
 extern TaskManager *manager;

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy