• 検索結果がありません。

拡張 API 向 ン ン

ドキュメント内 DCMT 000077A Scorpius users manual 1 (ページ 73-86)

5. 拡張機能

5.2. 拡張 API 向 ン ン

5.1.2.1. ID 割当関数 extension_assign_semaphore()

拡張 機能用 割 当 い ID 得 ID 本関数 呼 出

度 値

割当可能 ID い場合 返 値 通知 場合 ID格納 ン 内容 定

※ 本関数 開始関数 実行 前 実行

・ 関数 :

int extension_assign_semaphore( u8 *id );

・ 入力 :

前 方向 明

id OUT ID

・ 返 値:

値 明

SEMAPHORE_ERR_SUCCESS(0) 成

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

EXTENSION_ERR_ASSIGN(負数) 割当可能 ID あ

5.1.2.2. 拡張 得関数 extension_get_semaphore()

得 前 起動 IDLE 実行時 自動的 ン

得 行い

・ 関数 :

int extension_get_semaphore( u8 id );

・ 入力 :

前 方向 明

id IN ID

・ 返 値:

値 明

SEMAPHORE_ERR_SUCCESS(0) 成

SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在

SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.2.3. 拡張 返却関数 extension_put_semaphore()

返却前 起動 行い

・ 関数 :

int extension_put_semaphore( u8 id );

・ 入力 :

前 方向 明

id IN ID

・ 返 値:

値 明

SEMAPHORE_ERR_SUCCESS(0) 成

SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在

SEMAPHORE_ERR_OVERFLOW(負数) 返却 最大値 超過 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.3. 拡張 ン 機能

ン 機能 拡張 API 提供

5.1.3.1. ン ID 割当関数 extension_assign_event_flag()

拡張 ン 機能用 割 当 い ン ID 得 ン ID 本

関数 呼 出 度 値

割当可能 ID い場合 返 値 通知 場合 ン ID格納 ン 内容 定

※ 本関数 開始関数 実行 前 実行

・ 関数 :

int extension_assign_event_flag( u8 *id );

・ 入力 :

前 方向 明

id OUT ン ID

・ 返 値:

値 明

EVENTFLAG_ERR_SUCCESS(0) 成

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

EXTENSION_ERR_ALLOCATE(負数) 割当可能 ID あ

5.1.3.2. 拡張 ン 待 関数 extension_wait_event_flag()

ン 待 前 起動 行い IDLE 実行時 自動的

ン ン 待 行い

・ 関数 :

int extension_wait_event_flag( u8 id,

event_wait_mode_t wait_mode, u16 wait_flag_pattern, u16 *p_event_flag_pattern );

・ 入力 :

前 方向 明

id IN ン ID

wait_mode IN ン 待

wait_flag_pattern IN ン 待 ン

p_event_flag_pattern OUT 関数 復帰時 ン ン 格納 ン

必要 い場合 NULL 指定

・ 返 値:

値 明

EVENT_FLAG_ERR_SUCCESS(0) ン 待 完了

EVENT_FLAG_ERR_ILLEGAL_ID(負数) 指定 ID ン 在

EVENT_FLAG_ERR_ILLEGAL_WAIT_FLAG(負数) 指定 待 ン 異常

待 ン == 0x0000

EVENT_FLAG_ERR_ALREADY_WAIT_TASK(負数) 既 ン 待 い 在

EVENT_FLAG_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.3.3. 拡張 ン 設定関数 extension_set_event_flag ( )

ン 設定 前 起動 行い

・ 関数 :

int extension_set_event_flag( u8 id,

u16 set_bit_pattern );

・ 入力 :

前 方向 明

id IN ン ID

set_bit_pattern IN ン 設定 ン

・ 返 値:

値 明

EVENT_FLAG_ERR_SUCCESS(0) 成

EVENT_FLAG_ERR_ILLEGAL_ID(負数) 指定 ID ン 在

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.4. 拡張 機能

機能 拡張 API 提供

5.1.4.1. ID 割当関数 extension_assign_mail_box()

拡張 機能用 割 当 い ID 得 ID 本

関数 呼 出 度 値

割当可能 ID い場合 返 値 通知 場合 ID格納 ン

内容 定

※ 本関数 開始関数 実行 前 実行

・ 関数 :

int extension_assign_mail_box( u8 *id );

・ 入力 :

前 方向 明

id OUT ID

・ 返 値:

値 明

MAILBOX_ERR_SUCCESS(0) 成

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

EXTENSION_ERR_ALLOCATE(負数) 割当可能 ID あ

5.1.4.2. 拡張 信関数 extension_receive_mail_box ( )

信 前 起動 行い IDLE 実行時 自動的 ン

信 行い

・ 関数 :

int extension_receive_mail_box( u8 id,

void **pp_rcv_mail );

・ 入力 :

前 方向 明

id IN ID

pp_rcv_mail OUT 信 先頭 格納 ン

・ 返 値:

値 明

MAIL_BOX_ERR_SUCCESS(0) 信

MAIL_BOX_ERR_ILLEGAL_ID(負数) 指定 ID 在

MAIL_BOX_ERR_NULL(負数) 信 先頭 格納 ン NULL

MAIL_BOX_ERR_ALREADY_WAIT_TASK(負数) 既 待 い 在

MAIL_BOX_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.4.3. 拡張 信関数 extension_send_mail_box ( )

信 前 起動 行い

・ 関数 :

mail_box_errno_t send_mail_box( u8 id,

mail_type_t type, void *p_snd_mail );

・ 入力 :

前 方向 明

id IN ID

type IN 信

p_snd_mail IN 信 先頭

・ 返 値:

値 明

MAIL_BOX_ERR_SUCCESS(0) 信

MAIL_BOX_ERR_ILLEGAL_ID(負数) 指定 ID 在

MAIL_BOX_ERR_NULL(負数) 信 先頭 NULL

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.5. 再帰呼出 可能 機能

newlib標準C 等 使用 場合 得済 ソ 対 繰 返 ソ 得

行わ 可能性 あ newlib __env_lock __malloc_lock Scorpius

う 構成 対応 再帰呼 出 可能 得関数 返却関数 定

義 い

再帰呼出 可能 機能 関数 使用 場合 以 点 注意 必要 あ

得 ID 保 変数 連 得 実行 い 回数 保

変数 静的 領域 定義 い 変数 ID毎 初期値 -1 定

義 い

再帰呼出 可能 得関数 再帰呼出 可能 返却関数 対象 ID 記 定義 変数 引数 指定

記 定義 変数 い 初期化以外 更新 い い

ID 対 再帰呼出 可能 得関数 返却関数 ID

保 変数 連 呼 出 回数保 領域 使用 い 異 変数 使用

得 返却 行え 原因

再帰呼出 可能 得関数 得 資源 必 再帰呼出 可能 返却関数

返却 い

5.1.5.1. 再帰呼出 可能 得関数 recursive_get_semaphore()

一 ソ 得要求 対 複数回要求 最初 一回目 ソ

・ 関数 :

int recursive_get_semaphore( u8 id,

int *lock_task_id int *nest );

・ 入力 :

前 方向 明

id IN ID

lock_task_id IN/OUT 得 ID

nest IN/OUT 得回数

・ 返 値:

値 明

SEMAPHORE_ERR_SUCCESS(0) 成

SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在

SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.1.5.2. 再帰呼出可能 返却関数 recursive_put_semaphore()

再帰呼出可能 得関数 得 返却 際 使用

得回数 複数回あ 場合 実際 ソ 返却動作 行い 再帰呼出可能 得関数 呼 出 回数 返却回数 実行 ソ 返却 実行

得 ID 得回数 再帰呼出可能 得関数 使用 変数 指定

・ 関数 :

int recursive_put_semaphore( u8 id,

int *lock_task_id int *nest );

・ 入力 :

前 方向 明

id IN ID

lock_task_id IN/OUT 得 ID

nest IN/OUT 得回数

・ 返 値:

値 明

SEMAPHORE_ERR_SUCCESS(0) 成

SEMAPHORE_ERR_ILLEGAL_ID(負数) 指定 ID 在

SEMAPHORE_ERR_ILLEGAL_CONTEXT(負数) ン 外 実行 い

EXTENSION_ERR_NOSTART_SCHEDULER(負数) 起動 い

EXTENSION_ERR_NOSUPPORT_SERVICE(負数) 拡張API 使用 可

5.2. 拡張 API 向 ン ン

拡張API 使用 あ 拡張API用 ン ン 必要

拡張API ン ン 拡張API 使用 ID 個数 ID 開始 置 録

ン ン Scorpius\include\sco_extension.h DEFINE定義 修

・ 拡張 機能

EXTENSION_SEMID_START 拡張API 使用 ID 開始 置

EXTENSION_SEMID_NUM 拡張API 使用 数

・ 拡張 ン 機能

EXTENSION_FLAGID_START 拡張API 使用 ン ID 開始 置

EXTENSION_FLAGID_NUM 拡張API 使用 ン 数

・ 拡張 機能

EXTENSION_MAILBOXID_START 拡張API 使用 ID 開始 置

EXTENSION_MAILBOXID_NUM 拡張API 使用 数

ID 割 当 関 数 各 ID 開 始 置 EXTENSION_xxxxx_START 拡 張 API 使 用 数 EXTENSION

_xxxxx_NUM 範 割 当 行い xxxxx 毎 異

開始 置 静的 割 当 い ID 次 値 設定 い 数 動的 ID 割 当 必要 あ 数 設定 い

#define EXTENSION_SEMID_START 3

#define EXTENSION_SEMID_NUM 7

#define EXTENSION_FLAGID_START 3

#define EXTENSION_FLAGID_NUM 2

#define EXTENSION_MAILBOXID_START 0

#define EXTENSION_MAILBOXID_NUM 4

定義 場合 各 ID割当関数 呼 出 以 動作 行い

ID割当関数 3 ~ 9 ID 割 当

ン ID割当関数 3 ~ 4 ID 割 当

ID割当関数 0 ~ 3 ID 割 当

関 ID毎 初期値 sco_config.entry 定義 必要 あ ID割当

関数 呼 出 ID 返却 ID 得

拡張API 使用 資源 初期値 全 内容 必要 あ

ドキュメント内 DCMT 000077A Scorpius users manual 1 (ページ 73-86)

関連したドキュメント