pythonゲスト側のLinuxカーネルでシリアルコンソールを有効にしているときに、ホストからpythonでシリアルコンソールにアクセスするときメモです。timestampsです。読まなくて良いファイルが消えるのは良いことですね。今週もなんとか小ネタを集めて。grubたまにやる必要があったりするのでメモです。pagerを1に設定することで、出力内容が多い時に(catとかで)moreとlessみたいに1ページ毎にページ送り出来ます。setコマンドで引数渡さなければ現在の設定が見れます。今週も細かいネタを拾っていきます。重要そうなpatchはLWN.netをチェックしましょう。どれくらいのボリュームでとか、毎週ちゃんと書くのかは全く不明でございます。x86最近のgccはインラインアセンブラ内からcのgotoラベルに飛べる仕組みがあるのでそれのメモです。kernelふとvdsoで提供されている関数の一覧が見たくなったので。vdso...vdsoの領域を読んでファイルに保存2018-03-01ページングでメモリを割り当てる処理の動きを確認できるものを作ってみたlinuxLinuxのしくみの5章でページングの説明がありますね。なんとなく、この辺の挙動をエミュレートする感じのものでも作ってみようかなと思ったりしたので。リポジトリはこちらです。~実験と図解で学ぶOSとハードウェアの基礎知識」を献本いただきました。kernelカーネルをgdbでリモートデバッグできるようにするかーとか思ってやってたわけです。下記のような感じでちょっとハマってました。linux/proc/cpuinfoでcpuの機能を表示するflagsのところってどうやって名称設定してんだろ?と思ったので調べてみたメモです。調べたカーネルのバージョンはv4.14.12です。Directoryの設定を見てみます。読むカーネルはv4.14.12です。2017の9日目の記事です。なんとなくlib/を見ていたらonce.cなんてファイルを見つけて、一度だけ実行したいという時に使う関数を見つけたのでその機能についてのきじになります。2017の22日目の記事です。カーネルのコードを書いていてサイズを表示したい時にstring_get_size()を使うとお手軽に2進接頭辞(KiBとか)とSI接頭辞(KBとか)を使ったサイズの文字列を作ることができます。2017の3日目の記事です。やるよ、あるいは今からでも書いてくれる人を募集しているよ、という話でした。2017の1日目の記事です。Linuxのスラブアロケーター仕組みを多少弄りながら学んでみます。Wikipediaを参照してください。pythonpythonでなんとなく。memoryサブシステムにtest1を作ってメモリの上限を100Mで設定。linuxカーネルは4.1系です。include/linux/mm_inline.hにLRUへの登録・削除処理の実装があります。kernelLinuxのシステムコールのファジングツールとしてsyzkallerというのがあって、これはコードカバレッジを見つつ入力を変えていってくれるというファジングするツールです。試してみたのでどんな感じなのかを簡単にめも。linuxcgroupでタスクの移動というのは例えば、/sys/fs/cgroup/cpusetにfooとbarというディレクトリがあって、fooに所属しているタスクをbarに移動するとかです。ファイルを作ってデータを読めると便利なときがあったりするのでめも。今回はcgroup.cで処理を実装して、その関数をcgroup.hにて宣言。fs/proc/base.cでcgroupのほうに追加した関数を登録する形です。前回はここの2238行目のpage_counter_try_charge()を読んだのでその下からです。linuxchargeの処理としてはこの辺が重要だろうと思われる(要出典)try_charge()の処理を読みましょう。処理を見ていきますが、まず対象のmemcgがルートのmemcgだった場合は何もしません。このチェックはmem_cgroup_is_root()で行えます。linuxcommitの前にmem_cgroup_try_charge()を呼んでいるので、commitの処理では重要な関数。mem_cgroup_try_charge()自体はそんなに処理はなくて、メインなのはtry_charge()関数。memcgが無効なら何もしないで終了。v4.11を読んでて参照カウンタ用のAPIが4.11に入ったとのことなので軽くめもです。利用にはinclude/refcount.hをインクルードします。実装はlib/refcount.cです。linuxmm/memcontorl.cのmem_cgroup_charge_statistics()のとこです。カーネルは毎度ながら4.1.15。mem_cgroup_charge_statistics()のコードはこんな感じです。linuxmem_cgroup_commit_charge()から呼ばれるcommit_charge()の処理のめも。呼び出しはこうですね。mem_cgroup_commit_charge()で渡された引数がそのまま渡ります。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。