タグ

LinuxとCに関するKazumi007のブックマーク (4)

  • Linuxにおけるデバイスファイルの仕組み

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

    Linuxにおけるデバイスファイルの仕組み
  • DebianでH8用のGCCをビルドする(2020年版) - Qiita

    結論 以下の組み合わせでH8/300H用のツールチェインがビルド可能。(11/4 追記:ただしnewlibの動作を実機マイコンで確認していない。GCCはH8/3664Fでの動作を確認済み) Debian 10.6 binutils-2.30 gcc-8.4.0 newlib-2.5.0 はじめに Debian/UbuntuにはH8/300H用のパッケージ(gcc-h8300-hms 3.4.6,binutils-h8300-hms 2.16.1)が用意されているものの,既にバージョンが古くnewlibもない。 また,各所で紹介されている情報も古くなりつつあるため,最低限のアップデート情報を紹介する。 準備 以下のパッケージをインストールする。 apt install build-essential libgmp-dev libmpfr-dev libmpc-dev bison flex t

    DebianでH8用のGCCをビルドする(2020年版) - Qiita
    Kazumi007
    Kazumi007 2023/02/09
    クロスコンパイラインストールにporgを使う
  • memologue - シグナルハンドラを使わないでシグナルをハンドルする

    「シグナルハンドラの中でできることは非常に限られているんですよ」というお話を1年半くらい前に書きましたが、この話には続きがあって、ある特定の条件下ではこの制限を緩和することができます。今回はその方法についての解説です。sigwait(3)という関数を使います。 ※ この話、うっかり書き忘れていました。ちょっとしたきっかけで思い出したので、暇があるうちに書いておきます。 ■「シグナルを待つ」処理 〜従来の方法〜 皆様、「シグナルの到着を待つ」処理を、次のように書いてしまっていないでしょうか? // シグナルハンドラ void handler(int signo) { // この中で使って良いのは非同期シグナルセーフ(async-signal-safe)な関数のみ }を用意して、 sa.sa_handler = handler; sigaction(SIGHUP, &sa, NULL); ..

    memologue - シグナルハンドラを使わないでシグナルをハンドルする
  • ARM gcc バッドノウハウ集: EABI と legacy ABI

    次のページ 前のページ 目次へ 8. EABI と legacy ABI 8.1 ABI とは ここでいう ABI (Application Binary Interface) とは,C コンパイラにおいて 構造体への要素の詰め込みかた 関数呼出し時に どのレジスタを関数の引数として利用し,どのレジスタに戻り値が入るか どのレジスタを呼出元でスタックに退避し,どのレジスタは呼び出し先 で破壊しても問題ないか そもそもどのレジスタをスタックポインタとして利用するか などを定義したものです. 8.2 ABI の種類 現在,ARM Linux 上で使われている ABI には以下の2つの種類があります. 従来から ARM gcc で使用されている ABI. gcc でのコンパイルオプションは -mabi=apcs-gnu です. ARM EABI ARM holdings が定義 http://w

    Kazumi007
    Kazumi007 2019/09/21
    ABI
  • 1