問題タブ [block-device]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-management - 組み込みシステムにおける zram の概念を理解する
私はzramのコンセプトが初めてです。
基本的に、zram デバイスのメモリ割り当てと組み込みシステムでの使用法を理解しています。
ディスクサイズに割り当てることができる最大サイズを見つけようとグーグルで検索しまし/sys/block/zram/disksize
たが、無駄でした。
基本的な疑問はほとんどありません。
zram を使用する手順は次のとおりです。
基本的に推奨されるディスク サイズは、合計 RAM メモリの 25% を使用することです。私のデバイスの RAM の合計サイズは 512MB です。
割り当て可能な対象
maximum size limit
は何ですか?/sys/block/zram0/disksize
zramにメモリが割り当てられる場所は、emmcまたはRAMからのものですか?
- /sys/block/zram0/disksize に 4GB を割り当てても 3.9GB を割り当てないと、mkswap がスワップ ディスクの作成に失敗するのはなぜですか?
- また、zram は RAM ベースのブロック デバイスであり、RAM ベースのブロック デバイスに光を当てることができますか?
linux-kernel - カーネル モジュール内のブロック デバイスの一覧表示
ブロックデバイスと、トレースに使用する対応する dev_t をリストするカーネルモジュールを作成しています。
以下は構造block_deviceです
bd_list は、システム内のすべてのブロック デバイスを含むリンク リストです。all_bdevs ( fs/block_dev.c ) はリストの先頭ですが、エクスポートされていないことが問題です。カーネルモジュール内でブロックデバイスを反復する方法はありますか?
linux - カーネルがドライバーのコードではなくデフォルトのブロックドライバーを使用しているのはなぜですか?
ダミーのブロック デバイスを作成するブロック ドライバー プログラムを作成しました ( sbd0
)。そのブロックデバイスのすべてのデバイス操作を登録しました: ( include/linux/blkdev.h
2.6.32 カーネルソースを参照)
ドライバープログラムをコンパイルしました。モジュールを挿入して/dev/sbd0
作成しました。次に、ドライバー コードをテストします。というわけで、以下のような申請書を書きました。
出力は次のとおりです。4096
私は疑問に思いました: ioctl を実装していませんでしたBLKBSZGET
。my を呼び出さずsbd_ioctl
、代わりにデフォルトのドライバーを使用して結果を返しました。の場合open
、それを実行し、(私が実装した)とclose
呼びます。そして、私は試しました:sbd_open
sbd_close
呼び出しましsbd_getgeo
たが、呼び出すと思いましたsbd_ioctl
。
ここに私の質問があります:
- ドライバーを実装し、デバイスを作成しました。そのデバイスで何らかの操作を実行する場合、ドライバー アプリケーションを呼び出す必要があります。しかし、いくつかのドライバー関数といくつかのデフォルトのドライバー関数をどのように使用するのでしょうか?
ioctl(fd, HDIO_GETGEO, ..)
呼び出しを呼び出しませんでし.ioctl
たが、呼び出し.getgeo
ました。これはどのように可能ですか?
c - ブロックデバイスを読み書きするにはどうすればよいですか?
ブロックデバイスを読み書きするにはどうすればよいですか? 通常のファイルのように読み書きできると聞いたので、次のようにしてループデバイスをセットアップしました
次に、ファイルでアプリを実行し、次にループデバイスを実行しました
ファイルは完全に実行されました。ループ デバイスは 0 バイトを読み取ります。どちらの場合も、FP==3 と off==0 を取得しました。ファイルは文字列の長さを正しく取得し、文字列を出力しますが、ループは私を0にして何も出力しません
ブロックデバイスを読み書きするにはどうすればよいですか?
linux - Linux 循環ビデオ バッファ
DMA 経由で GPU に書き込むか、YUV4:2:2 データ ファイルに書き込む 5MP 2592×1944 ピクセルのカメラがあります。
これは非常に標準的ではないため、ほとんどすべてのカメラ表示アプリケーションはこのデータを処理できず、記録後にのみデータを分析できます。/dev/ に 2 フレーム (2592x1944x1.5x2) 14763kb のリング バッファーを設定し、そのバッファーにビデオをダンプするというアイデアがありました。その後、video4linux プログラムを使用して標準のビデオ ストリームのようにアクセスし、必要なすべてを新しい形式に保存/変更/サイズ変更できます。
問題は、リング バッファーをセットアップし、yuv_file.data の代わりにビデオをストリーミングする方法です。
このようなものを設定する方法を教えてくれるサイトはありますか、それとも不可能ですか?
linux-kernel - Linux カーネル: シンボリック リンクの背後にある実際のパスを取得する
私はいくつかの Linux カーネルに取り組んでおり、/dev/blah/whatever という偽のパスがあり、それが /dev/block/real_device を指しています。
問題は、lookup_bdev がシンボリック リンクをたどることができないため、実際のパス (/dev/block/real_device) を取得して事前にパスをマッサージしたいので、それを lookup_bdev に渡して、エラーではなく正常に返されるようにすることです。 .
または、指定された初期パスで block_device 情報を正しく取得するその他のカーネル呼び出し。
ありがとう