Procházet zdrojové kódy

Start working on kernel.

Cixo Develop před 11 měsíci
rodič
revize
6f94543fad

+ 1 - 1
build-generic/make.sh

@@ -8,7 +8,7 @@ AR_FLAGS="rcs"
 
 
 BUILD=$(dirname $(realpath $0))
 BUILD=$(dirname $(realpath $0))
 SOURCE=$BUILD/../sources
 SOURCE=$BUILD/../sources
-HEADERS=$BUILD/../headers/cx/zivuos
+HEADERS=$BUILD/../headers/zivuos
 OUTPUT=libzivuos.a
 OUTPUT=libzivuos.a
 
 
 rm -f $BUILD/*.o
 rm -f $BUILD/*.o

+ 0 - 6
headers/cx/zivuos/kernel.h

@@ -1,6 +0,0 @@
-#ifndef CX_ZIVUOS_KERNEL_H_INCLUDED
-#define CX_ZIVUOS_KERNEL_H_INCLUDED
-
-void kernel_init(void);
-
-#endif

+ 18 - 0
headers/zivuos/kernel.h

@@ -0,0 +1,18 @@
+#ifndef ZIVUOS_KERNEL_H_INCLUDED
+#define ZIVUOS_KERNEL_H_INCLUDED
+
+#include <stdbool.h>
+
+#include "process.h"
+
+typedef struct zivu_kernel_s {
+    bool is_static;
+    size_t processes_count;
+    zivu_process_t *processes;
+} zivu_kernel_t;
+
+zivu_kernel_t* zivu_kernel_init_dynamic();
+void zivu_kernel_init_static(zivu_kernel_t*, zivu_process_t*, size_t);
+void zivu_kernel_remove(zivu_kernel_t*);
+
+#endif

+ 21 - 0
headers/zivuos/process.h

@@ -0,0 +1,21 @@
+#ifndef ZIVUOS_PROCESS_H_INCLUDED
+#define ZIVUOS_PROCESS_H_INCLUDED
+
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef uint8_t zivu_priority_t;
+typedef size_t zivu_pid_t;
+
+typedef struct zivu_pipe_s {
+    void *data;
+    bool avairable;
+} zivu_pipe_t;
+
+typedef struct zivu_process_s {
+    void (*worker)(void*, void*);
+    zivu_pipe_t pipe[1];
+    zivu_priority_t priority;
+} zivu_process_t;
+
+#endif

+ 9 - 0
headers/zivuos/worker.h

@@ -0,0 +1,9 @@
+#ifndef ZIVUOS_WORKER_H_INCLUDED
+#define ZIVUOS_WORKER_H_INCLUDED
+
+#include "kernel.h"
+#include "process.h"
+
+typedef void (*zivu_worker_t)(zivu_kernel_t*, zivu_process_t*);
+
+#endif

+ 35 - 3
sources/kernel.c

@@ -1,6 +1,38 @@
-#include <stdio.h>
+#include <malloc.h>
+#include <stdbool.h>
+
 #include "kernel.h"
 #include "kernel.h"
+#include "process.h"
+#include "worker.h"
+
+zivu_kernel_t* zivu_kernel_init_dynamic() {
+    zivu_kernel_t *current = (zivu_kernel_t*) malloc(sizeof(zivu_kernel_t)); 
 
 
-void kernel_init(void) {
-    puts("UwU");
+    current->processes = NULL;
+    current->is_static = false;
+    current->processes_count = 0;
+
+    return current;
 }
 }
+
+void zivu_kernel_init_static(
+    zivu_kernel_t *self, 
+    zivu_process_t *processes_table,
+    zivu_pid_t processes_count
+) {
+    self->is_static = true;
+    self->processes = processes_table;
+    self->processes_count = processes_count;
+}
+
+void zivu_kernel_remove(zivu_kernel_t *self) {
+    if (self->is_static) {
+        self->processes = NULL;
+        self->processes_count = 0;
+        
+        return;
+    }
+
+    free((void*) self);
+    free((void*) self->processes);
+}   

+ 1 - 1
tests/000-default/run.sh

@@ -6,7 +6,7 @@ CC_FLAGS="-O2"
 OWN=$(dirname $(realpath $0))
 OWN=$(dirname $(realpath $0))
 TEST_SOURCE=$OWN/testing.c
 TEST_SOURCE=$OWN/testing.c
 TEST_OUTPUT=$OWN/testing.app
 TEST_OUTPUT=$OWN/testing.app
-HEADERS=$OWN/../../headers/cx
+HEADERS=$OWN/../../headers
 LIBRARY=$OWN/../../build-generic
 LIBRARY=$OWN/../../build-generic
 LIBRARY_MAKE=$OWN/../../build-generic/make.sh
 LIBRARY_MAKE=$OWN/../../build-generic/make.sh