
		TOPPERS/FMPカーネル
		ユーザーズマニュアル

		対応バージョン: Release 1.4.1
		対応ASPカーネルバージョン : Release 1.9.1

		最終更新: 2024年11月13日

このドキュメントは，TOPPERS/FMPカーネルを使用するために必要な事項を説
明するものである．

TOPPERS/FMPカーネルは，シングルプロセッサ向けのRTOSであるTOPPERS/ASPカ
ーネルをベースとしているため，多くの項目はTOPPERS/ASPカーネルと同一で
ある．本ドキュメントでは，TOPPERS/ASPカーネルと異なる点について説明す
る．そのため，まずTOPPERS/ASPカーネルのユーザーマニュアルを参照の後，
本ドキュメントを参照すること．
----------------------------------------------------------------------
 TOPPERS/FMP Kernel
     Toyohashi Open Platform for Embedded Real-Time Systems/
     Flexible MultiProcessor Kernel

 Copyright (C) 2005-2017 by Embedded and Real-Time Systems Laboratory
             Graduate School of Information Science, Nagoya Univ., JAPAN
 
 上記著作権者は，以下の(1)～(4)の条件を満たす場合に限り，本ソフトウェ
 ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
 変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
 (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
     権表示，この利用条件および下記の無保証規定が，そのままの形でソー
     スコード中に含まれていること．
 (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
     用できる形で再配布する場合には，再配布に伴うドキュメント（利用
     者マニュアルなど）に，上記の著作権表示，この利用条件および下記
     の無保証規定を掲載すること．
 (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
     用できない形で再配布する場合には，次のいずれかの条件を満たすこ
     と．
   (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
       作権表示，この利用条件および下記の無保証規定を掲載すること．
   (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
       報告すること．
 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
     また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
     免責すること．
 
 本ソフトウェアは，無保証で提供されているものである．上記著作権者お
 よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
 に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
 アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
 の責任を負わない．
 
 @(#) $Id: user.txt 1359 2024-11-13 06:51:31Z ertl-honda $
----------------------------------------------------------------------

○目次

○１．TOPPERS/FMPカーネルの概要
	○1.1 TOPPERS/FMPカーネルの位置付け
	○1.2 TOPPERS/FMPカーネルの仕様
	1.3 マイグレーションガイド
	1.4 機能拡張・チューニングガイド
	1.5 既知の問題
	1.6 Cygwin環境における注意事項
２．ターゲット依存部
	2.1 ターゲット依存部の概要
	2.2 簡易パッケージ
	2.3 個別パッケージ
３．クイックスタートガイド
	3.1 開発環境の準備
	3.2 コンフィギュレータの構築
	3.3 サンプルプログラムの構築と実行
	3.4 カーネルを関数単位でライブラリ化する方法
	3.5 アプリケーションとカーネルを別々に構築する方法
４．ディレクトリ構成・ファイル構成
	○4.1 配布パッケージのディレクトリ構成
	○4.2 ターゲット非依存部のファイル構成
○５．コンフィギュレーションスクリプトの使い方
６．Makefileの修正方法
	○6.1 Makefileの変数定義
	6.2 コンパイルオプション
７．コンフィギュレータの使い方
８．システムサービス
	○8.1 システムログ機能
		8.1.1 システムログ機能の位置付け
		○8.1.2 ログバッファへの記録と低レベル出力
		8.1.3 ログ情報の種別
		8.1.4 ログ情報の重要度
		8.1.5 ログ情報のデータ構造 
		8.1.6 システムログ機能のサービスコール 
		○8.1.7 システムログ機能のためのライブラリ関数とマクロ 
		8.1.8 システムログ機能のその他のサービス
	8.2 シリアルインタフェースドライバ
		8.2.1 シリアルインタフェースドライバのサービスコール
		8.2.2 シリアルインタフェースドライバのその他のサービス
	8.3 システムログタスク
		8.3.1 システムログタスクのサービスコール
		8.3.2 システムログタスクのその他のサービス
	○8.4 カーネル起動メッセージの出力
９．サポートライブラリ
	9.1 基本的なライブラリ関数
	9.2 キュー操作ライブラリ関数
	9.3 システムログ出力用ライブラリ関数
	○9.4 実行時間分布集計モジュール
○１０．テストプログラム
	10.1 テストプログラム用ライブラリ
	○10.2 カーネルの整合性検査
	○10.3 機能テストプログラム
	○10.4 性能評価プログラム
１１．使用上の注意とヒント
	11.1 タイマドライバの組込み
	11.2 assertマクロの処理
	11.3 システムログ機能の扱い
	11.4 オブジェクトIDの管理
	11.5 カーネルの内部シンボルのリネーム
	○11.6 トレースログ記録のサンプルコードの使用方法
	11.7 システム起動時の初期化処理
	11.8 rodataセクションをRAMに置く場合
	◎11.9 ext_kerの同時呼び出しについて
１２．参考情報
	12.1 利用条件と利用報告
	12.2 保証・適用性・サポート
	12.3 バグレポート
	12.4 ウェブサイト
	12.5 TOPPERSユーザーズメーリングリスト
	12.6 TOPPERSプロジェクトのメンバ向けのサービス
	12.7 TOPPERSプロジェクトへの参加
○１３．リファレンス
	13.1 サービスコール一覧
	13.2 静的API一覧
	13.3 バージョン履歴

○がついている項目はASPカーネルから変更があった箇所を，◎はFMPカーネル
で新規に追加された箇所を示す．


１．TOPPERS/FMPカーネルの概要

1.1 TOPPERS/FMPカーネルの位置付け

TOPPERS/FMPカーネル（以下，FMPカーネル）は，マルチプロセッサシステム用
のリアルタイムカーネルである．TOPPERS新世代カーネルの基盤となるものと
して，TOPPERSプロジェクトにおいて開発したリアルタイムカーネルである
TOPPERS/ASPカーネルを拡張する形で開発した．

1.2 TOPPERS/FMPカーネルの仕様

FMPカーネルの仕様の概要については，「TOPPERS/FMPカーネルの仕様概要」を
参照すること．また，FMPカーネルを含むTOPPERS新世代カーネルの仕様の詳細
については，別途PDFファイルの形で配布している「TOPPERS新世代カーネル統
合仕様書（Release 1.5.0）」を参照すること．

1.3 マイグレーションガイド

ASPカーネルから変更なし．

1.4 機能拡張・チューニングガイド

ASPカーネルから変更なし．

1.5 既知の問題

ASPカーネルから変更なし．

1.6 Cygwin環境における注意事項

ASPカーネルから変更なし．

２．ターゲット依存部

2.1 ターゲット依存部の概要

ASPカーネルから変更なし．

2.2 簡易パッケージ

ASPカーネルから変更なし．

2.3 個別パッケージ

ASPカーネルから変更なし．

３．クイックスタートガイド

ここでは，ターゲット依存部が用意されているターゲットシステム上で，ASPカー
ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す．

3.1 開発環境の準備

ASPカーネルから変更なし．

3.2 コンフィギュレータの構築

ASPカーネルから変更なし．

3.3 サンプルプログラムの構築と実行

依存関係ファイルの生成方法をASPから変更したため，make depend のステッ
プが必要ない．

3.4 カーネルを関数単位でライブラリ化する方法

ASPカーネルから変更なし．

3.5 アプリケーションとカーネルを別々に構築する方法

ASPカーネルから変更なし．

４．ディレクトリ構成・ファイル構成

4.1 配布パッケージのディレクトリ構成

	include/		アプリケーション向けヘッダファイル
	kernel/			カーネルのソースファイル
	syssvc/			システムサービスのヘッダファイル，ソースファイル
	library/		サポートライブラリのソースファイル
	target/			ターゲット依存部
	arch/			ターゲット依存部の共通部分
		gcc/		GCC開発環境依存部
		logtrace/	トレースログ記録のサンプルコード
	pdic/			PDIC（デバイスドライバのOS非依存部分）
	cfg/			コンフィギュレータ
	utils/			ユーティリティプログラム
	sample/			サンプルプログラムとMakefile
	doc/			ドキュメント
	per/			性能評価プログラム
	test/			テストプログラム

4.2 ターゲット非依存部のファイル構成

ターゲット非依存部（テストプログラムは除く）の各ファイルの概要は次の通
り．

	README.txt			TOPPERS/FMPカーネルの簡単な紹介
	configure			コンフィギュレーションスクリプト（GNU開発環境用）
	MANIFEST			個別パッケージのファイルリスト

	include/
		kernel.h		ASPカーネルを使用するための定義
		sil.h			システムインタフェースレイヤを使用するための定義
		t_stddef.h		TOPPERS共通ヘッダファイル
		itron.h			ITRON仕様共通規定のデータ型・定数・マクロ
		t_syslog.h		システムログ出力を行うための定義
		t_stdlib.h		基本的なライブラリ関数を使用するための定義
		queue.h			キュー操作ライブラリを使用するための定義
		test_lib.h		テストプログラム用ライブラリを使用するための定義
		histogram.h		実行時間分布集計モジュールを使用するための定義
		log_output.h	システムログのフォーマット出力を使用するための定義
		kernel_fncode.h	機能コード定義

	kernel/
		Makefile.kernel		カーネルのファイル構成の定義
		kernel_impl.h		カーネル実装用標準ヘッダファイル
		kernel_int.h		kernel_cfg.c用のヘッダファイル
		kernel_rename.def	カーネルの内部識別名のリネーム定義
		kernel_rename.h		カーネルの内部識別名のリネーム
		kernel_unrename.h	カーネルの内部識別名のリネーム解除	
		kernel_api.csv		コンフィギュレータの静的APIテーブル
		kernel_def.csv		コンフィギュレータの値取得シンボルテーブル
		kernel.tf			コンフィギュレータのパス2のテンプレートファイル
		kernel_check.tf		コンフィギュレータのパス3のテンプレートファイル
		genoffset.tf		オフセットファイル生成用のテンプレートファイル 
		allfunc.h		すべての関数をコンパイルするための定義
		check.h			エラーチェック用マクロ
		startup.c		カーネルの初期化と終了処理
		task.h			タスク操作ルーチン関連の定義
		task.c			タスク操作ルーチン
		wait.h			待ち状態操作ルーチン関連の定義
		wait.c			待ち状態操作ルーチン
		time_event.h	タイムイベント管理関連の定義
		time_event.c	タイムイベント管理
		task_manage.c	タスク管理機能
		task_refer.c	タスク状態参照機能
		task_sync.c		タスク付属同期機能
		task_except.c	タスク例外処理機能
		semaphore.h		セマフォ機能関連の定義
		semaphore.c		セマフォ機能
		eventflag.h		イベントフラグ機能関連の定義
		eventflag.c		イベントフラグ機能
		dataqueue.h		データキュー機能関連の定義
		dataqueue.c		データキュー機能
		pridataq.h		優先度データキュー機能関連の定義
		pridataq.c		優先度データキュー機能
		mailbox.h		メールボックス機能関連の定義
		mailbox.c		メールボックス機能
		mempfix.h		固定長メモリプール機能関連の定義
		mempfix.c		固定長メモリプール機能
		time_manage.c	システム時刻管理機能
		cyclic.h		周期ハンドラ機能関連の定義
		cyclic.c		周期ハンドラ機能
		alarm.h			アラームハンドラ機能関連の定義
		alarm.c			アラームハンドラ機能
		sys_manage.c	システム状態管理機能
		interrupt.h		割込み管理機能関連の定義
		interrupt.c		割込み管理機能
		exception.h		CPU例外管理機能関連の定義
		exception.c		CPU例外管理機能
		mp.h			マルチプロセッサ管理関連の定義
		mp.c			マルチプロセッサ管理関連
		winfo.h			待ち情報定義
		spin_lock.h		スピンロック機能関連の定義
		spin_lock.c		スピンロック機能関連

	syssvc/
		banner.h		カーネル起動メッセージの出力のための定義
		banner.c		カーネル起動メッセージの出力
		banner.cfg		カーネル起動メッセージの出力のコンフィギュレー
						ションファイル
		logtask.h		システムログタスクを使用するための定義
		logtask.c		システムログタスク
		logtask.cfg		システムログタスクのコンフィギュレーションファイル
		serial.h		シリアルインタフェースドライバを使用するための定義
		serial.c		シリアルインタフェースドライバ
		serial.cfg		シリアルドライバのコンフィギュレーションファイル
		syslog.h		システムログ機能を使用するための定義
		syslog.c		システムログ機能
		syslog.cfg		システムログ機能のコンフィギュレーションファイル

	library/
		histogram.c		実行時間分布集計モジュール
		log_output.c	システムログのフォーマット出力
		strerror.c		エラーメッセージ文字列を返す関数
		t_perror.c		エラーメッセージの出力
		test_lib.c		テストプログラム用ライブラリ
		vasyslog.c		可変数引数のシステムログライブラリ

	arch/gcc/
		MANIFEST		個別パッケージのファイルリスト
		tool_stddef.h	t_stddef.hの開発環境依存部（GCC用）

	arch/logtrace/
		MANIFEST		個別パッケージのファイルリスト
		trace_config.h	トレースログに関する設定
		trace_config.c	トレースログ機能
		trace_dump.c	トレースログのダンプ

	utils/
		applyrename		ファイルにリネームを適用
		genoffset		offset.hの生成（GNU開発環境用）
		genrename		リネームヘッダファイルの生成
		gentest			テストプログラムの生成
		makedep			依存関係リストの生成（GNU開発環境用）
		makerelease		リリースパッケージの生成

	sample/
		Makefile			サンプルのMakefile（GNU開発環境用）
		sample1.h			サンプルプログラム(1)に関する定義
		sample1.c			サンプルプログラム(1)
		sample1.cfg			サンプルプログラム(1)のコンフィギュレーションファイル
		logtrace_test1.h	トレースログサンプルプログラム(1)に関する定義
		logtrace_test1.c	トレースログサンプルプログラム(1)
		logtrace_test1.cfg	トレースログサンプルプログラム(1)のコンフィギュレーションファイル

	doc/
		user.txt			ユーザーズマニュアル
		fmp_spec.txt		TOPPERS/FMPカーネルの仕様概要
		extension.txt		機能拡張・チューニングガイド
		migration.txt		TOPPERS新世代カーネルへのマイグレーションガイド
		porting.txt			ターゲット依存部 ポーティングガイド
		configurator.txt	コンフィギュレータ仕様
		design.txt			設計メモ
		version.txt			変更履歴


５．コンフィギュレーションスクリプトの使い方

コンフィギュレーションスクリプトに対するオプションはASPカーネルでサポ
ートしているものに加えて以下のものがサポートされている．

	-s
		システムログ機能のグローバル方式を有効にする．

	-P <プロセッサ数>
		プロセッサ数を指定する．指定しない場合は，ターゲット依存部のデ
		ィフォルト値を使用する．

６．Makefileの修正方法

ASPカーネルから変更なし．

6.1 Makefileの変数定義

(M) システムログ機能のグローバル方式の指定

ENABLE_G_SYSLOG に true を設定することにより，グローバル方式が有効とな
る．

(N) プロセッサ数

PRC_NUM にプロセッサ数を指定する．指定しない場合には，ターゲット依存部
のディフォルト値が使用される．

6.2 コンパイルオプション

ASPカーネルから変更なし．

７．コンフィギュレータの使い方

ASPカーネルから変更なし．

８．システムサービス

8.1 システムログ機能

FMPカーネルでは，システムログ機能を全てのプロセッサで共有するグローバ
ル方式と個々のプロセッサで個別のシステムログ機能（バッファ）持つローカ
ル方式が選択可能である．

グローバル方式の場合は，システム中の1つのプロセッサ上でシステムログタ
スクとシリアルインタフェースドライバを動作させる．ローカル方式の場合は，
各プロセッサでシステムログタスクとシリアルインタフェースドライバを動作
させる．

ローカル方式の場合，システムログ出力用ライブラリ関数で出力された情報は，
関数を呼び出した処理単位が実行されているプロセッサのシステムログバッフ
ァに保存される．

グローバル方式を有効にするには，Makefile でG_SYSLOGを定義すればよい．
また，コンフィギュレーションスクリプトにグローバル方式を使用することを
指示するオプション（-s）を付加することでも有効となる．

システムログ機能は，CPUロック状態や実行コンテキストによらず動作できる
ように実装してある．しかしながら，グローバル方式の場合は，SILのスピン
ロック取得中に呼び出した場合の動作は保証しない．

8.1.1 システムログ機能の位置付け

ASPカーネルから変更なし．

8.1.2 ログバッファへの記録と低レベル出力

ターゲット依存に用意する低レベルの文字出力関数（target_fput_log）は，
ローカル方式の場合は，プロセッサ毎に異なるポートに出力し，グローバル方
式の場合は，同一のポートに出力すること．

8.1.3 ログ情報の種別

ASPカーネルから変更なし．

8.1.4 ログ情報の重要度

ASPカーネルから変更なし．

8.1.5 ログ情報のデータ構造 

ASPカーネルから変更なし．

8.1.5 システムログ機能のサービスコール

ASPカーネルから変更なし．

8.1.6 システムログ機能のサービスコール 

ASPカーネルから変更なし．

8.1.7 システムログ機能のためのライブラリ関数とマクロ

(6) G_SYSLOG

グローバル方式をサポートする．全てのプロセッサから呼び出されたシステム
ログ出力用ライブラリ関数による出力は同一のバッファに保存される．

8.1.8 システムログ機能のその他のサービス

ASPカーネルから変更なし．

8.2 シリアルインタフェースドライバ

ASPカーネルから変更なし．

8.2.1 シリアルインタフェースドライバのサービスコール

ASPカーネルから変更なし．

8.2.2 シリアルインタフェースドライバのその他のサービス

ASPカーネルから変更なし．

8.3 システムログタスク

ASPカーネルから変更なし．

8.3.1 システムログタスクのサービスコール

ASPカーネルから変更なし．

8.3.2 システムログタスクのその他のサービス

ASPカーネルから変更なし．

8.4 カーネル起動メッセージの出力

(1) void print_banner(intptr_t exinf)

システムログ機能を用いて，カーネル起動メッセージとしてプロセッサIDを出
力する．banner.cfgによって，カーネルに初期化ルーチンとして登録される．
exinfは無視される．

(2) void print_banner_copyright(intptr_t exinf)

システムログ機能を用いて，カーネル起動メッセージとしてコピーライトを出
力する．banner.cfgによって，カーネルに初期化ルーチンとして登録される．
exinfは無視される．

９．サポートライブラリ

9.1 基本的なライブラリ関数

ASPカーネルから変更なし．

9.2 キュー操作ライブラリ関数

ASPカーネルから変更なし．

9.3 システムログ出力用ライブラリ関数

ASPカーネルから変更なし．

9.4 実行時間分布集計モジュール

(5) CPU<CPU ID>_PERF_PRE_HOOK

計測前のフックルーチン．対応するプロセッサで呼び出す必要がある．内容は
ターゲット依存であり，計測に悪影響を与える割込みの禁止等を行う．

(6) CPU<CPU ID>_PERF_POST_HOOK

計測後のフックルーチン．対応するプロセッサで呼び出す必要がある．内容は
ターゲット依存であり，計測前のフックルーチンで停止した割込みの許可等を
行う．

１０．テストプログラム

テストプログラムは，カーネルの機能テストおよび性能評価を行うためのプロ
グラム群である．

10.1 テストプログラム用ライブラリ

(1) void check_point(uint_t count)

チェックポイントは，プロセッサ毎に独立に管理する．

(2) void check_finish(uint_t count)

チェックポイントは，プロセッサ毎に独立に管理する．

(5) void check_state(bool_t ctx, bool_t loc, PRI ipm,
						bool_t dsp, bool_t dpn, bool_t tex)

この関数を呼び出した処理単位が実行されているプロセッサのシステム状態を
対象とする．

(6) void check_state_i(bool_t ctx, bool_t loc,
						bool_t dsp, bool_t dpn, bool_t tex)

この関数を呼び出した処理単位が実行されているプロセッサのシステム状態を
対象とする．

(7) void set_bit_func(BIT_FUNC bit_func)

FMPカーネルではサポートしない．

10.2 カーネルの整合性検査

現状，FMPカーネルにおいては，カーネルの整合性検査をサポートしない．

10.3 機能テストプログラム

testディレクトリに置かれたプログラムは，カーネルの機能テストを行うため
のプログラムである．

現バージョンで用意している機能テストプログラムは次の通り．機能テストプ
ログラムの詳細については，testディレクトリにあるtest_manual.pdfを参照
のこと．

1コア動作テスト
(1) test_1core				タスク管理モジュールのテスト(1)

2コア動作テスト
(1) test_mig_tsk1			mig_tsk()のテスト(1)
(2) test_mig_tsk2			mig_tsk()のテスト(2)
(3) test_mact_tsk1			mact_tsk()のテスト(1)
(4) test_mact_tsk2			mact_tsk()のテスト(2)
(5) test_mact_tsk2			mact_tsk()のテスト(3)

10.4 性能評価プログラム

perfディレクトリに置かれたプログラムは，カーネルの性能評価を行うための
プログラムである．

性能評価プログラムは，計測対象となる処理を繰り返し実行し，その実行時間
を計測して，実行時間分布を表示する．

計測した実行時間には，時間計測のオーバヘッド（時間計測処理の実行にかか
る時間）が含まれる．各性能評価プログラムは，まず時間計測のオーバヘッド
を計測する．計測対象の処理の正味の実行時間を求めるためには，計測された
時間から，このオーバヘッドを減算する必要がある．

また，実行時間の計測は，別に記述がない限り割込みを許可したまま行うため，
割込みハンドラ（少なくとも，タイマ割込みハンドラ）の処理時間が含まれた
実行結果が計測される．

なお，実行時間の計測中は，システムログタスクは強制待ちとしているため，
システムログタスクが影響することはない．

カーネルの性能評価にあたっては，ハードウェア（特にキャッシュ）の設定に
留意する必要がある．

現バージョンで用意している性能評価プログラムは次の通り．性能評価プログ
ラムの詳細については，perfディレクトリにあるperf_manual.pdfを参照のこ
と．

(1) perf_act_tsk		act_tsk()によるタスク起動時間の評価
(2) perf_mig_tsk		mig_tsk()によるタスクマイグレーション時間の評価
(3) perf_mact_tsk		mact_tsk()によるタスク起動とマイグレーション時間の評価

１１．使用上の注意とヒント

11.1 タイマドライバの組込み

ASPカーネルから変更なし．

11.2 assertマクロの処理

ASPカーネルから変更なし．

11.3 システムログ機能の扱い

ASPカーネルから変更なし．

11.4 オブジェクトIDの管理

ASPカーネルから変更なし．

11.5 カーネルの内部シンボルのリネーム

ASPカーネルから変更なし．

11.6 トレースログ記録のサンプルコードの使用方法

トレースログ記録の使用方法の一例として，システム起動時にトレースログの
記録を開始し，システム終了時に記録したトレースログをダンプするためには，
システムコンフィギュレーションファイルに次のような記述を追加する．

	#include "logtrace/trace_config.h"
	ATT_INI({ TA_NULL, TRACE_AUTOSTOP, trace_initialize });
	ATT_TER({ TA_NULL, target_fput_log, trace_dump });

初期化ルーチン（trace_initialize）と終了処理ルーチン（trace_dump）はク
ラスの囲みに入れず，それぞれグローバル初期化ルーチン，グローバル終了処
理ルーチンとして登録する．

また，トレースログを用いるサンプルが（logtrace_test1 ）が，sampleディ
レクトリ以下に ある．

11.7 システム起動時の初期化処理

ASPカーネルから変更なし．

11.8 rodataセクションをRAMに置く場合

ASPカーネルから変更なし．

11.9 ext_kerの同時呼び出しについて

ext_kerは，どのプロセッサからも呼び出し可能である．ekt_kerを複数のプロ
セッサから同時に呼び出しても，カーネル終了処理が複数回実行されることは
ない．

１２．参考情報

12.1 利用条件と利用報告

FMPカーネルの利用条件は，各ファイルの先頭に表示されている．著作権は，各
ファイルの先頭に表示されている著作権者が保有している．

利用条件の(3)の(b)において，利用の形態をTOPPERSプロジェクトに報告する方
法としては，FMPカーネルを利用した製品の名称と応用分野，製品化した会社名
と業種等の情報を，以下のURLのページから報告するものとする．

	http://www.toppers.jp/report.html

またその際に，FMPカーネルを使用してのコメントやご意見もいただけると幸い
である．

12.2 保証・適用性・サポート

FMPカーネルは無保証で提供されているものである．開発者およびTOPPERSプロ
ジェクトは，FMPカーネルに関して，特定の使用目的に対する適合性も含めて，
いかなる保証も行わない．また，FMPカーネルの利用により直接的または間接的
に生じたいかなる損害に関しても，その責任を負わない．

開発者およびTOPPERSプロジェクトは，FMPカーネルに関するサポートの約束は
していない．FMPカーネルに関して質問がある場合は，後述のTOPPERSユーザー
ズメーリングリストを利用していただけると幸いである．確実なサポートが必
要な場合には，有償でサポートサービスを提供している会社に相談されたい．

12.3 バグレポート

FMPカーネルにバグや問題点を発見された場合には，後述のTOPPERSユーザーズ
メーリングリストに報告して欲しい．

メーリングリストにバグや問題点などを報告する場合には，必要に応じて次の
情報を知らせて欲しい．

	使用しているカーネルに関する情報
		・ターゲット非依存部のバージョン
		・使用しているターゲット依存部とそのバージョン
		・TOPPERSプロジェクトからのリリースに対する改造箇所（あれば）

	ターゲットシステムに関する情報
		・ターゲットプロセッサの種類
		・ターゲットボード等の種類

	ホストに関する情報
		・OSのバージョン（サービスパックの適用状況も）
		・コンパイラなどの開発環境のバージョン（Cygwinのバージョンも）

12.4 ウェブサイト

TOPPERSプロジェクトのウェブサイトは，以下のURLにある．

	http://www.toppers.jp/

TOPPERSプロジェクトやASPカーネルに関する最新情報は，このウェブサイトか
ら得ることができる．また，ASPカーネルの最新版は，このウェブサイトからダ
ウンロードすることができる．

12.5 TOPPERSユーザーズメーリングリスト

ASPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提
供およびユーザ相互間の情報交換を容易にするために，TOPPERSユーザーズメー
リングリスト（users@toppers.jp）を用意している．

このメーリングリストには，誰でも自由に登録し，メールを送付することがで
きる（登録者以外はメールを送付できない）．また，送付されたメールは，誰
でも自由にウェブサイトで読むことができる．

メーリングリストへの登録方法については，以下のURLのページに説明がある．

	http://www.toppers.jp/community.html

12.6 TOPPERSプロジェクトのメンバ向けのサービス

TOPPERSプロジェクトのメンバに対しては，上記に加えて，ASPカーネルに関連
して次のサービスを用意している．

(1) TOPPERS開発者メーリングリスト

TOPPERSプロジェクトのメンバは，FMPカーネルに関する質問，バグや問題点な
どの報告に，TOPPERS開発者メーリングリスト（dev@toppers.jp）を利用するこ
とができる．

(2) FMPカーネルの開発支援サイト

FMPカーネルの開発支援のためのTRAC（バグトラッキングシステム）が，以下の
URLにある（TRACへのアクセスには，会員パスワードが必要である）．

	http://dev.toppers.jp/trac/fmp/

TOPPERSプロジェクトのメンバは，このサイトから，ウェブインタフェースおよ
びsubversionサーバにより，FMPカーネルの開発中のバージョンを得ることがで
きる．また，バグトラッキングデータベースにアクセスすることができ，過去
のバグ履歴へのアクセスや，バグの登録をすることができる．

12.7 TOPPERSプロジェクトへの参加

TOPPERSプロジェクトでは，何からの形でプロジェクトに貢献していただける方，
プロジェクトで開発したソフトウェアをお使いの方，プロジェクトに興味をお
持ちの方の参加を求めている．TOPPERSプロジェクトへの参加方法については，
以下のページに説明がある．

	http://www.toppers.jp/joinus.html


１３．リファレンス

13.1 サービスコール一覧

ASPカーネルに対して以下のAPIが追加されている．

(1) タスク管理機能

	ER ercd = mig_tsk(ID tski, ID prcid)
	ER ercd = mact_tsk(ID tski, ID prcid)
	ER ercd = imact_tsk(ID tski, ID prcid)

(4) 同期・通信機能

	ER ercd = loc_spn(ID spnid)
	ER ercd = iloc_spn(ID spnid)
	ER ercd = unl_spn(ID spnid)
	ER ercd = iunl_spn(ID spnid)
	ER ercd = try_spn(ID spnid)
	ER ercd = itry_spn(ID spnid)
	ER ercd = ref_spn(ID spnid, T_RSPN *pk_rspn)

(6) 時間管理機能

	ER ercd = msta_cyc(ID cycid, ID prcid)

	ER ercd = msta_alm(ID almid, RELTIM almtim, ID, prcid) 
	ER ercd = imsta_alm(ID almid, RELTIM almtim, ID, prcid)

(7) システム状態管理機能

	ER ercd = get_pid(ID *p_prcid)
	ER ercd = iget_pid(ID *p_prcid)
	ER ercd = mrot_rdq(PRI tskpri, ID prcid)
	ER ercd = imrot_rdq(PRI tskpri, ID prcid)

13.2 静的API一覧

ASPカーネルに対して以下の静的APIが追加されている．

(4) 同期・通信機能

	CRE_SPN( ID spnid { ATR spnatr })

13.3 バージョン履歴
	2024年11月13日	Release	1.4.1
	2017年02月20日	Release	1.4.0
	2016年05月27日	Release	1.3.1
	2015年01月27日	Release	1.3.0
	2012年12月24日	Release	1.2.3
	2012年10月30日	Release	1.2.2
	2012年03月30日	Release	1.2.1
	2011年07月15日	Release	1.2.0
	2010年02月08日	Release	1.1.0
	2009年09月07日	Release	1.0.2
	2009年07月17日	Release	1.0.1
	2009年05月13日	Release	1.0.0
	2008年02月04日	Release	0.B.0
	2008年05月12日	Release	0.A.0		最初のリリース

以上
