Browse Source

change(gblibc): move errno to gblibc

greatbridf 2 năm trước cách đây
mục cha
commit
3e141f09b7

+ 0 - 2
CMakeLists.txt

@@ -36,7 +36,6 @@ set(BOOTLOADER_SOURCES src/boot.s
 
 set(KERNEL_MAIN_SOURCES src/fs/fat.cpp
                         src/kinit.cpp
-                        src/kernel/errno.c
                         src/kernel/interrupt.cpp
                         src/kernel/process.cpp
                         src/kernel/tty.cpp
@@ -58,7 +57,6 @@ set(KERNEL_MAIN_SOURCES src/fs/fat.cpp
                         include/fs/fat.hpp
                         include/kernel/event/event.h
                         include/kernel/event/evtqueue.hpp
-                        include/kernel/errno.h
                         include/kernel/tty.hpp
                         include/kernel/interrupt.h
                         include/kernel/process.hpp

+ 1 - 0
gblibc/CMakeLists.txt

@@ -12,6 +12,7 @@ add_library(gblibc STATIC
     src/dirent.c
     src/ctype.c
     src/stdlib.c
+    src/errno.c
 )
 
 add_library(crt0 OBJECT

+ 31 - 0
gblibc/include/errno.h

@@ -0,0 +1,31 @@
+#ifndef __GBLIBC_ERRNO_H_
+#define __GBLIBC_ERRNO_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern int* __errno_location(void);
+
+#undef errno
+#define errno (*__errno_location())
+
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EBADF 9
+#define ECHILD 10
+#define ENOMEM 12
+#define EEXIST 17
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENOTTY 25
+#define EPIPE 32
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 5 - 0
gblibc/src/errno.c

@@ -0,0 +1,5 @@
+int* __errno_location(void)
+{
+    static int __errno = 0;
+    return &__errno;
+}

+ 0 - 33
include/kernel/errno.h

@@ -1,33 +0,0 @@
-#ifndef __GBOS_ERRNO_H
-#define __GBOS_ERRNO_H
-
-#include <types/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern uint32_t* _get_errno(void);
-
-#define errno (*_get_errno())
-
-#ifdef __cplusplus
-}
-#endif
-
-#define ENOMEM (1 << 0)
-#define EEXIST (1 << 1)
-#define ENOENT (1 << 2)
-#define EINVAL (1 << 3)
-#define EISDIR (1 << 4)
-#define ENOTDIR (1 << 5)
-#define ENOTFOUND (1 << 6)
-#define ECHILD (1 << 7)
-#define EBADF (1 << 8)
-#define EPERM (1 << 9)
-#define ESRCH (1 << 10)
-#define EINTR (1 << 11)
-#define EPIPE (1 << 12)
-#define ENOTTY (1 << 13)
-
-#endif

+ 2 - 2
include/kernel/process.hpp

@@ -1,7 +1,7 @@
 #pragma once
 
+#include <errno.h>
 #include <fcntl.h>
-#include <kernel/errno.h>
 #include <kernel/event/evtqueue.hpp>
 #include <kernel/interrupt.h>
 #include <kernel/mm.hpp>
@@ -287,7 +287,7 @@ public:
             auto* dentry = fs::vfs_open_proc(filename);
 
             if (!dentry) {
-                errno = ENOTFOUND;
+                errno = ENOENT;
                 return -1;
             }
 

+ 1 - 1
include/types/elf.hpp

@@ -1,5 +1,5 @@
 #pragma once
-#include <kernel/errno.h>
+#include <errno.h>
 #include <kernel/interrupt.h>
 #include <kernel/process.hpp>
 #include <kernel/vfs.hpp>

+ 0 - 8
src/kernel/errno.c

@@ -1,8 +0,0 @@
-#include <kernel/errno.h>
-#include <types/types.h>
-
-uint32_t* _get_errno(void)
-{
-    static uint32_t _errno = 0;
-    return &_errno;
-}

+ 1 - 1
src/kernel/mem.cpp

@@ -1,7 +1,7 @@
 #include <asm/port_io.h>
 #include <asm/sys.h>
 #include <assert.h>
-#include <kernel/errno.h>
+#include <errno.h>
 #include <kernel/mem.h>
 #include <kernel/mm.hpp>
 #include <kernel/process.hpp>

+ 1 - 1
src/kernel/syscall.cpp

@@ -2,7 +2,7 @@
 #include <asm/sys.h>
 #include <assert.h>
 #include <bits/ioctl.h>
-#include <kernel/errno.h>
+#include <errno.h>
 #include <kernel/interrupt.h>
 #include <kernel/log.hpp>
 #include <kernel/mem.h>

+ 2 - 2
src/kernel/vfs.cpp

@@ -1,5 +1,5 @@
 #include <assert.h>
-#include <kernel/errno.h>
+#include <errno.h>
 #include <kernel/mem.h>
 #include <kernel/process.hpp>
 #include <kernel/tty.hpp>
@@ -93,7 +93,7 @@ fs::vfs::dentry* fs::vfs::dentry::find(const name_type& name)
 
     auto iter = idx_children->find(name);
     if (!iter) {
-        errno = ENOTFOUND;
+        errno = ENOENT;
         return nullptr;
     }
 

+ 1 - 1
src/types/elf.cpp

@@ -1,5 +1,5 @@
 #include <assert.h>
-#include <kernel/errno.h>
+#include <errno.h>
 #include <kernel/mem.h>
 #include <kernel/process.hpp>
 #include <kernel/vfs.hpp>