GadgetSeed  0.9.6
syscall_api.c ファイル

タスク制御API [詳解]

#include "syscall.h"
#include "syscall_param.h"
#include "task_opration.h"
#include "dkprintf.h"
syscall_api.c の依存先関係図:

[ソースコード]

関数

int task_add (task_func func, char *name, int priority, struct st_tcb *tcb, unsigned int *stack, int stack_size, char *arg)
 タスクを追加する [詳解]
 
int task_exec (task_func func, char *name, int priority, struct st_tcb *tcb, unsigned int *stack, int stack_size, char *arg)
 タスクを追加し起動する [詳解]
 
void task_exit (void)
 タスクを終了する [詳解]
 
void task_pause (void)
 タスクを停止する [詳解]
 
void task_sleep (unsigned int stime)
 タスクを指定時間タイマ待ち状態にする [詳解]
 
void task_kill (int id)
 指定したタスクを終了する [詳解]
 
void task_wakeup (int id)
 指定したタスクを実行状態にする [詳解]
 
void eventqueue_register (struct st_event *evtque, const char *name, void *args, unsigned int size, int count)
 イベントキューを登録する [詳解]
 
int event_wait (struct st_event *evtque, void *arg, unsigned int timeout)
 タスクをイベント待ち状態にする [詳解]
 
int event_check (struct st_event *evtque)
 イベントキューにイベントが登録されているか調べる [詳解]
 
void event_clear (struct st_event *evtque)
 イベントキューに登録されているイベントを削除する [詳解]
 
void event_wakeup (struct st_event *evtque, void *arg)
 イベントキューにイベントを登録する [詳解]
 
void eventqueue_unregister (struct st_event *evtque)
 イベントキューを登録解除する [詳解]
 
void mutex_register (struct st_mutex *mutex, const char *name)
 MUTEXを登録する [詳解]
 
int mutex_lock (struct st_mutex *mutex, unsigned int timeout)
 MUTEXをロックする [詳解]
 
int mutex_unlock (struct st_mutex *mutex)
 MUTEXをアンロックする [詳解]
 
void mutex_unregister (struct st_mutex *mutex)
 MUTEXを登録解除する [詳解]
 
void set_console_in_device (struct st_device *dev)
 実行タスクの標準入力デバイスを設定する [詳解]
 
void set_console_out_device (struct st_device *dev)
 実行タスクの標準出力デバイスを設定する [詳解]
 
void set_error_out_device (struct st_device *dev)
 実行タスクのエラー出力デバイスを設定する [詳解]
 
int task_get_tasks_info (struct st_task_info *ti, int count)
 
void print_task_list (void)
 
void print_task_queue (void)
 
void print_call_trace (void)
 

詳解

タスク制御API

これらの関数はタスク状態から実行されなければならない

日付
2017.11.25 Takashi SHUDO

syscall_api.c に定義があります。

関数詳解

◆ event_check()

int event_check ( struct st_event evtque)

イベントキューにイベントが登録されているか調べる

引数
[in]evtqueイベントキューポインタ
戻り値
登録されているイベント数(=0:イベント未登録)

syscall_api.c402 行目に定義があります。

◆ event_clear()

void event_clear ( struct st_event evtque)

イベントキューに登録されているイベントを削除する

引数
[in]evtqueイベントキューポインタ

syscall_api.c430 行目に定義があります。

◆ event_wait()

int event_wait ( struct st_event evtque,
void *  arg,
unsigned int  timeout 
)

タスクをイベント待ち状態にする

引数
[in]evtqueイベントキューポインタ
[out]argsイベント引数ポインタ
[in]timeoutイベントタイムアウト待ち時間(msec)
戻り値
待ちタイムアウト残り時間(msec)(=0:タイムアウト)

syscall_api.c364 行目に定義があります。

参照元 get_event().

被呼び出し関係図:

◆ event_wakeup()

void event_wakeup ( struct st_event evtque,
void *  arg 
)

イベントキューにイベントを登録する

このイベントキューでイベント待ちのタスクは起床する

引数
[in]evtqueイベントキューポインタ
[in]argイベント引数ポインタ

syscall_api.c453 行目に定義があります。

◆ eventqueue_register()

void eventqueue_register ( struct st_event evtque,
const char *  name,
void *  args,
unsigned int  size,
int  count 
)

イベントキューを登録する

引数
[in]evtqueイベントキューポインタ
[in]nameイベントキュー名文字列ポインタ
[in]argsイベントキュー引数バッファポインタ
[in]size1イベント引数のサイズ
[in]countキューするイベント数

syscall_api.c339 行目に定義があります。

◆ eventqueue_unregister()

void eventqueue_unregister ( struct st_event evtque)

イベントキューを登録解除する

引数
[in]evtqueイベントキューポインタ

syscall_api.c479 行目に定義があります。

◆ mutex_lock()

int mutex_lock ( struct st_mutex mutex,
unsigned int  timeout 
)

MUTEXをロックする

引数
[in]mutexMUTEXポインタ
[in]timeoutタイムアウト時間(msec)(=0:タイムアウト無し)
戻り値
待ちタイムアウト残り時間(msec)(=0:タイムアウト)

syscall_api.c517 行目に定義があります。

◆ mutex_register()

void mutex_register ( struct st_mutex mutex,
const char *  name 
)

MUTEXを登録する

引数
[in]mutexMUTEXポインタ
[in]nameMUTEX名文字列ポインタ

syscall_api.c497 行目に定義があります。

◆ mutex_unlock()

int mutex_unlock ( struct st_mutex mutex)

MUTEXをアンロックする

引数
[in]mutexMUTEXポインタ
戻り値
待ちタイムアウト残り時間(msec)(=0:タイムアウト指定のないMUTEX)

syscall_api.c543 行目に定義があります。

◆ mutex_unregister()

void mutex_unregister ( struct st_mutex mutex)

MUTEXを登録解除する

引数
[in]mutexMUTEXポインタ

syscall_api.c564 行目に定義があります。

参照元 unregister_device().

被呼び出し関係図:

◆ set_console_in_device()

void set_console_in_device ( struct st_device dev)

実行タスクの標準入力デバイスを設定する

引数
[in]devデバイス
注釈
dev が 0 の場合はシステム標準入力デバイスが設定される

syscall_api.c582 行目に定義があります。

◆ set_console_out_device()

void set_console_out_device ( struct st_device dev)

実行タスクの標準出力デバイスを設定する

引数
[in]devデバイス
注釈
dev が 0 の場合はシステム標準出力デバイスが設定される

syscall_api.c596 行目に定義があります。

◆ set_error_out_device()

void set_error_out_device ( struct st_device dev)

実行タスクのエラー出力デバイスを設定する

引数
[in]devデバイス
注釈
dev が 0 の場合はシステム標準エラー出力デバイスが設定される

syscall_api.c610 行目に定義があります。

◆ task_add()

int task_add ( task_func  func,
char *  name,
int  priority,
struct st_tcb tcb,
unsigned int *  stack,
int  stack_size,
char *  arg 
)

タスクを追加する

本関数は、タスクを実行キューに追加するのみであり、追加されたタスク は実行状態にならない。

引数
[in]funcタスク関数
[in]nameタスク名文字列ポインタ
[in]priorityタスク優先度
[in]tcbタスクコンテキストポインタ
[in]stackタスクスタックポインタ
[in]stack_sizeタスクスタックサイズ
[in]argタスク実行時引数文字列ポインタ
戻り値
!=0:エラー

syscall_api.c188 行目に定義があります。

◆ task_exec()

int task_exec ( task_func  func,
char *  name,
int  priority,
struct st_tcb tcb,
unsigned int *  stack,
int  stack_size,
char *  arg 
)

タスクを追加し起動する

タスクを実行キューに追加し、追加したタスクを実行状態にする。

引数
[in]funcタスク関数
[in]nameタスク名文字列ポインタ
[in]priorityタスク優先度
[in]tcbタスクコンテキストポインタ
[in]stackタスクスタックポインタ
[in]stack_sizeタスクスタックサイズ
[in]argタスク実行時引数文字列ポインタ
戻り値
!=0:エラー

syscall_api.c231 行目に定義があります。

◆ task_exit()

void task_exit ( void  )

タスクを終了する

本関数を実行したタスクは終了し、実行キューから削除される。

syscall_api.c264 行目に定義があります。

◆ task_kill()

void task_kill ( int  id)

指定したタスクを終了する

id で指定したタスクを終了する。

引数
[in]idタスクID

syscall_api.c304 行目に定義があります。

◆ task_pause()

void task_pause ( void  )

タスクを停止する

本関数を実行したタスクは停止する。

syscall_api.c276 行目に定義があります。

◆ task_sleep()

void task_sleep ( unsigned int  stime)

タスクを指定時間タイマ待ち状態にする

本関数を実行したタスクを stime (msec)休止する。

引数
[in]stime停止時間(msec)

syscall_api.c290 行目に定義があります。

参照元 startup().

被呼び出し関係図:

◆ task_wakeup()

void task_wakeup ( int  id)

指定したタスクを実行状態にする

id で指定したタスクを実行状態にする。

引数
[in]idタスクID

syscall_api.c318 行目に定義があります。