kset_get函数-关于linux 内核函数 kset_get的疑问,望大神解答

问题描述

关于linux 内核函数 kset_get的疑问,望大神解答
kset_get函数定义如下:
static inline struct kset *kset_get(struct kset *k)
{
return k ? to_kset(kobject_get(&k->kobj)) : NULL;
}
static inline struct kset *to_kset(struct kobject *kobj)
{
return kobj ? container_of(kobj struct kset kobj) : NULL;
}
该函数是获取k结构体指针指向的结构体首地址。
有一点我不明白的是这个函数先获取k—>kobj的地址,然后传给 container_of宏定义,通过这个宏定义再获取k指向的结构体的首地址。这不是绕了一圈又绕回来了,内核这么做意义何在?

以上理解可能存在错误,望大神指教。

时间: 2024-08-03 02:20:36

kset_get函数-关于linux 内核函数 kset_get的疑问,望大神解答的相关文章

新手求助!树莓派内核编译时出错!求大神解答

问题描述 新手求助!树莓派内核编译时出错!求大神解答 树莓派编译时显示重复的case常量 找到相应代码有下面这样的说明,但是不知道该怎么改,有没有知道的大神,求教啊-- 解决方案 你的源码跟编译环境是否匹配

指针-求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢!

问题描述 求大神解答一下linux内核编译时键盘驱动模块出现了问题!新手求助!谢谢! 编译的时候,就出现了这几个错误,然后我就一直不能编译内核, 估计是指针的问题,但是我又不知道应该如何解决, 已经卡了我差不多两个星期了,一直都解决不了,跪求大神指点! 谢谢! 解决方案 在编译之前,有没有用#cp -f config_tq板的具体的名字 .config复制tq板的配置文件?

linux内核-关于Linux内核看门狗的疑问

问题描述 关于Linux内核看门狗的疑问 在内核源码中,Linux内核看门狗线程的调度策略是SCHED_FIFO,而我自己的内核模块中调度策略默认为SCHED_NORMAL,按理说FIFO比NORMAL的优先级要高,可为什么我自己模块中的死循环还是让看门狗饿死了,求解释.

c-CLIPS函数的一些问题,求大神解答

问题描述 CLIPS函数的一些问题,求大神解答 (deffunction WINES::wine-sort (?w1 ?w2) (< (fact-slot-value ?w1 certainty) (fact-slot-value ?w2 certainty))) (deffunction WINES::get-wine-list () (bind ?facts (find-all-facts ((?f attribute)) (and (eq ?f:name wine) (>= ?f:cer

c++-system()函数为什么在这里会出错呢?望大神指点

问题描述 system()函数为什么在这里会出错呢?望大神指点 第一次照猫画虎的写了个win32程序,打算在程序中用system()执行外部命令,但好像有问题,不知道为什么.下面是代码,有点乱,请不要介意. #include #include #include #include #include "resource.h" const char szClassName[] = "myWindowClass"; NOTIFYICONDATA nid ; LRESULT

调用函数-一道C语言的题目,求大神解答

问题描述 一道C语言的题目,求大神解答 输入一个正整数,逐位分割该数的每一位数字,求由数字所构成的最大整数.例如:输入624891,得到最大整数:986421.要求定义和调用函数计算并返回一个x可构成的最大整数. 解决方案 #include #define N 20 int fun(int n) { int x,t,s[N]={0},i,j,len; for(len=0;x!=0;len++) { x=n/10; s[len]=n%10; n=x; } for(i=0;i<len-1;i++)

mfc-MFC的Ondraw函数上加了一些代码后,最大化最小化都会被Asserted?求大神解答!

问题描述 MFC的Ondraw函数上加了一些代码后,最大化最小化都会被Asserted?求大神解答! 加了被注释的代码后就会asserted... void C技能实践View::OnDraw(CDC* pDC) { C技能实践Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 /* static int i = 0; m_chessboard.LoadBitmap(I

c++-C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突

问题描述 C++中以指针作为函数参数修改实参值得问题,求大神解答下!为什么老是提示修改内存地址值冲突 #include using namespace std; void g(char* p) { int i=0; char* a=p; char* b="dcba"; for(i=0;i<4;i++) { *a=*b; a++; b++; } } void main() { char* x="abcd"; char* p=x; g(p); cout<&l

函数-大神解答 jQuery deferrd resolve done

问题描述 大神解答 jQuery deferrd resolve done var defer = jQuery.Deferred(); defer.done(function(a,b){ return a * b; }).done(function( result ) { console.log("result = " + result); }).then(function( a, b ) { return a * b; }).done(function( result ) { co