在學習linux驅動的過程中,遇到乙個巨集叫做container_of。
該巨集定義在include/linux/kernel.h中,首先來貼出它的**:
#define container_of(ptr, type, member) ()
它的作用顯而易見,那就是根據乙個結構體變數中的乙個域成員變數的指標來獲取指向整個結構體變數的指標。比如,有乙個結構體變數,其定義如下:
struct
demo_struct
;
struct demo_struct demo;
同時,在另乙個地方,獲得了變數demo中的某乙個域成員變數的指標,比如:
type3
*memp
= get_member_pointer_from_somewhere();
此時,如果需要獲取指向整個結構體變數的指標,而不僅僅只是其某乙個域成員變數的指標,我們就可以這麼做:
struct
demo_struct
*demop = container_of(
memp
, struct
demo_struct
,member3
);這樣,我們就通過乙個結構體變數的乙個域成員變數的指標獲得了整個結構體變數的指標。
JOIN用法簡述
join有以下幾種用法 left join left outer join 左向外聯接,得到左表中的所有行與右表的聯接,右表中無匹配聯接條件的值時返回空值.right join right outer join 右向外聯接,得到右表中的所有行與左表的聯接,左表中無匹配聯接條件的值時返回空值.full...
jsoncpp用法簡述
jsoncpp是乙個使用 c 語言實現的物件導向的 json 庫。jsoncpp提供的介面中有 3個核心類 reader writer value。reader 類負責從字串或者輸入流中載入 json 文件,並進行解析,生成代表 json文件的 value 物件。writer類負責將記憶體中的 va...
Screen 用法簡述
screen是一款由gnu計畫開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時連線多個本地或遠端的命令行會話,並在其間自由切換。gnu screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。1.1 會話恢復 只要screen本身沒有終止,在其內部...