Linux カーネルの学習を始めたばかりで、プラットフォーム デバイスのカーネル コードを読むときに混乱しました。どうして device を platform_device 構造体の最初のメンバーとして配置するのではなく、to_platform_device(),shift を構造体の開始に使用するのでしょうか?
struct platform_device {
const char * name;
int id;
struct device dev;
u32 num_resources;
struct resource * resource;
const struct platform_device_id *id_entry;
/* MFD cell pointer */
struct mfd_cell *mfd_cell;
/* arch specific additions */
struct pdev_archdata archdata;
};
#define to_platform_device(x) container_of((x), struct platform_device, dev)