Home | History | Annotate | Download | only in libop

Lines Matching defs:um

34 static void free_unit_mask(struct op_unit_mask * um);
110 static void parse_um(struct op_unit_mask * um, char const * line)
136 free_unit_mask(um);
145 um->name = op_xstrndup(tagend, valueend - tagend);
151 um->unit_type_mask = utm_mandatory;
153 um->unit_type_mask = utm_bitmask;
155 um->unit_type_mask = utm_exclusive;
163 um->default_mask = parse_hex(tagend);
173 if (!um->name)
203 struct op_unit_mask * um = xmalloc(sizeof(struct op_unit_mask));
204 memset(um, '\0', sizeof(struct op_unit_mask));
205 list_add_tail(&um->um_next, &um_list);
207 return um;
210 static void free_unit_mask(struct op_unit_mask * um)
212 list_del(&um->um_next);
213 free(um);
222 struct op_unit_mask * um = NULL;
242 um = new_unit_mask();
243 parse_um(um, line);
245 if (!um)
247 if (um->num >= MAX_UNIT_MASK)
250 parse_um_entry(&um->um[um->num], line);
251 ++(um->num);
289 struct op_unit_mask * um = list_entry(pos, struct op_unit_mask, um_next);
290 if (strcmp(value, um->name) == 0) {
291 um->used = 1;
292 return um;
300 struct op_unit_mask * um = try_find_um(value);
301 if (um)
302 return um;
307 /* um:a,b,c,d merge multiple unit masks */
312 struct op_unit_mask *new, *um;
315 um = try_find_um(value);
316 if (um)
317 return um;
325 um = find_um(s);
327 type = um->unit_type_mask;
328 if (um->unit_type_mask != type)
332 new->default_mask |= um->default_mask;
333 new->num += um->num;
336 for (c = 0; c < um->num; c++, num++) {
337 new->um[num] = um->um[c];
338 new->um[num].desc = xstrdup(new->um[num].desc);
421 /* event:0x00 counters:0 um:zero minimum:4096 name:ISSUES : Total issues */
422 /* event:0x00 ext:xxxxxx um:zero minimum:4096 name:ISSUES : Total issues */
490 } else if (strcmp(name, "um") == 0) {
492 parse_error("duplicate um: tag");
537 static int check_unit_mask(struct op_unit_mask const * um,
543 if (!um->used) {
544 fprintf(stderr, "um %s is not used\n", um->name);
548 if (um->unit_type_mask == utm_mandatory && um->num != 1) {
549 fprintf(stderr, "mandatory um %s doesn't contain exactly one "
550 "entry (%s)\n", um->name, cpu_name);
552 } else if (um->unit_type_mask == utm_bitmask) {
553 u32 default_mask = um->default_mask;
554 for (i = 0; i < um->num; ++i)
555 default_mask &= ~um->um[i].value;
558 fprintf(stderr, "um %s default mask is not valid "
559 "(%s)\n", um->name, cpu_name);
563 for (i = 0; i < um->num; ++i) {
564 if (um->default_mask == um->um[i].value)
568 if (i == um->num) {
569 fprintf(stderr, "exclusive um %s default value is not "
570 "valid (%s)\n", um->name, cpu_name);
620 struct op_unit_mask * um = list_entry(pos, struct op_unit_mask, um_next);
621 err |= check_unit_mask(um, cpu_name);
639 if (unit->um[cur].desc)
640 free(unit->um[cur].desc);
691 static struct op_event * find_event_um(u32 nr, u32 um)
700 if (event->unit->um[i].value == um)
847 static int match_event(int i, struct op_event *event, unsigned um)
849 unsigned v = event->unit->um[i].value;
854 return v == um;
857 return (v & um) || (!v && v == 0);
863 struct op_event * find_event_by_name(char const * name, unsigned um, int um_valid)
874 if (match_event(i, event, um))
886 struct op_event * op_find_event(op_cpu cpu_type, u32 nr, u32 um)
892 event = find_event_um(nr, um);
904 int op_check_events(int ctr, u32 nr, u32 um, op_cpu cpu_type)
925 um &= ~(event->unit->um[i].value);
927 if (um)
932 if (event->unit->um[i].value == um)
952 descr->um = 0x0;
984 descr->um = 0x1;