#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef KEXT_NET_DOORSTUCK_SOCKS_FBCON #include #endif extern unsigned long get_rflags(void); extern char __pstart[], __pend[]; void print_kernel_banner(void) { printk("Socks kernel version " BUILD_ID); } static void hang(void) { while (1) { printk("%d: tick", this_cpu()); milli_sleep(2000); } } void background_thread(void) { printk("background_thread() running on processor %u", this_cpu()); milli_sleep(1000); while (1) { printk("%d: tock", this_cpu()); milli_sleep(2000); } } static void putchar(char c) { unsigned long flags; struct queue *consoles = get_consoles(&flags); queue_foreach(struct console, con, consoles, c_list) { console_write(con, &c, 1); } put_consoles(consoles, flags); } void kernel_init(uintptr_t arg) { ml_init(arg); printk("kernel_init() running on processor %u", this_cpu()); create_kernel_thread(background_thread); hang(); }