From: Bing Niu <bing.niu(a)intel.com>
Separate resctrl common information parts from CAT specific parts,
so that common information parts can be reused among different
resource allocation technologies.
Signed-off-by: Bing Niu <bing.niu(a)intel.com>
---
src/util/virresctrl.c | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
index 6d69c8d..98e7296 100644
--- a/src/util/virresctrl.c
+++ b/src/util/virresctrl.c
@@ -318,9 +318,8 @@ virResctrlUnlock(int fd)
/* virResctrlInfo-related definitions */
static int
-virResctrlGetInfo(virResctrlInfoPtr resctrl)
+virResctrlGetCacheInfo(virResctrlInfoPtr resctrl, DIR *dirp)
{
- DIR *dirp = NULL;
char *endptr = NULL;
char *tmp_str = NULL;
int ret = -1;
@@ -332,12 +331,6 @@ virResctrlGetInfo(virResctrlInfoPtr resctrl)
virResctrlInfoPerLevelPtr i_level = NULL;
virResctrlInfoPerTypePtr i_type = NULL;
- rv = virDirOpenIfExists(&dirp, SYSFS_RESCTRL_PATH "/info");
- if (rv <= 0) {
- ret = rv;
- goto cleanup;
- }
-
while ((rv = virDirRead(dirp, &ent, SYSFS_RESCTRL_PATH "/info")) >
0) {
VIR_DEBUG("Parsing info type '%s'", ent->d_name);
if (ent->d_name[0] != 'L')
@@ -443,12 +436,32 @@ virResctrlGetInfo(virResctrlInfoPtr resctrl)
ret = 0;
cleanup:
- VIR_DIR_CLOSE(dirp);
VIR_FREE(i_type);
return ret;
}
+static int
+virResctrlGetInfo(virResctrlInfoPtr resctrl)
+{
+ DIR *dirp = NULL;
+ int ret = -1;
+
+ ret = virDirOpenIfExists(&dirp, SYSFS_RESCTRL_PATH "/info");
+ if (ret <= 0)
+ goto cleanup;
+
+ ret = virResctrlGetCacheInfo(resctrl, dirp);
+ if (ret < 0)
+ goto cleanup;
+
+ ret = 0;
+ cleanup:
+ VIR_DIR_CLOSE(dirp);
+ return ret;
+}
+
+
virResctrlInfoPtr
virResctrlInfoNew(void)
{
--
2.7.4