示例#1
0
void __stdio_init()
{
	infd = open("/dev/input/keyboard", 0);
	if (infd < 0)
		_serial_print("Error opening keyboard device\n");

	outfd = open("/dev/display/vga_text", 0);
	if (outfd < 0)
		_serial_print("Error opening keyboard device\n");
}
示例#2
0
static int starter(void*)
{
	for (;;) {
		atomic_add(&thread_count, 10);
		spawn_thread(vm_bang, "VM Bang", (void*) "1 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "2 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "3 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "4 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "5 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "6 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "7 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "8 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "9 ", 18);
		spawn_thread(vm_bang, "VM Bang", (void*) "10 ", 18);

#if SWAP_OUT
		if (cnt-- == 0) {
			cnt = 20;
			// Swap in some booty pages
			for (int i = 0; i < 0x600000; i += PAGE_SIZE) {
				if (booty[i] != 0x24)
					_serial_print("swap in goofed");
			}
		}
#endif

		// wait for threads to die
		while (thread_count)
			sleep(20000);
	}

	return 0;
}
示例#3
0
static int vm_bang(void *str)
{
	for (int i = 0; i < 10; i++) {
		uint *addr;
		int area = create_area("original area", (void**) &addr, 0, 0x2000,
			AREA_NOT_WIRED, USER_READ | USER_WRITE);
		if (area < 0) {
			_serial_print("error creating original area\n");
			return 0;
		}
		
		unsigned var = rand();
		*addr = var;
		
		uint *clone_addr;
		int clone = clone_area("clone area", (void**) &clone_addr, 0,
			USER_WRITE | USER_READ, area);
		if (clone < 0) {
			_serial_print("error creating clone area\n");
			return 0;
		}
			
		if (*clone_addr != var) {
			_serial_print("clone failed to copy pages\n");
			return 0;
		}
		
		addr += 1024;
		clone_addr += 1024;
		*clone_addr = var;
		if (*addr != var) {
			_serial_print("page failed failed to be propigated\n");
			return 0;
		}
			
		for (int i = 0; i < 10; i++)
			resize_area(area, (i % 4) * PAGE_SIZE + PAGE_SIZE);
			
		delete_area(area);
		delete_area(clone);
	}

	printf("%s", (char*) str);
	atomic_add(&thread_count, -1);
	return 0;
}
示例#4
0
static int fp_worker(void*)
{
	float a = 0.0;
	float b = 1.0;
	int update = 0;
	while (true) {
		b += 0.01;
		a = 2 * b;
		if (a != 2 * b)
			_serial_print("FP error\n");
			
		if (update++ > 10000) {
			printf(".");
			update = 0;
		}
	}
}