問題タブ [printk]
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.
ubuntu - ブート中にモジュールがロードされた場合、printk メッセージが表示されない
printk(KERN_ALERT "sample\n"); をいくつか追加しました。ドライバーモジュールに。これらのプリントは、ドライバーを手動で insmod すると表示されます。ただし、起動時に同じドライバーが読み込まれると、メッセージは表示されません。
$modinfo を実行したときに表示されるようにモジュールの作成者名を変更したため、起動時に同じモジュールがロードされると確信しています。モジュールはカーネル ソース パスにあり、コンパイルして $make module_install.
ubuntu 10.04 とカーネル バージョン 3.14.2 を実行していますが、何が欠けていますか?
ありがとう。
c - printk を使用してカーネル モードでデバッグする方法
Linux にいくつかのものを追加しようとしていtask_struct
ます。
この領域で、ユーザーから文字列をコピーし、それを構造体に格納しようとします。
printk
コピーした文字列を出力することを追加して、コードをデバッグしようとしました。
これはコードのデバッグ部分です。
私にとって絶対に重要なプリントは
それはうまくいきますか?
printk を理解するには:
printkが呼び出されるたびにターミナルからテストファイルを実行すると、出力が作業中のターミナルに出力されますか?
c - アプリケーションの printf メッセージを /var/log/messages に渡す方法
アプリケーションの printf ログ メッセージを /var/log/messages に渡したいです。カーネル デバッグ メッセージは /var/log/messages に表示される可能性があるため、アプリケーションの printf ログ メッセージを /var/log/messages に渡す方法がわかりません。誰でもこれを行う方法を教えてください。
linux - printk をシリアルに送信する
Linux カーネルのモジュールをデバッグしようとしています。コンソール出力をシリアルポートに送信できると聞きました。VMware で Ubuntu を実行していて、printk メッセージをホストに送信したいと考えています。シリアル接続を設定でき、echo > simething /dev/ttyS1 と入力してホストにエコーを送信できますが、コンソールの出力を ttyS1 に送信する方法がわかりません。
私の主な問題は、モジュール/カーネルがクラッシュすると、最後の printk メッセージが失われ、表示さえされず、単にバッファリングされることです。
linux - 「printk」はどのようにして現在の時刻を高解像度で取得しますか?
何かを出力するたびprintk
に、高解像度の時間が行頭の角括弧内に自動的に表示されます。printk
高解像度で現在の時刻を取得するにはどうすればよいですか? また、カーネル モジュール コードでこのような高解像度の時間を取得したいと考えていました。
linux-kernel - ブート中に printk を実装する方法
最新バージョンの Linux (linux-stable) をカスタマイズされた ARM926TEJ-S ボードに移植しており、初期化フェーズでメッセージを出力したいと考えています。そのため、カーネルの初期化フェーズで uart を機能させるにはどうすればよいかという問題に悩まされています。
init/main.c:start_kernel() で Linux バナーを印刷すると、
最終的printk()
にメッセージを印刷するために呼び出されます。私の質問は、がどのようにprintk()
実装され、どのようにprintk()
出力を uart に送ることができるかです。
そこでは uart のドライバが初期化されていないことがわかっているのでrest_init()
、start_kernel() の最後に呼び出されて初期化されます。rest_init()
その結果、ドライバーを呼び出しdo_initcalls()
、最終的に呼び出します。module_init()
そして、私はputstr("Linux の圧縮を解除しています...");を知っています。解凍フェーズでは、ファイル設定によって実装されたarch/arm/boot/compressed/debug.S
ものを使用して実装されますwaituart/senduart...
CONFIG_DEBUG_LL_INCLUDE
c - printk がカーネル ログ (dmesg) にメッセージを出力しない理由
以下で説明するように小さなカーネルモジュールコードを書きました。ubuntu 14.04
上記のモジュールをコンパイルして挿入するとinsmod
、dmesg に printk メッセージが表示されません。ただし、使用してモジュールを削除するrmmod
と、両方の printk メッセージが表示されます。
クロージャの外観で、printkのspace
後で発生していることがわかりました。\n
しかし、なぜそうなのかはわかりません。
linux - 割り込みハンドラでの Printk または I/O の危険性
Linux の割り込みハンドラで printk または (I/O) が禁止されているのはなぜですか? 割り込みハンドラの I/O が Linux システムでデッドロックを引き起こす可能性があるのはどのような状況ですか?
c - 警告: 配列添字がモジュールの配列境界 [-Warray-bounds] を超えています
コマンドライン入力を受け取る単純なモジュールを作成しています.コンパイル中に警告が表示されます
i = 2までループが実行されているように見えるため、警告が表示されるのはなぜですか。これに関するいくつかの質問を見ましたが、あまり役に立ちませんでした