diff cos/kernel/kernel.h @ 16:ddefe6d97cd7

Merged
author windel-eee
date Fri, 18 Nov 2011 14:41:53 +0100
parents a58904747019
children f3e3e0e9c4bc
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cos/kernel/kernel.h	Fri Nov 18 14:41:53 2011 +0100
@@ -0,0 +1,121 @@
+#ifndef KERNEL_H
+#define KERNEL_H
+
+// Include common functions, available to all!
+#define NULL ((void*)0)
+
+// Type defs:
+typedef unsigned int        uint32_t;
+typedef unsigned long long  uint64_t;
+typedef unsigned short      ushort_t;
+typedef unsigned char       uchar_t;
+typedef unsigned int        uint_t;
+typedef unsigned long       ulong_t;
+typedef unsigned long long  ulonglong_t;
+typedef unsigned long       off_t;
+typedef unsigned long       size_t;
+
+void printf(const char* fmt, ... );
+void memset(void* ptr, uint32_t value, uint32_t num);
+void memcpy(void* dst, void* src, uint32_t num);
+
+struct IDT_entry {
+  unsigned char b[8];
+};
+
+// memory alloc functions:
+void* malloc(size_t size);
+void free(void* ptr);
+
+void clear_screen();
+void init_screen();
+void print_string(const char *);
+
+// For IO ports:
+unsigned char inb(unsigned short);
+void outb(unsigned short, unsigned char);
+
+// ASM helper:
+int loadIDT(struct IDT_entry *table, unsigned short size);
+void halt(void);
+
+void setupIDT(void);
+void PICremap(void);
+// Assembler util functions:
+void enableinterrupts(void);
+void callint49(void);
+void doCPUID(int eax, int *ebx, int *ecx, int *edx);
+
+// Keyboard driver:
+void keyboardDriverUpdate(unsigned char scancode);
+void timerDriverUpdate(void);
+
+// Memory functions:
+void mappage(uint32_t address);
+
+int querymode(void);
+int getcs(void);
+void loadPageTable(void* tableAddress);
+void enablePaging(void);
+
+// Variable argument list things:
+#define va_start(v,l)	__builtin_va_start(v,l)
+#define va_end(v)	__builtin_va_end(v)
+#define va_arg(v,l)	__builtin_va_arg(v,l)
+typedef __builtin_va_list va_list;
+
+struct multiboot_aout_symbol_table {
+  uint32_t tabsize;
+  uint32_t strsize, addr, reserved;
+};
+
+struct multiboot_info {
+  uint32_t flags; // Multiboot flags / version
+  uint32_t mem_lower; // available memory from BIOS
+  uint32_t mem_upper;
+  uint32_t boot_device; 
+  uint32_t cmdline; // COmmand line
+  uint32_t mods_count;
+  uint32_t mods_addr;
+  union {
+   struct multiboot_aout_symbol_table aout_sym;
+  } u;
+
+  uint32_t mmap_length;
+  uint32_t mmap_addr;
+};
+
+struct memory_map {
+  uint32_t size;
+  uint32_t baselow, basehigh;
+  uint32_t lenlow, lenhigh;
+  uint32_t type;
+};
+
+typedef struct {
+  char name[32]; // Name of the console
+  unsigned char screendata[80*25]; // All chars in the console!
+} console_t;
+
+typedef struct {
+  uint32_t esp;
+  uint32_t ss;
+  uint32_t kstack;
+  uint32_t ustack;
+  uint32_t cr3;
+
+  uint32_t number;
+  uint32_t parent;
+  uint32_t owner;
+  uint32_t groups;
+  uint32_t timetorun;
+  uint32_t sleep;
+  uint32_t priority;
+  uint32_t filehandle;
+  char naam[32];
+
+  console_t *console;
+} programma_t;
+
+#endif
+