testing.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include <stdio.h>
  2. #include <zivuos.h>
  3. zv_state_t process_first_worker(zv_kernel_t *kernel, zv_process_t *self) {
  4. puts("Hello from process 1!");
  5. printf("My balance is: %i\n\n", (int) self->balance);
  6. return ZV_READY;
  7. }
  8. zv_state_t process_second_worker(zv_kernel_t *kernel, zv_process_t *self) {
  9. puts("Hello from process 2!");
  10. printf("My balance is: %i\n\n", (int) self->balance);
  11. return ZV_READY;
  12. }
  13. zv_state_t process_third_worker(zv_kernel_t *kernel, zv_process_t *self) {
  14. puts("Hello from process 3!");
  15. printf("My balance is: %i\n\n", (int) self->balance);
  16. return ZV_READY;
  17. }
  18. zv_state_t process_fourth_worker(zv_kernel_t *kernel, zv_process_t *self) {
  19. puts("Hello from process 4!");
  20. printf("My balance is: %i\n\n", (int) self->balance);
  21. return ZV_READY;
  22. }
  23. int main() {
  24. puts("ZivuOS scheduler test unit.");
  25. puts("Creating scheduler and two processes.");
  26. zv_kernel_t kernel[1];
  27. zv_process_t processes[10];
  28. zv_kernel_init(kernel, processes, ZV_COUNT_PROCESSES(processes));
  29. kernel->mode = ZV_BALANCED_PRIORITY;
  30. zv_pid_t first = zv_kernel_add_process(
  31. kernel,
  32. process_first_worker,
  33. ZV_NULL_PARAM,
  34. 1
  35. );
  36. zv_pid_t second = zv_kernel_add_process(
  37. kernel,
  38. process_second_worker,
  39. ZV_NULL_PARAM,
  40. 4
  41. );
  42. zv_pid_t third = zv_kernel_add_process(
  43. kernel,
  44. process_third_worker,
  45. ZV_NULL_PARAM,
  46. 10
  47. );
  48. zv_pid_t four = zv_kernel_add_process(
  49. kernel,
  50. process_fourth_worker,
  51. ZV_NULL_PARAM,
  52. 4
  53. );
  54. zv_kernel_scheduler(kernel);
  55. return 0;
  56. }