本篇內(nèi)容主要講解“Linux內(nèi)核容器怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Linux內(nèi)核容器怎么使用”吧!
創(chuàng)新互聯(lián)專注于振興企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計,商城網(wǎng)站定制開發(fā)。振興網(wǎng)站建設(shè)公司,為振興等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
文件:include/linux/kernel.h
,定義如下:
/** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */#define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
功能:根據(jù)結(jié)構(gòu)體type
中成員member
的指針ptr
獲取容器結(jié)構(gòu)體type
的地址。
1)ptr
:指向結(jié)構(gòu)體成員member
的指針
2)type
:容器結(jié)構(gòu)體類型
3)member
:結(jié)構(gòu)體中的成員
1)typeof
:獲取成員member
的數(shù)據(jù)類型
2)(type *)0
:定義type
結(jié)構(gòu)體類型的0指針
3)typeof( ((type *)0)->member ) *__mptr
:即定義member
類型的指針__mptr
4)offsetof(type,member)
:計算成員member
的偏移量
5)(type *)
:定義結(jié)構(gòu)體type
指針
圖解如下:
文件:drivers/gpu/drm/rockchip/rockchip_drm_vop.c
## 1.定義結(jié)構(gòu)體vopstruct vop { struct drm_crtc crtc; ...};## 2.使用container_of(),通過結(jié)構(gòu)體vop中成員crtc的地址x,獲取vop地址#define to_vop(x) container_of(x, struct vop, crtc)## 3.初始化結(jié)構(gòu)體vop指針static int vop_hdr_atomic_check(struct drm_crtc *crtc, struct drm_crtc_state *crtc_state){ struct vop *vop = to_vop(crtc); ...}
到此,相信大家對“Linux內(nèi)核容器怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!