Esempio n. 1
0
static struct pt_section_list *pt_mk_section_list(struct pt_section *section,
						  const struct pt_asid *asid,
						  uint64_t vaddr, int isid)
{
	struct pt_section_list *list;
	int errcode;

	list = malloc(sizeof(*list));
	if (!list)
		return NULL;

	memset(list, 0, sizeof(*list));

	errcode = pt_section_get(section);
	if (errcode < 0)
		goto out_mem;

	pt_msec_init(&list->section, section, asid, vaddr);
	list->isid = isid;

	return list;

out_mem:
	free(list);
	return NULL;
}
static struct ptunit_result end_bad(void)
{
	struct pt_mapped_section msec;
	uint64_t end;

	pt_msec_init(&msec, NULL, NULL, 0x1000);

	end = pt_msec_end(&msec);
	ptu_uint_eq(end, 0ull);

	return ptu_passed();
}
static struct ptunit_result asid(void)
{
	struct pt_mapped_section msec;
	struct pt_asid asid;
	const struct pt_asid *pasid;

	pt_asid_init(&asid);
	asid.cr3 = 0xa00;

	pt_msec_init(&msec, NULL, &asid, 0ull);

	pasid = pt_msec_asid(&msec);
	ptu_uint_eq(pasid->size, asid.size);
	ptu_uint_eq(pasid->cr3, asid.cr3);

	return ptu_passed();
}
static struct ptunit_result sfix_init(struct section_fixture *sfix)
{
	uint8_t i;

	sfix->section.size = sfix->mapping.size = sizeof(sfix->mapping.content);
	sfix->vaddr = 0x1000;

	for (i = 0; i < sfix->mapping.size; ++i)
		sfix->mapping.content[i] = i;

	sfix->section.status = &sfix->mapping;
	sfix->section.mapping = NULL;

	pt_asid_init(&sfix->asid);
	sfix->asid.cr3 = 0x4200ull;

	pt_msec_init(&sfix->msec, &sfix->section, &sfix->asid, sfix->vaddr);

	return ptu_passed();
}