#define MAP_READ  (1 << 0)
 #define MAP_WRITE (1 << 1)
 
+struct gen_perf_query_object *
+gen_perf_new_query(struct gen_perf_context *perf_ctx, unsigned query_index)
+{
+   const struct gen_perf_query_info *query =
+      &perf_ctx->perf->queries[query_index];
+   struct gen_perf_query_object *obj =
+      calloc(1, sizeof(struct gen_perf_query_object));
+
+   if (!obj)
+      return NULL;
+
+   obj->queryinfo = query;
+
+   perf_ctx->n_query_instances++;
+   return obj;
+}
+
 static bool
 get_sysfs_dev_dir(struct gen_perf_config *perf, int fd)
 {
 
                                             struct gen_perf_config *perf,
                                             struct gen_perf_query_object *obj,
                                             uint32_t offset_in_bytes);
+struct gen_perf_query_object *
+gen_perf_new_query(struct gen_perf_context *, unsigned query_index);
 
 void gen_perf_close(struct gen_perf_context *perfquery,
                     const struct gen_perf_query_info *query);
 
 {
    struct brw_context *brw = brw_context(ctx);
    struct gen_perf_context *perf_ctx = &brw->perf_ctx;
-   const struct gen_perf_query_info *queryinfo =
-      &perf_ctx->perf->queries[query_index];
-   struct gen_perf_query_object *obj =
-      calloc(1, sizeof(struct gen_perf_query_object));
-
-   if (!obj)
+   struct gen_perf_query_object * obj = gen_perf_new_query(perf_ctx, query_index);
+   if (unlikely(!obj))
       return NULL;
 
-   obj->queryinfo = queryinfo;
-
-   perf_ctx->n_query_instances++;
-
    struct brw_perf_query_object *brw_query = calloc(1, sizeof(struct brw_perf_query_object));
    if (unlikely(!brw_query))
       return NULL;
+
    brw_query->query = obj;
    return &brw_query->base;
 }