ユーティリティー - container_of()
概要
アドレスから、そのアドレスが示す値が含まれる型の開始アドレスを取得する
詳細
このマクロでは以下の引数を受け取る
- 対象の構造体へのポインタ : ptr
- 対象の構造体を含む構造体の型を示す : type
- 対象の構造体を含む構造体のうち、対象の構造体のメンバ名を示す : member
ptrのアドレスからoffsetof()でtype型のmemberまでのオフセット値を減算した値を算出することで、type型の変数の開始アドレスを取得する
また、返り値はtype型でキャストされるため呼び出し元の関数では正しい型のポインタとしてアドレスを取得することができる