linuxのメモ

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

2016-04-22から1日間の記事一覧

バッファ操作 - rb_head_page_set_normal()

概要 フラグをRB_PAGE_NORMALに入れ替える 詳細 この関数では以下の引数を受け取る 比較対象のバッファへのポインタ : head 比較元のバッファへのポインタ : prev 変更前のフラグを示す : old_flag 受け取った引数にRB_PAGE_NORMALを加えてrb_head_page_set(…

バッファ操作 - rb_head_page_set_update()

概要 フラグをRB_PAGE_UPDATEに入れ替える 詳細 この関数では以下の引数を受け取る 比較対象のバッファへのポインタ : head 比較元のバッファへのポインタ : prev 変更前のフラグを示す : old_flag 受け取った引数にRB_PAGE_UPDATEを加えてrb_head_page_set(…

バッファ操作 - rb_head_page_set_head()

概要 フラグをRB_PAGE_HEADに入れ替える 詳細 この関数では以下の引数を受け取る 比較対象のバッファへのポインタ : head 比較元のバッファへのポインタ : prev 変更前のフラグを示す : old_flag 受け取った引数にRB_PAGE_HEADを加えてrb_head_page_set()を…

バッファ操作 - rb_head_page_set()

概要 バッファのフラグを入れ替える 詳細 この関数では以下の引数を受け取る struct buffer_page型のポインタ : head headの前のバッファを指すポインタ : prev 現在のフラグを示す : old_flag 新しいフラグを示す : new_flag cmpxchg()でheadのlistメンバと…

ローカルオブジェクト - local_sub()

概要 local_t型の値に任意の値を減算する 詳細 _ASM_SUBで引数として受け取ったlocal_t型の値と任意の値を減算するアセンブラ命令を実行する

アセンブラ命令 - _ASM_SUB

asm

概要 CPUのアーキテクチャに応じた減算命令を生成する 詳細 __ASM_SIZE()にsubを渡して実行し、CPUのアーキテクチャに応じたインクリメント命令を生成する

バッファ操作 - rb_is_head_page()

概要 バッファがHead Pageか確認する 詳細 この関数では以下の引数を取得する struct buffer_page構造体のポインタ : page struct list_head構造体のポインタ : list listのnextメンバの値をRB_FLAG_MASKを反転した値でマスクした値とpageのlistメンバの値が…

バッファ操作 - rb_is_reader_page()

概要 バッファがReader Pageか確認する 詳細 この関数ではstruct buffer_page構造体のポインタであるpageを引数として取得する pageのlistメンバからstruct list_head構造体のprevメンバのポインタを取得し、取得したポインタのnextメンバのアドレスとrb_lis…

バッファ操作 - rb_inc_page()

概要 バッファを次のバッファに入れ替える 詳細 この関数ではバッファの保持されているページを示すstruct buffer_page構造体のポインタへのポインタであるbpageを受け取る bpage内のstruct list_head構造体の要素であるlistメンバから次のリストへのポイン…

バッファ操作 - rb_list_head()

概要 struct list_head構造体のアドレスを適切なアドレスに変換する 詳細 struct list_head構造体のポインタを引数として受け取り、受け取ったアドレスからRB_FLAG_MASKのbitを落として、正しいポインタを取得する これはポインタは下位4バイト境界でアライ…

リスト操作 - list_entry()

概要 アドレスから、そのアドレスが示す値が含まれる型の開始アドレスを取得する 詳細 container_of()のwrapperマクロ

ユーティリティー - container_of()

概要 アドレスから、そのアドレスが示す値が含まれる型の開始アドレスを取得する 詳細 このマクロでは以下の引数を受け取る 対象の構造体へのポインタ : ptr 対象の構造体を含む構造体の型を示す : type 対象の構造体を含む構造体のうち、対象の構造体のメン…