mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
libxencall: introduce variant of xencall2() returning long
Some hypercalls, memory-op in particular, can return values requiring more than 31 bits to represent. Hence the underlying layers need to make sure they won't truncate such values. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Ian Jackson <iwj@xenproject.org> Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
This commit is contained in:
1 parent
6409210a5f
commit
bef64f2c00
3 files changed
+20
No files matched your search
@@ -113,6 +113,10 @@ int xencall5(xencall_handle *xcall, unsigned int op,
|
||||
uint64_t arg1, uint64_t arg2, uint64_t arg3,
|
||||
uint64_t arg4, uint64_t arg5);
|
||||
|
||||
/* Variant(s) of the above, as needed, returning "long" instead of "int". */
|
||||
long xencall2L(xencall_handle *xcall, unsigned int op,
|
||||
uint64_t arg1, uint64_t arg2);
|
||||
|
||||
/*
|
||||
* Allocate and free memory which is suitable for use as a pointer
|
||||
* argument to a hypercall.
|
||||
|
||||
@@ -127,6 +127,17 @@ int xencall2(xencall_handle *xcall, unsigned int op,
|
||||
return osdep_hypercall(xcall, &call);
|
||||
}
|
||||
|
||||
long xencall2L(xencall_handle *xcall, unsigned int op,
|
||||
uint64_t arg1, uint64_t arg2)
|
||||
{
|
||||
privcmd_hypercall_t call = {
|
||||
.op = op,
|
||||
.arg = { arg1, arg2 },
|
||||
};
|
||||
|
||||
return osdep_hypercall(xcall, &call);
|
||||
}
|
||||
|
||||
int xencall3(xencall_handle *xcall, unsigned int op,
|
||||
uint64_t arg1, uint64_t arg2, uint64_t arg3)
|
||||
{
|
||||
|
||||
@@ -27,3 +27,8 @@ VERS_1.2 {
|
||||
global:
|
||||
xencall_fd;
|
||||
} VERS_1.1;
|
||||
|
||||
VERS_1.3 {
|
||||
global:
|
||||
xencall2L;
|
||||
} VERS_1.2;
|
||||