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 */
} /* while */
if (size != NUM_GEM_FIELD) {
- fclose(drm_fp);
return NULL;
}
}
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;