port.c 873 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <FreeRTOS.h>
  2. static rt_base_t level = 0;
  3. static rt_base_t critical_nesting = 0;
  4. void vPortEnterCritical( void )
  5. {
  6. if ( critical_nesting == 0 )
  7. {
  8. level = rt_hw_interrupt_disable();
  9. }
  10. critical_nesting += 1;
  11. }
  12. void vPortExitCritical( void )
  13. {
  14. critical_nesting -= 1;
  15. if ( critical_nesting == 0 )
  16. {
  17. rt_hw_interrupt_enable( level );
  18. }
  19. }
  20. void vPortEndScheduler( void )
  21. {
  22. /* Not implemented in ports where there is nothing to return to. */
  23. }
  24. BaseType_t rt_err_to_freertos(rt_err_t rt_err)
  25. {
  26. switch(-rt_err)
  27. {
  28. case RT_EOK:
  29. return pdPASS;
  30. case RT_ENOMEM:
  31. return errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;
  32. case RT_EFULL:
  33. return errQUEUE_FULL;
  34. case RT_EEMPTY:
  35. return errQUEUE_EMPTY;
  36. default:
  37. return pdFAIL;
  38. }
  39. }