init/main.c的start_kernel示例,这个调用栈不太深:
/var/log/dmesg日志:
[ 0.000000] kernel: [init/main.c start_kernel 911] start_kernel(void)
[ 0.000000] kernel: [kernel/panic.c print_tainted 519 LOG_TIMES: 1 ]
[ 0.000000] kernel: CPU: 0 PID: 0 Comm: swapper Not tainted 6.9.0+ #3
[ 0.000000] kernel: Call Trace:
[ 0.000000] kernel: <TASK>
[ 0.000000] kernel: dump_stack_lvl+0x76/0xa0
[ 0.000000] kernel: dump_stack+0x10/0x20
[ 0.000000] kernel: start_kernel+0x51/0x1780
[ 0.000000] kernel: x86_64_start_reservations+0x18/0x30
[ 0.000000] kernel: x86_64_start_kernel+0xbf/0x110
[ 0.000000] kernel: common_startup_64+0x13e/0x141
[ 0.000000] kernel: </TASK>
这是网卡驱动发送数据的函数,调用栈比较深:
[ 20.288274] kernel: [kernel/sched/core.c wake_up_new_task 4974] pid: 1325 exe name: (udev-worker)
[ 20.294028] kernel: [net/ipv4/udp.c udp_send_skb 913]
[ 20.294037] kernel: [net/ipv4/ip_output.c ip_send_skb 1520]
[ 20.294042] kernel: [net/ipv4/ip_output.c ip_local_out 131] 1
[ 20.294046] kernel: [net/ipv4/ip_output.c __ip_local_out 107] 1
[ 20.294072] kernel: [include/linux/netdevice.h dev_queue_xmit 3092]
[ 20.294078] kernel: [net/core/dev.c __dev_queue_xmit 4378]
[ 20.294083] kernel: [net/core/dev.c __dev_xmit_skb 3855]
[ 20.294088] kernel: [net/sched/sch_generic.c sch_direct_xmit 322]
[ 20.294094] kernel: [net/core/dev.c dev_hard_start_xmit 3648]
[ 20.294098] kernel: [net/core/dev.c xmit_one 3631]
[ 20.294102] kernel: [include/linux/netdevice.h netdev_start_xmit 4922]
[ 20.294107] kernel: [include/linux/netdevice.h __netdev_start_xmit 4905] ops->ndo_start_xmit(skb, dev);
[ 20.294112] kernel: [drivers/net/ethernet/intel/e1000/e1000_main.c e1000_xmit_frame 3200]
[ 20.294118] kernel: CPU: 2 PID: 748 Comm: avahi-daemon Not tainted 6.9.0+ #3
[ 20.294126] kernel: Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 11/12/2020
[ 20.294131] kernel: Call Trace:
[ 20.294136] kernel: <TASK>
[ 20.294143] kernel: dump_stack_lvl+0x76/0xa0
[ 20.294159] kernel: dump_stack+0x10/0x20
[ 20.294171] kernel: e1000_xmit_frame+0x53/0x1ba0 [e1000]
[ 20.294230] kernel: ? vprintk_default+0x1d/0x30
[ 20.294240] kernel: ? vprintk+0x41/0x80
[ 20.294250] kernel: ? _printk+0x60/0x90
[ 20.294266] kernel: netdev_start_xmit+0xdd/0x340
[ 20.294280] kernel: dev_hard_start_xmit+0x9a/0x450
[ 20.294293] kernel: sch_direct_xmit+0xea/0x450
[ 20.294307] kernel: __dev_queue_xmit+0xb40/0x1090
[ 20.294320] kernel: ? _printk+0x60/0x90
[ 20.294335] kernel: ip_finish_output2+0x35d/0x810
[ 20.294347] kernel: __ip_finish_output+0xd9/0x280
[ 20.294356] kernel: ? dev_loopback_xmit+0xb7/0x250
[ 20.294366] kernel: ip_finish_output+0x60/0x280
[ 20.294455] kernel: ip_mc_output+0xb7/0x420
[ 20.294465] kernel: ? __pfx_ip_finish_output+0x10/0x10
[ 20.294475] kernel: ip_local_out+0x1e2/0x1f0
[ 20.294485] kernel: ip_send_skb+0x77/0x1e0
[ 20.294494] kernel: udp_send_skb+0x1a4/0x4d0
[ 20.294507] kernel: udp_sendmsg+0xc25/0x1060
[ 20.294520] kernel: ? __pfx_ip_generic_getfrag+0x10/0x10
[ 20.294542] kernel: inet_sendmsg+0x180/0x1f0
[ 20.294550] kernel: ? inet_sendmsg+0x180/0x1f0
[ 20.294620] kernel: sock_sendmsg_nosec+0x18e/0x220
[ 20.294633] kernel: ____sys_sendmsg+0x356/0x470
[ 20.294649] kernel: [kernel/fork.c __do_sys_set_tid_address 1979]
[ 20.294650] kernel: ___sys_sendmsg+0x164/0x5c0
[ 20.294676] kernel: __sys_sendmsg+0x89/0xf0
[ 20.294686] kernel: ? __sys_sendmsg+0x89/0xf0
[ 20.294704] kernel: __x64_sys_sendmsg+0x5a/0x180
[ 20.294715] kernel: x64_sys_call+0x25e/0x25c0
[ 20.294725] kernel: do_syscall_64+0x7e/0x180
[ 20.294734] kernel: ? aa_file_perm+0x140/0x570
[ 20.294750] kernel: ? inode_needs_update_time+0x4b/0xd0
[ 20.294761] kernel: ? file_update_time+0x1d/0x90
[ 20.294770] kernel: ? pipe_write+0x472/0x6b0
[ 20.294783] kernel: ? security_file_permission+0x36/0x60
[ 20.294797] kernel: ? vfs_write+0x2d1/0x6d0
[ 20.294815] kernel: ? ksys_write+0xc9/0x100
[ 20.294828] kernel: ? syscall_exit_to_user_mode+0x72/0x360
[ 20.294841] kernel: ? do_syscall_64+0x8b/0x180
[ 20.294852] kernel: ? restore_fpregs_from_fpstate+0x47/0xf0
[ 20.294865] kernel: ? switch_fpu_return+0x50/0xe0
[ 20.294946] kernel: ? syscall_exit_to_user_mode+0x72/0x360
[ 20.294959] kernel: ? do_syscall_64+0x8b/0x180
[ 20.294969] kernel: ? syscall_exit_to_user_mode+0x72/0x360
[ 20.294982] kernel: ? do_syscall_64+0x8b/0x180
[ 20.294990] kernel: ? ksys_write+0xc9/0x100
[ 20.295003] kernel: ? syscall_exit_to_user_mode+0x72/0x360
[ 20.295016] kernel: ? do_syscall_64+0x8b/0x180
[ 20.295026] kernel: ? do_syscall_64+0x8b/0x180
[ 20.295036] kernel: ? clear_bhb_loop+0x15/0x70
[ 20.295047] kernel: ? clear_bhb_loop+0x15/0x70
[ 20.295057] kernel: ? clear_bhb_loop+0x15/0x70
[ 20.295070] kernel: entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 20.295080] kernel: RIP: 0033:0x796376b2c004
[ 20.295087] kernel: Code: 15 19 6e 0d 00 f7 d8 64 89 02 b8 ff ff ff ff eb bf 0f