linuxのメモ

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

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

バッファ操作 - __rb_page_index()

概要 バッファのデータを保持するアドレスを取得する 詳細 この関数ではstruct buffer_page構造体に含まれるstruct buffer_data_page構造体のpageメンバのdataメンバの指定したindexのアドレスを取得する struct buffer_data_page構造体のdataメンバはchar型…

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

概要 local_t型の値に任意の値を加算し、結果を取得する 詳細 _ASM_XADDで引数として受け取ったlocal_t型の値と任意の値を交換して加算するアセンブラ命令を実行する 任意の値は関数内のローカル変数に保持し、引数として受け取った任意の値は交換加算命令に…

アセンブラ命令 - _ASM_XADD

asm

概要 CPUのアーキテクチャに応じた値を交換する加算命令を生成する 詳細 __ASM_SIZE()にxaddを渡して実行し、CPUのアーキテクチャに応じた値を交換する加算命令を生成する

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

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

アセンブラ命令 - _ASM_ADD

asm

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

バッファ操作 - test_time_stamp()

概要 有効なタイムスタンプのデータを保持しているか確認する 詳細 タイムスタンプの差分を示す数値を受け取り、引数の値の27bit以降のbitが立っていた場合は1を、それ以外の場合は0を返す これはタイムスタンプの差分を示す数値は27bit以下のbitに保持され…