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 = ((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);
|
||||||
|
|
|
||||||
|
|
@ -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 *);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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++){
|
||||||
|
|
|
||||||
|
|
@ -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;
|
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{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue