アプリ側にROMデータローディング用スレッドが無駄に露出していたので隠匿

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@202 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yoshida_teruhisa 2007-11-16 07:23:44 +00:00
parent 83d6341b93
commit b1d96120ba
3 changed files with 12 additions and 10 deletions

View File

@ -492,14 +492,17 @@ static OSThread thread;
static u64 stack[ STACK_SIZE / sizeof(u64) ]; static u64 stack[ STACK_SIZE / sizeof(u64) ];
// 指定タイトルを別スレッドでロード開始する // 指定タイトルを別スレッドでロード開始する
OSThread* SYSM_StartLoadTitle( TitleProperty *pBootTitle ) void SYSM_StartLoadTitle( TitleProperty *pBootTitle )
{ {
s_load_success = FALSE; s_load_success = FALSE;
OS_InitThread(); OS_InitThread();
OS_CreateThread( &thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO ); OS_CreateThread( &thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO );
OS_WakeupThreadDirect( &thread ); 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 ) AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle )
{ {
OSThread *t;
// 指定タイトルのロード // 指定タイトルのロード
t = SYSM_StartLoadTitle( pBootTitle ); SYSM_StartLoadTitle( pBootTitle );
OS_JoinThread(t); OS_JoinThread(&thread);
// 認証 // 認証
return SYSM_AuthenticateTitle( pBootTitle ); return SYSM_AuthenticateTitle( pBootTitle );

View File

@ -51,7 +51,6 @@ void TwlMain( void )
u32 state = START; u32 state = START;
TitleProperty *pBootTitle = NULL; TitleProperty *pBootTitle = NULL;
TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ]; TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ];
OSThread *thread;
// システムメニュー初期化---------- // システムメニュー初期化----------
SYSM_Init( Alloc, Free ); // OS_Initの前でコール。 SYSM_Init( Alloc, Free ); // OS_Initの前でコール。
@ -138,12 +137,12 @@ void TwlMain( void )
} }
break; break;
case LOAD_START: case LOAD_START:
thread = SYSM_StartLoadTitle( pBootTitle ); SYSM_StartLoadTitle( pBootTitle );
state = LOADING; state = LOADING;
break; break;
case LOADING: case LOADING:
LauncherLoading( pTitleList ); LauncherLoading( pTitleList );
if(OS_IsThreadTerminated( thread )) if( SYSM_IsLoadTitleFinished() )
{ {
GX_DispOff(); GX_DispOff();
GXS_DispOff(); GXS_DispOff();

View File

@ -83,7 +83,8 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); //
extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得 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_AuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを認証してブート
extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード認証してブート extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード認証してブート
// 成功時は、never return. // 成功時は、never return.