C99に対応した標準Cライブラリの実装レポートを行っていきます。

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

ホーム 全記事一覧 << 前の記事 次の記事 >>

 

2008/10/07 11:43|

 

_Exit関数はC99で追加された関数で、exit関数と同様、プログラムを終了させるためのものですが、atexit関数で登録した終了時関数の呼び出しを行わないなどの違いがあります。kernel_exit関数を使ってしまうと、call_atexit関数が呼び出されてしまうため、今回は別に実装することにします。

#include <t_services.h>
#include <t_config.h>

extern BOOL _kernel_iniflg

void _Exit(int status)
{
  if (_kernel_iniflg) {
    loc_cpu();
    _kernel_iniflg = FALSE;
  }
  cpu_terminate();
  sys_exit();
}

_kernel_iniflgは、vsns_iniサービスコールのための大域変数で、vsns_iniとは論理が逆になります。今回は、_kernel_iniflgをFALSEに設定する必要があるため、直接操作しています。このように、実行環境に密接にかかわる処理は、OSに対して完全に外付けにするのは困難です。

2006/05/24 08:09|一般ユーティリティTB:0CM:0

コメント
コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/62-5afbe240

ホーム 全記事一覧 << 前の記事 次の記事 >>

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

このブログをリンクに追加する

Powered By FC2ブログ 

Powered By FC2ブログ
ブログやるならFC2ブログ

Copyright(C) 2006 TAKAGI Nobuhisa All rights reserved.
Powered by FC2ブログ. 無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て template designed by 遥かなるわらしべ長者への挑戦.