Buncha changes and fixes
This commit is contained in:
1
include/Makefile.am
Normal file
1
include/Makefile.am
Normal file
@@ -0,0 +1 @@
|
||||
nobase_include_HEADERS = types/status.h types/syscallid.h types/physaddr.h types/syscallarg.h
|
||||
@@ -101,41 +101,41 @@ struct kernel_t
|
||||
|
||||
void kernel_initialize(struct boot_info_t *boot_info);
|
||||
|
||||
enum error_t set_syscall(int id, int arg_count, int pid, void *func_ptr);
|
||||
error_t set_syscall(int id, int arg_count, int pid, void *func_ptr);
|
||||
|
||||
size_t do_syscall(enum syscall_id_t id, syscall_arg_t arg1, syscall_arg_t arg2, syscall_arg_t arg3, void *pc, void *stack, unsigned long flags);
|
||||
size_t do_syscall(syscall_id_t id, syscall_arg_t arg1, syscall_arg_t arg2, syscall_arg_t arg3, void *pc, void *stack, unsigned long flags);
|
||||
|
||||
enum error_t kernel_load_module(struct module_t *module);
|
||||
error_t kernel_load_module(struct module_t *module);
|
||||
|
||||
unsigned long kernel_current_pid();
|
||||
|
||||
struct process_context_t *kernel_current_context();
|
||||
|
||||
enum error_t kernel_store_active_context(struct process_context_t *context);
|
||||
error_t kernel_store_active_context(struct process_context_t *context);
|
||||
|
||||
unsigned long kernel_spawn_process(void *program_entry, int priority, physaddr_t address_space);
|
||||
|
||||
struct process_context_t *kernel_advance_scheduler();
|
||||
|
||||
enum error_t kernel_terminate_process(size_t process_id);
|
||||
error_t kernel_terminate_process(size_t process_id);
|
||||
|
||||
enum error_t kernel_create_port(unsigned long id);
|
||||
error_t kernel_create_port(unsigned long id);
|
||||
|
||||
enum error_t kernel_remove_port(unsigned long id);
|
||||
error_t kernel_remove_port(unsigned long id);
|
||||
|
||||
unsigned long kernel_get_port_owner(unsigned long id);
|
||||
|
||||
enum error_t kernel_send_message(unsigned long recipient, struct message_t *message);
|
||||
error_t kernel_send_message(unsigned long recipient, struct message_t *message);
|
||||
|
||||
enum error_t kernel_queue_message(unsigned long recipient, struct message_t *message);
|
||||
error_t kernel_queue_message(unsigned long recipient, struct message_t *message);
|
||||
|
||||
enum error_t kernel_register_interrupt_handler(unsigned long interrupt, signal_handler_t handler, void *userdata);
|
||||
error_t kernel_register_interrupt_handler(unsigned long interrupt, signal_handler_t handler, void *userdata);
|
||||
|
||||
enum error_t kernel_remove_interrupt_handler(unsigned long interrupt);
|
||||
error_t kernel_remove_interrupt_handler(unsigned long interrupt);
|
||||
|
||||
enum error_t kernel_execute_interrupt_handler(unsigned long interrupt);
|
||||
error_t kernel_execute_interrupt_handler(unsigned long interrupt);
|
||||
|
||||
enum error_t kernel_signal_return();
|
||||
error_t kernel_signal_return();
|
||||
|
||||
int receive_message(struct message_t *buffer, int flags);
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "memmap.h"
|
||||
#include "platform/paging.h"
|
||||
#include "types/physaddr.h"
|
||||
#include "types/status.h"
|
||||
#include <stddef.h>
|
||||
|
||||
extern const size_t page_size;
|
||||
@@ -71,7 +72,7 @@ void *page_map_end();
|
||||
* @param block_size
|
||||
* @return enum error_t
|
||||
*/
|
||||
enum error_t initialize_page_map(struct memory_map_t *map, void *base, size_t memory_size, unsigned long block_size);
|
||||
error_t initialize_page_map(struct memory_map_t *map, void *base, size_t memory_size, unsigned long block_size);
|
||||
|
||||
/**
|
||||
* @brief Create a new top-level page table and map the kernel in it.
|
||||
|
||||
@@ -43,7 +43,7 @@ void queue_construct(struct queue_t *queue);
|
||||
* @param ptr A pointer to some user-defined data to store on the queue.
|
||||
* @return enum error_t
|
||||
*/
|
||||
enum error_t queue_insert(struct queue_t *queue, void *ptr);
|
||||
error_t queue_insert(struct queue_t *queue, void *ptr);
|
||||
|
||||
/**
|
||||
* @brief Removes the next item from the queue and returns it.
|
||||
|
||||
@@ -1,15 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "types/syscallarg.h"
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef union
|
||||
{
|
||||
long signed_int;
|
||||
unsigned long unsigned_int;
|
||||
void *ptr;
|
||||
} syscall_arg_t;
|
||||
|
||||
typedef size_t (*syscall_ptr_0_t)();
|
||||
|
||||
typedef size_t (*syscall_ptr_1_t)(syscall_arg_t);
|
||||
|
||||
@@ -1,14 +1,6 @@
|
||||
#ifndef _QUARK_PHYSADDR_H
|
||||
#define _QUARK_PHYSADDR_H
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#if defined __i386__ || __arm__
|
||||
typedef uint32_t physaddr_t;
|
||||
#elif defined __x86_64__ || __aarch64__
|
||||
typedef uint64_t physaddr_t;
|
||||
#else
|
||||
typedef uint64_t physaddr_t;
|
||||
#endif
|
||||
typedef unsigned long int physaddr_t;
|
||||
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef _QUARK_ERROR_H
|
||||
#define _QUARK_ERROR_H
|
||||
|
||||
enum error_t
|
||||
typedef enum
|
||||
{
|
||||
ENONE = 0,
|
||||
ENULLPTR,
|
||||
@@ -15,6 +15,6 @@ enum error_t
|
||||
EPERM,
|
||||
EBUSY,
|
||||
EEXITED
|
||||
};
|
||||
} error_t;
|
||||
|
||||
#endif
|
||||
11
include/types/syscallarg.h
Normal file
11
include/types/syscallarg.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef _QUARK_SYSCALLARG_H
|
||||
#define _QUARK_SYSCALLARG_H
|
||||
|
||||
typedef union
|
||||
{
|
||||
long int signed_int;
|
||||
unsigned long int unsigned_int;
|
||||
void *ptr;
|
||||
} syscall_arg_t;
|
||||
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef QUARK_SYSCALLID_H
|
||||
#define QUARK_SYSCALLID_H
|
||||
|
||||
enum syscall_id_t
|
||||
typedef enum
|
||||
{
|
||||
SYSCALL_TEST = 1,
|
||||
SYSCALL_MMAP,
|
||||
@@ -12,6 +12,6 @@ enum syscall_id_t
|
||||
SYSCALL_RECEIVE,
|
||||
SYSCALL_OPEN_PORT,
|
||||
SYSCALL_CLOSE_PORT
|
||||
};
|
||||
} syscall_id_t;
|
||||
|
||||
#endif
|
||||
@@ -32,11 +32,11 @@ enum interrupt_code_t
|
||||
|
||||
enum isr_type_t
|
||||
{
|
||||
INTERRPUT_TASK32 = 5,
|
||||
INTERRPUT_TRAP32 = 15,
|
||||
INTERRPUT_INT32 = 14,
|
||||
INTERRPUT_TRAP16 = 7,
|
||||
INTERRPUT_INT16 = 6
|
||||
INTERRUPT_TASK32 = 5,
|
||||
INTERRUPT_TRAP32 = 15,
|
||||
INTERRUPT_INT32 = 14,
|
||||
INTERRUPT_TRAP16 = 7,
|
||||
INTERRUPT_INT16 = 6
|
||||
};
|
||||
|
||||
void initialize_gdt();
|
||||
|
||||
Reference in New Issue
Block a user