
On Mon, Jan 29, 2018 at 02:02:19PM +0100, Michal Privoznik wrote
On 01/29/2018 01:24 PM, Erik Skultety wrote:
On Fri, Jan 26, 2018 at 12:39:00PM +0100, Michal Privoznik wrote:
On 01/25/2018 10:23 AM, Erik Skultety wrote:
This is a replacement for the existing udevPCIGetMdevTypesCap which is static to the udev backend. This simple helper constructs the sysfs path from the device's base path for each mdev type and queries the corresponding attributes of that type.
Signed-off-by: Erik Skultety <eskultet@redhat.com> --- src/libvirt_private.syms | 1 + src/util/virpci.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ src/util/virpci.h | 4 ++++ 3 files changed, 63 insertions(+)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 75eaf1d4c..8d4c8dd3f 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2456,6 +2456,7 @@ virPCIDeviceWaitForCleanup; virPCIEDeviceInfoFree; virPCIGetDeviceAddressFromSysfsLink; virPCIGetHeaderType; +virPCIGetMdevTypes; virPCIGetNetName; virPCIGetPhysicalFunction; virPCIGetVirtualFunctionIndex; diff --git a/src/util/virpci.c b/src/util/virpci.c index fe57bef32..12d7ef0e4 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -3027,6 +3027,64 @@ virPCIGetVirtualFunctionInfo(const char *vf_sysfs_device_path, return ret; }
+ +int +virPCIGetMdevTypes(const char *sysfspath, + virMediatedDeviceTypePtr **types)
Since this function returns size_t on success, I guess the retval should be type of ssize_t at least. We are not guaranteed that size_t will fit
ssize_t wouldn't really help, since assigning size_t might overflow, so the only safe bet is long long, but I mean, do you really expect there to be more than INT_MAX mdev types for a device? That would be a lot of types to support.
In kernel, they do a lot of size_t -> ssize_t conversion in cases where's it's next to impossible to overflow. And I believe this is one of them.
Fair enough, consider it changed. Erik