首页 > 其他分享 >使用sourceinsight阅读内核代码的一些问题

使用sourceinsight阅读内核代码的一些问题

时间:2024-09-18 11:23:32浏览次数:1  
标签:__ name 代码 t2 t1 v1 sourceinsight 内核 struct

工具栏格式乱了怎么办

https://blog.csdn.net/qq_23327993/article/details/115567723

Linux内核中有很多宏定义,sourceinsight不识别,导致解析出问题

https://blog.csdn.net/nust20/article/details/46486947
https://www.jianshu.com/p/0b4ad9532367
https://tjtech.me/how-to-fix-parse-too-complex-in-source-insight.html
https://blog.csdn.net/qq_41908302/article/details/131273274
https://blog.csdn.net/bestboyxie/article/details/53415487

修改:"Source Insight 4.0\c.tom"

;For Linux Kernel Code
SYSCALL_DEFINE0(name) long sys_##name(void)
SYSCALL_DEFINE1(name, t1, v1) long sys_##name(t1 v1)
SYSCALL_DEFINE2(name, t1, v1, t2, v2) long sys_##name(t1 v1, t2 v2)
SYSCALL_DEFINE3(name, t1, v1, t2, v2, t3, v3) long sys_##name(t1 v1, t2 v2, t3 v3)
SYSCALL_DEFINE4(name, t1, v1, t2, v2, t3, v3, t4, v4) long sys_##name(t1 v1, t2 v2, t3 v3, t4 v4)
SYSCALL_DEFINE5(name, t1, v1, t2, v2, t3, v3, t4, v4, t5, v5) long sys_##name(t1 v1, t2 v2, t3 v3, t4 v4, t5 v5)
__init
__initdata
__initconst
__exitdata
__exit_call
__ref
__refdata
__refconst
__init_refok
__initdata_refok
__exit_refok
__exitused
__exit
__devinit
__devinitdata
__devinitconst
__devexit
__devexitdata
__devexitconst
__used
__must_check
__compiler_offsetof(a,b)
__always_inline
__attribute__
__user
__kernel
__safe
__force
__nocast
__iomem
__chk_user_ptr(x)
__chk_io_ptr(x)
__builtin_warning
__acquires(x)
__releases(x)
__acquire(x)
__release(x)
__cond_lock(x,c)
__percpu
likely(x)
unlikely(x)
__read_mostly
____cacheline_aligned
____cacheline_aligned_in_smp
__cacheline_aligned
__cacheline_aligned_in_smp
____cacheline_internodealigned_in_smp
__cacheline_internodealigned_in_smp
__rcu
__refconst
__refdata
__reg_oper0
__reg_oper1
__bitwise
__bitwise__
__aligned_u64
__aligned_be64
__aligned_le64
__naked
__noreturn
__pure
__always_inline
DRIVER_ATTR(_name, _mode, _show, _store) struct driver_attribute driver_attr_##_name
CLASS_ATTR(_name, _mode, _show, _store) struct class_attribute class_attr_##_name
LIST_HEAD(name) struct list_head name
DEFINE_MUTEX(mutexname) struct mutex mutexname
DEFINE_TIMER(_name, _function, _expires, _data) struct timer_list _name
DECLARE_WORK(n, f) struct work_struct n
DEFINE_SPINLOCK(x) spinlock_t x
EXPORT_SYMBOL(sym)
EXPORT_SYMBOL_GPL(sym)
EXPORT_SYMBOL_GPL_FUTURE(sym)
DEFINE_IDA(name) struct ida name
DECLARE_RWSEM(name) struct rw_semaphore name
DECLARE_BITMAP(name,bits) unsigned long name[bits/32]
DEFINE_RWLOCK(x) rwlock_t x

精准导入需要的源文件

https://www.amobbs.com/forum.php?mod=viewthread&tid=5625887

设置宏定义的值

Project -> Default Project Settings -> Conditions:
image

或者:

Options->Preferences->Languages->Conditional Parsing:
image

下面这个工具可以根据内核的配置文件生成SI可以解析的配置,批量导入宏定义的值:
https://github.com/yeyuzhen/ConvertLinuxKernelConfig2SourceInsightConditionsXml

标签:__,name,代码,t2,t1,v1,sourceinsight,内核,struct
From: https://www.cnblogs.com/pengdonglin137/p/18418110

相关文章

  • Linux内核源码介绍-贡献Linux内核社区
    建议点击这里查看个人主页上的最新原文作者:陈孝松主页:chenxiaosong.com哔哩哔哩:陈孝松课程:chenxiaosong.com/courses博客:chenxiaosong.com/blog贡献:chenxiaosong.com/contributions邮箱:[email protected]交流群:544216206,点击查看群介绍点......
  • OpenHarmony WIFI代码关键目录
    OpenHarmonyWIFI代码关键目录一wpa_supplicant代码F:\CodeSpace\Openharmony_20231026\third_party\wpa_supplicant\wpa_supplicant-2.9_standard  二WIFIFramework层代码F:\CodeSpace\Openharmony_20231026\foundation\communication\wifi 三openssl代码  ......
  • 简洁优秀的代码记录
    1、简洁的队列初始化:查询对象中某个属性,存在直接返回值,不存在,初始化该属性;一般写法:varobj={};vargetQueue=(key)=>{if(!obj[key]){obj[key]=[]}returnobj[key]}精简写法:exportdefaultfunctionmitt(all:EventHandlerMap){all=......
  • HTTP 状态中200、302、403、 500代码含义?
    200-服务器成功返回网页300 -多种选择针对请求,服务器可执行多种操作。服务器可根据请求者(useragent)选择一项操作,或提供操作列表供请求者选择。301 -永久移动请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置......
  • 洛阳师范学院 ACM实验室 中秋娱乐赛“月饼代码大逃杀”题解
    题解包括C和C++两种语言_壹我要洋人死!1、直接输出即可C语言题解:#include<stdio.h>intmain(){printf("woyaoyangrensi!");return0;}C++语言题解:#include<iostream>usingnamespacestd;intmain(){ printf("woyaoyangrensi!"); return0;}......
  • 代码随想录Day3 | LeetCode 203. 移除链表元素、LeetCode 707. 设计链表、LeetCode 20
    LeetCode203.移除链表元素链表基础概念题,也可以用递归做,不过我们把递归的思想放在更能体现它的LeetCode206.反转链表#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next......
  • 代码随想录Day4 | LeetCode 24. 两两交换链表中的节点、LeetCode 19. 删除链表的倒数
    LeetCode24.两两交换链表中的节点递归思想#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswapPairs(self,head:Optional[ListNode......
  • 【模板代码的组织结构与模板的显式实例化和声明】模板代码的组织结构与模板的显式实例
    一、模板的组织结构之前对于模板,我们都是写在同一个.cpp.cpp.cpp文件下,那如果......
  • 【网络安全 | PHP代码审计】熊海cms
    原创文章,禁止转载。文章目录环境搭建代码审计文件包含漏洞SQL注入漏洞1SQL注入漏洞2SQL注入漏洞3SQL注入漏洞4SQL注入漏洞5SQL注入漏洞6XSS漏洞1XSS漏洞2垂直越权CSRF1CSRF2逻辑漏洞环境搭建https://down.chinaz.com/soft/36930.htm解......
  • Linux内核中cpu_capacity是什么?
    cpu_capacity在Linux内核中,cpu_capacity是用于表示每个CPU的处理能力的一个参数,通常用于调度器的负载均衡。它表明不同的CPU核心在计算资源分配中的相对性能,尤其在异构多核架构(如ARM的big.LITTLE架构)中,不同的核心可能具有不同的计算能力。主要概念同构和异构架构:在同构架......