Re: [PATCH -tip 6/7] perf probe: Show accessible global variables

From: Masami Hiramatsu
Date: Thu Oct 21 2010 - 22:25:51 EST


(2010/10/22 5:50), Arnaldo Carvalho de Melo wrote:
> Em Thu, Oct 21, 2010 at 07:13:35PM +0900, Masami Hiramatsu escreveu:
>> Add --externs for allowing --vars to show accessible
>> global(externally defined) variables from a given probe
>> point too.
>> This will give you a hint which globals can be accessible
>> from the probe point.
>
> Cool, but perhaps we need to filter out some of the globals? Things
> like:

Hmm, yeah. So is that enough to filter out symbols which start with
__k???tab_ and __crc_ ?


>
> long unsigned int __kcrctab_tcp_hashinfo
> long unsigned int __kcrctab_tcp_proc_register
> long unsigned int __kcrctab_tcp_proc_unregister
> long unsigned int __kcrctab_tcp_prot
>
> If --verbose is specified we could then show everything.

--verbose is already used for showing debug messages, ;)
so how about using --all/--allextras?

Or, perhaps we can add more generic filtering for listing
events/vars/funcs.

Thank you,

>
> So that it doesn't get this long:
>
> [root@emilia ~]# perf probe -V tcp_v4_do_rcv:28 --externs
> Available variables at tcp_v4_do_rcv:28
> @<tcp_v4_do_rcv+390>
> (function_type)* ip_nat_decode_session
> (unknown_type) __crc_ipv4_specific
> (unknown_type) __crc_sysctl_tcp_low_latency
> (unknown_type) __crc_tcp4_gro_complete
> (unknown_type) __crc_tcp4_gro_receive
> (unknown_type) __crc_tcp_hashinfo
> (unknown_type) __crc_tcp_proc_register
> (unknown_type) __crc_tcp_proc_unregister
> (unknown_type) __crc_tcp_prot
> (unknown_type) __crc_tcp_twsk_unique
> (unknown_type) __crc_tcp_v4_conn_request
> (unknown_type) __crc_tcp_v4_connect
> (unknown_type) __crc_tcp_v4_destroy_sock
> (unknown_type) __crc_tcp_v4_do_rcv
> (unknown_type) __crc_tcp_v4_md5_do_add
> (unknown_type) __crc_tcp_v4_md5_do_del
> (unknown_type) __crc_tcp_v4_md5_hash_skb
> (unknown_type) __crc_tcp_v4_md5_lookup
> (unknown_type) __crc_tcp_v4_remember_stamp
> (unknown_type) __crc_tcp_v4_send_check
> (unknown_type) __crc_tcp_v4_syn_recv_sock
> __u8* ip_tos2prio
> atomic_long_t* vm_stat
> atomic_t tcp_memory_allocated
> bool c1e_detected
> char __pcpu_scope_cpu_core_map
> char __pcpu_scope_cpu_info
> char __pcpu_scope_cpu_llc_id
> char __pcpu_scope_cpu_number
> char __pcpu_scope_cpu_sibling_map
> char __pcpu_scope_current_task
> char __pcpu_scope_init_tss
> char __pcpu_scope_irq_count
> char __pcpu_scope_irq_regs
> char __pcpu_scope_irq_stack_ptr
> char __pcpu_scope_irq_stack_union
> char __pcpu_scope_irq_stat
> char __pcpu_scope_kernel_stack
> char __pcpu_scope_numa_node
> char __pcpu_scope_orig_ist
> char __pcpu_scope_process_counts
> char __pcpu_scope_softirq_work_list
> char __pcpu_scope_softnet_data
> char __pcpu_scope_this_cpu_off
> char __pcpu_scope_tick_cpu_device
> char __pcpu_scope_vector_irq
> char __pcpu_scope_vm_event_states
> char __pcpu_scope_x2apic_extra_bits
> char __pcpu_scope_x86_bios_cpu_apicid
> char __pcpu_scope_x86_cpu_to_apicid
> char __pcpu_scope_x86_cpu_to_node_map
> char* __kstrtab_ipv4_specific
> char* __kstrtab_sysctl_tcp_low_latency
> char* __kstrtab_tcp4_gro_complete
> char* __kstrtab_tcp4_gro_receive
> char* __kstrtab_tcp_hashinfo
> char* __kstrtab_tcp_proc_register
> char* __kstrtab_tcp_proc_unregister
> char* __kstrtab_tcp_prot
> char* __kstrtab_tcp_twsk_unique
> char* __kstrtab_tcp_v4_conn_request
> char* __kstrtab_tcp_v4_connect
> char* __kstrtab_tcp_v4_destroy_sock
> char* __kstrtab_tcp_v4_do_rcv
> char* __kstrtab_tcp_v4_md5_do_add
> char* __kstrtab_tcp_v4_md5_do_del
> char* __kstrtab_tcp_v4_md5_hash_skb
> char* __kstrtab_tcp_v4_md5_lookup
> char* __kstrtab_tcp_v4_remember_stamp
> char* __kstrtab_tcp_v4_send_check
> char* __kstrtab_tcp_v4_syn_recv_sock
> char* hex_asc
> char* inet_csk_timer_bug_msg
> cpumask_var_t cpu_callout_mask
> cpumask_var_t cpu_core_map
> cpumask_var_t cpu_sibling_map
> cpumask_var_t* node_to_cpumask_map
> int acpi_disabled
> int acpi_noirq
> int acpi_pci_disabled
> int audit_enabled
> int cpu_number
> int debug_locks
> int disable_apic
> int net_msg_warn
> int nr_cpu_ids
> int nr_online_nodes
> int numa_node
> int page_group_by_mobility_disabled
> int percpu_counter_batch
> int prof_on
> int sched_mc_power_savings
> int sched_smt_power_savings
> int smp_found_config
> int sysctl_max_syn_backlog
> int sysctl_tcp_adv_win_scale
> int sysctl_tcp_cookie_size
> int sysctl_tcp_ecn
> int sysctl_tcp_fin_timeout
> int sysctl_tcp_keepalive_intvl
> int sysctl_tcp_keepalive_probes
> int sysctl_tcp_keepalive_time
> int sysctl_tcp_low_latency
> int sysctl_tcp_max_orphans
> int sysctl_tcp_reordering
> int sysctl_tcp_syncookies
> int sysctl_tcp_tw_reuse
> int tcp_memory_pressure
> int time_status
> int timer_stats_active
> int x2apic_phys
> int x86_cpu_to_node_map
> int* console_printk
> int* sysctl_tcp_mem
> int* sysctl_tcp_rmem
> int* sysctl_tcp_wmem
> int* x86_cpu_to_node_map_early_ptr
> irq_cpustat_t irq_stat
> long unsigned int __kcrctab_ipv4_specific
> long unsigned int __kcrctab_sysctl_tcp_low_latency
> long unsigned int __kcrctab_tcp4_gro_complete
> long unsigned int __kcrctab_tcp4_gro_receive
> long unsigned int __kcrctab_tcp_hashinfo
> long unsigned int __kcrctab_tcp_proc_register
> long unsigned int __kcrctab_tcp_proc_unregister
> long unsigned int __kcrctab_tcp_prot
> long unsigned int __kcrctab_tcp_twsk_unique
> long unsigned int __kcrctab_tcp_v4_conn_request
> long unsigned int __kcrctab_tcp_v4_connect
> long unsigned int __kcrctab_tcp_v4_destroy_sock
> long unsigned int __kcrctab_tcp_v4_do_rcv
> long unsigned int __kcrctab_tcp_v4_md5_do_add
> long unsigned int __kcrctab_tcp_v4_md5_do_del
> long unsigned int __kcrctab_tcp_v4_md5_hash_skb
> long unsigned int __kcrctab_tcp_v4_md5_lookup
> long unsigned int __kcrctab_tcp_v4_remember_stamp
> long unsigned int __kcrctab_tcp_v4_send_check
> long unsigned int __kcrctab_tcp_v4_syn_recv_sock
> long unsigned int jiffies
> long unsigned int kernel_stack
> long unsigned int mmap_min_addr
> long unsigned int mmu_cr4_features
> long unsigned int* __per_cpu_offset
> long unsigned int* cpu_bit_bitmap
> long unsigned int* sysctl_local_reserved_ports
> nodemask_t* node_states
> pg_data_t** node_data
> physid_mask_t phys_cpu_present_map
> pteval_t __supported_pte_mask
> spinlock_t dcache_lock
> struct address_space swapper_space
> struct apic* apic
> struct cache_sizes* malloc_sizes
> struct cpuinfo_x86 boot_cpu_data
> struct cpuinfo_x86 cpu_info
> struct cpumask* cpu_online_mask
> struct cpumask* cpu_possible_mask
> struct cpumask* cpu_present_mask
> struct device x86_dma_fallback_dev
> struct dma_map_ops* dma_ops
> struct dqstats dqstats
> struct icmp_err* icmp_err_convert
> struct inet_connection_sock_af_ops ipv4_specific
> struct inet_hashinfo tcp_hashinfo
> struct inet_timewait_death_row tcp_death_row
> struct kernel_symbol __ksymtab_ipv4_specific
> struct kernel_symbol __ksymtab_sysctl_tcp_low_latency
> struct kernel_symbol __ksymtab_tcp4_gro_complete
> struct kernel_symbol __ksymtab_tcp4_gro_receive
> struct kernel_symbol __ksymtab_tcp_hashinfo
> struct kernel_symbol __ksymtab_tcp_proc_register
> struct kernel_symbol __ksymtab_tcp_proc_unregister
> struct kernel_symbol __ksymtab_tcp_prot
> struct kernel_symbol __ksymtab_tcp_twsk_unique
> struct kernel_symbol __ksymtab_tcp_v4_conn_request
> struct kernel_symbol __ksymtab_tcp_v4_connect
> struct kernel_symbol __ksymtab_tcp_v4_destroy_sock
> struct kernel_symbol __ksymtab_tcp_v4_do_rcv
> struct kernel_symbol __ksymtab_tcp_v4_md5_do_add
> struct kernel_symbol __ksymtab_tcp_v4_md5_do_del
> struct kernel_symbol __ksymtab_tcp_v4_md5_hash_skb
> struct kernel_symbol __ksymtab_tcp_v4_md5_lookup
> struct kernel_symbol __ksymtab_tcp_v4_remember_stamp
> struct kernel_symbol __ksymtab_tcp_v4_send_check
> struct kernel_symbol __ksymtab_tcp_v4_syn_recv_sock
> struct list_head* nf_hooks
> struct mem_section** mem_section
> struct memnode memnode
> struct neigh_table nd_tbl
> struct nf_afinfo** nf_afinfo
> struct percpu_counter tcp_orphan_count
> struct percpu_counter tcp_sockets_allocated
> struct pernet_operations tcp4_net_ops
> struct pernet_operations tcp_sk_ops
> struct pglist_data** node_data
> struct pid* cad_pid
> struct pid_namespace init_pid_ns
> struct proto tcp_prot
> struct pt_regs* irq_regs
> struct pv_apic_ops pv_apic_ops
> struct pv_cpu_ops pv_cpu_ops
> struct pv_info pv_info
> struct pv_irq_ops pv_irq_ops
> struct pv_mmu_ops pv_mmu_ops
> struct pv_time_ops pv_time_ops
> struct request_sock_ops tcp_request_sock_ops
> struct resource ioport_resource
> struct rps_sock_flow_table* rps_sock_flow_table
> struct sk_buff* skb
> struct smp_ops smp_ops
> struct sock* sk
> struct task_struct* current_task
> struct tcp_congestion_ops tcp_init_congestion_ops
> struct tcp_request_sock_ops tcp_request_sock_ipv4_ops
> struct tcp_seq_afinfo tcp4_seq_afinfo
> struct tcp_sock_af_ops tcp_sock_ipv4_specific
> struct timewait_sock_ops tcp_timewait_sock_ops
> struct tracepoint __tracepoint_irq_handler_entry
> struct tracepoint __tracepoint_irq_handler_exit
> struct tracepoint __tracepoint_kfree
> struct tracepoint __tracepoint_kmalloc
> struct tracepoint __tracepoint_kmalloc_node
> struct tracepoint __tracepoint_kmem_cache_alloc
> struct tracepoint __tracepoint_kmem_cache_alloc_node
> struct tracepoint __tracepoint_kmem_cache_free
> struct tracepoint __tracepoint_mm_page_alloc
> struct tracepoint __tracepoint_mm_page_alloc_extfrag
> struct tracepoint __tracepoint_mm_page_alloc_zone_locked
> struct tracepoint __tracepoint_mm_page_free_direct
> struct tracepoint __tracepoint_mm_page_pcpu_drain
> struct tracepoint __tracepoint_mm_pagevec_free
> struct tracepoint __tracepoint_module_free
> struct tracepoint __tracepoint_module_get
> struct tracepoint __tracepoint_module_load
> struct tracepoint __tracepoint_module_put
> struct tracepoint __tracepoint_module_request
> struct tracepoint __tracepoint_softirq_entry
> struct tracepoint __tracepoint_softirq_exit
> struct tracepoint __tracepoint_softirq_raise
> struct vm_event_state vm_event_states
> struct x86_init_ops x86_init
> struct x86_platform_ops x86_platform
> u16 x86_bios_cpu_apicid
> u32 inet_ehash_secret
> union irq_stack_union irq_stack_union
> unsigned int apic_verbosity
> unsigned int sysctl_timer_migration
>
> - Arnaldo
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


--
Masami HIRAMATSU
2nd Dept. Linux Technology Center
Hitachi, Ltd., Systems Development Laboratory
E-mail: masami.hiramatsu.pt@xxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/