函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\cpu\cacheinfo.c Create Date:2022-07-27 08:54:17
Last Modify:2020-03-16 20:07:28 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:init_intel_cacheinfo

函数原型:void init_intel_cacheinfo(struct cpuinfo_x86 *c)

返回类型:void

参数:

类型参数名称
struct cpuinfo_x86 *c
724  trace等于0, l1i等于0, l1d等于0, l2等于0, l3等于0
725  new_l1d等于0, new_l1i等于0
726  new_l2等于0, new_l3等于0
727  l2_id等于0, l3_id等于0
732  如果Maximum supported CPUID level, -1=no CPUID: 大于3则
735  如果is_initialized恒等于0则
738  is_initialized自加
745 i小于num_cache_leaves循环
746  struct _cpuid4_info_regs this_leaf = {}
750  如果retval小于0则继续下一循环
754  :level恒等于1
755  如果type恒等于CTYPE_DATAnew_l1d等于size除1024
757  否则如果type恒等于CTYPE_INSTnew_l1i等于size除1024
759  退出
760  :level恒等于2
761  new_l2等于size除1024
764  l2_id等于apicid按位与1左移index_msb位的值减1的差的反
765  退出
766  :level恒等于3
767  new_l3等于size除1024
770  l3_id等于apicid按位与1左移index_msb位的值减1的差的反
771  退出
772  默认
773  退出
781  如果num_cache_leaves恒等于0或CPU family 恒等于15的值且Maximum supported CPUID level, -1=no CPUID: 大于1则
785  dp等于regs
786  only_trace等于0
788  如果num_cache_leaves不等于0且CPU family 恒等于15则only_trace等于1
792  n等于CPUID functions returning a single datum按位与0xFF
794 i小于n循环
795  cpuid(2, & regs[0], & regs[1], & regs[2], & regs[3])
798 j小于3循环如果regs[j]按位与1左移31位则
800  regs[j]等于0
803 j小于16循环
804  des等于dp[j]
805  k等于0
808 descriptor不等于0循环
809  如果descriptor恒等于des
810  如果only_tracecache_type不等于LVL_TRACE退出
813  :cache_type恒等于LVL_1_INST
814  l1i加等于size
815  退出
816  :cache_type恒等于LVL_1_DATA
817  l1d加等于size
818  退出
819  :cache_type恒等于LVL_2
820  l2加等于size
821  退出
822  :cache_type恒等于LVL_3
823  l3加等于size
824  退出
825  :cache_type恒等于LVL_TRACE
826  trace加等于size
827  退出
830  退出
833  k自加
839  如果new_l1dl1d等于new_l1d
842  如果new_l1il1i等于new_l1i
845  如果new_l2
846  l2等于new_l2
852  如果new_l3
853  l3等于new_l3
871  KB - valid for CPUS which support this call: 等于如果l3l3否则如果l2l2否则l1il1d
873  如果非l2cpu_detect_cache_sizes(c)
调用者
名称描述
init_intel
init_centaur
init_zhaoxin