summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/acpi.c2
-rw-r--r--kernel/kernel.c11
-rw-r--r--kernel/shell.c15
-rw-r--r--kernel/task.c13
-rw-r--r--kernel/vesa.c4
-rw-r--r--kernel/vmem.c10
6 files changed, 33 insertions, 22 deletions
diff --git a/kernel/acpi.c b/kernel/acpi.c
index 398a7ec..29d6f6e 100644
--- a/kernel/acpi.c
+++ b/kernel/acpi.c
@@ -140,7 +140,7 @@ void acpi_read_rsdt(acpi_rsdt *rsdt,smp_processors *procdata)
bool acpi_find(smp_processors *procdata)
{
log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"Looking for RSDP Table");
- char *search=0x90000; //will be 16 bit aligned;
+ char *search=0x9f000; //will be 16 bit aligned;
procdata->processors=0;
procdata->boot=0;
diff --git a/kernel/kernel.c b/kernel/kernel.c
index 6931ad1..a582563 100644
--- a/kernel/kernel.c
+++ b/kernel/kernel.c
@@ -14,16 +14,17 @@ void int_kb_handler();
//void int_floppy_handler();
uint32_t read_eip();
+uint32_t c1,c2,c3;
volatile uint8_t proc;
+uint32_t cpu_counter[SMP_MAX_PROC];
+
void kernel_ap()
{
- uint32_t cpu_counter=0;
proc++;
uint8_t p=proc;
-
- while(1)PutString("%d", p*100,580,0b1111100000000000, (cpu_counter++));
+ while(1)cpu_counter[p]++;
}
//
// KERNEL MAIN
@@ -44,7 +45,8 @@ void kernel_main(uint32_t initial_stack, int mp)
asm volatile("jmp kernel_ap");
}
- proc=0;
+ proc=c1=c2=c3=0;
+ for(int i=0;i<SMP_MAX_PROC;i++)cpu_counter[i]=0;
task_system_clock=0;
@@ -207,7 +209,6 @@ void kernel_main(uint32_t initial_stack, int mp)
//
while(1)asm("hlt");
-
}
diff --git a/kernel/shell.c b/kernel/shell.c
index 79736d1..cc529da 100644
--- a/kernel/shell.c
+++ b/kernel/shell.c
@@ -1,5 +1,6 @@
#include "interrupts.h"
#include "time.h"
+#include "smp.h"
#include "lib/logger/log.h" // logger facilities
#include "lib/bool/bool.h"
#include "lib/int/stdint.h"
@@ -8,8 +9,10 @@
#define COMMAND_LENGTH 255
+uint32_t cpu_counter[SMP_MAX_PROC];
static char command[COMMAND_LENGTH];
static int pos=0;
+uint32_t c1,c2,c3;
// in timer:
uint16_t timer16;
@@ -59,6 +62,18 @@ void shell_execute()
{
mmap_show_free();
}
+ else if(1==strcmp(command,"PROC",0))
+ {
+ for(int i=0;i<SMP_MAX_PROC;i++)
+ {
+ if(cpu_counter[i]!=0)
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cpu: %d => %d.",i,cpu_counter[i]);
+ }
+ }
+ else if(1==strcmp(command,"TASKS",0))
+ {
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d %d %d",c1,c2,c2);
+ }
else if(1==strcmp(command,"ALLOC",0))
{
uint32_t *malloc= pmmngr_alloc_block();
diff --git a/kernel/task.c b/kernel/task.c
index 9aad903..c2f3bd5 100644
--- a/kernel/task.c
+++ b/kernel/task.c
@@ -9,14 +9,14 @@
int started;
uint64_t task_system_clock;
+uint32_t c1,c2,c3;
+
void task_test1()
{
- uint32_t c;
while(1)
{
- c++;
- while(1)PutString("t1: %d", 00,500,0b1111100000000000, (c++));
+ c1++;
}
}
@@ -27,8 +27,7 @@ void task_test2()
while(1)
{
- c++;
- while(1)PutString("t2: %d", 100,500,0b1111100000000000, (c++));
+ c2++;
}
@@ -40,9 +39,7 @@ void task_test3()
while(1)
{
- c++;
- while(1)PutString("t3: %d",200,500,0b1111100000000000, (c++));
-
+ c3++;
}
}
diff --git a/kernel/vesa.c b/kernel/vesa.c
index 55c400c..74d3435 100644
--- a/kernel/vesa.c
+++ b/kernel/vesa.c
@@ -126,8 +126,6 @@ void PutFont(char c, int x,int y, int color)
int fnt=0x126-0x20;
if(c>=0x20&&c<=0x126)fnt=c-0x20;
-
-
int posx, posy, sizex=8, sizey=10;
@@ -187,7 +185,7 @@ void PutConsoleNL()
{
console_x=0;
console_y++;
- if(console_y>=console_lines)console_y=0;
+ if(console_y>=console_lines-5)console_y=0;
for(int i=0;i<console_cols;i++)
{
diff --git a/kernel/vmem.c b/kernel/vmem.c
index cd6bc93..de96bb5 100644
--- a/kernel/vmem.c
+++ b/kernel/vmem.c
@@ -199,11 +199,11 @@ void vmmngr_map_page (void* phys, void* virt)
void show_cr()
{
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cr0: 0x%08x",x86_get_cr0());
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cr1: 0x%08x",x86_get_cr1());
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cr2: 0x%08x",x86_get_cr2());
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cr3: 0x%08x",x86_get_cr3());
- log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"cr4: 0x%08x",x86_get_cr4());
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"cr0: 0x%08x",x86_get_cr0());
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"cr1: 0x%08x",x86_get_cr1());
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"cr2: 0x%08x",x86_get_cr2());
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"cr3: 0x%08x",x86_get_cr3());
+ log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"cr4: 0x%08x",x86_get_cr4());
}