問題タブ [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.

0 投票する
2 に答える
400 参照

ubuntu - ブート中にモジュールがロードされた場合、printk メッセージが表示されない

printk(KERN_ALERT "sample\n"); をいくつか追加しました。ドライバーモジュールに。これらのプリントは、ドライバーを手動で insmod すると表示されます。ただし、起動時に同じドライバーが読み込まれると、メッセージは表示されません。

$modinfo を実行したときに表示されるようにモジュールの作成者名を変更したため、起動時に同じモジュールがロードされると確信しています。モジュールはカーネル ソース パスにあり、コンパイルして $make module_install.

ubuntu 10.04 とカーネル バージョン 3.14.2 を実行していますが、何が欠けていますか?

ありがとう。

0 投票する
1 に答える
4980 参照

c - printk を使用してカーネル モードでデバッグする方法

Linux にいくつかのものを追加しようとしていtask_structます。

この領域で、ユーザーから文字列をコピーし、それを構造体に格納しようとします。

printkコピーした文字列を出力することを追加して、コードをデバッグしようとしました。

これはコードのデバッグ部分です。

私にとって絶対に重要なプリントは

それはうまくいきますか?

printk を理解するには:

printkが呼び出されるたびにターミナルからテストファイルを実行すると、出力が作業中のターミナルに出力されますか?

0 投票する
1 に答える
6130 参照

c - アプリケーションの printf メッセージを /var/log/messages に渡す方法

アプリケーションの printf ログ メッセージを /var/log/messages に渡したいです。カーネル デバッグ メッセージは /var/log/messages に表示される可能性があるため、アプリケーションの printf ログ メッセージを /var/log/messages に渡す方法がわかりません。誰でもこれを行う方法を教えてください。

0 投票する
2 に答える
2993 参照

linux - printk をシリアルに送信する

Linux カーネルのモジュールをデバッグしようとしています。コンソール出力をシリアルポートに送信できると聞きました。VMware で Ubuntu を実行していて、printk メッセージをホストに送信したいと考えています。シリアル接続を設定でき、echo > simething /dev/ttyS1 と入力してホストにエコーを送信できますが、コンソールの出力を ttyS1 に送信する方法がわかりません。

私の主な問題は、モジュール/カーネルがクラッシュすると、最後の printk メッセージが失われ、表示さえされず、単にバッファリングされることです。

0 投票する
1 に答える
101 参照

linux - 「printk」はどのようにして現在の時刻を高解像度で取得しますか?

何かを出力するたびprintkに、高解像度の時間が行頭の角括弧内に自動的に表示されます。printk高解像度で現在の時刻を取得するにはどうすればよいですか? また、カーネル モジュール コードでこのような高解像度の時間を取得したいと考えていました。

0 投票する
0 に答える
820 参照

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

0 投票する
1 に答える
6013 参照

c - printk がカーネル ログ (dmesg) にメッセージを出力しない理由

以下で説明するように小さなカーネルモジュールコードを書きました。ubuntu 14.04

上記のモジュールをコンパイルして挿入するとinsmod、dmesg に printk メッセージが表示されません。ただし、使用してモジュールを削除するrmmodと、両方の printk メッセージが表示されます。

クロージャの外観で、printkのspace後で発生していることがわかりました。\n
しかし、なぜそうなのかはわかりません。

0 投票する
1 に答える
1037 参照

linux - 割り込みハンドラでの Printk または I/O の危険性

Linux の割り込みハンドラで printk または (I/O) が禁止されているのはなぜですか? 割り込みハンドラの I/O が Linux システムでデッドロックを引き起こす可能性があるのはどのような状況ですか?

0 投票する
2 に答える
1204 参照

c - 警告: 配列添字がモジュールの配列境界 [-Warray-bounds] を超えています

コマンドライン入力を受け取る単純なモジュールを作成しています.コンパイル中に警告が表示されます

i = 2までルー​​プが実行されているように見えるため、警告が表示されるのはなぜですか。これに関するいくつかの質問を見ましたが、あまり役に立ちませんでした