Some level of security... i hope

This commit is contained in:
notsomeidiot123 2025-09-22 02:57:34 -04:00
parent 85aadeb902
commit 25d67aaa9e
6 changed files with 30 additions and 14 deletions

View File

@ -144,7 +144,6 @@ uint32_t pit_init(uint32_t freq){
reload_value = ((3579545)/(freq));
reload_value /= 3;
pit_reload(0b100, reload_value);
printf("%d\n", reload_value);
uint32_t ms = (reload_value * 3000)/3579545;
return ms;
}
@ -200,7 +199,6 @@ void idt_load(){
}
uint32_t hz_ms = pit_init(50000);
printf("%d\n", hz_ms);
// asm volatile("lidt (%0)" : : "m"(&idt_desc));
// outb(0x20, 0x11 );
// outb(0xa0, 0x11);

View File

@ -17,11 +17,14 @@ uint32_t module_api(uint32_t func, ...){
switch(func){
case MODULE_API_REGISTER:
//do something
void *structure = va_arg(vars, void *);
module_t *structure = va_arg(vars, void *);
if(structure == 0){
return -1;
}
vector_push(modules, structure);
uint32_t tmp = pm_alloc();
(structure->key) = (modules->size ^ 190507) + tmp << 12 ^ 4405648937 ^ 8592807313 >> 5;
pm_free(tmp);
return 0;
break;
case MODULE_API_ADDFUNC:
@ -33,12 +36,11 @@ uint32_t module_api(uint32_t func, ...){
return_value = -1;
break;
case MODULE_API_ADDINT:
return_value = -1;
uint32_t int_index = va_arg(vars, uint32_t);
//do something
break;
case MODULE_API_DELINT:
//do something
return_value = -1;
int_index = va_arg(vars, uint32_t);
break;
case MODULE_API_PRINT:
// vmlog(MODULE_NAME, "Testing modules calling kernel functions\n", MLOG_PRINT, vars);
@ -81,7 +83,8 @@ uint32_t module_api(uint32_t func, ...){
map(vaddr, paddr, flags);
break;
case MODULE_API_UNMAP:
return_value = -1;
vaddr = va_arg(vars, void *);
unmap(vaddr);
break;
case MODULE_API_PADDR:
void *addr = va_arg(vars, void *);

View File

@ -33,6 +33,8 @@ typedef struct module{
uint32_t id;
char name[16];
uint8_t flags;
uint16_t interrupts;
uint32_t key;
void (*fini)(void);
}module_t;

View File

@ -2,6 +2,7 @@
#include "modlib.h"
#include "../kernel/drivers/cpuio.h"
#include "../kernel/shared/string.h"
#include "disk_driver.h"
#define MODULE_NAME "KIDM"
@ -110,6 +111,16 @@ typedef struct PRD{
uint16_t reserved;//set msb when last;
}__attribute__((packed)) PRD_T;
module_t module_data = {
init,
0xfae00000,
MODULE_NAME,
0,
0,
0,
fini
};
uint8_t native_ide_present = 0;
void fini();
@ -274,18 +285,13 @@ void ide_init(uint32_t BARS[5]){
void init(KOS_MAPI_FP module_api, uint32_t api_version){
api = module_api;
api(MODULE_API_PRINT, MODULE_NAME, "KIDM Storage Driver Module v0.1.0\nSupported interfaces: \n");
module_t module_data = {
init,
0xfae00000,
"KIDM OFFICIAL 01",
0
};
int status = api(MODULE_API_REGISTER, &module_data);
if(status){
api(MODULE_API_PRINT, MODULE_NAME, "Failed to register module, exiting\n");
return;
}
api(MODULE_API_PRINT, MODULE_NAME, "Key Test: %x", module_data.key);
vfile_t *pci_drive_dir = fopen(api, "/dev/pci/disk/");
vfile_t **dir_data = (pci_drive_dir->access.data.ptr);
for(uint32_t i = 0; dir_data[i]; i++){

View File

@ -0,0 +1,4 @@
#pragma once
#include "modlib.h"
void init(KOS_MAPI_FP api, uint32_t api_version);
void fini();

View File

@ -26,6 +26,9 @@ typedef struct module{
uint32_t id;
char name[16];
uint8_t flags;
uint16_t interrupts;
uint32_t key;
void (*fini)(void);
}module_t;
typedef enum vfile_type{