tools/testing/selftests/kvm/loongarch/arch_timer.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/kvm/loongarch/arch_timer.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/kvm/loongarch/arch_timer.c
Extension
.c
Size
5424 bytes
Lines
201
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

while (start < end) {
			prev = start;
			start = timer_get_cycles();
			__GUEST_ASSERT(prev <= start,
					"prev = 0x%lx, start = 0x%lx.\n",
					prev, start);
		}
	}
}

static void guest_code(void)
{
	u32 cpu = guest_get_vcpuid();

	/* must run at first */
	guest_time_count_test(cpu);

	timer_irq_enable();
	local_irq_enable();
	guest_test_period_timer(cpu);
	guest_test_oneshot_timer(cpu);
	guest_test_emulate_timer(cpu);

	GUEST_DONE();
}

struct kvm_vm *test_vm_create(void)
{
	struct kvm_vm *vm;
	int nr_vcpus = test_args.nr_vcpus;

	vm = vm_create_with_vcpus(nr_vcpus, guest_code, vcpus);
	vm_init_descriptor_tables(vm);
	vm_install_exception_handler(vm, EXCCODE_INT, guest_irq_handler);

	/* Make all the test's cmdline args visible to the guest */
	sync_global_to_guest(vm, test_args);

	return vm;
}

void test_vm_cleanup(struct kvm_vm *vm)
{
	kvm_vm_free(vm);
}

Annotation

Implementation Notes