Move synchronization-related system calls to the SDK
authorcoderain <coderain@sdf.org>
Sat, 21 Oct 2017 23:48:40 +0000 (01:48 +0200)
committercoderain <coderain@sdf.org>
Sat, 21 Oct 2017 23:48:40 +0000 (01:48 +0200)
Makefile
kernel/include/sync.h
sdk/monolithium.h
sdk/sync.h [new file with mode: 0644]

index d93c871a56a00451996809f0fc51b330d71f2724..a3b23d37a6290ce30876ef7d4fe8de79694f8ec8 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -27,6 +27,7 @@ livecd.iso: kernel library manager
        grub-mkrescue -o $@ livecd
 
 clean:
+       $(MAKE) -C crt clean
        $(MAKE) -C kernel clean
        $(MAKE) -C library clean
        $(MAKE) -C manager clean
index 09bf896b5294bf1e82ac8cc535ac184497b2f1d2..5b67bd4eaa5dd687c729f8453537e1760d9ab0e3 100644 (file)
@@ -22,8 +22,7 @@
 
 #include <common.h>
 #include <object.h>
-
-#define NO_TIMEOUT 0xFFFFFFFF
+#include <sdk/sync.h>
 
 #define init_mutex(m, i) init_semaphore((m), (i), 1)
 #define wait_mutex(m, t) wait_semaphore((m), 1, (t))
@@ -48,11 +47,7 @@ void acquire_resource_shared(resource_t *res);
 void acquire_resource_exclusive(resource_t *res);
 void release_resource(resource_t *res);
 void init_semaphore(semaphore_t *semaphore, dword_t init_count, dword_t max_count);
-sysret_t syscall_create_semaphore(const char *name, dword_t init_count, dword_t max_count, handle_t *handle);
-sysret_t syscall_open_semaphore(const char *name, handle_t *handle);
 dword_t wait_semaphore(semaphore_t *semaphore, dword_t count, dword_t timeout);
 dword_t release_semaphore(semaphore_t *semaphore, dword_t count);
-sysret_t syscall_wait_semaphore(handle_t semaphore, dword_t count, dword_t timeout);
-sysret_t syscall_release_semaphore(handle_t semaphore, dword_t count);
 
 #endif
index e57cb85526ea66d6c0b2f9fe6b1809426160bfe0..00f1fee188c35dee36a7a8e9ccdafa198a5b7ce8 100644 (file)
@@ -27,6 +27,7 @@
 #include "object.h"
 #include "power.h"
 #include "process.h"
+#include "sync.h"
 #include "syscalls.h"
 #include "thread.h"
 #include "user.h"
diff --git a/sdk/sync.h b/sdk/sync.h
new file mode 100644 (file)
index 0000000..3a5586c
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * sync.h
+ *
+ * Copyright (C) 2017 Aleksandar Andrejevic <theflash@sdf.lonestar.org>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __MONOLITHIUM_SYNC_H__
+#define __MONOLITHIUM_SYNC_H__
+
+#include "object.h"
+
+#define NO_TIMEOUT 0xFFFFFFFF
+
+#define syscall_create_mutex(n, i, h) syscall_create_semaphore((n), (i), 1, (h))
+#define syscall_open_mutex(n, h) syscall_open_semaphore((n), (h))
+#define syscall_wait_mutex(m, t) syscall_wait_semaphore((m), 1, (t))
+#define syscall_release_mutex(m) syscall_release_semaphore((m), 1)
+
+sysret_t syscall_create_semaphore(const char *name, dword_t init_count, dword_t max_count, handle_t *handle);
+sysret_t syscall_open_semaphore(const char *name, handle_t *handle);
+sysret_t syscall_wait_semaphore(handle_t semaphore, dword_t count, dword_t timeout);
+sysret_t syscall_release_semaphore(handle_t semaphore, dword_t count);
+
+#endif