// "factory methods"
int read_descriptor_loop(vqarray_t *desc_list, bs_t *b, int length) {
	int desc_start = bs_pos(b);

	while (length > bs_pos(b) - desc_start) {
		descriptor_t *desc = descriptor_new();
		desc = descriptor_read(desc, b);
		vqarray_add(desc_list, desc);
	}

	return bs_pos(b) - desc_start;
}
Example #2
0
void
descriptor_test (bool verbose)
{
    printf (" * descriptor: ");

    //  @selftest
    descriptor_t *descriptor = descriptor_new (
        "file:///tmp/blockdata", 0, 256, 32);
    assert (streq("file:///tmp/blockdata", descriptor_uri (descriptor)));
    assert (0 == descriptor_offset (descriptor));
    assert (256 == descriptor_length (descriptor));
    assert (32 == descriptor_row_size (descriptor));
    descriptor_destroy (&descriptor);

    //  @end

    printf ("OK\n");
}
Example #3
0
void test_main_init(standard_ldt* stdldt, dword code_base, dword code_limit, dword data_base, dword data_limit,
	dword stack_base, dword stack_limit, dword kernel_stack_base, dword kernel_stack_limit, dword graphic_base,
	dword graphic_limit, dword eflags)
{
	descriptor_new(&(stdldt->code_segment), code_base, code_limit,
		descriptor_code32 | descriptor_present | descriptor_gran_byte, privilege_system);
	descriptor_new(&(stdldt->data_segment), data_base, data_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_system);
	descriptor_new(&(stdldt->edata_segment), data_base, data_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_system);
	descriptor_new(&(stdldt->fdata_segment), data_base, data_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_system);
	descriptor_new(&(stdldt->stack_segment), stack_base, stack_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_system);
	descriptor_new(&(stdldt->kernel_stack_segment), kernel_stack_base, kernel_stack_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_system);
	descriptor_new(&(stdldt->graphic_segment), graphic_base, graphic_limit,
		descriptor_data32 | descriptor_present | descriptor_gran_byte | descriptor_data_readwrite, privilege_user);
	scheduler_execute("test_main", stdldt, 0, stack_limit - 1, eflags, kernel_stack_limit - 1, process_state_daemon);
}