summaryrefslogtreecommitdiffstats
path: root/kernel/kernel.c
blob: d81c8a76c9a1e93644855574f80399db0711d31f (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
#include "tty.h"
#include "stdlib.h"

/* this only work for the 32-bit ix86 targets. */
#if !defined(__i386__)
#error "This tutorial needs to be compiled with a ix86-elf compiler"
#endif

#if defined(__cplusplus)
extern "C" /* Use C linkage for kernel_main. */
#endif

static void test(int ok)
{
    tty_puts(ok ? " ok\n" : " ko\n");
}

void kernel_main()
{
    char ch0[16];

    tty_init();
    tty_puts("\nHello, kernel World!\n");

    memset(ch0, 'x', 4);
    memcpy(ch0+4, ch0, 4);
    ch0[0] = ' ';
    ch0[7] = '\n';
    ch0[8] = '\0';
    tty_puts(ch0);

    test(strncmp("abc", "abd", 8) < 0);
    test(strncmp("abd", "abc", 8) > 0);
    test(strncmp("abc", "abc", 8) == 0);
    test(strncmp("abca", "abcb", 3) == 0);

    tty_puts("done.\n");
}