diff -r a179b74831c9 -r c1f20ce4abcf kernel/eka/kernel/sutils.cpp --- a/kernel/eka/kernel/sutils.cpp Thu Aug 19 11:14:22 2010 +0300 +++ b/kernel/eka/kernel/sutils.cpp Tue Aug 31 16:34:26 2010 +0300 @@ -1580,7 +1580,7 @@ TInt DThread::OpenObject(TOwnerType aType, const TDesC& aName, TInt& aHandle, DObject*& anObj, TInt aObjType) { - __KTRACE_OPT(KEXEC,Kern::Printf("DThread::OpenObject %lS",&aName)); + __KTRACE_OPT(KEXEC,Kern::Printf("DThread::OpenObject %S",&aName)); anObj=NULL; TInt r=Kern::ValidateFullName(aName); if (r!=KErrNone) @@ -2373,7 +2373,7 @@ EXPORT_C TInt Kern::SemaphoreCreate(DSemaphore*& aSem, const TDesC& aName, TInt aInitialCount) { CHECK_PRECONDITIONS(MASK_THREAD_CRITICAL,"Kern::SemaphoreCreate"); - __KTRACE_OPT(KSEMAPHORE,Kern::Printf("Kern::SemaphoreCreate %lS init %d", &aName, aInitialCount)); + __KTRACE_OPT(KSEMAPHORE,Kern::Printf("Kern::SemaphoreCreate %S init %d", &aName, aInitialCount)); TInt r = KErrNoMemory; DSemaphore* pS = new DSemaphore; if (pS) @@ -2538,8 +2538,9 @@ return KErrNone; } -TInt K::KernelHal(TInt aFunction, TAny* a1, TAny* /*a2*/) +TInt K::KernelHal(TInt aFunction, TAny* a1, TAny* a2) { + (void)a2; TInt r=KErrNone; switch (aFunction) { @@ -2682,15 +2683,23 @@ case EKernelHalLockThreadToCpu: { #ifdef __SMP__ + r = KErrArgument; TUint32 cpuId = (TUint32)a1; - if (cpuId < (TUint32)NKern::NumberOfCpus()) + TUint32 ncpus = NKern::NumberOfCpus(); + if (cpuId < ncpus) { NKern::ThreadSetCpuAffinity(NKern::CurrentThread(), cpuId); r = KErrNone; } - else + else if (cpuId & NTHREADBASE_CPU_AFFINITY_MASK) { - r = KErrArgument; + TUint32 mask = cpuId & ~NTHREADBASE_CPU_AFFINITY_MASK; + TUint32 amask = ~((~0u)<iCpuNum|0x80) : 0); + states.iPODC = s.iDetachCount; + TInt i; + TInt nc = NKern::NumberOfCpus(); + for (i=0; iNKern::NumberOfCpus()) + r = KErrArgument; + else + { + NKern::SetNumberOfActiveCpus(n); + r = KErrNone; + } + break; + } +#endif default: r=KErrNotSupported; break;