aboutsummaryrefslogtreecommitdiff
path: root/kernel/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/main.c')
-rw-r--r--kernel/main.c36
1 files changed, 34 insertions, 2 deletions
diff --git a/kernel/main.c b/kernel/main.c
index 927a497..211be18 100644
--- a/kernel/main.c
+++ b/kernel/main.c
@@ -19,7 +19,7 @@ void gpf(struct regs_t regs)
{
printf("General protection fault!\n");
printf("EIP before fault: 0x%x\n", regs.eip);
- printf("Error code: %d\n", regs.err_code);
+ printf("Error code: 0x%x\n", regs.err_code);
panic("GPF");
}
@@ -78,6 +78,7 @@ void main(struct multiboot_info_t *hdr, uint32_t magic)
gfx_drawpixel(rx, ry);
}
int endpix = *current_tick;
+
int startfill = *current_tick;
for(int i=0;i<1000;++i)
{
@@ -97,11 +98,43 @@ void main(struct multiboot_info_t *hdr, uint32_t magic)
gfx_drawchar(rx, ry, rand()%127+1);
}
int endtext = *current_tick;
+ gfx_clear();
+
+ int starthline = *current_tick;
+ for(int i=0;i<1000000;++i)
+ {
+ gfx_hline(rand() % *gfx_width, rand() % *gfx_width, rand() % *gfx_height);
+ }
+ int endhline = *current_tick;
+
+ gfx_clear();
+
+ int startvline = *current_tick;
+ for(int i=0;i<1000000;++i)
+ {
+ gfx_vline(rand() % *gfx_height, rand() % *gfx_height, rand() % *gfx_width);
+ }
+ int endvline = *current_tick;
+
+ int startrect = *current_tick;
+ for(int i=0;i<1000;++i)
+ {
+ int x = rand() % *gfx_width;
+ int y = rand() % *gfx_height;
+ int w = rand() % (*gfx_width - x);
+ int h = rand() % (*gfx_height - y);
+ gfx_fillrect(x, y, w, h);
+ }
+ int endrect = *current_tick;
+
gfx_reset();
printf("--- Graphics benchmark results ---\n");
printf("Ticks for 1,000,000 random pixels: %d\n", endpix-startpix);
printf("Ticks for 1,000 random fills: %d\n", endfill-startfill);
printf("Ticks for 1,000,000 random chars: %d\n", endtext-starttext);
+ printf("Ticks for 1,000,000 random hlines: %d\n", endhline-starthline);
+ printf("Ticks for 1,000,000 random vlines: %d\n", endvline-startvline);
+ printf("Ticks for 1,000 random rects: %d\n", endrect-startrect);
printf("Ticks per second: %d\n", HZ);
printf("Resolution: %dx%dx%d\n", *gfx_width, *gfx_height, *gfx_bpp * 8);
}
@@ -119,5 +152,4 @@ void main(struct multiboot_info_t *hdr, uint32_t magic)
ps2_set_leds(PS2_CAPS_LOCK);
timer_delay(HZ/4);
}
- while(1);
}