|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 1/2] xen/mm: Alter get_outstanding_claims() to return information by value
A void function with two output parameters is a weird choice. Instead, return
a two-element structure.
No functional change.
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
CC: Anthony PERARD <anthony.perard@xxxxxxxxxx>
CC: Michal Orzel <michal.orzel@xxxxxxx>
CC: Jan Beulich <jbeulich@xxxxxxxx>
CC: Julien Grall <julien@xxxxxxx>
CC: Roger Pau Monné <roger@xxxxxxxxxxxxxx>
CC: Stefano Stabellini <sstabellini@xxxxxxxxxx>
CC: Bernhard Kaindl <bernhard.kaindl@xxxxxxxxxx>
Slightly RFC. claim_info_t name subject to improvement, but see next patch.
This is to help unwedge the XenServer patchqueue following commit
44adbac3c7a6 ("xen/mm: Introduce per-node free page counter").
---
xen/common/page_alloc.c | 10 +++++++---
xen/common/sysctl.c | 8 ++++++--
xen/include/xen/mm.h | 6 +++++-
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index 598222e2c2e1..900fcf5755c1 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -582,12 +582,16 @@ int domain_set_outstanding_pages(struct domain *d,
unsigned long pages)
}
#ifdef CONFIG_SYSCTL
-void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages)
+claim_info_t get_outstanding_claims(void)
{
+ claim_info_t info;
+
spin_lock(&heap_lock);
- *outstanding_pages = outstanding_claims;
- *free_pages = avail_heap_pages(MEMZONE_XEN + 1, NR_ZONES - 1, -1);
+ info.avail = avail_heap_pages(MEMZONE_XEN + 1, NR_ZONES - 1, -1);
+ info.claimed = outstanding_claims;
spin_unlock(&heap_lock);
+
+ return info;
}
#endif /* CONFIG_SYSCTL */
diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c
index 8fb5ff0af317..35c132564ef1 100644
--- a/xen/common/sysctl.c
+++ b/xen/common/sysctl.c
@@ -248,6 +248,7 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t)
u_sysctl)
case XEN_SYSCTL_physinfo:
{
struct xen_sysctl_physinfo *pi = &op->u.physinfo;
+ claim_info_t claim_info;
memset(pi, 0, sizeof(*pi));
pi->threads_per_core =
@@ -259,8 +260,11 @@ long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t)
u_sysctl)
pi->max_node_id = MAX_NUMNODES-1;
pi->max_cpu_id = nr_cpu_ids - 1;
pi->total_pages = total_pages;
- /* Protected by lock */
- get_outstanding_claims(&pi->free_pages, &pi->outstanding_pages);
+
+ claim_info = get_outstanding_claims();
+ pi->free_pages = claim_info.avail;
+ pi->outstanding_pages = claim_info.claimed;
+
pi->scrub_pages = 0;
pi->cpu_khz = cpu_khz;
pi->max_mfn = get_upper_mfn_bound();
diff --git a/xen/include/xen/mm.h b/xen/include/xen/mm.h
index b80bec00c124..74d28d2a1b7a 100644
--- a/xen/include/xen/mm.h
+++ b/xen/include/xen/mm.h
@@ -132,7 +132,11 @@ int populate_pt_range(unsigned long virt, unsigned long
nr_mfns);
unsigned long __must_check domain_adjust_tot_pages(struct domain *d,
long pages);
int domain_set_outstanding_pages(struct domain *d, unsigned long pages);
-void get_outstanding_claims(uint64_t *free_pages, uint64_t *outstanding_pages);
+
+typedef struct {
+ unsigned long avail, claimed;
+} claim_info_t;
+claim_info_t get_outstanding_claims(void);
/* Domain suballocator. These functions are *not* interrupt-safe.*/
void init_domheap_pages(paddr_t ps, paddr_t pe);
--
2.39.5
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |