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

View File

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

View File

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

View File

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