189 unsigned int *stack,
int stack_size,
char *arg)
193 DKFPRINTF(0x01,
"\n");
201 param.priority = priority;
204 param.stack_size= stack_size;;
207 DKPRINTF(0x01,
"exec param = %p\n", ¶m);
208 DKPRINTF(0x01,
"exec func = %p\n", param.func);
209 DKPRINTF(0x01,
"exec name = \"%s\"\n", param.name);
211 sys_call(SYSCALL_TASK_ADD, (
void *)¶m);
232 unsigned int *stack,
int stack_size,
char *arg)
236 DKFPRINTF(0x01,
"\n");
244 param.priority = priority;
247 param.stack_size= stack_size;;
250 DKPRINTF(0x01,
"exec param = %p\n", ¶m);
251 DKPRINTF(0x01,
"exec func = %p\n", param.func);
252 DKPRINTF(0x01,
"exec name = \"%s\"\n", param.name);
254 sys_call(SYSCALL_TASK_EXEC, (
void *)¶m);
266 DKFPRINTF(0x01,
"\n");
268 sys_call(SYSCALL_TASK_EXIT, (
void *)0);
278 DKFPRINTF(0x01,
"\n");
280 sys_call(SYSCALL_TASK_PAUSE, (
void *)0);
292 DKFPRINTF(0x01,
"stime = %ld\n", stime);
294 sys_call(SYSCALL_TASK_SLEEP, (
void *)(
long)stime);
306 DKFPRINTF(0x01,
"id = %d\n",
id);
308 sys_call(SYSCALL_TASK_KILL, (
void *)(
long)
id);
320 DKFPRINTF(0x01,
"id = %d\n",
id);
322 sys_call(SYSCALL_TASK_WAKEUP, (
void *)(
long)
id);
343 DKFPRINTF(0x01,
"evtque = \"%s\" %p size = %d, count = %d\n",
344 name, evtque, size, count);
346 param.evtque = evtque;
352 sys_call(SYSCALL_EVTQUE_INIT, (
void *)¶m);
368 DKFPRINTF(0x01,
"evtque = \"%s\" %p timeout = %ld\n",
369 evtque->
name, evtque, timeout);
371 param.evtque = evtque;
372 param.timeout = timeout;
376 DKPRINTF(0x01,
"exec param = %p\n", ¶m);
377 DKPRINTF(0x01,
"evtque = %p\n", param.evtque);
378 DKPRINTF(0x01,
"arg = %p\n", param.arg);
379 DKPRINTF(0x01,
"timeout = %ld\n", (
unsigned int)param.timeout);
380 KXDUMP(0x02, arg, evtque->
size);
382 if(run_task == &dummy_task) {
383 #ifndef GSC_TARGET_SYSTEM_EMU 384 SYSERR_PRINT(
"No running task\n");
390 sys_call(SYSCALL_EVTQUE_WAIT, (
void *)¶m);
406 DKFPRINTF(0x01,
"evtque = \"%s\" %p\n",
407 evtque->
name, evtque);
409 param.evtque = evtque;
412 if(run_task == &dummy_task) {
413 #ifndef GSC_TARGET_SYSTEM_EMU 414 SYSERR_PRINT(
"No running task\n");
420 sys_call(SYSCALL_EVTQUE_CHECK, (
void *)¶m);
432 DKFPRINTF(0x01,
"evtque = \"%s\" %p\n", evtque->
name, evtque);
434 if(run_task == &dummy_task) {
435 #ifndef GSC_TARGET_SYSTEM_EMU 436 SYSERR_PRINT(
"No running task\n");
442 sys_call(SYSCALL_EVTQUE_CLEAR, (
void *)evtque);
457 DKFPRINTF(0x01,
"evtque = \"%s\" %p\n", evtque->
name, evtque);
458 KXDUMP(0x02, arg, evtque->
size);
460 param.evtque = evtque;
463 if(run_task == &dummy_task) {
464 #ifndef GSC_TARGET_SYSTEM_EMU 465 SYSERR_PRINT(
"No running task\n");
471 sys_call(SYSCALL_EVTQUE_WAKEUP, (
void *)¶m);
481 DKFPRINTF(0x01,
"evtque = \"%s\" %p\n", evtque->
name, evtque);
483 sys_call(SYSCALL_EVTQUE_DISPOSE, (
void *)evtque);
501 DKFPRINTF(0x01,
"%s mutex = \"%s\" %p\n", name, mutex);
506 sys_call(SYSCALL_MUTEX_INIT, (
void *)¶m);
521 DKFPRINTF(0x01,
"mutex = \"%s\" %p timeout = %ld\n",
522 mutex->
name, mutex, timeout);
525 param.timeout = timeout;
527 DKPRINTF(0x01,
"exec param = %p\n", ¶m);
528 DKPRINTF(0x01,
"mutex = %p\n", param.mutex);
529 DKPRINTF(0x01,
"timeout = %08lX\n", (
unsigned int)param.timeout);
531 sys_call(SYSCALL_MUTEX_LOCK, (
void *)¶m);
547 DKFPRINTF(0x01,
"mutex = \"%s\" %p\n", mutex->
name, mutex);
551 DKPRINTF(0x01,
"exec param = %p\n", ¶m);
552 DKPRINTF(0x01,
"mutex = %p\n", param.mutex);
554 sys_call(SYSCALL_MUTEX_UNLOCK, (
void *)¶m);
566 DKFPRINTF(0x01,
"mutex = \"%s\" %p\n", mutex->
name, mutex);
568 sys_call(SYSCALL_MUTEX_DISPOSE, (
void *)mutex);
584 DKFPRINTF(0x01,
"dev = \"%s\" %p\n", dev->
name, dev);
586 sys_call(SYSCALL_SET_CONSOLE_IN, (
void *)dev);
598 DKFPRINTF(0x01,
"dev = \"%s\" %p\n", dev->
name, dev);
600 sys_call(SYSCALL_SET_CONSOLE_OUT, (
void *)dev);
612 DKFPRINTF(0x01,
"dev = \"%s\" %p\n", dev->
name, dev);
614 sys_call(SYSCALL_SET_ERROR_OUT, (
void *)dev);
621 int task_get_tasks_info(
struct st_task_info *ti,
int count)
625 DKFPRINTF(0x01,
"\n");
630 sys_call(SYSCALL_GET_TASKS_INFO, (
void *)¶m);
635 void print_task_list(
void)
637 DKFPRINTF(0x01,
"\n");
639 sys_call(SYSCALL_PRINT_TASK_LIST, (
void *)0);
642 void print_task_queue(
void)
644 DKFPRINTF(0x01,
"\n");
646 sys_call(SYSCALL_PRINT_TASK_QUEUE, (
void *)0);
649 void print_call_trace(
void)
651 DKFPRINTF(0x01,
"\n");
653 sys_call(SYSCALL_PRINT_CALLTRACE, (
void *)0);
void set_console_in_device(struct st_device *dev)
実行タスクの標準入力デバイスを設定する
void mutex_register(struct st_mutex *mutex, const char *name)
MUTEXを登録する
int event_wait(struct st_event *evtque, void *arg, unsigned int timeout)
タスクをイベント待ち状態にする
int mutex_lock(struct st_mutex *mutex, unsigned int timeout)
MUTEXをロックする
void set_console_out_device(struct st_device *dev)
実行タスクの標準出力デバイスを設定する
void eventqueue_register(struct st_event *evtque, const char *name, void *args, unsigned int size, int count)
イベントキューを登録する
void mutex_unregister(struct st_mutex *mutex)
MUTEXを登録解除する
void eventqueue_unregister(struct st_event *evtque)
イベントキューを登録解除する
void task_sleep(unsigned int stime)
タスクを指定時間タイマ待ち状態にする
int(* task_func)(char *arg)
タスク関数
int task_add(task_func func, char *name, int priority, struct st_tcb *tcb, unsigned int *stack, int stack_size, char *arg)
タスクを追加する
void task_wakeup(int id)
指定したタスクを実行状態にする
void task_kill(int id)
指定したタスクを終了する
void task_pause(void)
タスクを停止する
void event_wakeup(struct st_event *evtque, void *arg)
イベントキューにイベントを登録する
void set_error_out_device(struct st_device *dev)
実行タスクのエラー出力デバイスを設定する
const char * name
イベント名文字列
#define GSC_KERNEL_MAX_TASK_PRIORITY
$gsc カーネルタスクプライオリティ段階数
void task_exit(void)
タスクを終了する
void event_clear(struct st_event *evtque)
イベントキューに登録されているイベントを削除する
int event_check(struct st_event *evtque)
イベントキューにイベントが登録されているか調べる
int task_exec(task_func func, char *name, int priority, struct st_tcb *tcb, unsigned int *stack, int stack_size, char *arg)
タスクを追加し起動する
int mutex_unlock(struct st_mutex *mutex)
MUTEXをアンロックする
char name[MAX_DEVNAMELRN]
デバイス名文字列
unsigned int size
1イベントのサイズ
const char * name
MUTEX名文字列