Ejemplo n.º 1
0
int main() {

	video_write_string("Keyboard buffer at: 0x");
	video_write_hex((uint64_t)&keyboard_kbuffer);
	video_write_nl();
	video_write_string("Keyboard buffer size: ");
	video_write_dec((uint64_t)KEYBOARD_BUFFER_SIZE);
	video_write_nl();

	video_write_line("[Kernel Main]");

	video_write_string("  Shell code module at 0x");
	video_write_hex((uint64_t)shellCodeModuleAddress);
	video_write_nl();

	video_write_line("Calling shell module...");
	video_write_nl();
	((EntryPoint)shellCodeModuleAddress)();

	return 0;
}
Ejemplo n.º 2
0
void * initializeKernelBinary() {

	load_kernel_modules();

	clearBSS(&bss, &endOfKernel - &bss);


	video_initialize();
	video_clear_screen();

	video_write_line("[x64BareBones]");

	video_write_string("  text: 0x");
	video_write_hex((uint64_t)&text);
	video_write_nl();

	video_write_string("  rodata: 0x");
	video_write_hex((uint64_t)&rodata);
	video_write_nl();

	video_write_string("  data: 0x");
	video_write_hex((uint64_t)&data);
	video_write_nl();

	video_write_string("  bss: 0x");
	video_write_hex((uint64_t)&bss);
	video_write_nl();

	video_write_line("[Done]");

	screensaver_reset_timer();

	video_write_line("Kernel cargado.");

	return getStackBase();
}
Ejemplo n.º 3
0
static void sigwrapper(task_t* task, signal_t sig, task_state_t oldstate) {

	kdebug("Executing signal handler\n");

	if (task->sighandlers[sig] != NULL) {

		task_atomic(task);
		task->sighandlers[sig](sig);
		task_unatomic(task);

	} else {
		video_write_line(video_current_console(), "Signal handler not set!");
	}

	task->state = oldstate;

	//Esperamos a que llegue la proxima interrupcion. Si llamamos a reschedule, se estaria pusheando
	//un contexto invalido.
	halt();
}