Lines Matching refs:ref
117 void (*update_entry)(grant_ref_t ref, domid_t domid,
127 int (*end_foreign_access_ref)(grant_ref_t ref, int readonly);
135 unsigned long (*end_foreign_transfer_ref)(grant_ref_t ref);
139 unsigned long (*read_frame)(grant_ref_t ref);
169 int ref, rc = 0;
180 ref = head = gnttab_free_head;
189 return ref;
218 static void put_free_entry(grant_ref_t ref)
222 gnttab_entry(ref) = gnttab_free_head;
223 gnttab_free_head = ref;
240 static void gnttab_update_entry_v1(grant_ref_t ref, domid_t domid,
243 gnttab_shared.v1[ref].domid = domid;
244 gnttab_shared.v1[ref].frame = frame;
246 gnttab_shared.v1[ref].flags = flags;
249 static void gnttab_update_entry_v2(grant_ref_t ref, domid_t domid,
252 gnttab_shared.v2[ref].hdr.domid = domid;
253 gnttab_shared.v2[ref].full_page.frame = frame;
255 gnttab_shared.v2[ref].hdr.flags = GTF_permit_access | flags;
261 void gnttab_grant_foreign_access_ref(grant_ref_t ref, domid_t domid,
264 gnttab_interface->update_entry(ref, domid, frame,
272 int ref;
274 ref = get_free_entries(1);
275 if (unlikely(ref < 0))
278 gnttab_grant_foreign_access_ref(ref, domid, frame, readonly);
280 return ref;
284 static int gnttab_end_foreign_access_ref_v1(grant_ref_t ref, int readonly)
289 pflags = &gnttab_shared.v1[ref].flags;
300 static int gnttab_end_foreign_access_ref_v2(grant_ref_t ref, int readonly)
302 gnttab_shared.v2[ref].hdr.flags = 0;
304 if (grstatus[ref] & (GTF_reading|GTF_writing)) {
323 static inline int _gnttab_end_foreign_access_ref(grant_ref_t ref, int readonly)
325 return gnttab_interface->end_foreign_access_ref(ref, readonly);
328 int gnttab_end_foreign_access_ref(grant_ref_t ref, int readonly)
330 if (_gnttab_end_foreign_access_ref(ref, readonly))
332 pr_warn("WARNING: g.e. %#x still in use!\n", ref);
337 static unsigned long gnttab_read_frame_v1(grant_ref_t ref)
339 return gnttab_shared.v1[ref].frame;
342 static unsigned long gnttab_read_frame_v2(grant_ref_t ref)
344 return gnttab_shared.v2[ref].full_page.frame;
349 grant_ref_t ref;
374 if (_gnttab_end_foreign_access_ref(entry->ref, entry->ro)) {
375 put_free_entry(entry->ref);
377 entry->ref, page_to_pfn(entry->page));
383 pr_info("g.e. %#x still pending\n", entry->ref);
400 static void gnttab_add_deferred(grant_ref_t ref, bool readonly,
409 unsigned long gfn = gnttab_interface->read_frame(ref);
418 entry->ref = ref;
432 what, ref, page ? page_to_pfn(page) : -1);
435 int gnttab_try_end_foreign_access(grant_ref_t ref)
437 int ret = _gnttab_end_foreign_access_ref(ref, 0);
440 put_free_entry(ref);
446 void gnttab_end_foreign_access(grant_ref_t ref, int readonly,
449 if (gnttab_try_end_foreign_access(ref)) {
453 gnttab_add_deferred(ref, readonly,
460 int ref;
462 ref = get_free_entries(1);
463 if (unlikely(ref < 0))
465 gnttab_grant_foreign_transfer_ref(ref, domid, pfn);
467 return ref;
471 void gnttab_grant_foreign_transfer_ref(grant_ref_t ref, domid_t domid,
474 gnttab_interface->update_entry(ref, domid, pfn, GTF_accept_transfer);
478 static unsigned long gnttab_end_foreign_transfer_ref_v1(grant_ref_t ref)
484 pflags = &gnttab_shared.v1[ref].flags;
503 frame = gnttab_shared.v1[ref].frame;
509 static unsigned long gnttab_end_foreign_transfer_ref_v2(grant_ref_t ref)
515 pflags = &gnttab_shared.v2[ref].hdr.flags;
534 frame = gnttab_shared.v2[ref].full_page.frame;
540 unsigned long gnttab_end_foreign_transfer_ref(grant_ref_t ref)
542 return gnttab_interface->end_foreign_transfer_ref(ref);
546 unsigned long gnttab_end_foreign_transfer(grant_ref_t ref)
548 unsigned long frame = gnttab_end_foreign_transfer_ref(ref);
549 put_free_entry(ref);
554 void gnttab_free_grant_reference(grant_ref_t ref)
556 put_free_entry(ref);
562 grant_ref_t ref;
568 ref = head;
569 while (gnttab_entry(ref) != GNTTAB_LIST_END) {
570 ref = gnttab_entry(ref);
573 gnttab_entry(ref) = gnttab_free_head;
1182 foreign->gref = map_ops[i].ref;