On 3/12/20 4:22 PM, Jiri Olsa wrote:
> On Mon, Mar 09, 2020 at 11:55:50AM +0530, Kajol Jain wrote:
> 
> SNIP
> 
>> +static int metricgroup__add_metric_runtime_param(struct strbuf *events,
>> +                    struct list_head *group_list, struct pmu_event *pe)
>> +{
>> +    int i, count;
>> +    int ret = -EINVAL;
>> +
>> +    count = arch_get_runtimeparam();
>> +
>> +    /* This loop is added to create multiple
>> +     * events depend on count value and add
>> +     * those events to group_list.
>> +     */
>> +
>> +    for (i = 0; i < count; i++) {
>> +            const char **ids;
>> +            int idnum;
>> +            struct egroup *eg;
>> +            char value[PATH_MAX];
>> +
>> +            expr__runtimeparam = i;
>> +
>> +            if (expr__find_other(pe->metric_expr,
>> +                                    NULL, &ids, &idnum) < 0)
>> +                    return ret;
>> +
>> +            if (events->len > 0)
>> +                    strbuf_addf(events, ",");
>> +
>> +            if (metricgroup__has_constraint(pe))
>> +                    metricgroup__add_metric_non_group(events, ids, idnum);
>> +            else
>> +                    metricgroup__add_metric_weak_group(events, ids, idnum);
>> +
>> +            eg = malloc(sizeof(struct egroup));
>> +            if (!eg) {
>> +                    ret = -ENOMEM;
>> +                    return ret;
>> +            }
>> +            sprintf(value, "%s%c%d", pe->metric_name, '_', i);
>> +            eg->ids = ids;
>> +            eg->idnum = idnum;
>> +            eg->metric_name = strdup(value);
>> +            eg->metric_expr = pe->metric_expr;
>> +            eg->metric_unit = pe->unit;
>> +            list_add_tail(&eg->nd, group_list);
>> +            ret = 0;
>> +
>> +            if (ret != 0)
>> +                    break;
> 
> the inside loop is essentialy what you factor out to
> metricgroup__add_metric_param right? please nove
> addition of metricgroup__add_metric_param function
> into separate patch
> 
> jirka
> 

Ok will put it in seperate patch.

Thanks,
kajol
> 
>> +    }
>> +    return ret;
>> +}
>> +static int metricgroup__add_metric_param(struct strbuf *events,
>> +                    struct list_head *group_list, struct pmu_event *pe)
>> +{
>> +
>> +    const char **ids;
>> +    int idnum;
>> +    struct egroup *eg;
>> +    int ret = -EINVAL;
>> +
>> +    if (expr__find_other(pe->metric_expr,
>> +                                         NULL, &ids, &idnum) < 0)
>> +            return ret;
>> +    if (events->len > 0)
>> +            strbuf_addf(events, ",");
>> +
>> +    if (metricgroup__has_constraint(pe))
>> +            metricgroup__add_metric_non_group(events, ids, idnum);
>> +    else
>> +            metricgroup__add_metric_weak_group(events, ids, idnum);
>> +
>> +    eg = malloc(sizeof(struct egroup));
>> +    if (!eg)
>> +            ret = -ENOMEM;
>> +
>> +    eg->ids = ids;
>> +    eg->idnum = idnum;
>> +    eg->metric_name = pe->metric_name;
>> +    eg->metric_expr = pe->metric_expr;
>> +    eg->metric_unit = pe->unit;
>> +    list_add_tail(&eg->nd, group_list);
>> +    ret = 0;
>> +
>> +    return ret;
>> +}
> 
> SNIP
> 

Reply via email to