Lines Matching defs:ref
79 * linked by grant ref, the last element contains GNTTAB_LIST_END. The number
139 void (*update_entry)(grant_ref_t ref, domid_t domid,
148 int (*end_foreign_access_ref)(grant_ref_t ref);
152 unsigned long (*read_frame)(grant_ref_t ref);
182 int ref, rc = 0;
193 ref = head = gnttab_free_head;
212 return ref;
331 static void put_free_entry_locked(grant_ref_t ref)
333 if (unlikely(ref < GNTTAB_NR_RESERVED_ENTRIES))
336 gnttab_entry(ref) = gnttab_free_head;
337 gnttab_free_head = ref;
339 gnttab_last_free = ref;
341 gnttab_free_tail_ptr = __gnttab_entry(ref);
343 bitmap_set(gnttab_free_bitmap, ref, 1);
346 static void put_free_entry(grant_ref_t ref)
351 put_free_entry_locked(ref);
384 static void gnttab_update_entry_v1(grant_ref_t ref, domid_t domid,
387 gnttab_shared.v1[ref].domid = domid;
388 gnttab_shared.v1[ref].frame = frame;
390 gnttab_shared.v1[ref].flags = flags;
393 static void gnttab_update_entry_v2(grant_ref_t ref, domid_t domid,
396 gnttab_shared.v2[ref].hdr.domid = domid;
397 gnttab_shared.v2[ref].full_page.frame = frame;
399 gnttab_shared.v2[ref].hdr.flags = GTF_permit_access | flags;
405 void gnttab_grant_foreign_access_ref(grant_ref_t ref, domid_t domid,
408 gnttab_interface->update_entry(ref, domid, frame,
416 int ref;
418 ref = get_free_entries(1);
419 if (unlikely(ref < 0))
422 gnttab_grant_foreign_access_ref(ref, domid, frame, readonly);
424 return ref;
428 static int gnttab_end_foreign_access_ref_v1(grant_ref_t ref)
433 pflags = &gnttab_shared.v1[ref].flags;
444 static int gnttab_end_foreign_access_ref_v2(grant_ref_t ref)
446 gnttab_shared.v2[ref].hdr.flags = 0;
448 if (grstatus[ref] & (GTF_reading|GTF_writing)) {
467 static inline int _gnttab_end_foreign_access_ref(grant_ref_t ref)
469 return gnttab_interface->end_foreign_access_ref(ref);
472 int gnttab_end_foreign_access_ref(grant_ref_t ref)
474 if (_gnttab_end_foreign_access_ref(ref))
476 pr_warn("WARNING: g.e. %#x still in use!\n", ref);
481 static unsigned long gnttab_read_frame_v1(grant_ref_t ref)
483 return gnttab_shared.v1[ref].frame;
486 static unsigned long gnttab_read_frame_v2(grant_ref_t ref)
488 return gnttab_shared.v2[ref].full_page.frame;
493 grant_ref_t ref;
524 if (_gnttab_end_foreign_access_ref(entry->ref)) {
527 put_free_entry(entry->ref);
529 entry->ref, page_to_pfn(entry->page),
537 pr_info("g.e. %#x still pending\n", entry->ref);
555 static void gnttab_add_deferred(grant_ref_t ref, struct page *page)
563 unsigned long gfn = gnttab_interface->read_frame(ref);
572 entry->ref = ref;
585 ref, page ? page_to_pfn(page) : -1, deferred, leaked);
590 ref, page ? page_to_pfn(page) : -1, deferred, leaked);
594 int gnttab_try_end_foreign_access(grant_ref_t ref)
596 int ret = _gnttab_end_foreign_access_ref(ref);
599 put_free_entry(ref);
605 void gnttab_end_foreign_access(grant_ref_t ref, struct page *page)
607 if (gnttab_try_end_foreign_access(ref)) {
611 gnttab_add_deferred(ref, page);
615 void gnttab_free_grant_reference(grant_ref_t ref)
617 put_free_entry(ref);
623 grant_ref_t ref;
628 ref = gnttab_entry(head);
630 head = ref;
1266 foreign->gref = map_ops[i].ref;