タグ

listとkernelに関するyukimori_726のブックマーク (2)

  • linuxカーネルが提供するリストの使い方について - mmitouの日記

    linuxカーネルではlinux/list.hでリストを提供している。 リストはlist_head構造体と、その構造体のオブジェクトを操作するための関数によって構成される。 list_head構造体は以下のように定義されているため、一見しただけでは任意のデータをリストとしてどのように使用すればいいのかわからない。 struct list_head { struct list_head *next, *prev; }; 以下にリストの使い方を説明する。 1. リストの要素となる構造体を宣言する。 linuxカーネルの提供するリストを使う場合には、リストの要素となる構造体を宣言する。 リストの要素となる構造体は、struct list_head型のオブジェクトをメンバーに持つ。 例えば、int型の変数idをリストで扱う場合には以下のように構造体を宣言する。 struct test_data {

    linuxカーネルが提供するリストの使い方について - mmitouの日記
  • Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ

    Linuxカーネルのコードを読んでて、なるほど〜と思うことはよくあるけど、その中でも特に今までの考え方をぶち壊してくれたのはなんだっけと思ったところ、やっぱりリスト構造かなと言うところ。 c言語でリスト構造を作る場合、一般的な教科書方式だと↓のようにデータとnextポインタは密結合になってると思います。これの場合、struct foobarのポインタをnext要素に使っているので、他の構造体(例えば、struct hogehoge)で同じことをしようとすると、その構造体ではstruct hogehoge *nextというメンバ変数を持つ必要があります。 ヘッド要素はstruct foobarです。 struct foobar { int n; char s[64]; struct foobar *next; }; struct foobar head; Linuxカーネルの場合、データとリ

    Linuxカーネルのコードを読んで勉強になったこと - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ
  • 1