16

strerrorカーネルに現在のような機能はありますか? 私はそれを見つけることができなかったので、私の考えはノーですが、もっと重要なことに、これについて何か議論がありましたか? エラー コード (誰もが覚えているわけではありません) を調べる必要がなくなり、システム管理者や日常の通常のユーザー ( を介して) が少し簡単になる可能性があるため、トラブルシューティングの時間を短縮できると思いますdmesg

LKML を郵送する前に、ここで質問したかったのです。私の考えでは、1 つはエラー名 (例: EINVAL)、もう 1 つは説明です。さらに、%mglibc 拡張機能は printk に追加できますが、glibc 拡張機能は を読み取るため、エラー コードを読み取る必要がありますerrno。おそらく、エラーの説明を出力%mしながら、エラー名を出力%Mできますか?

とにかく、追加する場合は、テキスト サイズが肥大化するため、.config オプションにする必要があります。strerrorサイズは、エラー名 (現在は 1 から 133) を単一の文字列に格納し、各文字列の間に null ターミネータを置き、スロー(文字列を反復処理して null ターミネータをカウントすることを強制) するだけで縮小できます。これは問題ではありません。内部エラー 512 ~ 529 は、別の文字列にする必要があります。次に、何もコピーする必要なく、null で終わる文字列への直接ポインターを返すことができます。私の計算では、これはエラー名に約 1322 バイト、説明に 3540 バイトかかります (各エラーの #define の後のコメントに現在含まれているものに基づいて、現在欠落しているエラーには「説明なし」を追加します)。

次に、config-disabled の場合、printk%mは単に解釈され%d、何も出力され%Mない (またはそのようなもの) 可能性があります。

4

2 に答える 2

7

いいえ、ありません。ただし、エラー コードのリストはinclude/asm-generic/errno.hおよび で確認できますinclude/asm-generic/errno-base.h。数が多すぎない (200 未満) ため、開発中にそれらを習得するのはそれほど難しくありません。

于 2015-07-24T19:53:16.940 に答える