- 主题:代码自身如何知道运行在内核态?
场景:
对bsp代码进行插桩,有些运行在内核态,有些运行在用户态。 插桩的时候,往位图(共享内存,用户态分配)里面写路径信息。 针对bsp提供的API,做各种测试。 用户态通过调用API的方式,bsp执行插桩代码,统计覆盖情况。
问题:
剥离用户态程序、内核态程序,分别做处理,太麻烦了。 想用一个统一的方式,用户态bsp执行插桩,直接写入到共享内存(位图),内核态bsp知道自身在内核态(做一层转换)。 于是,就有了题目问题。
希望各位指点一二。 谢谢~
--
FROM 117.147.70.*
不太可能,否则大家都直接写用户态程序当内核驱动用了,那可好调试多了
二者的内存模型和可依赖的库都十分不同,(至少在目前)不存在统一开发的可能性
【 在 saynothing 的大作中提到: 】
: 场景:
: 对bsp代码进行插桩,有些运行在内核态,有些运行在用户态。 插桩的时候,往位图(共享内存,用户态分配)里面写路径信息。 针对bsp提供的API,做各种测试。 用户态通过调用API的方式,bsp执行插桩代码,统计覆盖情况。
: 问题:
: ...................
--
FROM 125.33.245.*
bsp不光光驱动,内存管理模块,还有loader之类
基本整个控制硬件(芯片系统)
感觉应该有办法
【 在 Bernstein 的大作中提到: 】
: 不太可能,否则大家都直接写用户态程序当内核驱动用了,那可好调试多了
: 二者的内存模型和可依赖的库都十分不同,(至少在目前)不存在统一开发的可能性
:
--
FROM 211.138.116.*
用内嵌汇编运行特权指令来测试所处的处理器运行等级。
--
FROM 125.71.196.*
不一定需要运行时检测吧?编译时不能通过#ifdef搞定?编译的人总会知道自己编译的是user还是kernel用的module吧
--
FROM 114.245.195.*
嗯嗯。 一到问题上容易犯困:(
【 在 z16166 的大作中提到: 】
: 不一定需要运行时检测吧?编译时不能通过#ifdef搞定?编译的人总会知道自己编译的是user还是kernel用的module吧
--
FROM 211.138.116.*
thanks~
【 在 poocp 的大作中提到: 】
: 用内嵌汇编运行特权指令来测试所处的处理器运行等级。
--
FROM 211.138.116.*
用户模式下异常崩溃了代码也不知道呀
【 在 poocp 的大作中提到: 】
: 用内嵌汇编运行特权指令来测试所处的处理器运行等级。
: --
发自「今日水木 on iPhone XS Max」
--
FROM 119.3.119.*
x86上可以用SEH/VEH捕捉,能知道。某些嵌入式环境不知道有没对应的捕捉机制
【 在 andrewhxism 的大作中提到: 】
: 用户模式下异常崩溃了代码也不知道呀
: 发自「今日水木 on iPhone XS Max」
--
修改:z16166 FROM 114.245.195.*
FROM 114.245.195.*
多进程不就行了,检测进程观察测试进程是崩溃了还是完成了。
【 在 andrewhxism 的大作中提到: 】
: 用户模式下异常崩溃了代码也不知道呀
--
FROM 118.122.107.*