浏览代码

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