process.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #ifndef CX_ZIVUOS_PROCESS_H_INCLUDED
  2. #define CX_ZIVUOS_PROCESS_H_INCLUDED
  3. #include "status.h"
  4. #include "models.h"
  5. typedef struct zv_process_s {
  6. struct zv_process_s *next;
  7. zv_pid_t pid;
  8. zv_status_t status;
  9. zv_universal_param_t param[1];
  10. zv_worker_t worker;
  11. zv_updater_t updater[1];
  12. #ifndef ZIVUOS_USE_STATIC
  13. bool is_dynamic;
  14. #endif
  15. } zv_process_t;
  16. zv_process_t * zv_process_create();
  17. zv_process_t * zv_process_remove(zv_process_t *);
  18. static inline zv_pid_t zv_process_get_pid(zv_process_t *self) {
  19. return self->pid;
  20. }
  21. static inline void zv_process_set_worker(
  22. zv_process_t *self,
  23. zv_worker_t worker
  24. ) {
  25. self->worker = worker;
  26. }
  27. static inline void zv_process_set_updater(
  28. zv_process_t *self,
  29. zv_updater_t updater
  30. ) {
  31. *self->updater = updater;
  32. }
  33. static inline void zv_process_set_param(
  34. zv_process_t *self,
  35. zv_universal_param_t param
  36. ) {
  37. *self->param = param;
  38. }
  39. static inline void zv_process_set_status(
  40. zv_process_t *self,
  41. zv_status_t status
  42. ) {
  43. self->status = status;
  44. }
  45. static inline void zv_process_set_number_param(
  46. zv_process_t *self,
  47. intptr_t number
  48. ) {
  49. self->param->number = number;
  50. }
  51. static inline void zv_process_set_unumber_param(
  52. zv_process_t *self,
  53. uintptr_t unumber
  54. ) {
  55. self->param->unumber = unumber;
  56. }
  57. static inline void zv_process_set_pointer_param(
  58. zv_process_t *self,
  59. void *pointer
  60. ) {
  61. self->param->pointer = pointer;
  62. }
  63. static inline void zv_process_set_dynamic_updater(
  64. zv_process_t *self,
  65. zv_checker_t checker
  66. ) {
  67. self->updater->dynamic = checker;
  68. }
  69. static inline void zv_process_set_readiness(
  70. zv_process_t *self,
  71. zv_readiness_t readiness
  72. ) {
  73. self->updater->non_dynamic = readiness;
  74. }
  75. #endif