mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
PollingInstallWlanFirmWare関数をスレッドセーフに修正。
(マリクラバグNo.660の原因と思われる箇所の修正。) git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@2768 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
parent
a938401b08
commit
6fc7987341
@ -668,8 +668,8 @@ BOOL PollingInstallWlanFirmware( void )
|
|||||||
if( GetWlanFirmwareInstallResult( &result ) ) {
|
if( GetWlanFirmwareInstallResult( &result ) ) {
|
||||||
if( result == WLANFIRM_RESULT_SUCCESS ) {
|
if( result == WLANFIRM_RESULT_SUCCESS ) {
|
||||||
OS_TPrintf( "WLFIRM load finished.\n" );
|
OS_TPrintf( "WLFIRM load finished.\n" );
|
||||||
s_isFinished = TRUE; // <20>³<EFBFBD>í<EFBFBD>I—¹
|
|
||||||
s_result = result;
|
s_result = result;
|
||||||
|
s_isFinished = TRUE; // 正常終了
|
||||||
}else {
|
}else {
|
||||||
// ロード失敗
|
// ロード失敗
|
||||||
if( !s_isHotStartWLFirm ) {
|
if( !s_isHotStartWLFirm ) {
|
||||||
@ -680,8 +680,13 @@ BOOL PollingInstallWlanFirmware( void )
|
|||||||
#ifdef SDK_RELEASE
|
#ifdef SDK_RELEASE
|
||||||
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
PMi_SetWirelessLED( PM_WIRELESS_LED_OFF );
|
||||||
#endif
|
#endif
|
||||||
s_isFinished = TRUE;
|
// ここがスレッドセーフでなかったため、s_isFinishedがTRUEになってから、s_isFinishedがTRUEになってから、s_resultがセットされる間に
|
||||||
|
// スレッドスイッチが発生して、他スレッドからPollingInstallWlanFirmware+GetWlanFirmwareInstallFinalResultをリードすると、
|
||||||
|
// 前回のs_resultの値が取得されてしまっていた。
|
||||||
|
// ここで、DSアプリからのHWリセット時は、HotStartに失敗してからColdスタートになるので、s_resultに一時的にFAILが入るが、
|
||||||
|
// このタイミングで上記状態になると、ファームロードは成功しているのに失敗判定されてしまうことになる。
|
||||||
s_result = result;
|
s_result = result;
|
||||||
|
s_isFinished = TRUE;
|
||||||
}else {
|
}else {
|
||||||
// そうでない場合は、ColdStartロードで再度実行。
|
// そうでない場合は、ColdStartロードで再度実行。
|
||||||
(void)InstallWlanFirmware( FALSE );
|
(void)InstallWlanFirmware( FALSE );
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user