t_services.h

アプリケーション用 標準インクルードファイル [詳細]

#include <kernel.h>
#include <serial.h>

t_services.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

マクロ定義

#define syscall(s)   _t_perror(__FILE__, __LINE__, #s, (s));
#define _syscall(s)   _t_panic(__FILE__, __LINE__, #s, (s));

関数

void kernel_exit (void) throw ()
 カーネルの終了処理
void t_perror (UINT prio, const char *file, int line, const char *expr, ER ercd) throw ()
Inline ER _t_perror (const char *file, int line, const char *expr, ER ercd)
Inline ER _t_panic (const char *file, int line, const char *expr, ER ercd)


説明

アプリケーション用 標準インクルードファイル

このインクルードファイルは,カーネル上で動作するプログラムのソースファイルでインクルードする標準インクルードファイルである. この中で, kernel.h (さらにここから,t_stddef.h, itron.h, tool_defs.h, sys_defs.h, cpu_defs.h, t_syslog.h) と serial.h をインクルードしている. また,アプリケーションに有益と思われる定義をいくつか含んでいる.

アセンブリ言語のソースファイルやシステムコンフィギュレーションファイルからこのファイルをインクルードする時は, _MACRO_ONLY を定義しておくことで,マクロ定義以外の記述を除くことができる.

t_services.h で定義されています。


マクロ定義

#define _syscall (  )     _t_panic(__FILE__, __LINE__, #s, (s));

サービスコール s を呼び出し,返値がエラーであれば,エラーメッセージを出力し,カーネルを異常終了させる.

参照元 logtask()serial_cls_por()serial_opn_por()serial_rea_chr()serial_rea_dat()serial_wri_chr()serial_wri_dat()sio_ierdy_rcv()sio_ierdy_snd()timer_handler().

#define syscall (  )     _t_perror(__FILE__, __LINE__, #s, (s));

サービスコール s を呼び出し,返値がエラーであれば,エラーメッセージを出力する.


関数

Inline ER _t_panic ( const char *  file,
int  line,
const char *  expr,
ER  ercd 
)

t_services.h96 行で定義されています。

参照先 kernel_abort()LOG_EMERGt_perror().

00097 {
00098         if (ercd < 0) {
00099                 t_perror(LOG_EMERG, file, line, expr, ercd);
00100                 kernel_abort();
00101         }
00102         return(ercd);
00103 }

関数の呼び出しグラフ:

Inline ER _t_perror ( const char *  file,
int  line,
const char *  expr,
ER  ercd 
)

t_services.h87 行で定義されています。

参照先 LOG_ERRORt_perror().

00088 {
00089         if (ercd < 0) {
00090                 t_perror(LOG_ERROR, file, line, expr, ercd);
00091         }
00092         return(ercd);
00093 }

関数の呼び出しグラフ:

void kernel_exit ( void   )  throw ()

カーネルの終了処理

戻り値:
この関数からはリターンしない
アプリケーションから kernel_exit 関数を呼び出すことで,カーネルを終了することができる. kernel_exit 関数が呼び出されると,カーネルは,終了処理ルーチンの実行,開発環境依存の終了処理 (atexit によって登録された関数や C++ におけるデストラクタの実行) を行った後,カーネルの終了処理を行う.

終了処理ルーチンは,アプリケーションで用意し, VATT_TER を使ってカーネルに登録する. VATT_TER によって追加された終了処理ルーチンは,カーネルの管理外の割込みを除くすべての割込みを禁止した状態で, システムコンフィギュレーションファイル中での VATT_TER の記述順と逆の順序で呼び出される. 終了処理ルーチン内では,サービスコールを呼び出してはならない.終了処理ルーチン内でサービスコールを呼び出した場合, システムの動作は保証されない (実際には,ターゲットによって,呼び出しても差し支えないサービスコールがある).

参照:
kernel_start, vsns_ini

startup.c100 行で定義されています。

参照先 call_atexit()call_terrtn()cpu_terminate()FALSEi_lock_cpu()iniflgsense_context()sense_lock()sys_exit()syslog_terminate()t_lock_cpu().

00101 {
00102         /*
00103          *  割込みを禁止
00104          */
00105         if (!sense_lock()) {
00106                 if (sense_context()) {
00107                         i_lock_cpu();
00108                 }
00109                 else  {
00110                         t_lock_cpu();
00111                 }
00112         }
00113         iniflg = FALSE;
00114 
00115         /*
00116          *  終了処理ルーチンの実行
00117          */
00118         call_terrtn();
00119 
00120         /*
00121          *  atexit の処理とデストラクタの実行
00122          */
00123         call_atexit();
00124 
00125         /*
00126          *  システムログ機能の終了処理
00127          */
00128         syslog_terminate();
00129 
00130         /*
00131          *  ターゲット依存の終了処理
00132          */
00133         cpu_terminate();
00134         sys_exit();
00135 }

関数の呼び出しグラフ:

void t_perror ( UINT  prio,
const char *  file,
int  line,
const char *  expr,
ER  ercd 
) throw ()

t_perror.c48 行で定義されています。

参照先 itron_strerror()syslog_4.

参照元 _t_panic()_t_perror().

00049 {
00050         syslog_4(prio, "%s reported by `%s' in line %d of `%s'.",
00051                 itron_strerror(ercd), expr, line, file);
00052 }

関数の呼び出しグラフ:


Copyright © 2006 by TAKAGI Nobuhisa.
Copyright © 2006 by Kijineko Inc..
このページは Mon Dec 18 17:19:41 2006 に Doxygen によって生成されました。
データ入力からプログラム開発まで!様々なスキルを持ったメンバーが登録しています【@SOHO】