00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include <e32std.h>
00017 #include "threadserverstart.h"
00018 #include "threadserver.h"
00019
00024 EXPORT_C TInt CThreadServer::StartThread(TAny* )
00025 {
00026 __UHEAP_MARK;
00027
00028 CTrapCleanup* cleanup=CTrapCleanup::New();
00029 TInt r=KErrNoMemory;
00030 if (cleanup)
00031 {
00032 TRAP(r,StartThreadL());
00033 delete cleanup;
00034 }
00035
00036 __UHEAP_MARKEND;
00037 return r;
00038 }
00043 void CThreadServer::StartThreadL()
00044 {
00045
00046
00047 CActiveScheduler* s=new(ELeave) CActiveScheduler;
00048 CleanupStack::PushL(s);
00049 CActiveScheduler::Install(s);
00050
00051
00052 CThreadServer::NewLC();
00053
00054
00055
00056 RenameServer();
00057
00058
00059 RThread::Rendezvous(KErrNone);
00060
00061
00062 CActiveScheduler::Start();
00063
00064
00065 CleanupStack::PopAndDestroy(2);
00066 }
00067
00068
00069
00070