strerror
カーネルに現在のような機能はありますか? 私はそれを見つけることができなかったので、私の考えはノーですが、もっと重要なことに、これについて何か議論がありましたか? エラー コード (誰もが覚えているわけではありません) を調べる必要がなくなり、システム管理者や日常の通常のユーザー ( を介して) が少し簡単になる可能性があるため、トラブルシューティングの時間を短縮できると思いますdmesg
。
LKML を郵送する前に、ここで質問したかったのです。私の考えでは、1 つはエラー名 (例: EINVAL
)、もう 1 つは説明です。さらに、%m
glibc 拡張機能は printk に追加できますが、glibc 拡張機能は を読み取るため、エラー コードを読み取る必要がありますerrno
。おそらく、エラーの説明を出力%m
しながら、エラー名を出力%M
できますか?
とにかく、追加する場合は、テキスト サイズが肥大化するため、.config オプションにする必要があります。strerror
サイズは、エラー名 (現在は 1 から 133) を単一の文字列に格納し、各文字列の間に null ターミネータを置き、スロー(文字列を反復処理して null ターミネータをカウントすることを強制) するだけで縮小できます。これは問題ではありません。内部エラー 512 ~ 529 は、別の文字列にする必要があります。次に、何もコピーする必要なく、null で終わる文字列への直接ポインターを返すことができます。私の計算では、これはエラー名に約 1322 バイト、説明に 3540 バイトかかります (各エラーの #define の後のコメントに現在含まれているものに基づいて、現在欠落しているエラーには「説明なし」を追加します)。
次に、config-disabled の場合、printk%m
は単に解釈され%d
、何も出力され%M
ない (またはそのようなもの) 可能性があります。