linuxのメモ

Linux kernelの実装を解説していきます (対象ver 4.5)

バッファ操作 - rb_list_head()

概要

struct list_head構造体のアドレスを適切なアドレスに変換する

詳細

struct list_head構造体のポインタを引数として受け取り、受け取ったアドレスからRB_FLAG_MASKのbitを落として、正しいポインタを取得する

これはポインタは下位4バイト境界でアライメントされるため、通常下位2bitは使用しないがこの領域を有効活用するためにこの領域をフラグの保存に使用しているため保存されているデータを直接ポインタとして活用できないためにこの処理が必要になる