xtr.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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);
  24. bool irq_makeTaskReadyFromList (IRQ_MODE_ TaskList & ioWaitingList);