- 论坛徽章:
- 0
|
原帖由 MMMIX 于 2007-4-19 10:42 发表
不用这么夸张吧?参考下 gprof(1)
确实很夸张。
sourceforge上有个开源项目叫cflow,它可以把你源文件中的函数调用关系生成图片,如果你只想统计函数数量的话,写个脚本分析结果是容易的。
类似如下:
- iosapic_init() <void viosapic_init (struct domain *d) at viosapic.c:330>:
- domain_viosapic()
- viosapic_reset() <void viosapic_reset (struct viosapic *viosapic) at viosapic.c:273>:
- memset()
- spin_lock_init()
- viosapic_read() <unsigned long viosapic_read (struct vcpu *v,unsigned long addr,unsigned long length) at viosapic.c:174>:
- vcpu_viosapic()
- viosapic_read_indirect() <unsigned long viosapic_read_indirect (struct viosapic *viosapic,unsigned long addr,unsigned long length) at viosapic.c:137>:
- gdprintk()
- viosapic_set_irq() <void viosapic_set_irq (struct domain *d,int irq,int level) at viosapic.c:286>:
- domain_viosapic()
- spin_lock()
- service_iosapic() <void service_iosapic (struct viosapic *viosapic) at viosapic.c:101>:
- iosapic_get_highest_irq() <int iosapic_get_highest_irq (struct viosapic *viosapic) at viosapic.c:77>:
- ia64_fls()
- viosapic_deliver() <void viosapic_deliver (struct viosapic *viosapic,int irq) at viosapic.c:40>:
- vlsapic_lid_to_vcpu()
- viosapic_domain()
- vlsapic_set_irq()
- vcpu_kick()
- gdprintk()
- spin_unlock()
- viosapic_set_pci_irq() <void viosapic_set_pci_irq (struct domain *d,int device,int intx,int level) at viosapic.c:322>:
- hvm_pci_intx_gsi()
- viosapic_set_irq() <void viosapic_set_irq (struct domain *d,int irq,int level) at viosapic.c:286>:
- domain_viosapic()
- spin_lock()
- service_iosapic() <void service_iosapic (struct viosapic *viosapic) at viosapic.c:101>:
- iosapic_get_highest_irq() <int iosapic_get_highest_irq (struct viosapic *viosapic) at viosapic.c:77>:
- ia64_fls()
- viosapic_deliver() <void viosapic_deliver (struct viosapic *viosapic,int irq) at viosapic.c:40>:
- vlsapic_lid_to_vcpu()
- viosapic_domain()
- vlsapic_set_irq()
- vcpu_kick()
- gdprintk()
- spin_unlock()
- viosapic_write() <void viosapic_write (struct vcpu *v,unsigned long addr,unsigned long length,unsigned long val) at viosapic.c:244>:
- vcpu_viosapic()
- viosapic_write_indirect() <void viosapic_write_indirect (struct viosapic *viosapic,unsigned long addr,unsigned long length,unsigned long val) at viosapic.c:202>:
- gdprintk()
- viosapic_update_EOI() <void viosapic_update_EOI (struct viosapic *viosapic,int vector) at viosapic.c:117>:
- get_redir_num() <int get_redir_num (struct viosapic *viosapic,int vector) at viosapic.c:89>:
- gdprintk()
复制代码 |
|