pobj
void *pobj = RB_NODETOITEM(rbto, parent);
pobj, key);
return pobj;
void *pobj = RB_NODETOITEM(rbto, parent);
pobj, key);
return pobj;
void *pobj = RB_NODETOITEM(rbto, parent);
pobj, key);
return pobj;
void pobj(struct obj *);
xenmem_free_pa(pobj->u.pc.base_paddr, pobj->npages * PAGE_SIZE);
kmem_free(pobj->u.pc.maddr, sizeof(paddr_t) * pobj->npages);
kmem_free(pobj, sizeof(struct privcmd_object));
privcmd_notify(&pobj->u.gr.notify, 0, pobj->u.gr.ops);
KASSERT(pobj->u.gr.base_paddr != 0);
for (int i = 0; i < pobj->npages; i++) {
rm.gpfn = (pobj->u.gr.base_paddr << PGSHIFT) + i;
xenmem_free_pa(pobj->u.gr.base_paddr, pobj->npages * PAGE_SIZE);
kmem_free(pobj, PGO_GNTREF_LEN(pobj->npages));
privcmd_notify(&pobj->u.ga.notify, pobj->u.ga.gntva, NULL);
for (int i = 0; i < pobj->npages; ++i) {
xengnt_revoke_access(pobj->u.ga.gref_ids[i]);
uvm_km_free(kernel_map, pobj->u.ga.gntva,
PAGE_SIZE * pobj->npages, UVM_KMF_WIRED);
kmem_free(pobj, PGO_GNTA_LEN(pobj->npages));
struct privcmd_object *pobj = (struct privcmd_object*)uobj;
if (maddr_i + npages > pobj->npages) {
switch(pobj->type) {
if (pobj->u.pc.no_translate)
if (pobj->u.pc.maddr[maddr_i] == INVALID_PAGE) {
pobj->u.pc.maddr[maddr_i], 0,
pobj->u.pc.domid);
pobj->u.pc.maddr[maddr_i] = INVALID_PAGE;
if (pmap_enter_gnt(pmap, vaddr, entry->start, pobj->npages, &pobj->u.gr.ops[0]) != GNTST_okay) {
pobj->u.ga.gntva + maddr_i * PAGE_SIZE, &pa)) {
struct privcmd_object *pobj = (struct privcmd_object *)uobj;
switch (pobj->type) {
for (int i = 0; i < pobj->npages; i++) {
if (pobj->u.pc.maddr[i] != INVALID_PAGE) {
rm.gpfn = pobj->u.pc.maddr[i] >> PGSHIFT;
ACPI_OBJECT *obj, *uuid, *props, *pobj, *propkey, *propval;
pobj = &props->Package.Elements[n];
if (pobj->Type != ACPI_TYPE_PACKAGE || pobj->Package.Count != 2)
propkey = (ACPI_OBJECT *)&pobj->Package.Elements[0];
propval = (ACPI_OBJECT *)&pobj->Package.Elements[1];