タグ

割り込みに関するryochackのブックマーク (2)

  • Raspberry PIのGPIOのデバイスドライバ – 割り込み

    Raspberry PIのGPIOのデバイスドライバを作成します。「bcm2835 ライブラリによるスイッチ入力とLEDの点滅 」で使用したタクトスイッチを使って割り込みを発生させます。 GPIOデバイスドライバ GPIOポートに接続されたタクトスイッチから接点信号を入力するため、「Raspberry PIのGPIOのデバイスドライバ – Open 」で作成したデバイスドライバーのプログラムを基に次の修正を行います。 ヘッダファイルの追加 Linux用デバイスドライバの割り込みヘッダを追加します。 #include <linux/interrupt.h> GPIOピンデータストラクチャ 割り込み処理を行うために、次の変数を追加します。 irq_perm: GPIOピンの割り込み許可フラグ irq_flag: 割り込み立ち上がり/立ち下り信号フラグ struct raspi_gpio_dev

  • Linux カーネルと FreeBSD カーネルの割り込み処理

    わけあって、 Linux カーネルと FreeBSD カーネルの双方で仕事をした結果、 二つのカーネルで割り込み処理の実装方法が大きく異なっていることに気づきました。 ここでは、それぞれの割り込み処理の仕組みについて、 調べたことを書いてみたいと思います。 割り込みとは、主に入出力ハードウェアによって CPU に送られる処理要求のことです。 一般に、 CPU は入出力ハードウェアよりもずっと高速に動作するので、 入出力処理を行う際に、ハードウェアの動作を待つよりも、 CPU では別の処理を行なっておき、 必要になった時にハードウェア側からの通知を受けて対応する処理を行う方が、 CPU を有効に活用できます。この入出力ハードウェア側からの通知が、割り込みと呼ばれます。 割り込みは、 CPU で動作するカーネルによって処理されることとなります。 ここで、一つの割り込み処理に時間がかかると、他の

    ryochack
    ryochack 2014/06/02
    時間のかかるH/W割り込み処理に対し、FreeBSDは専用のinterrupt threadで処理。Linuxは各スレッドが持つ割り込み処理用カーネルスタックを使って処理。実行効率ではLinux、メモリリソースではFreeBSDに利点。
  • 1