Skip to content
Snippets Groups Projects
parse-events.c 25.1 KiB
Newer Older
  • Learn to ignore specific revisions
  • void print_events_type(u8 type)
    {
    	struct event_symbol *syms = event_symbols;
    	unsigned int i;
    	char name[64];
    
    	for (i = 0; i < ARRAY_SIZE(event_symbols); i++, syms++) {
    		if (type != syms->type)
    			continue;
    
    		if (strlen(syms->alias))
    			snprintf(name, sizeof(name),  "%s OR %s",
    				 syms->symbol, syms->alias);
    		else
    			snprintf(name, sizeof(name), "%s", syms->symbol);
    
    
    		printf("  %-50s [%s]\n", name,
    
    			event_type_descriptors[type]);
    	}
    }
    
    int print_hwcache_events(const char *event_glob)
    {
    	unsigned int type, op, i, printed = 0;
    
    	for (type = 0; type < PERF_COUNT_HW_CACHE_MAX; type++) {
    		for (op = 0; op < PERF_COUNT_HW_CACHE_OP_MAX; op++) {
    			/* skip invalid cache type */
    			if (!is_cache_op_valid(type, op))
    				continue;
    
    			for (i = 0; i < PERF_COUNT_HW_CACHE_RESULT_MAX; i++) {
    				char *name = event_cache_name(type, op, i);
    
    
    				if (event_glob != NULL && !strglobmatch(name, event_glob))
    
    				printf("  %-50s [%s]\n", name,
    
    					event_type_descriptors[PERF_TYPE_HW_CACHE]);
    				++printed;
    			}
    		}
    	}
    
    	return printed;
    }
    
    
    #define MAX_NAME_LEN 100
    
    
     * Print the help text for the event symbols:
    
    void print_events(const char *event_glob)
    
    	unsigned int i, type, prev_type = -1, printed = 0, ntypes_printed = 0;
    
    	struct event_symbol *syms = event_symbols;
    	char name[MAX_NAME_LEN];
    
    	printf("\n");
    	printf("List of pre-defined events (to be used in -e):\n");
    
    	for (i = 0; i < ARRAY_SIZE(event_symbols); i++, syms++) {
    
    		type = syms->type;
    
    		if (type != prev_type && printed) {
    
    			printed = 0;
    			ntypes_printed++;
    		}
    
    		if (event_glob != NULL && 
    		    !(strglobmatch(syms->symbol, event_glob) ||
    		      (syms->alias && strglobmatch(syms->alias, event_glob))))
    			continue;
    
    			snprintf(name, MAX_NAME_LEN, "%s OR %s", syms->symbol, syms->alias);
    
    			strncpy(name, syms->symbol, MAX_NAME_LEN);
    		printf("  %-50s [%s]\n", name,
    
    			event_type_descriptors[type]);
    
    	if (ntypes_printed) {
    		printed = 0;
    		printf("\n");
    
    	print_hwcache_events(event_glob);
    
    	if (event_glob != NULL)
    		return;
    
    	printf("  %-50s [%s]\n",
    
    		"rNNN (see 'perf list --help' on how to encode it)",
    	       event_type_descriptors[PERF_TYPE_RAW]);
    
    	printf("  %-50s [%s]\n",
    
    			"mem:<addr>[:access]",
    			event_type_descriptors[PERF_TYPE_BREAKPOINT]);
    
    	print_tracepoint_events(NULL, NULL);