Some level of security... i hope
This commit is contained in:
parent
85aadeb902
commit
25d67aaa9e
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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 *);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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++){
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
#pragma once
|
||||
#include "modlib.h"
|
||||
void init(KOS_MAPI_FP api, uint32_t api_version);
|
||||
void fini();
|
||||
|
|
@ -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{
|
||||
|
|
|
|||
Loading…
Reference in New Issue