Clubcos
0.0.0
Clubcos - Clubc Operating System
|
multi-tasking & floating-point support 더 자세히 ...
#include "task.h"
#include "port.h"
#include "gdt.h"
#include "string.h"
#include "timer.h"
#include "assert.h"
#include "cpuid.h"
#include "interrupt.h"
#include "memory.h"
#include "likely.h"
#include "terminal.h"
함수 | |
void | ckTaskStructInitialize (void) |
멀티태스킹을 초기화합니다. 더 자세히 ... | |
uint32_t | ckTaskCreate (uint32_t eip, uint32_t esp, void *stack, uint32_t stacksize, uint32_t ProcessId, TaskPriority priority) |
태스크를 생성합니다. 더 자세히 ... | |
uint32_t | ckProcessCreate (uint32_t eip, uint32_t esp, void *stack, uint32_t stacksize, TaskPriority priority, uint32_t **PageDirectory, uint32_t PageDirSize, uint32_t cr3, ProcessData ProcData, uint32_t ParentProcessId) |
프로세스를 생성합니다. 더 자세히 ... | |
bool | ckTaskTerminate (uint32_t TaskId) |
태스크를 종료시킵니다. 더 자세히 ... | |
bool | ckProcessTerminate (uint32_t ProcessId) |
프로세스를 종료시킵니다. 더 자세히 ... | |
bool | ckTaskChangePriority (uint32_t TaskId, TaskPriority priority) |
태스크의 스케쥴 우선순위를 변경합니다. 더 자세히 ... | |
bool | ckTaskSuspend (uint32_t TaskId) |
태스크를 TASK_FLAG_WAIT 상태로 만듭니다. 더 자세히 ... | |
bool | ckTaskSuspend_byptr (Task *pTask) |
tagTask 에 대한 포인터로 ckTaskSuspend 함수를 호출합니다. 더 자세히 ... | |
bool | ckTaskResume (uint32_t TaskId) |
TASK_FLAG_WAIT 상태의 태스크를 재개시킵니다. 더 자세히 ... | |
bool | ckTaskResume_byptr (Task *pTask) |
tagTask 에 대한 포인터로 ckTaskResume 함수를 호출합니다. 더 자세히 ... | |
void | ckTaskJoin (uint32_t TaskId) |
지정된 태스크가 종료될 때까지 기다립니다. 더 자세히 ... | |
void | ckProcessJoin (uint32_t ProcId) |
지정된 프로세스가 종료될 때까지 기다립니다. 더 자세히 ... | |
void | ckTaskSchedule (void) |
CPU 시간을 양보하고 다른 태스크로 스위칭합니다. 더 자세히 ... | |
void | ckTaskScheduleOnTimerInt (void) |
타이머 인터럽트가 발생했을 때 호출해 태스크를 스위칭합니다. 더 자세히 ... | |
void | ck_ExceptIntHandler07 (InterruptContext *pContext) |
multi-tasking & floating-point support
void ck_ExceptIntHandler07 | ( | InterruptContext * | pContext | ) |
uint32_t ckProcessCreate | ( | uint32_t | eip, |
uint32_t | esp, | ||
void * | stack, | ||
uint32_t | stacksize, | ||
TaskPriority | priority, | ||
uint32_t ** | PageDirectory, | ||
uint32_t | PageDirSize, | ||
uint32_t | cr3, | ||
ProcessData | ProcData, | ||
uint32_t | ParentProcessId | ||
) |
프로세스를 생성합니다.
[in] | eip | 메인 태스크의 초기 eip입니다. 태스크가 실행할 코드입니다. |
[in] | esp | 메인 태스크의 초기 esp입니다. 스택의 최상단입니다. |
[in] | stack | 메인 태스크의 동적으로 할당된 스택입니다. 정적으로 할당한 스택을 사용하면 NULL 을 지정하십시오. 참고:Task::stack |
[in] | stacksize | stack 의 크기입니다. 참고:Task::stacksize |
[in] | priority | 태스크의 스케쥴 우선순위입니다. |
[in] | PageDirectory | 페이지 디렉토리입니다. 참고:Process::PageDirectory |
[in] | PageDirSize | PageDirectory 의 크기입니다. 참고:Process::PageDirSize |
[in] | cr3 | 페이지 디렉토리의 물리 주소입니다. 참고:Process::cr3 |
[in] | ProcData | 이 프로세스의 data입니다. |
[in] | ParentProcessId | 부모 프로세스의 ID입니다. |
ParentProcessId
가 무효하거나, 프로세스를 더 이상 생성할 수 없으면 PROCESS_INVALID_ID 가 반환됩니다. void ckProcessJoin | ( | uint32_t | ProcId | ) |
지정된 프로세스가 종료될 때까지 기다립니다.
지정한 프로세스 id가 무효하다면 (이미 종료됬다면) 그냥 리턴합니다.
[in] | ProcId | 기다릴 프로세스입니다. |
bool ckProcessTerminate | ( | uint32_t | ProcessId | ) |
프로세스를 종료시킵니다.
[in] | ProcessId | 종료시킬 태스크입니다. |
ProcessId
가 무효하다면 (이미 종료됬다면) false
입니다. 그렇지 않다면 true
입니다. bool ckTaskChangePriority | ( | uint32_t | TaskId, |
TaskPriority | priority | ||
) |
태스크의 스케쥴 우선순위를 변경합니다.
[in] | TaskId | 우선순위를 변경할 태스크입니다. |
[in] | priority | 이 우선순위로 변경합니다. |
TaskId
가 무효하다면 false
입니다. 그렇지 않다면 true
입니다. uint32_t ckTaskCreate | ( | uint32_t | eip, |
uint32_t | esp, | ||
void * | stack, | ||
uint32_t | stacksize, | ||
uint32_t | ProcessId, | ||
TaskPriority | priority | ||
) |
태스크를 생성합니다.
[in] | eip | 태스크의 초기 eip입니다. 태스크가 실행할 코드입니다. |
[in] | esp | 태스크의 초기 esp입니다. 스택의 최상단입니다. |
[in] | stack | 동적으로 할당된 스택입니다. 정적으로 할당한 스택을 사용하면 NULL 을 지정하십시오. 참고:Task::stack |
[in] | stacksize | stack 의 크기입니다. 참고:Task::stacksize |
[in] | ProcessId | 생성될 태스크를 가지는 프로세스의 id입니다. |
[in] | priority | 태스크의 스케쥴 우선순위입니다. |
ProcessId
가 무효하거나, 태스크를 더 이상 생성할 수 없으면 TASK_INVALID_ID 가 반환됩니다. void ckTaskJoin | ( | uint32_t | TaskId | ) |
지정된 태스크가 종료될 때까지 기다립니다.
지정한 태스크 id가 무효하다면 (이미 종료됬다면) 그냥 리턴합니다.
[in] | TaskId | 기다릴 태스크입니다. |
bool ckTaskResume | ( | uint32_t | TaskId | ) |
TASK_FLAG_WAIT 상태의 태스크를 재개시킵니다.
[in] | TaskId | 재개시킬 태스크입니다. |
TaskId
가 무효하거나 TASK_FLAG_WAIT 상태가 아닌 태스크라면 false
입니다. 그렇지 않다면 true
입니다. bool ckTaskResume_byptr | ( | Task * | pTask | ) |
tagTask 에 대한 포인터로 ckTaskResume 함수를 호출합니다.
void ckTaskSchedule | ( | void | ) |
CPU 시간을 양보하고 다른 태스크로 스위칭합니다.
void ckTaskScheduleOnTimerInt | ( | void | ) |
타이머 인터럽트가 발생했을 때 호출해 태스크를 스위칭합니다.
void ckTaskStructInitialize | ( | void | ) |
멀티태스킹을 초기화합니다.
bool ckTaskSuspend | ( | uint32_t | TaskId | ) |
태스크를 TASK_FLAG_WAIT 상태로 만듭니다.
[in] | TaskId | 일시 정지시킬 태스크입니다. |
TaskId
가 무효하거나 이미 TASK_FLAG_WAIT 상태의 태스크라면 false
입니다. 그렇지 않다면 true
입니다. bool ckTaskSuspend_byptr | ( | Task * | pTask | ) |
tagTask 에 대한 포인터로 ckTaskSuspend 함수를 호출합니다.
bool ckTaskTerminate | ( | uint32_t | TaskId | ) |
태스크를 종료시킵니다.
[in] | TaskId | 종료시킬 태스크입니다. |
TaskId
가 무효하다면 (이미 종료됬다면) false
입니다. 그렇지 않다면 true
입니다.