non_balanced_priority_scheduler.c 776 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "kernel.h"
  2. #include "scheduler.h"
  3. #ifndef ZV_FULL_DISABLE_NON_BALANCED_PRIORITY
  4. zv_process_t * zv_kernel_non_balanced_priority(zv_kernel_t *self) {
  5. zv_process_t *selected = NULL;
  6. for (
  7. zv_process_t *current = self->processes;
  8. current != (self->processes + self->processes_count);
  9. ++current
  10. ) {
  11. if (!zv_process_is_ready(current)) {
  12. continue;
  13. }
  14. if (selected == NULL) {
  15. selected = current;
  16. continue;
  17. }
  18. if (current->priority < selected->priority) {
  19. selected = current;
  20. continue;
  21. }
  22. }
  23. return selected;
  24. }
  25. #else
  26. zv_process_t * zv_kernel_non_balanced_priority(zv_kernel_t *self) {
  27. return NULL;
  28. }
  29. #endif