소스 검색

Implement self termination service

DricomDragon 5 년 전
부모
커밋
79f48d2e85
2개의 변경된 파일11개의 추가작업 그리고 1개의 파일을 삭제
  1. 7 0
      prog/sources/xtr.cpp
  2. 4 1
      prog/sources/xtr.h

+ 7 - 0
prog/sources/xtr.cpp

@@ -193,4 +193,11 @@ void kernel_createTask (INIT_MODE_
 	gTaskIndex += 1 ;
 }
 
+static void kernel_makeNoTaskRunning(KERNEL_MODE) {
+	gRunningTaskControlBlockPtr = nullptr; // No running task
+}
 
+// Task termination
+void service_taskSelfTerminates(KERNEL_MODE) {
+	kernel_makeNoTaskRunning(MODE);
+}

+ 4 - 1
prog/sources/xtr.h

@@ -21,4 +21,7 @@ TaskControlBlock * descriptorPointerForTaskIndex (const uint8_t inTaskIndex) ;
 
 uint8_t indexForDescriptorTask (const TaskControlBlock * inTaskPtr) ; // should be not nullptr
 
-
+// Task termination
+void taskSelfTerminates(USER_MODE) asm ("task.self.terminates");
+void service_taskSelfTerminates(KERNEL_MODE) asm ("service.task.self.terminates");
+//$service task.self.terminates