kernel.c 828 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include <malloc.h>
  2. #include <stdbool.h>
  3. #include "kernel.h"
  4. #include "process.h"
  5. #include "worker.h"
  6. zivu_kernel_t* zivu_kernel_init_dynamic() {
  7. zivu_kernel_t *current = (zivu_kernel_t*) malloc(sizeof(zivu_kernel_t));
  8. current->processes = NULL;
  9. current->is_static = false;
  10. current->processes_count = 0;
  11. return current;
  12. }
  13. void zivu_kernel_init_static(
  14. zivu_kernel_t *self,
  15. zivu_process_t *processes_table,
  16. zivu_pid_t processes_count
  17. ) {
  18. self->is_static = true;
  19. self->processes = processes_table;
  20. self->processes_count = processes_count;
  21. }
  22. void zivu_kernel_remove(zivu_kernel_t *self) {
  23. if (self->is_static) {
  24. self->processes = NULL;
  25. self->processes_count = 0;
  26. return;
  27. }
  28. free((void*) self);
  29. free((void*) self->processes);
  30. }