]> xenbits.xensource.com Git - people/ssmith/netchannel2-pvops.git/commitdiff
Add a context to the live map track entries.
authorSteven Smith <ssmith@weybridge.uk.xensource.com>
Thu, 16 Apr 2009 13:13:16 +0000 (14:13 +0100)
committerSteven Smith <ssmith@weybridge.uk.xensource.com>
Tue, 19 May 2009 14:04:12 +0000 (15:04 +0100)
drivers/xen/netback/netback.c
include/xen/live_maps.h

index 64a015ed169f5b8cefc421241b22283371fe3933..2ea96223954e64128d2de36e1e1dd789232b70d4 100644 (file)
@@ -854,7 +854,8 @@ static struct gnttab_map_grant_ref *netbk_get_requests(struct xen_netif *netif,
                                     mmap_pages[pending_idx],
                                     netif->domid,
                                     pending_tx_info[pending_idx].req.gref,
-                                    pending_idx);
+                                    pending_idx,
+                                    NULL);
        }
 
        return mop;
@@ -1197,7 +1198,8 @@ static unsigned net_tx_build_mops(void)
                                     mmap_pages[pending_idx],
                                     netif->domid,
                                     txreq.gref,
-                                    pending_idx);
+                                    pending_idx,
+                                    NULL);
 
                memcpy(&pending_tx_info[pending_idx].req,
                       &txreq, sizeof(txreq));
index 54c3dd46d711be363220b77cd6f4b47e27067965..130e151a3fb34c932801aa8751ea2829493832fe 100644 (file)
@@ -49,6 +49,7 @@
 struct page_foreign_tracked {
         domid_t dom;
         grant_ref_t gref;
+        void *ctxt;
 #ifdef LIVE_MAPS_DEBUG
         unsigned in_use;
 #endif
@@ -70,6 +71,12 @@ struct page_foreign_tracker *alloc_page_foreign_tracker(unsigned size);
    should be no tracked pages when this is called. */
 void free_page_foreign_tracker(struct page_foreign_tracker *pft);
 
+static inline struct page_foreign_tracker *tracker_for_page(struct page *p)
+{
+        unsigned idx = page_private(p);
+        return foreign_trackers[idx >> LIVE_MAP_TRACKER_IDX_BITS];
+}
+
 /* Start tracking a page.  @idx is an index in the tracker which is
    not currently in use, and must be less than the size of the
    tracker.  The page must be marked as foreign before this is called.
@@ -80,7 +87,8 @@ static inline void start_tracking_page(struct page_foreign_tracker *pft,
                                        struct page *p,
                                        domid_t dom,
                                        grant_ref_t gref,
-                                       unsigned idx)
+                                       unsigned idx,
+                                       void *ctxt)
 {
         BUG_ON(!PageForeign(p));
 #ifdef LIVE_MAPS_DEBUG
@@ -99,7 +107,7 @@ static inline void stop_tracking_page(struct page *p)
         struct page_foreign_tracker *pft;
         unsigned idx = page_private(p);
         BUG_ON(!PageForeign(p));
-        pft = foreign_trackers[idx >> LIVE_MAP_TRACKER_IDX_BITS];
+        pft = tracker_for_page(p);
         BUG_ON((idx & LIVE_MAP_TRACKER_IDX_MASK) >= pft->size);
         BUG_ON(!pft->contents[idx & LIVE_MAP_TRACKER_IDX_MASK].in_use);
         pft->contents[idx & LIVE_MAP_TRACKER_IDX_MASK].in_use = 0;
@@ -117,7 +125,7 @@ static inline void lookup_tracker_page(struct page *p, domid_t *dom,
         struct page_foreign_tracker *pft;
         unsigned idx = page_private(p);
         BUG_ON(!PageForeign(p));
-        pft = foreign_trackers[idx >> LIVE_MAP_TRACKER_IDX_BITS];
+        pft = tracker_for_page(p);
 #ifdef LIVE_MAPS_DEBUG
         BUG_ON(!pft);
         BUG_ON((idx & LIVE_MAP_TRACKER_IDX_MASK) >= pft->size);