[Suzaku:01667] Re: Linuxフリーズ時の調査方法について
菊地 義和
email@hidden
2009年 10月 29日 (木) 09:46:29 JST
小南様
菊地です。御世話になります。
ご指定くださいましてありがとうございます。
> 以下のコードは、コンパイルが可能なソースコードからコピー
> アンドペーストされたものでしょうか。
コードイメージをお伝えするため、抜き出しました。
> 0に初期化しているのは変数"llpnct"であり、それ以外では
> 変数"lpcnt"が使われています。
>
>> for(llpcnt=0; lpcnt<18; lpcnt++){
大変申し訳ありません。
私のタイプミスです。
正しくは、次のとおりです。
for(lpcnt=0; lpcnt<18; lpcnt++){
>
> 変数の型の宣言の部分も含めたコードを示してもら
> えませんか。
>
次のようにしておりました。
volatile int lpcnt;
volatile unsigned long tmp ;
int mscnt;
for(lpcnt=0; lpcnt<18; lpcnt++){
for( mscnt=0; mscnt<(18*9+1)*5; mscnt++ ) { ←ここが
tmp = ioread32( adr ); ←問題の
if( tmp == 0){ ←箇所
break; ←です。
} ←
udelay(192); ←この時間に注意
} ←
{
tmpとlpcntの関係による条件分析と表示
(if文とprintk文による状態3バイト表示)
}
条件ごとの実施したい処理
}
ご指摘の件、上記のように変数に対する型が不一致の箇所が
ありました。一度、初心に帰りコードを見直します。
その上で改めてご報告させてください。
以上
----- Original Message -----
From: "yasuo kominami(gmail)" <email@hidden>
To: "菊地 義和" <email@hidden>; "SUZAKU general discussion list"
<email@hidden>
Sent: Wednesday, October 28, 2009 8:25 PM
Subject: Re: [Suzaku:01665] Re: Linuxフリーズ時の調査方法について
> 菊地様
> 皆様
>
> こちらには初めて投稿します。
> 小南と申します。
>
>
> 以下のコードは、コンパイルが可能なソースコードからコピー
> アンドペーストされたものでしょうか。
>
> そうであるならば、明らかにおかしい点があります。
>
> 一番外側のfor文で0に初期化している変数と、それ以外で
> 使われている変数が異なっています。
>
> 0に初期化しているのは変数"llpnct"であり、それ以外では
> 変数"lpcnt"が使われています。
>
>> for(llpcnt=0; lpcnt<18; lpcnt++){
>
> コンパイル可能であるならば、変数"lpcnt"は、このfor文
> に来るまでに何らかの値が設定されているか、未初期化
> のままではないかと思います。
>
> また可能性だけでいうと、2番目のforループも、もし
> 変数"mscntの型がchar型(符号付き、符号なしのどちら
> でも)ならば、判定条件がchar型であらわされる範囲
> も大きい値と比較することになるため、常に真になり、
> 無限ループになります。
>
> 変数の型の宣言の部分も含めたコードを示してもら
> えませんか。
>
>
> 2009/10/28 菊地 義和 <email@hidden>:
>> yashi さま
>>
>> 菊地です。御世話になります。
>>
>> 確認してみました。
>>
>> コードは次のようにしました。
>> for(llpcnt=0; lpcnt<18; lpcnt++){
>> for( mscnt=0; mscnt<(18*9+1)*5; mscnt++ ) { ←ここが
>> tmp = ioread32( adr ); ←問題の
>> if( tmp == 0){ ←箇所
>> break; ←です。
>> } ←
>> udelay(192); ←この時間に注意
>> } ←
>> {
>> tmpとlpcntの関係による条件分析と表示
>> (if文とprintk文による状態3バイト表示)
>> }
>> 条件ごとの実施したい処理
>> }
>>
>> 上記「←ここが」のfor文から抜けないように見えます。
>>
>> コードイメージに「この時間に注意」と書きましたが
>> その設定時間が短いと停止してしまうように感じました。
>>
>> 「ioread32( adr )」は余り短い間隔で呼び出すことは
>> よくないのでしょうか。
>>
>> アドバイス宜しくお願いします。
>>
>> 以上
>>
suzaku メーリングリストの案内