Эх сурвалжийг харах

Start working on the project base.

Cixo Develop 2 сар өмнө
parent
commit
5d2942aa43

+ 0 - 6
headers/scheduler.h

@@ -1,6 +0,0 @@
-#ifndef CX_MLEMOS_SCHEDULER_H
-#define CX_MLEMOS_SCHEDULER_H
-
-
-
-#endif

+ 16 - 0
source/event.h

@@ -0,0 +1,16 @@
+#ifndef CX_MLEMOS_EVENT_H_INCLUDED
+#define CX_MLEMOS_EVENT_H_INCLUDED
+
+typedef enum cm_event_type_e {
+    CM_EVENT_NONE,
+    CM_EVENT_MESSAGE,
+    CM_EVENT_SEMAPHORE,
+    CM_EVENT_SIGNAL
+} cm_event_type_t;
+
+typedef struct cm_event_s {
+    cm_event_type_t type; 
+    void *content;
+} cm_event_t;
+
+#endif

+ 20 - 0
source/kernel.c

@@ -0,0 +1,20 @@
+#include <stdint.h>
+
+#include "kernel.h"
+#include "event.h"
+#include "process.h"
+
+void cm_kernel_init_static(
+    cm_kernel_t *self, 
+    cm_process_t *processes,
+    uint16_t processes_count,
+    cm_event_t *events,
+    uint16_t events_count
+) {
+    self->processes = processes;
+    self->processes_count = processes_count,
+    self->events = events;
+    self->events_count = events_count;
+    self->is_dynamic = false;
+}
+

+ 19 - 0
source/kernel.h

@@ -0,0 +1,19 @@
+#ifndef CX_MLEMOS_KERNEL_H_INCLUDED
+#define CX_MLEMOS_KERNEL_H_INCLUDED
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include "event.h"
+
+typedef struct cm_kernel_s {
+    struct cm_process_s *processes;
+    uint16_t processes_count;
+    
+    struct cm_event_s *events;
+    uint16_t events_count;
+
+    bool is_dynamic;
+} cm_kernel_t;
+
+#endif

+ 16 - 0
source/process.h

@@ -0,0 +1,16 @@
+#ifndef CX_MLEMOS_PROCESS_H_INCLUDED 
+#define CX_MLEMOS_PROCESS_H_INCLUDED 
+
+#include "event.h"
+#include "kernel.h"
+
+typedef struct cm_process_s {
+    void *parameters;
+    void (*coroutine) (
+        struct cm_process_s *, 
+        struct cm_kernel_s *, 
+        struct cm_event_s *
+    );
+} cm_process_t;
+
+#endif