Divide functions to open and to parse gem_info sysfs node 04/281804/2
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 22 Sep 2022 02:57:12 +0000 (11:57 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 22 Sep 2022 10:20:51 +0000 (19:20 +0900)
To support other gem_info sysfs node, divide open function and
parse function for gem_info.

Change-Id: Id7f24438356c1636c54fb2cd784c09053ade98c2
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
memps.c

diff --git a/memps.c b/memps.c
index eaf8151..9a0196f 100644 (file)
--- a/memps.c
+++ b/memps.c
@@ -265,29 +265,15 @@ static geminfo *find_geminfo(unsigned int tgid, geminfo *gilist)
        return NULL;
 }
 
-static geminfo *load_geminfo(void)
+static geminfo *get_geminfo(FILE *drm_fp)
 {
        geminfo *ginfo;
        geminfo *gilist = NULL;
        geminfo *exist_ginfo = NULL;
 
-       FILE *drm_fp;
        char line[BUF_MAX];
 
-       drm_fp = fopen(STR_DRM_DBG_DIR "0/gem_info", "r");
-       if (drm_fp == NULL) {
-               drm_fp = fopen(STR_DRM_DBG_DIR "1/gem_info", "r");
-               dri_card = 1;
-               if (drm_fp == NULL) {
-                       fprintf(stderr,
-                       "cannot open " STR_DRM_DBG_DIR "%d/gem_info\n",
-                       dri_card);
-                       return NULL;
-               }
-       }
-
        if (fgets(line, BUF_MAX, drm_fp) == NULL) {
-               fclose(drm_fp);
                return NULL;
        } else {
                /* we should count a number of whitespace separated fields */
@@ -313,7 +299,6 @@ static geminfo *load_geminfo(void)
                } /* while */
 
                if (size != NUM_GEM_FIELD) {
-                       fclose(drm_fp);
                        return NULL;
                }
        }
@@ -334,6 +319,28 @@ static geminfo *load_geminfo(void)
                gilist = ginfo;
        }
 
+       return gilist;
+}
+
+static geminfo *load_geminfo(void)
+{
+       geminfo *gilist;
+       FILE *drm_fp;
+
+       drm_fp = fopen(STR_DRM_DBG_DIR "0/gem_info", "r");
+       if (drm_fp == NULL) {
+               drm_fp = fopen(STR_DRM_DBG_DIR "1/gem_info", "r");
+               dri_card = 1;
+               if (drm_fp == NULL) {
+                       fprintf(stderr,
+                               "cannot open " STR_DRM_DBG_DIR "%d/gem_info\n",
+                               dri_card);
+                       return NULL;
+               }
+       }
+
+       gilist = get_geminfo(drm_fp);
+
        fclose(drm_fp);
 
        return gilist;