forked from PoliEcho-holding-org/kern
Added <errno.h> and made kernel use it
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
#ifndef _ERRNO_H
|
||||
#define _ERRNO_H
|
||||
|
||||
#include <kernel.h>
|
||||
|
||||
#define ERRNO_MAX 4095
|
||||
|
||||
#define IS_ERR(_ptr) ((uintptr_t)(_ptr) >= (uintptr_t)(-ERRNO_MAX))
|
||||
|
||||
#define ERR_PTR(_err) ((void*)(_err))
|
||||
#define PTR_ERR(_ptr) ((int)(intptr_t)(_ptr))
|
||||
|
||||
// TODO: Add correct errno.h numbers
|
||||
enum {
|
||||
SUCCESS = 0,
|
||||
ENOMEM, // Cannot allocate memory
|
||||
EPERM, // Operation not permitted
|
||||
ENOENT, // No entry (no such file or directory)
|
||||
EIO, // Input/Output error
|
||||
ENXIO, // No such device or address
|
||||
EAGAIN, // Resource temporarly busy
|
||||
EACCES, // Permission denied
|
||||
EFAULT, // Bad address
|
||||
ENODEV, // No such device
|
||||
EINVAL, // Invalid argument
|
||||
EDOM, // Numerical argument out of domain
|
||||
ERANGE, // Numerical result out of range
|
||||
ENOSYS, // Function not implemented
|
||||
ENOTSUP, // Not supported
|
||||
EILLSEQ, // Illegal byte sequence
|
||||
EOVERFLOW, //
|
||||
EALIGN, // Not aligned
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -32,6 +32,6 @@ struct idt_pointer {
|
||||
} __packed;
|
||||
|
||||
int idt_init(void);
|
||||
void idt_set_gate(uint8_t i, void* handler, uint8_t flags);
|
||||
void idt_set_gate(uint8_t i, void* handler, uint8_t flags, uint8_t ist);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -41,11 +41,11 @@ static inline bool pag_is_user_addr(void* vaddr) { return (uintptr_t)vaddr < 0x0
|
||||
// NOTE: All uint64_t* are VIRTUAL addresses
|
||||
int pag_init(void);
|
||||
uint64_t* pag_get_pte(uint64_t* pml4, void* vaddr);
|
||||
void pag_map(uint64_t* pml4, void* vaddr, void* paddr, uint64_t flags);
|
||||
void pag_map_region(uint64_t* pml4, void* vaddr, void* paddr, size_t count, uint64_t flags);
|
||||
void pag_unmap(uint64_t* pml4, void* vaddr);
|
||||
void pag_unmap_region(uint64_t* pml4, void* vaddr, size_t count);
|
||||
void pag_protect(uint64_t* pml4, void* vaddr, uint64_t flags);
|
||||
int pag_map(uint64_t* pml4, void* vaddr, void* paddr, uint64_t flags);
|
||||
int pag_map_region(uint64_t* pml4, void* vaddr, void* paddr, size_t count, uint64_t flags);
|
||||
int pag_unmap(uint64_t* pml4, void* vaddr);
|
||||
int pag_unmap_region(uint64_t* pml4, void* vaddr, size_t count);
|
||||
int pag_protect(uint64_t* pml4, void* vaddr, uint64_t flags);
|
||||
void* pag_get_phys(uint64_t* pml4, void* vaddr);
|
||||
void pag_set_pml4(uint64_t* pml4);
|
||||
uint64_t* pag_get_pml4(void);
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
|
||||
int pmm_init(void);
|
||||
void* pmm_alloc(void);
|
||||
void pmm_free(void*);
|
||||
int pmm_free(void*);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -18,6 +18,7 @@ int serial_rcvd(int dev);
|
||||
char serial_recv(int dev);
|
||||
void serial_write(int dev, char* buf, size_t len);
|
||||
void serial_puts(int dev, char* s);
|
||||
void serial_cls(int dev);
|
||||
|
||||
int debugf(char* fmt, ...);
|
||||
int vdebugf(char* fmt, va_list args);
|
||||
|
||||
Reference in New Issue
Block a user