From b1d96120ba0b61fc6e2e5a0357aa882a04acc12a Mon Sep 17 00:00:00 2001 From: yoshida_teruhisa Date: Fri, 16 Nov 2007 07:23:44 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=A2=E3=83=97=E3=83=AA=E5=81=B4=E3=81=ABRO?= =?UTF-8?q?M=E3=83=87=E3=83=BC=E3=82=BF=E3=83=AD=E3=83=BC=E3=83=87?= =?UTF-8?q?=E3=82=A3=E3=83=B3=E3=82=B0=E7=94=A8=E3=82=B9=E3=83=AC=E3=83=83?= =?UTF-8?q?=E3=83=89=E3=81=8C=E7=84=A1=E9=A7=84=E3=81=AB=E9=9C=B2=E5=87=BA?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=84=E3=81=9F=E3=81=AE=E3=81=A7=E9=9A=A0?= =?UTF-8?q?=E5=8C=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@202 b08762b0-b915-fc4b-9d8c-17b2551a87ff --- .../sysmenu/ARM9/src/sysmenu_lib.c | 14 ++++++++------ build/systemMenu_RED/Launcher/ARM9/src/main.c | 5 ++--- include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h | 3 ++- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 01e5ad68..8ec86ff1 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -492,14 +492,17 @@ static OSThread thread; static u64 stack[ STACK_SIZE / sizeof(u64) ]; // 指定タイトルを別スレッドでロード開始する -OSThread* SYSM_StartLoadTitle( TitleProperty *pBootTitle ) +void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) { s_load_success = FALSE; OS_InitThread(); OS_CreateThread( &thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO ); OS_WakeupThreadDirect( &thread ); - - return &thread; +} + +BOOL SYSM_IsLoadTitleFinished( void ) +{ + return OS_IsThreadTerminated( &thread ); } // ロード済みの指定タイトルの認証とブートを行う @@ -534,11 +537,10 @@ AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ) // もしかすると使わないかも AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ) { - OSThread *t; // 指定タイトルのロード - t = SYSM_StartLoadTitle( pBootTitle ); + SYSM_StartLoadTitle( pBootTitle ); - OS_JoinThread(t); + OS_JoinThread(&thread); // 認証 return SYSM_AuthenticateTitle( pBootTitle ); diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index d4f3de00..be995191 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -51,7 +51,6 @@ void TwlMain( void ) u32 state = START; TitleProperty *pBootTitle = NULL; TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ]; - OSThread *thread; // システムメニュー初期化---------- SYSM_Init( Alloc, Free ); // OS_Initの前でコール。 @@ -138,12 +137,12 @@ void TwlMain( void ) } break; case LOAD_START: - thread = SYSM_StartLoadTitle( pBootTitle ); + SYSM_StartLoadTitle( pBootTitle ); state = LOADING; break; case LOADING: LauncherLoading( pTitleList ); - if(OS_IsThreadTerminated( thread )) + if( SYSM_IsLoadTitleFinished() ) { GX_DispOff(); GXS_DispOff(); diff --git a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h index e07513fe..cab2923e 100644 --- a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h @@ -83,7 +83,8 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); // extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得 // アプリ起動 -extern OSThread* SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始 +extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始 +extern BOOL SYSM_IsLoadTitleFinished( void ); // SYSM_StartLoadTitleで起動したスレッドが終了したかどうかを確認 extern AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを認証してブート extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード&認証してブート // 成功時は、never return.