summaryrefslogtreecommitdiff
path: root/kernel/kmain.c
blob: 00455b70327ab59aeba09c10c5d8ea514456aa18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <kernel/con.h>
#include <kernel/sched.h>
#include <kernel/sys.h>
#include <stdint.h>

extern int hd_read(void*, uint32_t, uint8_t);
extern int hd_write(void*, uint32_t, uint8_t);

static char buf[0x1000];

void kmain(void) {
  int i;
  int ret;

  printk("Kernel booted!\n\n");

  /* sched_init(); */

  /* try to read some data */

  ret = hd_read(buf, 0, 2);
  if(ret < 0) {
    printk("Failed to read data!\n");
    return;
  }
  printk("Successfully read first and second sectors!\n");
  printk("First dword (sector 0): 0x%08x\n", *((uint32_t*) buf));
  printk("First dword (sector 1): 0x%08x\n", *((uint32_t*) (buf + 512)));

  /* try to write some data */

  for(i = 0; i < 256; i++)
    ((uint16_t*) buf)[i] = i;

  ret = hd_write(buf, 2, 1);
  if(ret < 0) {
    printk("Failed to write data!\n");
    return;
  }

  printk("Successfully wrote to sector 2\n");
}