在 研究 generic led driver 時,在 led_set function 裡面常看到 container_of function
(drivers/leds/leds-ams-delta.c)
struct ams_delta_led {
struct led_classdev cdev;
u8 bitmask;
};
struct ams_delta_led *led_dev = container_of(led_cdev, struct ams_delta_led, cdev);
假設Linux驅動程式只知道某一結構成員的位址,該驅動程式便可使用container_of巨集,將已知某一結構成員的位址計算出該結構的起始位址
–> container_of( 已知結構成員位址,結構名稱 ,已知結構成員在結構內的名稱)
回傳 此結構的起始位址 ,也就是結構的位址
可以參考下面的blog
http://adrianhuang.blogspot.tw/2010_01_01_archive.html
container_of function in linux
分類:linux