50 lines
1.3 KiB
C
50 lines
1.3 KiB
C
#pragma once
|
|
// #include "memory.h"
|
|
#include "stdint.h"
|
|
#include "../drivers/serial.h"
|
|
#include "interrupts.h"
|
|
|
|
#define MLOG_DEBUG 1
|
|
#define MLOG_PRINT 2
|
|
#define MLOG_WARN 3
|
|
#define MLOG_ERR 4
|
|
|
|
typedef struct initrd{
|
|
void *ptr;
|
|
uint32_t size;
|
|
}__attribute__((packed)) initrd_t;
|
|
|
|
typedef struct vector{
|
|
void *ptr;
|
|
uint32_t size;
|
|
uint32_t sizeof_elements;
|
|
}vector_t;
|
|
|
|
vector_t *init_vector(void *vecptr, uint32_t sizeof_elements, uint32_t elements, void *initializer);
|
|
void *vector_get(uint32_t pos, vector_t *vector);
|
|
void vector_set(uint32_t pos, vector_t *vector, void *new_element);
|
|
void vector_push(vector_t *vector, void *new_element);
|
|
void vector_pop(uint32_t pos, vector_t *vector, void *element);
|
|
|
|
typedef struct kernel_info{
|
|
void *mmap_ptr;
|
|
uint16_t mmap_entry_count;
|
|
uint8_t padding;
|
|
uint8_t pixel_depth;
|
|
uint16_t monitor_x_resolution;
|
|
uint16_t monitor_y_resolution;
|
|
void *framebuffer;
|
|
initrd_t *initrd;
|
|
// uint32_t loaded_module_count;
|
|
}__attribute__((packed)) kernel_info_t;
|
|
|
|
void mlog(char *module, char *str, uint32_t type, ...);
|
|
void vmlog(char *module, char *str, uint32_t type, va_list vars);
|
|
|
|
|
|
#define MODULE_TYPE_DISK 1
|
|
#define MODULE_TYPE_FS 2
|
|
#define MODULE_TYPE_EXT 3
|
|
#define MODULE_TYPE_VIDEO 4
|
|
|
|
#define PANIC(m) kernel_panic(m, 0) |