タグ

Linuxとkernelに関するmsdyのブックマーク (51)

  • Linuxで動くNICドライバの開発をしている - BYB

    概要 おことわり 流れ [前半]:NICドライバ実装に必要な作業 insmod/rmmod 時のエントリポイントとなる関数を用意 pci_diriver構造体を定義して、ドライバを登録 net_deviceとして登録 net_deviceハンドラ関数を用意してハンドラテーブルに登録 割り込みの定義(未動作確認) MMIOレジスタを適切に初期化して、実際にパケットを処理する部分を書いていく(未実装) ハンドラとスケジューリング [後半]:Linuxカーネル関連で詰まったところ insmod時のカーネルクラッシュ インターフェースのstateがUPにならない問題 ソースコード さいごに 概要 Linuxで動くe1000eドライバを開発しようとしており、ドライバと紐付けたNICのstateがupになるところまで進めました。 個人的に忙しくなった都合で一旦ここでプロジェクトを止めるため、備忘録とし

  • 【Linuxカーネルを読む】ChatGPTで爆速コードリーディング - Qiita

    はじめに OpenAIによって開発されたChatGPTが話題になっています。特に、2023年3月14日に公開された最新モデルであるGPT-4は、これまで私達がAIに持っていた認識を根底から覆したのではないでしょうか? 私は、「普通に人間とやりとりしているのと変わらんやん…」と率直に驚きました。 エンジニアの業務の中でも、自動コーディング支援、技術的課題の壁打ち相手、ドキュメント自動生成、学習支援等さまざまな用途に活用する可能性を皆さん検証している段階です。私もその波に乗っている真っ最中です。 そこで今回は、ソースコードリーディングをChatGPTをメンターにしたら爆速にできるのではないか?という仮説を検証してみました。 そしてどうせやるなら、ソースコードリーディングのハードルの高さナンバーワン(個人調べ)の「Linuxカーネル」を題材にしてみました。 なお、使用したモデルはGPT-4です。

    【Linuxカーネルを読む】ChatGPTで爆速コードリーディング - Qiita
  • Linuxにおけるデバイスファイルの仕組み

    Linuxにおけるデバイスファイルはデバイスをファイルという概念を通して扱えるようにしたものです。デバイスファイルは通常のファイルと同様に読み書きを行うことができます。しかし実際には、その読み書きはデバイスドライバを通じてデバイスの制御に変換されます。 この記事では、デバイスファイルへの読み書きがどのようにデバイスの制御に変換されるのかを説明します。デバイスファイルはデバイスドライバとファイルの2つのコンポーネントに依存したものであるので、最初にデバイスドライバ、次にファイルについて説明し、最後にデバイスファイルがどのようにデバイスドライバと結び付けられるかを解説します。 この記事の内容は主に詳解 Linuxカーネル 第3版及びhttps://github.com/torvalds/linux/tree/v6.1によります。 目次 デバイスドライバ デバイスドライバの実例 read_wri

    Linuxにおけるデバイスファイルの仕組み
  • Linuxカーネルから見た「コマンド名」

    はじめに Linuxを使っているみなさんは普段からLinux上で様々なコマンドを実行していると思います。それらを識別するときに「コマンド名」という単語を使っていると思いますが、文脈によってこの単語が意味するものは異なります。記事ではLinuxカーネルがいうところのコマンド名がどういうものかについて書きます。 一番最初に短い結論、その次に具体的な説明、そして最後にこれについて調べようとしたきっかけ、およびその後の調査プロセスについて書きます。 結論 Linuxカーネルから見たコマンド名は実行ファイル名のbasename(ファイル名からディレクトリ部分を除いたもの)の先頭15バイト カーネルのメモリ内のプロセス(正確にはカーネルレベルのスレッド)ごとに存在するtask_structという名前の構造体の中のcommという16バイトのフィールドにNULL終端文字列として格納されている カーネルの

    Linuxカーネルから見た「コマンド名」
  • 動かしながらゼロから学ぶLinuxカーネルの教科書

    価格:2800円+税 発売:2020年9月10日 Linuxの心臓部にあたるカーネルについて理解を深め、Linux格的に学んでいこうという人のための「初めて読むLinuxカーネルの専門書」です。 サーバーOSとしてのLinuxを学ぼうとしても、Linuxの専門書は難しく、ステップアップに手ごろなが見つかりづらいのが現実です。 そこで書では系統立てた章立てと、いくつもの実験を盛り込んだ構成にすることで、Linuxの中核となるカーネルの仕組みを分かりやすく丁寧に解説しました。OSとしてのLinuxがどのように動いているのかが分かります。 1章と2章では基礎となる部分を大きくページを割いて紹介。3章ではLinuxカーネルのソースコードから実際に動く状態に組み立てる「ビルド」の操作を紹介します。4章以降では、3章までに学んだ知識や手法に基づき、Linuxカーネルの仕組みを解説していきます。

  • Linuxカーネルで学ぶC言語のマクロ - 覚書

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

    Linuxカーネルで学ぶC言語のマクロ - 覚書
  • Linux Kernel ~ 割り込み処理 ~ - レガシーガジェット研究所

    概要 「詳解Linux Kernel」を参考にVersion 2.6.11のコードリーディングをしていく。CPUのアーキテクチャは書籍に沿ってIntelのx86とする。 今回は割り込み処理について見ていく。(*nは参考文献のn番目に対応する) 割り込み処理 例外ではほとんどの場合その例外の発生元となっているカレントプロセスにシグナルを送信することで処理する。例外処理もシグナルを受け取るまでは遅延される。 しかし割り込みの場合には別の無関係なプロセスが動作している際に発生することがあり、単純にカレントプロセスにシグナルを送信するだけではない。 割り込みは大きく3種類に分類される。 I/O割り込み 当該割り込みでは割り込みに対応する動作を決定するために割り込みハンドラからデバイスに対して問い合わせを行う必要がある。 タイマー割り込み ローカルAPICタイマや外部タイマなどが発生させる割り込みで

    Linux Kernel ~ 割り込み処理 ~ - レガシーガジェット研究所
  • Linuxカーネル4.0が登場 - 再起動せずにパッチ適用が可能に

    Linus Torvalds氏は4月12日(米国時間)、「Linux-Kernel Archive: Linux 4.0 released」において、Linuxカーネルの最新安定版となる「Linux カーネル 4.0」の公開を伝えた。メジャーバージョンが4へ繰り上がっているが、今回のバージョンは変更点が少なく、"ちょっとした"リリースとされている。より大きな変更は次のバージョンとなるLinuxカーネル4.1で行われる見通し。 カーネル4.0はそれほど変更点のないバージョンとのことだが、「Linuxカーネル 4.0」はシステムを再起動することなくカーネルにセキュリティパッチなどを適用できる機能が追加された点で注目される。この機能は長い間Linuxカーネルへのマージが期待されてきた機能だ。この機能により、今後はLinuxサーバを再起動することなくセキュリティアップデートを適用できるようになる。

    Linuxカーネル4.0が登場 - 再起動せずにパッチ適用が可能に
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • masami Wiki*

    静的ルーティングテーブル Linuxでは、フォワーディングインフォメーションベース(fib) という名前が付けられている。 大きなルーティング情報を高速に検索できるよう下図のような構成になっている。 ルーティング情報は、各ネットマスク毎にゾーンに分割され管理される(fn_zone構造体)。 各ゾーンでは、ルーティング情報(fib_node)がハッシュ管理される。 #ref(): File not found: "img91.gif" at page "TIPS/Linux/kernel/ipv4ルーティング処理" ルーティング情報検索時(fn_hash_lookup関数)にはネットマスクの大きい方(fn_zone_listに継っているfn_zone)から順に検索を開始する。 各ゾーン毎にhash管理されているfib_nodeに目的とするものがないかチェックを行い、目的のものが見つかった場合

    masami Wiki*
  • 2012 年 7 月 1 日のうるう秒挿入時に発生した Linux カーネルの不具合に関する情報

    更新履歴 2012-08-28: URL 公開 2012-08-29: futex、hrtimer、MySQL の発生条件、NTP SLEW モードに関する @odhrfm さんからの情報、キーワード更新、その他いろいろ細かい修正 2012-08-30: 参考リンク追加 2012-09-01: LKML まとめシートの thread#50 を追加 2012-09-03: SLES カーネルの更新情報、per-cpu についての記述、blockdiag によるブロック図を追加 2012-09-11: LKML まとめシートの thread#52, #53 を追加 2012-09-12: LKML まとめシートの thread#54 〜 #58 を追加 はじめに 日時間 2012 年 7 月 1 日 9:00 にうるう秒が挿入されましたが、その際 Linux カーネルに起因する不具合により、

  • Linuxカーネル Hacks

    第一線で活躍するカーネルハッカーたちが贈る渾身の書下ろしHack集。カーネルハックの神髄と魅力を紹介します。カーネルの基から、CPU/メモリ/プロセスなどのリソース管理、ファイルシステム、ネットワーク、仮想化、省電力、デバッグ、プロファイリング、トレースなど、扱うトピックは多岐に渡ります。カーネルチューニングの際、大いに役立つ実用的なHackを満載。カーネルハックの醍醐味が存分に味わえる一冊です。 関連ファイル 8章サンプルコード Hack#13サンプルコード Hack#20サンプルコード Hack#27サンプルコード 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷

    Linuxカーネル Hacks
  • [Linux] /proc/stat で出力されるcpuの10個目の値ってなんだ? - スタジオ・アルカナ技術ブログ

    こんにちわ。エンジニアの吉田です。 Linuxで cat /proc/stat が出力するcpuの値を見ていたところ、マニュアルに載っていない 10個目の値があったので、なんだろうと思い調査してみました。 (ちなみに、確認していたLinuxのKernelのバージョンは2.6.35です。) まず、cat /proc/stat の結果から cpu という文字列でgrepした結果が以下のような感じです。 [root@localhost ~]# cat /proc/stat | grep cpu cpu  7217 6329 25998 154652671 39215 0 422 6715 0 0 cpu0 4356 4567 14124 77298971 33018 0 130 4617 0 0 cpu1 2860 1762 11874 77353700 6196 0 292 2097 0 0

  • iproute2+tcを使って1台で複数インターネット接続

    ルーティングテーブルを確認する ルーティングテーブルは、おおむね次のような内容です。 # /sbin/route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0 210.160.79.96 * 255.255.255.240 U 0 0 0 eth1 210.163.168.144 * 255.255.255.240 U 0 0 0 eth2 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default 210.160.79.97 0.0.0.0 UG 0 0 0 eth1 「Desti

  • デバイス・ドライバ

    情報学類 オペレーティングシステムII 2007年02月06日 筑波大学システム情報工学研究科 コンピュータサイエンス専攻, 電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp> このページは、次の URL にあります。 http://www.coins.tsukuba.ac.jp/~yas/coins/os2-2006/2007-02-06 あるいは、次のページから手繰っていくこともできます。 http://www.coins.tsukuba.ac.jp/~yas/ http://www.cs.tsukuba.ac.jp/~yas/ ■復習 オペレーティング・システム は、2つのインタフェースを、うまくつなぐもの。 ■デバイス 周辺装置。コンピュータの箱の中に内蔵されている部品やケーブルで外で接続 する部品。普通は、CPU とメモリ以外のもの。 アプリケーションからの

  • カーネルモジュールを作る

    ○ はじめに Linux® でのデバイスドライバは、カーネルに静的にリンクする形式と、動的にロードすることができるモジュール形式で作成することができます。 Webではカーネルモジュールの作成方法を説明します。 "C 言語によるプログラミングでは main() 関数から実行される" という約束事があるように、モジュールプログラミングにもこうしなければならないという約束事があります。 ここでは、簡単なモジュールを作ってみることでモジュールプログラミングに最低限必要な知識を説明します。 サンプルプログラム サンプルプログラムの説明 複数ファイルに分割して作成する printk の使い方 kmalloc / kfree によるメモリの確保 / 解放 module_init / module_exit マクロについて ○ サンプルプログラム カーネルへのロードおよびカーネルからのアンロードの

  • LinuxDriverへの道21? - CRS Wiki

    LinuxDriverへの道20? 割り込みを利用します ハードウェアは、非同期的に動作します。 またアレな例でいくと、こちら*1からデートを申し込むって感じです。いままでは、呼び出されてデートしていましたが、逆にこちらに何かがたまってきたら、呼んでみるっていう感じです。 それを、「割り込み」といいます。 相手もこちらを愛してくれているので、基的にすぐ対処してくれます。しかも、こちらのわがままを聞いてくれるという、なんともいい人です。 また、こちらの連絡の仕方によってある程度できることも限られてきます。たとえば もうほとんど押しかけてしまうような状態 非常に強く・早い要求、他のものを中止させる 高速ハンドラ 普通は使わない ほかの割り込みをすべて中止させて実行させる。 時間計測に利用している 特別に理由がない限り利用しない 電話で、今すぐ声が聞きたい感じ。次の区切りぐらいに、ゆっくり?

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 初期化処理

    キャラクタ型デバイスドライバの初期化処理は次のような順番で行う。 デバイス番号の設定 キャラクタ型デバイスドライバの登録 キャラクタ型デバイスドライバの活性化 デバイス番号の設定は次のように行う。 メジャー番号とマイナー番号を合わせて「デバイス番号」と呼び、dev_t 型で表わす。 未使用のメジャー番号とマイナー番号を見つける場合には、次のような alloc_chrdev_region関数を使う。 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name); 各引数(パラメータ)は次のような意味を持つ。 devは、カーネル内部で割り当てたデバイス番号。 baseminorは、使用したいマイナー番号の開始番号。 countは、連続するデバイス番号の総数。 nameは、デバ

  • Linux-2.6デバイスドライバ - Silicon Linux Wiki

    カーネル関連 Linux-2.6カーネルやデバイスドライバ関連のメモ まだメモのレベルなので間違ってるかもしれません。 linux-2.6のコンパイル make xconfig には Qtライブラリが必要 # apt-get install libqt3-dev linux-2.6でモジュールを操作するにはmodule-init-toolsが必要。 従来の modutils の置き換え # apt-get install module-init-tools ↑ configのメモ Loadable module support ---> [*] Module unloading を有効にしないと rmmod 出来なくなる [ ] Preemptible Kernel プリエンプション ↑ linux-2.6デバイスドライバのコンパイル、ロード、アンロード linux-2.6のデバイスドラ