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@xxxxxxxxxx> > >>> --- > >>> 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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list