Lines Matching refs:ref
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; in get_free_entries() local
193 ref = head = gnttab_free_head; in get_free_entries()
212 return ref; in get_free_entries()
331 static void put_free_entry_locked(grant_ref_t ref) in put_free_entry_locked() argument
333 if (unlikely(ref < GNTTAB_NR_RESERVED_ENTRIES)) in put_free_entry_locked()
336 gnttab_entry(ref) = gnttab_free_head; in put_free_entry_locked()
337 gnttab_free_head = ref; in put_free_entry_locked()
339 gnttab_last_free = ref; in put_free_entry_locked()
341 gnttab_free_tail_ptr = __gnttab_entry(ref); in put_free_entry_locked()
343 bitmap_set(gnttab_free_bitmap, ref, 1); in put_free_entry_locked()
346 static void put_free_entry(grant_ref_t ref) in put_free_entry() argument
351 put_free_entry_locked(ref); in put_free_entry()
384 static void gnttab_update_entry_v1(grant_ref_t ref, domid_t domid, in gnttab_update_entry_v1() argument
387 gnttab_shared.v1[ref].domid = domid; in gnttab_update_entry_v1()
388 gnttab_shared.v1[ref].frame = frame; in gnttab_update_entry_v1()
390 gnttab_shared.v1[ref].flags = flags; in gnttab_update_entry_v1()
393 static void gnttab_update_entry_v2(grant_ref_t ref, domid_t domid, in gnttab_update_entry_v2() argument
396 gnttab_shared.v2[ref].hdr.domid = domid; in gnttab_update_entry_v2()
397 gnttab_shared.v2[ref].full_page.frame = frame; in gnttab_update_entry_v2()
399 gnttab_shared.v2[ref].hdr.flags = GTF_permit_access | flags; in gnttab_update_entry_v2()
405 void gnttab_grant_foreign_access_ref(grant_ref_t ref, domid_t domid, in gnttab_grant_foreign_access_ref() argument
408 gnttab_interface->update_entry(ref, domid, frame, in gnttab_grant_foreign_access_ref()
416 int ref; in gnttab_grant_foreign_access() local
418 ref = get_free_entries(1); in gnttab_grant_foreign_access()
419 if (unlikely(ref < 0)) in gnttab_grant_foreign_access()
422 gnttab_grant_foreign_access_ref(ref, domid, frame, readonly); in gnttab_grant_foreign_access()
424 return ref; in gnttab_grant_foreign_access()
428 static int gnttab_end_foreign_access_ref_v1(grant_ref_t ref) in gnttab_end_foreign_access_ref_v1() argument
430 u16 *pflags = &gnttab_shared.v1[ref].flags; in gnttab_end_foreign_access_ref_v1()
442 static int gnttab_end_foreign_access_ref_v2(grant_ref_t ref) in gnttab_end_foreign_access_ref_v2() argument
444 gnttab_shared.v2[ref].hdr.flags = 0; in gnttab_end_foreign_access_ref_v2()
446 if (grstatus[ref] & (GTF_reading|GTF_writing)) { in gnttab_end_foreign_access_ref_v2()
465 static inline int _gnttab_end_foreign_access_ref(grant_ref_t ref) in _gnttab_end_foreign_access_ref() argument
467 return gnttab_interface->end_foreign_access_ref(ref); in _gnttab_end_foreign_access_ref()
470 int gnttab_end_foreign_access_ref(grant_ref_t ref) in gnttab_end_foreign_access_ref() argument
472 if (_gnttab_end_foreign_access_ref(ref)) in gnttab_end_foreign_access_ref()
474 pr_warn("WARNING: g.e. %#x still in use!\n", ref); in gnttab_end_foreign_access_ref()
479 static unsigned long gnttab_read_frame_v1(grant_ref_t ref) in gnttab_read_frame_v1() argument
481 return gnttab_shared.v1[ref].frame; in gnttab_read_frame_v1()
484 static unsigned long gnttab_read_frame_v2(grant_ref_t ref) in gnttab_read_frame_v2() argument
486 return gnttab_shared.v2[ref].full_page.frame; in gnttab_read_frame_v2()
491 grant_ref_t ref; member
522 if (_gnttab_end_foreign_access_ref(entry->ref)) { in gnttab_handle_deferred()
525 put_free_entry(entry->ref); in gnttab_handle_deferred()
527 entry->ref, page_to_pfn(entry->page), in gnttab_handle_deferred()
535 pr_info("g.e. %#x still pending\n", entry->ref); in gnttab_handle_deferred()
553 static void gnttab_add_deferred(grant_ref_t ref, struct page *page) in gnttab_add_deferred() argument
561 unsigned long gfn = gnttab_interface->read_frame(ref); in gnttab_add_deferred()
570 entry->ref = ref; in gnttab_add_deferred()
583 ref, page ? page_to_pfn(page) : -1, deferred, leaked); in gnttab_add_deferred()
588 ref, page ? page_to_pfn(page) : -1, deferred, leaked); in gnttab_add_deferred()
592 int gnttab_try_end_foreign_access(grant_ref_t ref) in gnttab_try_end_foreign_access() argument
594 int ret = _gnttab_end_foreign_access_ref(ref); in gnttab_try_end_foreign_access()
597 put_free_entry(ref); in gnttab_try_end_foreign_access()
603 void gnttab_end_foreign_access(grant_ref_t ref, struct page *page) in gnttab_end_foreign_access() argument
605 if (gnttab_try_end_foreign_access(ref)) { in gnttab_end_foreign_access()
609 gnttab_add_deferred(ref, page); in gnttab_end_foreign_access()
613 void gnttab_free_grant_reference(grant_ref_t ref) in gnttab_free_grant_reference() argument
615 put_free_entry(ref); in gnttab_free_grant_reference()
621 grant_ref_t ref; in gnttab_free_grant_references() local
626 ref = gnttab_entry(head); in gnttab_free_grant_references()
628 head = ref; in gnttab_free_grant_references()
1264 foreign->gref = map_ops[i].ref; in gnttab_map_refs()