linuxのメモ

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

CPU操作 - percpu_to_op()

概要

第一引数を出力、第二引数を入力として任意のアセンブラ命令を実行する

詳細

以下の引数を受け取る

  • オペコード : op
  • 出力値 : var
  • 入力値 : val

valのデータ型をvarのデータ型にキャストしアセンブラ命令を実行するが、出力値を指定する際に__percpu_arg()マクロに0を引数として渡して実行した結果を使用している

また、opにはvarのサイズに応じてb, w, l, qのsuffixが付加されるが、sizeが1, 2, 4, 8以外の場合は__bad_percpu_size()が実行される