xtr.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include "software-modes.h"
  3. #include "task-list-32-tasks.h"
  4. // Task routine type
  5. typedef void (* RoutineTaskType) (USER_MODE) ;
  6. // kernel_createTask
  7. void kernel_createTask (INIT_MODE_
  8. uint64_t * inStackBufferAddress,
  9. uint32_t inStackBufferSize,
  10. RoutineTaskType inTaskRoutine) ;
  11. struct TaskControlBlock ;
  12. TaskControlBlock * descriptorPointerForTaskIndex (const uint8_t inTaskIndex) ;
  13. uint8_t indexForDescriptorTask (const TaskControlBlock * inTaskPtr) ; // should be not nullptr
  14. // Task termination
  15. void taskSelfTerminates(USER_MODE) asm ("task.self.terminates");
  16. void service_taskSelfTerminates(KERNEL_MODE) asm ("service.task.self.terminates");
  17. //$service task.self.terminates
  18. // Task suspension
  19. void kernel_blockOnDeadline (KERNEL_MODE_ const uint32_t inDeadline);
  20. // Task reactivation
  21. void irq_makeTasksReadyFromCurrentDate (IRQ_MODE);
  22. // Synchronization
  23. void kernel_blockRunningTaskInList (KERNEL_MODE_ TaskList & ioWaitingList);