GNU/Linux >> Linux の 問題 >  >> Linux

アライメントされていないメモリアクセスをトラップする方法は?

ARM Linux は アライメント ハンドラ のリストを保持しています 例外、

$ cat /proc/cpu/alignment 
User:           0
System:         0
Skipped:        0
Half:           0
Word:           0
DWord:          0
Multi:          0
User faults:    0 (ignored)

procfs でのみ有効です ですが、procfs のないシステムを想像するのは難しいです .これを処理する特定のコードは、alignment.c にあります。 echo 3 > /proc/cpu/alignment を使用できます Linux を修正する 命令といくつかの dmesg を提供します 出力。一般に、エミュレーションによるアライメントされていないアクセスの処理は非常に非効率的です。コードを修正することをお勧めします。 シグナル デバッガーが接続されたオプションは、例外の原因に関する手がかりを与えるはずです.

マニュアルを読んでください。;-)


Linux が修正を行ったり、アクセスについて警告したりできます。

/proc/cpu/alignment で動作を有効にすることができます。さまざまな値の説明については、http://www.mjmwired.net/kernel/Documentation/arm/mem_alignment を参照してください。

0 - Do nothing (default behavior)
1 - Warning in kernel-log with PC and Memory-Address printed.
2 - Fixup error
3 - Warn and Fixup
4 - Send a SIGBUS to the process
5 - Send SIGBUS and output Warning

Linux
  1. cPanelにアクセスする方法

  2. Linux でファイル アクセスを監査する方法

  3. ユーザー空間からカーネル空間に(可能であれば)アクセスする方法は?

  1. メモリ帯域幅を観察するにはどうすればよいですか?

  2. アプリケーションのメモリ使用量を制限するには?

  3. どのように Webmin にアクセスしますか?

  1. Pleskでウェブメールにアクセスする方法

  2. Linuxでメモリキャッシュをクリアする方法

  3. phpMyAdminにアクセスする方法