| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- #include "kernel.h"
- static inline bool zv_kernel_is_process_ready(
- zv_kernel_t *self,
- zv_process_t *target
- ) {
- zv_status_t status = target->status;
- if (status == ZV_STATUS_READY) {
- return true;
- }
- }
- static inline zv_process_t * zv_kernel_select_next_process(
- zv_kernel_t *self
- ) {
- zv_process_t *current = self->processes;
- zv_pid_t step = self->processes_count;
- while (true) {
- if (step == 0) {
- return NULL;
- }
- if (current == NULL) {
- return NULL;
- }
- if (zv_kernel_is_process_ready(self, current)) {
- return current;
- }
- current = current->next;
- step = step - 1;
- }
- }
- void zv_kernel_scheduler(zv_kernel_t *self, bool exitable) {
- while (!exitable) {
-
- }
- }
|