File tree Expand file tree Collapse file tree 1 file changed +5
-8
lines changed
kernel/src/debug/traceback Expand file tree Collapse file tree 1 file changed +5
-8
lines changed Original file line number Diff line number Diff line change @@ -17,19 +17,16 @@ fn kallsyms_names() {}
1717/// return true if the func is kernel_main
1818pub unsafe fn lookup_kallsyms ( addr : u64 , level : i32 ) -> bool {
1919 let sym_names = kallsyms_names as * const u8 ;
20- // 由于符号表使用nm -n生成,因此是按照地址升序排列的,因此可以二分
2120 let sym_num = kallsyms_num as usize ;
2221 let kallsyms_address_list =
2322 core:: slice:: from_raw_parts ( kallsyms_address as * const u64 , sym_num) ;
2423 let sym_names_index = kallsyms_names_index as * const u64 ;
2524 let sym_names_index = core:: slice:: from_raw_parts ( sym_names_index, sym_num) ;
26- let mut index = usize:: MAX ;
27- for i in 0 ..sym_num - 1 {
28- if addr > kallsyms_address_list[ i] && addr <= kallsyms_address_list[ i + 1 ] {
29- index = i;
30- break ;
31- }
32- }
25+ let index = match kallsyms_address_list. binary_search ( & addr) {
26+ Ok ( i) => i,
27+ Err ( 0 ) => sym_num, // 地址小于第一个符号
28+ Err ( i) => i - 1 ,
29+ } ;
3330 let mut is_kernel_main = false ;
3431 if index < sym_num {
3532 let sym_name = CStr :: from_ptr ( sym_names. add ( sym_names_index[ index] as usize ) as _ )
You can’t perform that action at this time.
0 commit comments