# HG changeset patch # User hgs # Date 1276166881 -3600 # Node ID 31ea0f8e3c99f75d0ab164860d3dd8076db2053a # Parent 5e441a173c6319c325907308274c0261316ef8fd 201021_18 diff -r 5e441a173c63 -r 31ea0f8e3c99 halservices/hal/src/hal_gcc_shim.cia --- a/halservices/hal/src/hal_gcc_shim.cia Mon May 24 18:45:46 2010 +0100 +++ b/halservices/hal/src/hal_gcc_shim.cia Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,18 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". // +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// hal/src/hal_gcc_shim.cia +// // HAL_GCC_SHIM.CIA - generated by GENSHIMSRC.BAT // diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bmarm/ekernsmp.def --- a/kernel/eka/bmarm/ekernsmp.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bmarm/ekernsmp.def Thu Jun 10 11:48:01 2010 +0100 @@ -1055,4 +1055,7 @@ SetIdleHandler__3ArmPFPvUlPVv_vPv @ 1054 NONAME R3UNUSED ; Arm::SetIdleHandler(void (*)(void *, unsigned long, void volatile *), void *) FreeRamZone__4EpocUi @ 1055 NONAME R3UNUSED ; Epoc::FreeRamZone(unsigned int) SelectiveAlloc__16TBitMapAllocatorii @ 1056 NONAME R3UNUSED ; TBitMapAllocator::SelectiveAlloc(int, int) + SetKeyOffset__10RArrayBasei @ 1057 NONAME R3UNUSED ; RArrayBase::SetKeyOffset(int) + CpuRetires__5Cache @ 1058 NONAME R3UNUSED ; Cache::CpuRetires(void) + KernelRetires__5Cache @ 1059 NONAME R3UNUSED ; Cache::KernelRetires(void) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bmarm/ekernu.def --- a/kernel/eka/bmarm/ekernu.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bmarm/ekernu.def Thu Jun 10 11:48:01 2010 +0100 @@ -1052,3 +1052,6 @@ SetIdleHandler__3ArmPFPvUl_vPv @ 1051 NONAME R3UNUSED ; Arm::SetIdleHandler(void (*)(void *, unsigned long), void *) FreeRamZone__4EpocUi @ 1052 NONAME R3UNUSED ; Epoc::FreeRamZone(unsigned int) SelectiveAlloc__16TBitMapAllocatorii @ 1053 NONAME R3UNUSED ; TBitMapAllocator::SelectiveAlloc(int, int) + SetKeyOffset__10RArrayBasei @ 1054 NONAME R3UNUSED ; RArrayBase::SetKeyOffset(int) + CpuRetires__5Cache @ 1055 NONAME R3UNUSED ; Cache::CpuRetires(void) + KernelRetires__5Cache @ 1056 NONAME R3UNUSED ; Cache::KernelRetires(void) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bmarm/euseru.def --- a/kernel/eka/bmarm/euseru.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bmarm/euseru.def Thu Jun 10 11:48:01 2010 +0100 @@ -620,7 +620,7 @@ FsRegisterThread__7UserSvr @ 619 NONAME R3UNUSED ; UserSvr::FsRegisterThread(void) FullName__C11RHandleBase @ 620 NONAME R3UNUSED ; RHandleBase::FullName(void) const FullName__C7CObject @ 621 NONAME R3UNUSED ; CObject::FullName(void) const - GetAddress__C5RHeapPCv @ 622 NONAME R3UNUSED ; RHeap::GetAddress(void const *) const + GetAddress__C5RHeapPCv @ 622 NONAME R3UNUSED ABSENT ; RHeap::GetAddress(void const *) const GetBdCategory__C5TChar @ 623 NONAME R3UNUSED ; TChar::GetBdCategory(void) const GetCaps__C7RDeviceR5TDes8 @ 624 NONAME R3UNUSED ; RDevice::GetCaps(TDes8 &) const GetCategory__C5TChar @ 625 NONAME R3UNUSED ; TChar::GetCategory(void) const @@ -1616,8 +1616,8 @@ __5RBuf8 @ 1615 NONAME R3UNUSED ; RBuf8::RBuf8(void) __5RBuf8P6HBufC8 @ 1616 NONAME R3UNUSED ; RBuf8::RBuf8(HBufC8 *) __5RBuf8iii @ 1617 NONAME ; RBuf8::RBuf8(int, int, int) - __5RHeapiii @ 1618 NONAME ; RHeap::RHeap(int, int, int) - __5RHeapiiiiiii @ 1619 NONAME ; RHeap::RHeap(int, int, int, int, int, int, int) + __5RHeapiii @ 1618 NONAME ABSENT ; RHeap::RHeap(int, int, int) + __5RHeapiiiiiii @ 1619 NONAME ABSENT ; RHeap::RHeap(int, int, int, int, int, int, int) __5RTestRC7TDesC16 @ 1620 NONAME R3UNUSED ; RTest::RTest(TDesC16 const &) __5RTestRC7TDesC16i @ 1621 NONAME R3UNUSED ; RTest::RTest(TDesC16 const &, int) __5RTestRC7TDesC16iPCUs @ 1622 NONAME ; RTest::RTest(TDesC16 const &, int, unsigned short const *) @@ -1832,7 +1832,7 @@ __negdi2 @ 1831 NONAME ; (null) __negsf2 @ 1832 NONAME ; (null) __nesf2 @ 1833 NONAME ; (null) - __nw__5RHeapUiPv @ 1834 NONAME R3UNUSED ; RHeap::operator new(unsigned int, void *) + __nw__5RHeapUiPv @ 1834 NONAME R3UNUSED ABSENT ; RHeap::operator new(unsigned int, void *) __nw__FUiUi @ 1835 NONAME R3UNUSED ; operator new(unsigned int, unsigned int) __opUi__C6TRealX @ 1836 NONAME R3UNUSED ; TRealX::operator unsigned int(void) const __opd__C6TRealX @ 1837 NONAME R3UNUSED ; TRealX::operator double(void) const @@ -2260,3 +2260,12 @@ Match2__C7TDesC16RC7TDesC16 @ 2259 NONAME R3UNUSED ; TDesC16::Match2(TDesC16 const &) const UpperCase2__6TDes16 @ 2260 NONAME R3UNUSED ; TDes16::UpperCase2(void) AgainHighRes__6RTimerR14TRequestStatusG27TTimeIntervalMicroSeconds32 @ 2261 NONAME R3UNUSED ; RTimer::AgainHighRes(TRequestStatus &, TTimeIntervalMicroSeconds32) + Align__C10RAllocatorPv @ 2262 NONAME R3UNUSED ; RAllocator::Align(void *) const + Align__C10RAllocatori @ 2263 NONAME R3UNUSED ; RAllocator::Align(int) const + Base__C10RAllocator @ 2264 NONAME R3UNUSED ; RAllocator::Base(void) const + MaxLength__C10RAllocator @ 2265 NONAME R3UNUSED ; RAllocator::MaxLength(void) const + Size__C10RAllocator @ 2266 NONAME R3UNUSED ; RAllocator::Size(void) const + __DbgGetAllocFail__10RAllocator @ 2267 NONAME R3UNUSED ; RAllocator::__DbgGetAllocFail(void) + __DbgGetAllocFail__4Useri @ 2268 NONAME R3UNUSED ; User::__DbgGetAllocFail(int) + SetKeyOffset__10RArrayBasei @ 2269 NONAME R3UNUSED ; RArrayBase::SetKeyOffset(int) + diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bwins/ekernu.def --- a/kernel/eka/bwins/ekernu.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bwins/ekernu.def Thu Jun 10 11:48:01 2010 +0100 @@ -935,4 +935,7 @@ ?Retire@KernCoreStats@@SAHHH@Z @ 934 NONAME ; public: static int KernCoreStats::Retire(int, int) ?Stats@KernCoreStats@@SAHPAX@Z @ 935 NONAME ; public: static int KernCoreStats::Stats(void *) ?SelectiveAlloc@TBitMapAllocator@@QAEIHH@Z @ 936 NONAME ; public: unsigned int __thiscall TBitMapAllocator::SelectiveAlloc(int,int) + ?SetKeyOffset@RArrayBase@@IAEXH@Z @ 937 NONAME ; void RArrayBase::SetKeyOffset(int) + ?CpuRetires@Cache@@SAXXZ @ 938 NONAME ; public: static void __cdecl Cache::CpuRetires(void) + ?KernelRetires@Cache@@SAXXZ @ 939 NONAME ; public: static void __cdecl Cache::KernelRetires(void) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bwins/euseru.def --- a/kernel/eka/bwins/euseru.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bwins/euseru.def Thu Jun 10 11:48:01 2010 +0100 @@ -48,8 +48,8 @@ ??0RBuf8@@QAE@PAVHBufC8@@@Z @ 47 NONAME ; public: __thiscall RBuf8::RBuf8(class HBufC8 *) ??0RBuf8@@QAE@XZ @ 48 NONAME ; public: __thiscall RBuf8::RBuf8(void) ??0RCriticalSection@@QAE@XZ @ 49 NONAME ; public: __thiscall RCriticalSection::RCriticalSection(void) - ??0RHeap@@QAE@HHH@Z @ 50 NONAME ; public: __thiscall RHeap::RHeap(int,int,int) - ??0RHeap@@QAE@HHHHHHH@Z @ 51 NONAME ; public: __thiscall RHeap::RHeap(int,int,int,int,int,int,int) + ??0RHeap@@QAE@HHH@Z @ 50 NONAME ABSENT ; public: __thiscall RHeap::RHeap(int,int,int) + ??0RHeap@@QAE@HHHHHHH@Z @ 51 NONAME ABSENT ; public: __thiscall RHeap::RHeap(int,int,int,int,int,int,int) ??0RMessage2@@QAE@ABVRMessagePtr2@@@Z @ 52 NONAME ; public: __thiscall RMessage2::RMessage2(class RMessagePtr2 const &) ??0RNotifier@@QAE@XZ @ 53 NONAME ; public: __thiscall RNotifier::RNotifier(void) ??0RPointerArrayBase@@IAE@H@Z @ 54 NONAME ; protected: __thiscall RPointerArrayBase::RPointerArrayBase(int) @@ -216,7 +216,7 @@ ??1CSession2@@UAE@XZ @ 215 NONAME ; public: virtual __thiscall CSession2::~CSession2(void) ??1CTimer@@UAE@XZ @ 216 NONAME ; public: virtual __thiscall CTimer::~CTimer(void) ??1CTrapCleanup@@UAE@XZ @ 217 NONAME ; public: virtual __thiscall CTrapCleanup::~CTrapCleanup(void) - ??2RHeap@@SAPAXIPAX@Z @ 218 NONAME ; public: static void * __cdecl RHeap::operator new(unsigned int,void *) + ??2RHeap@@SAPAXIPAX@Z @ 218 NONAME ABSENT ; public: static void * __cdecl RHeap::operator new(unsigned int,void *) ??4HBufC16@@QAEAAV0@ABVTDesC16@@@Z @ 219 NONAME ; public: class HBufC16 & __thiscall HBufC16::operator=(class TDesC16 const &) ??4HBufC16@@QAEAAV0@PBG@Z @ 220 NONAME ; public: class HBufC16 & __thiscall HBufC16::operator=(unsigned short const *) ??4HBufC8@@QAEAAV0@ABVTDesC8@@@Z @ 221 NONAME ; public: class HBufC8 & __thiscall HBufC8::operator=(class TDesC8 const &) @@ -943,7 +943,7 @@ ?Get@RProperty@@SAHVTUid@@IAAVTDes8@@@Z @ 942 NONAME ; public: static int __cdecl RProperty::Get(class TUid,unsigned int,class TDes8 &) ?Get@TLex16@@QAE?AVTChar@@XZ @ 943 NONAME ; public: class TChar __thiscall TLex16::Get(void) ?Get@TLex8@@QAE?AVTChar@@XZ @ 944 NONAME ; public: class TChar __thiscall TLex8::Get(void) - ?GetAddress@RHeap@@IBEPAUSCell@1@PBX@Z @ 945 NONAME ; protected: struct RHeap::SCell * __thiscall RHeap::GetAddress(void const *)const + ?GetAddress@RHeap@@IBEPAUSCell@1@PBX@Z @ 945 NONAME ABSENT ; protected: struct RHeap::SCell * __thiscall RHeap::GetAddress(void const *)const ?GetBdCategory@TChar@@QBE?AW4TBdCategory@1@XZ @ 946 NONAME ; public: enum TChar::TBdCategory __thiscall TChar::GetBdCategory(void)const ?GetCaps@RDevice@@QBEXAAVTDes8@@@Z @ 947 NONAME ; public: void __thiscall RDevice::GetCaps(class TDes8 &)const ?GetCategory@TChar@@QBE?AW4TCategory@1@XZ @ 948 NONAME ; public: enum TChar::TCategory __thiscall TChar::GetCategory(void)const @@ -2208,4 +2208,12 @@ ?LocateReverseF2@TDesC16@@QBEHVTChar@@@Z @ 2207 NONAME ; int TDesC16::LocateReverseF2(class TChar) const ?CopyCP2@TDes16@@QAEXABVTDesC16@@@Z @ 2208 NONAME ; void TDes16::CopyCP2(class TDesC16 const &) ?AgainHighRes@RTimer@@QAEXAAVTRequestStatus@@VTTimeIntervalMicroSeconds32@@@Z @ 2209 NONAME ; public: void __thiscall RTimer::AgainHighRes(class TRequestStatus &,class TTimeIntervalMicroSeconds32) + ?Align@RAllocator@@QBEPAXPAX@Z @ 2210 NONAME ; void * RAllocator::Align(void *) const + ?Align@RAllocator@@QBEHH@Z @ 2211 NONAME ; int RAllocator::Align(int) const + ?Size@RAllocator@@QBEHXZ @ 2212 NONAME ; int RAllocator::Size(void) const + ?Base@RAllocator@@QBEPAEXZ @ 2213 NONAME ; void * RAllocator::Base(void) const + ?MaxLength@RAllocator@@QBEHXZ @ 2214 NONAME ; int RAllocator::MaxLength(void) const + ?__DbgGetAllocFail@RAllocator@@QAE?AW4TAllocFail@1@XZ @ 2215 NONAME ; enum RAllocator::TAllocFail RAllocator::__DbgGetAllocFail(void) + ?__DbgGetAllocFail@User@@SA?AW4TAllocFail@RAllocator@@H@Z @ 2216 NONAME ; enum RAllocator::TAllocFail User::__DbgGetAllocFail(int) + ?SetKeyOffset@RArrayBase@@IAEXH@Z @ 2217 NONAME ; void RArrayBase::SetKeyOffset(int) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86/ekernsmp.def --- a/kernel/eka/bx86/ekernsmp.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86/ekernsmp.def Thu Jun 10 11:48:01 2010 +0100 @@ -1012,4 +1012,7 @@ ?SetNumberOfActiveCpus@NKern@@SAXH@Z @ 1011 NONAME ; public: static void __cdecl NKern::SetNumberOfActiveCpus(int) ?FreeRamZone@Epoc@@SAHI@Z @ 1012 NONAME ; public: static int Epoc::FreeRamZone(unsigned int) ?SelectiveAlloc@TBitMapAllocator@@QAEIHH@Z @ 1013 NONAME ; public: unsigned int __thiscall TBitMapAllocator::SelectiveAlloc(int,int) + ?SetKeyOffset@RArrayBase@@IAEXH@Z @ 1014 NONAME ; void RArrayBase::SetKeyOffset(int) + ?CpuRetires@Cache@@SAXXZ @ 1015 NONAME ; public: static void __cdecl Cache::CpuRetires(void) + ?KernelRetires@Cache@@SAXXZ @ 1016 NONAME ; public: static void __cdecl Cache::KernelRetires(void) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86/ekernu.def --- a/kernel/eka/bx86/ekernu.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86/ekernu.def Thu Jun 10 11:48:01 2010 +0100 @@ -957,4 +957,7 @@ ?Stats@KernCoreStats@@SAHPAX@Z @ 956 NONAME ; public: static int KernCoreStats::Stats(void *) ?FreeRamZone@Epoc@@SAHI@Z @ 957 NONAME ; public: static int Epoc::FreeRamZone(unsigned int) ?SelectiveAlloc@TBitMapAllocator@@QAEIHH@Z @ 958 NONAME ; public: unsigned int __thiscall TBitMapAllocator::SelectiveAlloc(int,int) + ?SetKeyOffset@RArrayBase@@IAEXH@Z @ 959 NONAME ; void RArrayBase::SetKeyOffset(int) + ?CpuRetires@Cache@@SAXXZ @ 960 NONAME ; public: static void __cdecl Cache::CpuRetires(void) + ?KernelRetires@Cache@@SAXXZ @ 961 NONAME ; public: static void __cdecl Cache::KernelRetires(void) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86/euseru.def --- a/kernel/eka/bx86/euseru.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86/euseru.def Thu Jun 10 11:48:01 2010 +0100 @@ -48,8 +48,8 @@ ??0RBuf8@@QAE@PAVHBufC8@@@Z @ 47 NONAME ; public: __thiscall RBuf8::RBuf8(class HBufC8 *) ??0RBuf8@@QAE@XZ @ 48 NONAME ; public: __thiscall RBuf8::RBuf8(void) ??0RCriticalSection@@QAE@XZ @ 49 NONAME ; public: __thiscall RCriticalSection::RCriticalSection(void) - ??0RHeap@@QAE@HHH@Z @ 50 NONAME ; public: __thiscall RHeap::RHeap(int,int,int) - ??0RHeap@@QAE@HHHHHHH@Z @ 51 NONAME ; public: __thiscall RHeap::RHeap(int,int,int,int,int,int,int) + ??0RHeap@@QAE@HHH@Z @ 50 NONAME ABSENT ; public: __thiscall RHeap::RHeap(int,int,int) + ??0RHeap@@QAE@HHHHHHH@Z @ 51 NONAME ABSENT ; public: __thiscall RHeap::RHeap(int,int,int,int,int,int,int) ??0RMessage2@@QAE@ABVRMessagePtr2@@@Z @ 52 NONAME ; public: __thiscall RMessage2::RMessage2(class RMessagePtr2 const &) ??0RNotifier@@QAE@XZ @ 53 NONAME ; public: __thiscall RNotifier::RNotifier(void) ??0RPointerArrayBase@@IAE@H@Z @ 54 NONAME ; protected: __thiscall RPointerArrayBase::RPointerArrayBase(int) @@ -216,7 +216,7 @@ ??1CSession2@@UAE@XZ @ 215 NONAME ; public: virtual __thiscall CSession2::~CSession2(void) ??1CTimer@@UAE@XZ @ 216 NONAME ; public: virtual __thiscall CTimer::~CTimer(void) ??1CTrapCleanup@@UAE@XZ @ 217 NONAME ; public: virtual __thiscall CTrapCleanup::~CTrapCleanup(void) - ??2RHeap@@SAPAXIPAX@Z @ 218 NONAME ; public: static void * __cdecl RHeap::operator new(unsigned int,void *) + ??2RHeap@@SAPAXIPAX@Z @ 218 NONAME ABSENT ; public: static void * __cdecl RHeap::operator new(unsigned int,void *) ??4HBufC16@@QAEAAV0@ABVTDesC16@@@Z @ 219 NONAME ; public: class HBufC16 & __thiscall HBufC16::operator=(class TDesC16 const &) ??4HBufC16@@QAEAAV0@PBG@Z @ 220 NONAME ; public: class HBufC16 & __thiscall HBufC16::operator=(unsigned short const *) ??4HBufC8@@QAEAAV0@ABVTDesC8@@@Z @ 221 NONAME ; public: class HBufC8 & __thiscall HBufC8::operator=(class TDesC8 const &) @@ -943,7 +943,7 @@ ?Get@RProperty@@SAHVTUid@@IAAVTDes8@@@Z @ 942 NONAME ; public: static int __cdecl RProperty::Get(class TUid,unsigned int,class TDes8 &) ?Get@TLex16@@QAE?AVTChar@@XZ @ 943 NONAME ; public: class TChar __thiscall TLex16::Get(void) ?Get@TLex8@@QAE?AVTChar@@XZ @ 944 NONAME ; public: class TChar __thiscall TLex8::Get(void) - ?GetAddress@RHeap@@IBEPAUSCell@1@PBX@Z @ 945 NONAME ; protected: struct RHeap::SCell * __thiscall RHeap::GetAddress(void const *)const + ?GetAddress@RHeap@@IBEPAUSCell@1@PBX@Z @ 945 NONAME ABSENT ; protected: struct RHeap::SCell * __thiscall RHeap::GetAddress(void const *)const ?GetBdCategory@TChar@@QBE?AW4TBdCategory@1@XZ @ 946 NONAME ; public: enum TChar::TBdCategory __thiscall TChar::GetBdCategory(void)const ?GetCaps@RDevice@@QBEXAAVTDes8@@@Z @ 947 NONAME ; public: void __thiscall RDevice::GetCaps(class TDes8 &)const ?GetCategory@TChar@@QBE?AW4TCategory@1@XZ @ 948 NONAME ; public: enum TChar::TCategory __thiscall TChar::GetCategory(void)const @@ -2208,4 +2208,12 @@ ?LocateReverseF2@TDesC16@@QBEHVTChar@@@Z @ 2207 NONAME ; int TDesC16::LocateReverseF2(class TChar) const ?CopyCP2@TDes16@@QAEXABVTDesC16@@@Z @ 2208 NONAME ; void TDes16::CopyCP2(class TDesC16 const &) ?AgainHighRes@RTimer@@QAEXAAVTRequestStatus@@VTTimeIntervalMicroSeconds32@@@Z @ 2209 NONAME ; public: void __thiscall RTimer::AgainHighRes(class TRequestStatus &,class TTimeIntervalMicroSeconds32) - + ?Align@RAllocator@@QBEHH@Z @ 2210 NONAME ; public: int __thiscall RAllocator::Align(int)const + ?Align@RAllocator@@QBEPAXPAX@Z @ 2211 NONAME ; public: void * __thiscall RAllocator::Align(void *)const + ?Base@RAllocator@@QBEPAEXZ @ 2212 NONAME ; public: void * __thiscall RAllocator::Base(void)const + ?MaxLength@RAllocator@@QBEHXZ @ 2213 NONAME ; public: int __thiscall RAllocator::MaxLength(void)const + ?Size@RAllocator@@QBEHXZ @ 2214 NONAME ; public: int __thiscall RAllocator::Size(void)const + ?__DbgGetAllocFail@RAllocator@@QAE?AW4TAllocFail@1@XZ @ 2215 NONAME ; enum RAllocator::TAllocFail RAllocator::__DbgGetAllocFail(void) + ?__DbgGetAllocFail@User@@SA?AW4TAllocFail@RAllocator@@H@Z @ 2216 NONAME ; enum RAllocator::TAllocFail User::__DbgGetAllocFail(int) + ?SetKeyOffset@RArrayBase@@IAEXH@Z @ 2217 NONAME ; void RArrayBase::SetKeyOffset(int) + diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86gcc/ekernsmp.def --- a/kernel/eka/bx86gcc/ekernsmp.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86gcc/ekernsmp.def Thu Jun 10 11:48:01 2010 +0100 @@ -1100,4 +1100,8 @@ _ZN5NKern21SetNumberOfActiveCpusEi @ 1099 NONAME _ZN4Epoc11FreeRamZoneEj @ 1100 NONAME _ZN16TBitMapAllocator14SelectiveAllocEii @ 1101 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 1102 NONAME + _ZN5Cache10CpuRetiresEv @ 1103 NONAME + _ZN5Cache13KernelRetiresEv @ 1104 NONAME + diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86gcc/ekernu.def --- a/kernel/eka/bx86gcc/ekernu.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86gcc/ekernu.def Thu Jun 10 11:48:01 2010 +0100 @@ -1040,4 +1040,7 @@ _ZN13KernCoreStats9LeaveIdleEj @ 1039 NONAME _ZN4Epoc11FreeRamZoneEj @ 1040 NONAME _ZN16TBitMapAllocator14SelectiveAllocEii @ 1041 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 1042 NONAME + _ZN5Cache10CpuRetiresEv @ 1043 NONAME + _ZN5Cache13KernelRetiresEv @ 1044 NONAME diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/bx86gcc/euseru.def --- a/kernel/eka/bx86gcc/euseru.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/bx86gcc/euseru.def Thu Jun 10 11:48:01 2010 +0100 @@ -697,11 +697,11 @@ _ZN5RHeap5ResetEv @ 696 NONAME ; RHeap::Reset() _ZN5RHeap7ReAllocEPvii @ 697 NONAME ; RHeap::ReAlloc(void*, int, int) _ZN5RHeap8CompressEv @ 698 NONAME ; RHeap::Compress() - _ZN5RHeapC1Eiii @ 699 NONAME ; RHeap::RHeap(int, int, int) - _ZN5RHeapC1Eiiiiiii @ 700 NONAME ; RHeap::RHeap(int, int, int, int, int, int, int) - _ZN5RHeapC2Eiii @ 701 NONAME ; RHeap::RHeap(int, int, int) - _ZN5RHeapC2Eiiiiiii @ 702 NONAME ; RHeap::RHeap(int, int, int, int, int, int, int) - _ZN5RHeapnwEjPv @ 703 NONAME ; RHeap::operator new(unsigned int, void*) + _ZN5RHeapC1Eiii @ 699 NONAME ABSENT ; RHeap::RHeap(int, int, int) + _ZN5RHeapC1Eiiiiiii @ 700 NONAME ABSENT ; RHeap::RHeap(int, int, int, int, int, int, int) + _ZN5RHeapC2Eiii @ 701 NONAME ABSENT ; RHeap::RHeap(int, int, int) + _ZN5RHeapC2Eiiiiiii @ 702 NONAME ABSENT ; RHeap::RHeap(int, int, int, int, int, int, int) + _ZN5RHeapnwEjPv @ 703 NONAME ABSENT ; RHeap::operator new(unsigned int, void*) _ZN5RTest3EndEv @ 704 NONAME ; RTest::End() _ZN5RTest4NextERK7TDesC16 @ 705 NONAME ; RTest::Next(TDesC16 const&) _ZN5RTest5CloseEv @ 706 NONAME ; RTest::Close() @@ -1601,7 +1601,7 @@ _ZNK4TUid4NameEv @ 1600 NONAME ; TUid::Name() const _ZNK4TUideqERKS_ @ 1601 NONAME ; TUid::operator==(TUid const&) const _ZNK4TUidneERKS_ @ 1602 NONAME ; TUid::operator!=(TUid const&) const - _ZNK5RHeap10GetAddressEPKv @ 1603 NONAME ; RHeap::GetAddress(void const*) const + _ZNK5RHeap10GetAddressEPKv @ 1603 NONAME ABSENT ; RHeap::GetAddress(void const*) const _ZNK5RHeap8AllocLenEPKv @ 1604 NONAME ; RHeap::AllocLen(void const*) const _ZNK5RHeap9AllocSizeERi @ 1605 NONAME ; RHeap::AllocSize(int&) const _ZNK5RHeap9AvailableERi @ 1606 NONAME ; RHeap::Available(int&) const @@ -1935,7 +1935,7 @@ _ZTV20CActiveSchedulerWait @ 1934 NONAME ; vtable for CActiveSchedulerWait _ZTV4TKey @ 1935 NONAME ; vtable for TKey _ZTV5CIdle @ 1936 NONAME ; vtable for CIdle - _ZTV5RHeap @ 1937 NONAME ; vtable for RHeap + _ZTV5RHeap @ 1937 NONAME ABSENT ; vtable for RHeap _ZTV5TSwap @ 1938 NONAME ; vtable for TSwap _ZTV6CTimer @ 1939 NONAME ; vtable for CTimer _ZTV7CActive @ 1940 NONAME ; vtable for CActive @@ -2487,3 +2487,12 @@ _ZNK7TDesC167Locate2E5TChar @ 2486 NONAME _ZNK7TDesC168LocateF2E5TChar @ 2487 NONAME _ZN6RTimer12AgainHighResER14TRequestStatus27TTimeIntervalMicroSeconds32 @ 2488 NONAME ; RTimer::AgainHighRes(TRequestStatus&, TTimeIntervalMicroSeconds32) + _ZNK10RAllocator4BaseEv @ 2489 NONAME + _ZNK10RAllocator4SizeEv @ 2490 NONAME + _ZNK10RAllocator5AlignEPv @ 2491 NONAME + _ZNK10RAllocator5AlignEi @ 2492 NONAME + _ZNK10RAllocator9MaxLengthEv @ 2493 NONAME + _ZN10RAllocator17__DbgGetAllocFailEv @ 2494 NONAME + _ZN4User17__DbgGetAllocFailEi @ 2495 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 2496 NONAME + diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/common/array.cpp --- a/kernel/eka/common/array.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/common/array.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -663,6 +663,12 @@ return iCount; } +EXPORT_C void RArrayBase::SetKeyOffset(TInt aKeyOffset) + { + __ASSERT_ALWAYS(TUint(aKeyOffset)iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m); + OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ, "ERead iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m); + OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ2, "ERead length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); r=iDrive->Request(m); __TRACE_TIMING(3); - OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN, "ERead Return iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m ); + OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN, "ERead Return iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m ); + OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ_RETURN2, "ERead Return length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); } m.CloseRemoteThread(); break; @@ -600,9 +601,11 @@ r=m.ProcessMessageData(a1); if (r==KErrNone) { - OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE, "EWrite iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m ); + OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE, "EWrite iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m ); + OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE2, "EWrite length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); r=iDrive->Request(m); - OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN, "EWrite Return iDriveNumber=%d; length=0x%x; position=0x%x; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) m.Length(), (TUint) m.Pos(), (TUint) &m ); + OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN, "EWrite Return iDriveNumber=%d; TLocDrvRequest Object=0x%x", (TInt) iDrive->iDriveNumber, (TUint) &m ); + OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_WRITE_RETURN2, "EWrite Return length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); } m.CloseRemoteThread(); break; @@ -1557,7 +1560,7 @@ OstTraceFunctionEntry1( TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION_ENTRY, this ); TLocDrv& d=*Drive(); __KTRACE_OPT(KLOCDRV,Kern::Printf("CheckAndAdjustForPartition drive %d partition len %lx",d.iDriveNumber,d.iPartitionLen)); - OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION1, "iDriveNumber=%d; partition length=0x%lx", d.iDriveNumber, (TInt) d.iPartitionLen ); + OstTraceExt3( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION1, "iDriveNumber=%d; partition length=%x:%x", d.iDriveNumber, (TInt) I64HIGH (d.iPartitionLen), (TInt) I64LOW (d.iPartitionLen)); Flags() |= EAdjusted; TInt r; switch (Id()) @@ -1578,7 +1581,7 @@ } case DLocalDrive::EEnlarge: __KTRACE_OPT(KLOCDRV,Kern::Printf("Enlarge request %lx",Length())); - OstTrace1( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION2, "Enlarge request=0x%lx", Length() ); + OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION2, "Enlarge request=%x:%x", (TInt) I64HIGH(Length()), (TInt) I64LOW(Length()) ); if (Length()>KMaxTInt) r = KErrArgument; else @@ -1586,7 +1589,7 @@ break; case DLocalDrive::EReduce: __KTRACE_OPT(KLOCDRV,Kern::Printf("Reduce request %lx@%lx",Length(),Pos())); - OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION3, "Reduce request length=0x%lx; position=0x%lx", (TUint) Length(), (TUint) Pos() ); + OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION3, "Reduce request length=%x:%x; position=%x:%x", (TUint) I64HIGH(Length()), (TUint) I64LOW(Length()), (TUint) I64HIGH (Pos()), (TUint) I64LOW (Pos()) ); if (Pos()+Length()>d.iPartitionLen) r = KErrArgument; else @@ -1594,7 +1597,7 @@ break; case DLocalDrive::EFormat: __KTRACE_OPT(KLOCDRV,Kern::Printf("Format request %lx@%lx",Length(),Pos())); - OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION4, "Format request length=0x%lx; position=0x%lx", (TUint) Length(), (TUint) Pos() ); + OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION4, "Format request length=%x:%x; position=%x:%x", (TUint) I64HIGH(Length()),(TUint) I64LOW(Length()), (TUint) I64HIGH (Pos()), (TUint) I64LOW (Pos()) ); if (!(DriverFlags() & RLocalDrive::ELocDrvWholeMedia)) { if (Pos()>d.iPartitionLen) @@ -1622,7 +1625,7 @@ // Otherwise the media driver adjust it internally case DMediaPagingDevice::ECodePageInRequest: __KTRACE_OPT(KLOCDPAGING,Kern::Printf("Adjusted Paging read request %lx@%lx",Length(),Pos())); - OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, TLOCDRVREQUESTCHECKANDADJUSTFORPARTITION5, "Adjusted Paging read request length=0x%lx; position=0x%lx", (TUint) Length(), (TUint) Pos()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, TLOCDRVREQUESTCHECKANDADJUSTFORPARTITION5, "Adjusted Paging read request length=%x:%x; position=%x%:%x", (TUint) I64HIGH(Length()), (TUint) I64LOW(Length()), (TUint) I64HIGH (Pos()), (TUint) I64LOW (Pos())); if (Pos()+Length()>d.iPartitionLen) { r = KErrArgument; @@ -1635,7 +1638,7 @@ default: // read or write or fragment __KTRACE_OPT(KLOCDRV,Kern::Printf("R/W request %lx@%lx",Length(),Pos())); - OstTraceExt2( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION6, "Read/Write request length=0x%x; position=0x%x", (TUint) Length(), (TUint) Pos() ); + OstTraceExt4( TRACE_INTERNALS, TLOCDRVREQUEST_CHECKANDADJUSTFORPARTITION6, "Read/Write request length=%x:%x; position=%x:%x", (TUint)I64HIGH (Length()), (TUint)I64LOW (Length()), (TUint) I64HIGH (Pos()), (TUint) I64LOW (Pos())); if (DriverFlags() & RLocalDrive::ELocDrvWholeMedia) { if (d.iMedia && d.iMedia->iDriver && Pos()+Length() > d.iMedia->iPartitionInfo.iMediaSizeInBytes) @@ -2021,7 +2024,8 @@ __KTRACE_OPT(KLOCDRV,Kern::Printf("DPrimaryMediaBase(%d)::Request(%08x)",iMediaId,&aReq)); __KTRACE_OPT(KLOCDRV,Kern::Printf("this=%x, ReqId=%d, Pos=%lx, Len=%lx, remote thread %O",this,aReq.Id(),aReq.Pos(),aReq.Length(),aReq.RemoteThread())); - OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST, "reqId=%d; length=0x%lx; position=0x%lx; remote thread=0x%x", (TInt) aReq.Id(), (TUint) aReq.Length(), (TUint) aReq.Pos(), (TUint) aReq.RemoteThread()); + OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST, "reqId=%d; remote thread=0x%x", (TInt) aReq.Id(), (TUint) aReq.RemoteThread()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_REQUEST2, "length=%x:%x; position=%x:%x", (TUint) I64HIGH(aReq.Length()), (TUint) I64LOW(aReq.Length()), (TUint) I64HIGH(aReq.Pos()), (TUint) I64LOW(aReq.Pos())); TInt reqId = aReq.Id(); @@ -2309,7 +2313,8 @@ fragment.Flags() = aReq.Flags(); __KTRACE_OPT2(KLOCDPAGING,KLOCDRV,Kern::Printf("Send fragment (0x%08x) type(%d), length(0x%x), offset within original req(0x%x), pos in media(0x%lx)",&fragment,fragment.Id(), pinnedLen, pos, fragment.Pos())); - OstTraceDefExt5(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE3, "Send fragment 0x%08x; type=%d; length=0x%x; offset within original req=0x%x; position in media=0x%lx", (TUint) &fragment, (TInt) fragment.Id(), (TUint) pinnedLen, (TUint) pos, (TUint) fragment.Pos()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE3, "Send fragment 0x%08x; type=%d; length=0x%x; offset within original req=0x%x", (TUint) &fragment, (TInt) fragment.Id(), (TUint) pinnedLen, (TUint) pos); + OstTraceDefExt3(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DPRIMARYMEDIABASE_PINFRAGMENTSENDRECEIVE4, "Send fragment 0x%08x; position in media=%x:%x",(TUint) &fragment, (TUint) I64HIGH(fragment.Pos()), (TUint) I64LOW(fragment.Pos())); #ifdef BTRACE_PAGING_MEDIA TInt buf[4]; @@ -2748,7 +2753,7 @@ DMedia* media=pL->iMedia; TInt r=KErrNone; - OstTraceDefExt3( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_DOREQUEST, "req Id=%d; length=0x%x; position=0x%x", (TInt) m.Id(), (TInt) m.Length(), (TInt) m.Pos()); + OstTraceDefExt5( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DPRIMARYMEDIABASE_DOREQUEST, "req Id=%d; length=%x:%x; position=%x:%x", (TInt) m.Id(), (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos()) ); // re-open this drive's media driver ? if (m.iValue == DLocalDrive::EForceMediaChange) @@ -4284,7 +4289,8 @@ m.RemoteDesOffset()=0; // pre-aligned m.DriverFlags()=0; __KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes())); - OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ2, "reqId=%d; position=0x%lx; length=0x%x; remote Des=0x%x", (TInt) m.Id(), (TUint) m.Pos(), (TUint) m.Length(), (TUint) m.RemoteDes()); + OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ2, "reqId=%d; remote Des=0x%x", (TInt) m.Id(), (TUint) m.RemoteDes()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_READ3, "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); __ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT()); TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges; @@ -4402,7 +4408,8 @@ m.RemoteDesOffset()=0; // pre-aligned m.DriverFlags()=0; __KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes())); - OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE2, "reqId=%d; position=0x%lx; length=0x%lx; remote Des=0x%x", (TInt) m.Id(), (TUint) m.Pos(), (TUint) m.Length(), (TUint) m.RemoteDes()); + OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE2, "reqId=%d; remote Des=0x%x", (TInt) m.Id(), (TUint) m.RemoteDes()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_WRITE3, "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); __ASSERT_DEBUG(iPrimaryMedia->iBody, LOCM_FAULT()); TInt mediaChanges = iPrimaryMedia->iBody->iMediaChanges; @@ -4497,8 +4504,8 @@ m.RemoteDesOffset() = 0; // pre-aligned m.DriverFlags()=0; __KTRACE_OPT2(KLOCDRV,KLOCDPAGING,Kern::Printf("ReqId=%d, Pos=0x%lx, Len=0x%lx, remote Des 0x%x",m.Id(),m.Pos(),m.Length(),m.RemoteDes())); - OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY2 , "reqId=%d; position=0x%lx; length=0x%lx; remote Des=0x%x", m.Id(), m.Pos(), m.Length(), (TUint) m.RemoteDes()); - + OstTraceDefExt2(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY2 , "reqId=%d; remote Des=0x%x", m.Id(),(TUint) m.RemoteDes()); + OstTraceDefExt4(OST_TRACE_CATEGORY_RND, TRACE_DEMANDPAGING, DMEDIAPAGINGDEVICE_DELETENOTIFY3 , "length=%x:%x, pos=%x:%x", (TUint) I64HIGH(m.Length()), (TUint) I64LOW(m.Length()), (TUint) I64HIGH(m.Pos()), (TUint) I64LOW(m.Pos())); // send request aynchronously as we don't particularly care about the result // and waiting would slow down the thread taking the page fault iPrimaryMedia->RequestCountInc(); diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/media/base_e32_drivers_media.mrp --- a/kernel/eka/drivers/media/base_e32_drivers_media.mrp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/media/base_e32_drivers_media.mrp Thu Jun 10 11:48:01 2010 +0100 @@ -1,18 +1,3 @@ -# -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" -# which accompanies this distribution, and is available -# at the URL "http://www.eclipse.org/legal/epl-v10.html". -# -# Initial Contributors: -# Nokia Corporation - initial contribution. -# -# Contributors: -# -# Description: -# # component name "Media Drivers" component base_e32_drivers_media @@ -25,6 +10,7 @@ source \sf\os\kernelhwsrv\kernel\eka\drivers\medlfs source \sf\os\kernelhwsrv\kernel\eka\drivers\medmmc source \sf\os\kernelhwsrv\kernel\eka\drivers\mednand +source \sf\os\kernelhwsrv\kernel\eka\drivers\sdapc source \sf\os\kernelhwsrv\kernel\eka\drivers\pbus\pbusmedia.cpp source \sf\os\kernelhwsrv\kernel\eka\drivers\pbus\spbus.cpp source \sf\os\kernelhwsrv\kernel\eka\drivers\pbus\distribution.policy.s60 diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/media/bld.inf --- a/kernel/eka/drivers/media/bld.inf Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/media/bld.inf Thu Jun 10 11:48:01 2010 +0100 @@ -42,6 +42,7 @@ ../pbus/mmc/sdcard/sdcard3c/sdio/dummyexp.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/sdio/) ../pbus/mmc/sdcard/sdcard3c/sdio/sdiocard.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/sdio/) ../pbus/mmc/sdcard/sdcard3c/sdio/sdiocard.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/sdio/) +../sdapc/d_sdapc.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(drivers/) PRJ_MMPFILES @@ -59,6 +60,7 @@ #if !defined(WINS) && !defined(GENERIC_X86) ../../drivers/pbus/mmc/sdcard/sdcard3c/epbussd ../../drivers/pbus/mmc/sdcard/sdcard3c/sdio/epbussdio +../../drivers/sdapc/d_sdapc #endif // Build the folowing from variant if required. diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/medmmc/medmmc.cpp --- a/kernel/eka/drivers/medmmc/medmmc.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/medmmc/medmmc.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -759,7 +759,7 @@ TUint32 length(I64LOW(iCurrentReq->Length())); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:dr:0x%lx,0x%x", pos, length)); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DO_READ, "Position=0x%lx; Length=0x%x", (TUint) pos, (TUint) length); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DO_READ, "Position=%x:%x; Length=0x%x", (TUint) I64HIGH(pos), (TUint) I64LOW(pos), (TUint) length); __ASSERT_DEBUG(CurrentRequest() == EMReqIdle, Panic(EDRInUse)); __ASSERT_DEBUG(pos < TotalSizeInBytes(), Panic(EDRStart)); __ASSERT_DEBUG(iCurrentReq->Length() >= 0, Panic(EDRNotPositive)); @@ -821,7 +821,7 @@ // { OstTraceFunctionEntryExt( DMMCMEDIADRIVERFLASH_LAUNCHREAD_ENTRY, this ); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHREAD, "position=0x%lx; length=0x%x", (TUint) iCurrentReq->Pos(), (TUint) I64LOW(iCurrentReq->Length())); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHREAD, "position=%x:%x; length=0x%x", (TUint) I64HIGH(iCurrentReq->Pos()), (TUint) I64LOW(iCurrentReq->Pos()) ,(TUint) I64LOW(iCurrentReq->Length())); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:lr:0x%lx,0x%x", aStart, aLength)); __ASSERT_DEBUG(TotalSizeInBytes() > aStart, Panic(ELRStart)); __ASSERT_DEBUG(aLength > 0, Panic(ELRNotPositive)); @@ -887,7 +887,7 @@ { OstTraceFunctionEntry1( DMMCMEDIADRIVERFLASH_LAUNCHDBREAD_ENTRY, this ); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:ldbr:0x%lx,0x%x", iReqCur, I64LOW(iReqEnd - iReqCur))); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHDBREAD, "position=0x%lx; length=0x%x", (TInt) iReqCur, (TInt) I64LOW(iReqEnd - iReqCur)); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHDBREAD, "position=%x:%x; length=0x%x", (TInt) I64HIGH(iReqCur), (TInt) I64LOW(iReqCur), (TInt) I64LOW(iReqEnd - iReqCur)); __ASSERT_DEBUG(TotalSizeInBytes() > iReqCur, Panic(ELRStart)); __ASSERT_DEBUG(I64LOW(iReqEnd - iReqCur) > 0, Panic(ELRNotPositive)); __ASSERT_DEBUG(TotalSizeInBytes() >= iReqEnd, Panic(ELREnd)); @@ -948,7 +948,7 @@ // { OstTraceFunctionEntryExt( DMMCMEDIADRIVERFLASH_LAUNCHPHYSREAD_ENTRY, this ); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHPHYSREAD, "position=0x%lx; length=0x%x", (TInt) iReqCur, (TInt) I64LOW(iReqEnd - iReqCur)); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHPHYSREAD, "position=%x:%x; length=0x%x", (TInt) I64HIGH(iReqCur), (TInt) I64LOW(iReqCur), (TInt) I64LOW(iReqEnd - iReqCur)); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:physr:0x%lx,0x%x", aStart, aLength)); __ASSERT_DEBUG(TotalSizeInBytes() > aStart, Panic(ELRStart)); __ASSERT_DEBUG(aLength > 0, Panic(ELRNotPositive)); @@ -1040,7 +1040,7 @@ const TUint32 length = I64LOW(iCurrentReq->Length()); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:dw:0x%lx,0x%x", pos, length)); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DOWRITE, "position=0x%lx; length=0x%x", (TUint) pos, (TUint) length); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DOWRITE, "position=%x:%x; length=0x%x", (TUint) I64HIGH(pos), (TUint) I64LOW(pos), (TUint) length); __ASSERT_DEBUG(CurrentRequest() == EMReqIdle, Panic(EDWInUse)); __ASSERT_DEBUG(pos < TotalSizeInBytes(), Panic(EDWStart)); __ASSERT_DEBUG(length > 0, Panic(EDWNotPositive)); @@ -1075,7 +1075,7 @@ const TUint32 length = I64LOW(iCurrentReq->Length()); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:df:0x%lx,0x%x", pos, length)); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DOFORMAT, "position=0x%lx; length=0x%x", (TUint) pos, (TUint) length); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_DOFORMAT, "position=%x:%x; length=0x%x", (TUint) I64HIGH(pos), (TUint) I64LOW(pos), (TUint) length); __ASSERT_DEBUG(CurrentRequest() == EMReqIdle, Panic(EDFInUse)); __ASSERT_DEBUG(pos < TotalSizeInBytes(), Panic(EDFStart)); __ASSERT_DEBUG(length > 0, Panic(EDFNotPositive)); @@ -1116,7 +1116,7 @@ // { OstTraceFunctionEntryExt( DMMCMEDIADRIVERFLASH_LAUNCHFORMAT_ENTRY, this ); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHFORMAT, "position=0x%lx; length=0x%x", (TInt) iReqCur, (TInt) I64LOW(iReqEnd - iReqCur)); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHFORMAT, "position=%x:%x; length=0x%x", (TInt) I64HIGH(iReqCur), (TInt) I64LOW(iReqCur), (TInt) I64LOW(iReqEnd - iReqCur)); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:lf:0x%lx,0x%x", aStart, aLength)); __ASSERT_DEBUG(TotalSizeInBytes() > aStart, Panic(ELFStart)); __ASSERT_DEBUG((aStart & iBlkMsk) == 0, Panic(ELWFmtStAlign)); @@ -1132,8 +1132,8 @@ iPhysStart = aStart & ~iBlkMsk; // formats are always block-aligned, and the buffer is initialized to 0xff - // Check whether erase commands are supported by this card - if (iCard->CSD().CCC() & KMMCCmdClassErase) + // Check whether erase commands are supported by this card + if ( (iCard->CSD().CCC() & KMMCCmdClassErase) && iEraseInfo.iEraseFlags) { // Determine the erase end point for the next command. We don't erase past the preferred erase unit // size. Therefore, check which is lower, the preferred erase unit size or the end of the requested range. @@ -1215,7 +1215,7 @@ // { OstTraceExt4(TRACE_FLOW, DMMCMEDIADRIVERFLASH_LAUNCHWRITE_ENTRY, "DMmcMediaDriverFlash::LaunchWrite;aStart=%Ld;aLength=%x;aMedReq=%d;this=%x", aStart, (TUint) aLength, (TInt) aMedReq, (TUint) this); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHWRITE, "position=0x%lx; length=0x%x", (TInt) iReqCur, (TInt) I64LOW(iReqEnd - iReqCur)); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_LAUNCHWRITE, "position=%x:%x; length=0x%x", (TInt) I64HIGH(iReqCur), (TInt) I64LOW(iReqCur),(TInt) I64LOW(iReqEnd - iReqCur)); __KTRACE_OPT(KPBUSDRV, Kern::Printf("\n>mmd:lw:0x%lx,%d,%d", aStart, aLength, aMedReq)); __ASSERT_DEBUG(aMedReq == EMReqWrite || aMedReq == EMReqFormat, Panic(ELWRequest)); __ASSERT_DEBUG(TotalSizeInBytes() > aStart, Panic(ELWStart)); @@ -2887,9 +2887,9 @@ { OstTraceFunctionEntryExt( DMMCMEDIADRIVERFLASH_READDATAUNTILCACHEEXHAUSTED_ENTRY, this ); __KTRACE_OPT(KPBUSDRV, Kern::Printf(">mmd:rdc:%x,%x", iReqCur, iReqEnd)); - OstTraceExt2( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_READDATAUNTILCACHEEXHAUSTED, "iReqCur=0x%x; iReqEnd=0x%x", (TUint) iReqCur, (TUint) iReqEnd ); + OstTraceExt3( TRACE_INTERNALS, DMMCMEDIADRIVERFLASH_READDATAUNTILCACHEEXHAUSTED, "iReqCur=%x:%x; iReqEnd=0x%x", (TUint) I64HIGH(iReqCur), (TUint) I64LOW(iReqCur), (TUint) iReqEnd ); - if ( iCurrentReq->IsPhysicalAddress() + if ( (iCurrentReq->DriverFlags() & RLocalDrive::ELocDrvDirectIO) || iCurrentReq->IsPhysicalAddress() #if defined(__DEMAND_PAGING__) && !defined(__WINS__) || DMediaPagingDevice::PageInRequest(*iCurrentReq) #endif //DEMAND_PAGING diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp --- a/kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -27,7 +27,7 @@ // ======== TSDCard ======== TSDCard::TSDCard() -: iProtectedAreaSize(0), iPARootDirEnd(KPARootDirEndUnknown) +: iProtectedAreaSize(0), iPARootDirEnd(KPARootDirEndUnknown), iClientCountSD(0) { // empty } @@ -481,6 +481,12 @@ // Before issueing commands, see if there's actually a card present if (!CardDetect(iCxCardCount)) SMF_GOTOS(EStMoreCardsCheck) + + // Card Previously Marked as Corrupt do not re-initialise + if ((CardArray().CardP(iCxCardCount)->iFlags)& KSDCardIsCorrupt) + { + SMF_GOTOS(EStMoreCardsCheck) + } m.SetTraps(KMMCErrResponseTimeOut); SMF_INVOKES(InitialiseMemoryCardSMST, EStSendCIDIssued) @@ -814,6 +820,7 @@ { __KTRACE_OPT2(KPBUS1, KPANIC, Kern::Printf("-sd:ocr busy timed out")); OstTraceFunctionExitExt( DSDSTACK_INITIALISEMEMORYCARDSM_EXIT2, this, (TInt) KMMCErrBusTimeOut ); + (CardArray().CardP(iCxCardCount)->iFlags)|=KSDCardIsCorrupt; return KMMCErrBusTimeOut; } diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/power/smppower/idlehelper.cia --- a/kernel/eka/drivers/power/smppower/idlehelper.cia Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/power/smppower/idlehelper.cia Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/power/smppower/idlehelper.cpp --- a/kernel/eka/drivers/power/smppower/idlehelper.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/power/smppower/idlehelper.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/power/smppower/idlehelper_lib.mmp --- a/kernel/eka/drivers/power/smppower/idlehelper_lib.mmp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/power/smppower/idlehelper_lib.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -11,13 +11,13 @@ // Contributors: // // Description: -// e32\drivers\power\smppower\smpidlehelper_lib.mmp +// \drivers\power\smppower\smpidlehelper_lib.mmp // Helper library required to implement CPU idle // functionality in a SMP BSP. #define NO_EKERN_LIB -#include "../../kernel/kern_ext.mmh" +#include "kernel/kern_ext.mmh" target idlehelper.lib targettype klib diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp --- a/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -11,7 +11,7 @@ // Contributors: // // Description: -// os\kernelhwsrv\kernel\eka\drivers\power\smppower\sample_idlehandler\smpidlehandler.cpp +// eka\drivers\power\smppower\sample_idlehandler\smpidlehandler.cpp // implements a basic smp idle handler generic layer that can be derived from // to create platform specific SMP idle handlers diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp --- a/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -17,7 +17,7 @@ #define NO_EKERN_LIB -#include "../../kernel/kern_ext.mmh" +#include "kernel/kern_ext.mmh" target sample_smpidlehandler.lib targettype klib diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/sdapc/d_sdapc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/drivers/sdapc/d_sdapc.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -0,0 +1,307 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL " http://www.eclipse.org/legal/epl-v10.html ". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: + + +#include +#include +#include +#include +#include + +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "locmedia_ost.h" +#ifdef __VC32__ +#pragma warning(disable: 4127) // disabling warning "conditional expression is constant" +#endif +#include "d_sdapcTraces.h" +#endif + +_LIT(KLddName,"D_SDAPC"); + +const TInt KMajorVersionNumber=1; +const TInt KMinorVersionNumber=0; +const TInt KBuildVersionNumber=1; + +const TInt KSocketNumber = 0; +const TInt KStackNumber = 0; +const TInt KCardNumber = 0; + +// global Dfc Que +TDynamicDfcQue* gDfcQ; + +class DSDAuxiliaryPowerControlFactory : public DLogicalDevice +// +// LDD factory +// + { +public: + DSDAuxiliaryPowerControlFactory(); + ~DSDAuxiliaryPowerControlFactory(); + virtual TInt Install(); //overriding pure virtual + virtual void GetCaps(TDes8& aDes) const; //overriding pure virtual + virtual TInt Create(DLogicalChannelBase*& aChannel); //overriding pure virtual + }; + + +class DSDAuxiliaryPowerControl : public DLogicalChannel +// +// Logical channel +// + { +public: + DSDAuxiliaryPowerControl(); + virtual ~DSDAuxiliaryPowerControl(); + +protected: + virtual TInt DoCreate(TInt aUnit, const TDesC8* anInfo, const TVersion& aVer); + virtual void HandleMsg(class TMessageBase *); + +private: + static void BusCallBack(TAny* aPtr, TInt aReason, TAny* a1, TAny* a2); + TInt PowerUpStack(); + +private: + DMMCSocket* iSocketP; + DMMCStack* iStackP; + TSDCard* iCardP; + + DThread* iClient; + + TPBusCallBack iBusCallBack; + DSemaphore* iPowerUpSemaphore; + TBool iInitialised; + }; + + +DECLARE_STANDARD_LDD() + { + return new DSDAuxiliaryPowerControlFactory; + } + +DSDAuxiliaryPowerControlFactory::DSDAuxiliaryPowerControlFactory() +// +// Constructor +// + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROLFACTORY_DSDAUXILIARYPOWERCONTROLFACTORY, "DSDAuxiliaryPowerControlFactory::DSDAuxiliaryPowerControlFactory"); + __KTRACE_OPT(KPBUS1, Kern::Printf(">DSDAuxiliaryPowerControlFactory::DSDAuxiliaryPowerControlFactory")); + iParseMask=KDeviceAllowUnit; + iUnitsMask=0xffffffff; + iVersion=TVersion(KMajorVersionNumber,KMinorVersionNumber,KBuildVersionNumber); + } + +TInt DSDAuxiliaryPowerControlFactory::Create(DLogicalChannelBase*& aChannel) +// +// Create a new DSDAuxiliaryPowerControl on this logical device +// + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROLFACTORY_CREATE, "DSDAuxiliaryPowerControlFactory::Create"); + __KTRACE_OPT(KPBUS1, Kern::Printf(">DSDAuxiliaryPowerControlFactory::Create")); + aChannel=new DSDAuxiliaryPowerControl; + return aChannel ? KErrNone : KErrNoMemory; + } + +const TInt KDSDAuxiliaryPowerControlApiThreadPriority = 27; +_LIT(KDSDAuxiliaryPowerControlApiThread,"DSDAuxiliaryPowerControlApiThread"); + +TInt DSDAuxiliaryPowerControlFactory::Install() +// +// Install the LDD - overriding pure virtual +// + { + // Allocate a kernel thread to run the DFC + TInt r = Kern::DynamicDfcQCreate(gDfcQ, KDSDAuxiliaryPowerControlApiThreadPriority, KDSDAuxiliaryPowerControlApiThread); + + if (r != KErrNone) + return r; + + return SetName(&KLddName); + } + +void DSDAuxiliaryPowerControlFactory::GetCaps(TDes8& aDes) const +// +// Get capabilities - overriding pure virtual +// + { + TCapsTestV01 b; + b.iVersion=TVersion(KMajorVersionNumber,KMinorVersionNumber,KBuildVersionNumber); + Kern::InfoCopy(aDes,(TUint8*)&b,sizeof(b)); + } + +/** + Destructor +*/ +DSDAuxiliaryPowerControlFactory::~DSDAuxiliaryPowerControlFactory() + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROLFACTORY_DSDAUXILIARYPOWERCONTROLFACTORY_DTOR, "DSDAuxiliaryPowerControlFactory::~DSDAuxiliaryPowerControlFactory"); + __KTRACE_OPT(KPBUS1, Kern::Printf(">DSDAuxiliaryPowerControlFactory::~DSDAuxiliaryPowerControlFactory")); + if (gDfcQ) + gDfcQ->Destroy(); + } + +void DSDAuxiliaryPowerControl::BusCallBack(TAny* aPtr, TInt aReason, TAny* a1, TAny* a2) + { + DSDAuxiliaryPowerControl* pTest = (DSDAuxiliaryPowerControl*)aPtr; + TPBusState busState = (TPBusState) (TInt) a1; + switch (aReason) + { + case TPBusCallBack::EPBusStateChange: + if (busState != EPBusPoweringUp) + Kern::SemaphoreSignal(*(pTest->iPowerUpSemaphore)); + break; + } + } + +TInt DSDAuxiliaryPowerControl::PowerUpStack() + { + iBusCallBack.iFunction = BusCallBack; + iBusCallBack.iPtr=this; + iBusCallBack.SetSocket(iSocketP->iSocketNumber); + iBusCallBack.Add(); + TInt r = Kern::SemaphoreCreate(iPowerUpSemaphore, _L("SDPowerUpSem"), 0); + if (r == KErrNone) + { + r = iSocketP->PowerUp(); + if (r == KErrNone) + Kern::SemaphoreWait(*iPowerUpSemaphore); + } + return r; + } + +TInt DSDAuxiliaryPowerControl::DoCreate(TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& aVer) +// +// Create channel +// + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_1, "DSDAuxiliaryPowerControl::DoCreate()"); + __KTRACE_OPT(KPBUS1, Kern::Printf(">DSDAuxiliaryPowerControl::DoCreate()")); + + if (!Kern::QueryVersionSupported(TVersion(KMajorVersionNumber,KMinorVersionNumber,KBuildVersionNumber),aVer)) + return KErrNotSupported; + + // + // Obtain the appropriate card from the socket/stack + // + iSocketP = static_cast(DPBusSocket::SocketFromId(KSocketNumber)); + if(iSocketP == NULL) + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_2, "DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain socket"); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain socket")); + return KErrNoMemory; + } + + iStackP = static_cast(iSocketP->Stack(KStackNumber)); + if(iStackP == NULL) + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_3, "DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain stack"); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain stack")); + return KErrNoMemory; + } + + iCardP = static_cast(iStackP->CardP(KCardNumber)); + if(iCardP == NULL) + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_4, "DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain card"); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : Didn't obtain card")); + return KErrNoMemory; + } + + SetDfcQ(gDfcQ); + iMsgQ.Receive(); + + // Make sure stack is powered up + TInt r = PowerUpStack(); + if (r != KErrNone && r != KErrCompletion) + { + OstTrace1( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_5, "DSDAuxiliaryPowerControl::DoCreate() : Failed To Power up stack, r = %d", r); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : Failed To Power up stack, r = %d", r)); + return r; + } + + if(!iCardP->IsReady()) + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_6, "DSDAuxiliaryPowerControl::DoCreate() : Card not ready"); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : Card not ready")); + return KErrNotReady; + } + + if(!iCardP->ClientsRegistered()) + { + iCardP->RegisterClient(); + ((DSDIOPsu*)(iSocketP->iVcc))->Lock(); + TBool locked = ((DSDIOPsu*)(iSocketP->iVcc))->IsLocked(); + OstTrace1( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DOCREATE_7, "DSDAuxiliaryPowerControl::DoCreate() : PSU IsLocked(), locked = %d", locked); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::DoCreate() : PSU IsLocked(), locked = %d", locked)); + if(!locked) + return KErrNotReady; + } + + return KErrNone; + } + +DSDAuxiliaryPowerControl::DSDAuxiliaryPowerControl() +// +// Constructor +// + { + iClient=&Kern::CurrentThread(); + ((DObject*)iClient)->Open(); + } + + +DSDAuxiliaryPowerControl::~DSDAuxiliaryPowerControl() +// +// Destructor +// + { + OstTrace0( TRACE_FLOW, DSDAUXILIARYPOWERCONTROL_DSDAUXILIARYPOWERCONTROL_DTOR, "DSDAuxiliaryPowerControl::~DSDAuxiliaryPowerControl"); + __KTRACE_OPT(KPBUS1, Kern::Printf("DSDAuxiliaryPowerControl::~DSDAuxiliaryPowerControl")); + iBusCallBack.Remove(); + + if (iSocketP) + iSocketP->ControlIO(DPBusSocket::EControlMediaState, (TAny*)DPBusSocket::EPeriphBusMediaNormal, NULL); + + + if(iCardP->ClientsRegistered()) + { + iCardP->DeregisterClient(); + ((DSDIOPsu*)(iSocketP->iVcc))->Unlock(); + } + + iPowerUpSemaphore->Close(NULL); + + Kern::SafeClose((DObject*&)iClient,NULL); + } + +void DSDAuxiliaryPowerControl::HandleMsg(TMessageBase* aMsg) + { + TThreadMessage& m=*(TThreadMessage*)aMsg; + TInt id=m.iValue; + + if (id==(TInt)ECloseMsg) + { + if (iSocketP) + iSocketP->ControlIO(DPBusSocket::EControlMediaState, (TAny*)DPBusSocket::EPeriphBusMediaNormal, NULL); + + m.Complete(KErrNone, EFalse); + return; + } + else if (id==KMaxTInt) + { + // DoCancel + m.Complete(KErrNone,ETrue); + return; + } + } diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/sdapc/d_sdapc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/drivers/sdapc/d_sdapc.h Thu Jun 10 11:48:01 2010 +0100 @@ -0,0 +1,55 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL " http://www.eclipse.org/legal/epl-v10.html ". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: + + +#ifndef __D_SDAPC_H__ +#define __D_SDAPC_H__ +#include + + + + +class TCapsTestV01 + { +public: + TVersion iVersion; + }; + +/** + +A user-side interface to the SD PSU auxiliary-control driver. + +*/ +class RSDAuxiliaryPowerControlAPI : public RBusLogicalChannel + { +public: + enum + { + EMajorVersionNumber=1, + EMinorVersionNumber=0, + EBuildVersionNumber=1 + }; + +public: + inline void Cancel(); + + inline TInt Open(TInt aSocket,const TVersion& aVer) + {return(DoCreate(_L("D_SDAPC"),aVer,(TInt)aSocket,NULL,NULL));} + + inline TVersion VersionRequired() const + {return(TVersion(EMajorVersionNumber,EMinorVersionNumber,EBuildVersionNumber));} + + }; + +#endif diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/sdapc/d_sdapc.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/drivers/sdapc/d_sdapc.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -0,0 +1,32 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL " http://www.eclipse.org/legal/epl-v10.html ". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: + +#include "kernel/kern_ext.mmh" + +TARGET d_sdapc.ldd +TARGETTYPE LDD + +SOURCEPATH . +SOURCE d_sdapc.cpp +LIBRARY epbussd.lib +epocallowdlldata + +USERINCLUDE traces +USERINCLUDE ../../include/drivers +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +capability all + +SMPSAFE + diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/drivers/sdapc/traces/OstTraceDefinitions.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/drivers/sdapc/traces/OstTraceDefinitions.h Thu Jun 10 11:48:01 2010 +0100 @@ -0,0 +1,21 @@ +// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: + +#ifndef __OSTTRACEDEFINITIONS_H__ +#define __OSTTRACEDEFINITIONS_H__ +// OST_TRACE_COMPILER_IN_USE flag has been added by Trace Compiler +// REMOVE BEFORE CHECK-IN TO VERSION CONTROL +//#define OST_TRACE_COMPILER_IN_USE +#include +#endif diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/eabi/ekernsmp.def --- a/kernel/eka/eabi/ekernsmp.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/eabi/ekernsmp.def Thu Jun 10 11:48:01 2010 +0100 @@ -1189,4 +1189,7 @@ _ZN3Arm14SetIdleHandlerEPFvPvmPVvES0_ @ 1188 NONAME _ZN4Epoc11FreeRamZoneEj @ 1189 NONAME _ZN16TBitMapAllocator14SelectiveAllocEii @ 1190 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 1191 NONAME + _ZN5Cache10CpuRetiresEv @ 1192 NONAME + _ZN5Cache13KernelRetiresEv @ 1193 NONAME diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/eabi/ekernu.def --- a/kernel/eka/eabi/ekernu.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/eabi/ekernu.def Thu Jun 10 11:48:01 2010 +0100 @@ -1181,4 +1181,7 @@ _ZN3Arm14SetIdleHandlerEPFvPvmES0_ @ 1180 NONAME _ZN4Epoc11FreeRamZoneEj @ 1181 NONAME _ZN16TBitMapAllocator14SelectiveAllocEii @ 1182 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 1183 NONAME + _ZN5Cache10CpuRetiresEv @ 1184 NONAME + _ZN5Cache13KernelRetiresEv @ 1185 NONAME diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/eabi/euseru.def --- a/kernel/eka/eabi/euseru.def Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/eabi/euseru.def Thu Jun 10 11:48:01 2010 +0100 @@ -697,11 +697,11 @@ _ZN5RHeap5ResetEv @ 696 NONAME ; RHeap::Reset() _ZN5RHeap7ReAllocEPvii @ 697 NONAME ; RHeap::ReAlloc(void*, int, int) _ZN5RHeap8CompressEv @ 698 NONAME ; RHeap::Compress() - _ZN5RHeapC1Eiii @ 699 NONAME ; RHeap::RHeap(int, int, int) - _ZN5RHeapC1Eiiiiiii @ 700 NONAME ; RHeap::RHeap(int, int, int, int, int, int, int) - _ZN5RHeapC2Eiii @ 701 NONAME ; RHeap::RHeap(int, int, int) - _ZN5RHeapC2Eiiiiiii @ 702 NONAME ; RHeap::RHeap(int, int, int, int, int, int, int) - _ZN5RHeapnwEjPv @ 703 NONAME ; RHeap::operator new(unsigned int, void*) + _ZN5RHeapC1Eiii @ 699 NONAME ABSENT ; RHeap::RHeap(int, int, int) + _ZN5RHeapC1Eiiiiiii @ 700 NONAME ABSENT ; RHeap::RHeap(int, int, int, int, int, int, int) + _ZN5RHeapC2Eiii @ 701 NONAME ABSENT ; RHeap::RHeap(int, int, int) + _ZN5RHeapC2Eiiiiiii @ 702 NONAME ABSENT ; RHeap::RHeap(int, int, int, int, int, int, int) + _ZN5RHeapnwEjPv @ 703 NONAME ABSENT ; RHeap::operator new(unsigned int, void*) _ZN5RTest3EndEv @ 704 NONAME ; RTest::End() _ZN5RTest4NextERK7TDesC16 @ 705 NONAME ; RTest::Next(TDesC16 const&) _ZN5RTest5CloseEv @ 706 NONAME ; RTest::Close() @@ -1601,7 +1601,7 @@ _ZNK4TUid4NameEv @ 1600 NONAME ; TUid::Name() const _ZNK4TUideqERKS_ @ 1601 NONAME ; TUid::operator==(TUid const&) const _ZNK4TUidneERKS_ @ 1602 NONAME ; TUid::operator!=(TUid const&) const - _ZNK5RHeap10GetAddressEPKv @ 1603 NONAME ; RHeap::GetAddress(void const*) const + _ZNK5RHeap10GetAddressEPKv @ 1603 NONAME ABSENT ; RHeap::GetAddress(void const*) const _ZNK5RHeap8AllocLenEPKv @ 1604 NONAME ; RHeap::AllocLen(void const*) const _ZNK5RHeap9AllocSizeERi @ 1605 NONAME ; RHeap::AllocSize(int&) const _ZNK5RHeap9AvailableERi @ 1606 NONAME ; RHeap::Available(int&) const @@ -2530,4 +2530,12 @@ _ZNK7TDesC167Locate2E5TChar @ 2529 NONAME _ZNK7TDesC168LocateF2E5TChar @ 2530 NONAME _ZN6RTimer12AgainHighResER14TRequestStatus27TTimeIntervalMicroSeconds32 @ 2531 NONAME ; RTimer::AgainHighRes(TRequestStatus&, TTimeIntervalMicroSeconds32) + _ZNK10RAllocator4BaseEv @ 2532 NONAME + _ZNK10RAllocator4SizeEv @ 2533 NONAME + _ZNK10RAllocator5AlignEPv @ 2534 NONAME + _ZNK10RAllocator5AlignEi @ 2535 NONAME + _ZNK10RAllocator9MaxLengthEv @ 2536 NONAME + _ZN10RAllocator17__DbgGetAllocFailEv @ 2537 NONAME + _ZN4User17__DbgGetAllocFailEi @ 2538 NONAME + _ZN10RArrayBase12SetKeyOffsetEi @ 2539 NONAME diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/euser/v7_0/euser-7_0.cia --- a/kernel/eka/euser/v7_0/euser-7_0.cia Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/euser/v7_0/euser-7_0.cia Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,18 @@ -// +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// e32/euser/v7_0/euser-7_0.cia +// // EUSER-7_0.CIA - generated by GENSHIMSRC.BAT // diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/d32locd.h --- a/kernel/eka/include/d32locd.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/d32locd.h Thu Jun 10 11:48:01 2010 +0100 @@ -565,7 +565,8 @@ enum TReadWriteFlags { ELocDrvMetaData = 0x80000000, /**< Set if read/write request is for metadata */ - ELocDrvWholeMedia = 0x40000000 /**< Set to access whole media, rather than partition */ + ELocDrvWholeMedia = 0x40000000, /**< Set to access whole media, rather than partition */ + ELocDrvDirectIO = 0x20000000 }; // @see TBusLocalDrive::QueryDevice() diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/drivers/sdcard.h --- a/kernel/eka/include/drivers/sdcard.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/drivers/sdcard.h Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -44,6 +44,7 @@ const TUint32 KSDSwitchFunctionHighSpeed = 0x80FFFF01; const TUint32 KSDCardIsSDCard = KBit16; // KMMCardFirstCustomFlag +const TUint32 KSDCardIsCorrupt = KBit17; const TUint32 KSDCardFirstCustomFlag = KBit24; const TUint KSDDTClk25MHz = 25000; //25000KHz @@ -81,12 +82,16 @@ inline TUint32 PARootDirEnd() const; inline void SetPARootDirEnd(TUint32 aPARootDirEnd); virtual TUint MaxTranSpeedInKilohertz() const; + inline void RegisterClient(); + inline void DeregisterClient(); + inline TBool ClientsRegistered(); private: TUint32 iProtectedAreaSize; TUint32 iPARootDirEnd; TUint8 iAUSize; TUint8 iPad[3]; - TUint32 iSpare[4]; + TUint32 iClientCountSD; + TUint32 iSpare[3]; }; class TSDCardArray : public TMMCardArray diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/drivers/sdcard.inl --- a/kernel/eka/include/drivers/sdcard.inl Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/drivers/sdcard.inl Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -44,6 +44,34 @@ inline TUint32 TSDCard::PARootDirEnd() const {return iPARootDirEnd;} inline void TSDCard::SetPARootDirEnd(TUint32 aPARootDirEnd) {iPARootDirEnd=aPARootDirEnd;} +/** +Called when a client registers with the SD card. +*/ +inline void TSDCard::RegisterClient() + { + __e32_atomic_add_ord32(&iClientCountSD, 1); + } + +/** +Called when a client de-registers with the SD card. +*/ +inline void TSDCard::DeregisterClient() + + { + __e32_atomic_add_ord32(&iClientCountSD, TUint32(-1)); + } + +/** +Returned value indicates whether or not clients have registered with the SD card. +*/ +inline TBool TSDCard::ClientsRegistered() + { + if(iClientCountSD) + return ETrue; + + return EFalse; + } + // ======== TSDCardArray ======== inline TSDCardArray::TSDCardArray(DSDStack* aOwningStack) : TMMCardArray(aOwningStack) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/drivers/smppower/idlehelper.h --- a/kernel/eka/include/drivers/smppower/idlehelper.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/drivers/smppower/idlehelper.h Thu Jun 10 11:48:01 2010 +0100 @@ -1,25 +1,20 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* os\kernelhwsrv\kernel\eka\include\drivers\smpidlehelper.h -* Helper classes required to implement CPU idle -* functionality in a SMP BSP. -* -*/ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL " http://www.eclipse.org/legal/epl-v10.html ". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// os\kernelhwsrv\kernel\eka\include\drivers\smppower\idlehelper.h +// Helper classes required to implement CPU idle +// functionality in a SMP BSP. + /** @file diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h --- a/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h Thu Jun 10 11:48:01 2010 +0100 @@ -1,24 +1,18 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This material, including documentation and any related computer -* programs, is protected by copyright controlled by Nokia. All -* rights are reserved. Copying, including reproducing, storing -* adapting or translating, any or all of this material requires the -* prior written consent of Nokia. This material also contains -* confidential information which may not be disclosed to others -* without the prior written consent of Nokia. -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* os/kernelhwsrv/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h -* Example of a generic idle handler layer -* -*/ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL " http://www.eclipse.org/legal/epl-v10.html ". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// eka/drivers/smppower/sample_idlehandler/smpidlehandler.h +// Example of a generic idle handler layer #ifndef __SMPIDLEHANDLER_H__ diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/e32cmn.h --- a/kernel/eka/include/e32cmn.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/e32cmn.h Thu Jun 10 11:48:01 2010 +0100 @@ -5398,6 +5398,7 @@ IMPORT_C RArrayBase(TInt anEntrySize, TInt aMinGrowBy, TInt aKeyOffset, TInt aFactor); IMPORT_C RArrayBase(TInt aEntrySize,TAny* aEntries, TInt aCount); IMPORT_C void Close(); + IMPORT_C void SetKeyOffset(TInt aKeyOffset); IMPORT_C TInt Count() const; IMPORT_C TAny* At(TInt anIndex) const; IMPORT_C TInt Append(const TAny* anEntry); @@ -5496,6 +5497,7 @@ inline RArray(TInt aMinGrowBy, TInt aKeyOffset, TInt aFactor); inline RArray(TInt aEntrySize,T* aEntries, TInt aCount); inline void Close(); + inline void SetKeyOffset(TInt aKeyOffset); inline TInt Count() const; inline const T& operator[](TInt anIndex) const; inline T& operator[](TInt anIndex); diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/e32cmn.inl --- a/kernel/eka/include/e32cmn.inl Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/e32cmn.inl Thu Jun 10 11:48:01 2010 +0100 @@ -51,120 +51,6 @@ inline void RAllocator::__DbgMarkCheck(TBool aCountAll, TInt aCount, const TUint8* aFileName, TInt aLineNum) {__DbgMarkCheck(aCountAll, aCount, TPtrC8(aFileName), aLineNum);} -// Class RHeap -inline RHeap::RHeap() - {} - -/** -@return The maximum length to which the heap can grow. - -@publishedAll -@released -*/ -inline TInt RHeap::MaxLength() const - {return iMaxLength;} - -inline void RHeap::operator delete(TAny*, TAny*) -/** -Called if constructor issued by operator new(TUint aSize, TAny* aBase) throws exception. -This is dummy as corresponding new operator does not allocate memory. -*/ - {} - - -inline TUint8* RHeap::Base() const -/** -Gets a pointer to the start of the heap. - -Note that because of the small space overhead incurred by all allocated cells, -no cell will have the same address as that returned by this function. - -@return A pointer to the base of the heap. -*/ - {return iBase;} - - - - -inline TInt RHeap::Size() const -/** -Gets the current size of the heap. - -This is the total number of bytes committed by the host chunk. -It is the requested size rounded up by page size minus the size of RHeap object(116 bytes) -minus the cell alignment overhead as shown: - -Size = (Rounded committed size - Size of RHeap - Cell Alignment Overhead). - -The cell alignment overhead varies between release builds and debug builds. - -Note that this value is always greater than the total space available across all allocated cells. - -@return The size of the heap. - -@see Rheap::Available( ) -*/ - {return iTop-iBase;} - - - - -inline TInt RHeap::Align(TInt a) const -/** -@internalComponent -*/ - {return _ALIGN_UP(a, iAlign);} - - - - -inline const TAny* RHeap::Align(const TAny* a) const -/** -@internalComponent -*/ - {return (const TAny*)_ALIGN_UP((TLinAddr)a, iAlign);} - - - - -inline TBool RHeap::IsLastCell(const SCell* aCell) const -/** -@internalComponent -*/ - {return (((TUint8*)aCell) + aCell->len) == iTop;} - - - - -#ifndef __KERNEL_MODE__ -inline void RHeap::Lock() const -/** -@internalComponent -*/ - {((RFastLock&)iLock).Wait();} - - - - -inline void RHeap::Unlock() const -/** -@internalComponent -*/ - {((RFastLock&)iLock).Signal();} - - -inline TInt RHeap::ChunkHandle() const -/** -@internalComponent -*/ - { - return iChunkHandle; - } -#endif - - - - // Class TRefByValue template inline TRefByValue::TRefByValue(T &aRef) @@ -4980,6 +4866,21 @@ template +inline void RArray::SetKeyOffset(TInt aOffset) +/** +Sets the offset of the ordering key within each array entry. + +@param aKeyOffset The key offset. + +@panic USER 128, if aKeyOffset is not positive, or is not less than the + size of class T, or is not a multiple of 4. +*/ + {RArrayBase::SetKeyOffset(aOffset);} + + + + +template inline TInt RArray::Count() const /** Gets the number of objects in the array. diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/e32ver.h --- a/kernel/eka/include/e32ver.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/e32ver.h Thu Jun 10 11:48:01 2010 +0100 @@ -28,7 +28,7 @@ const TInt KE32MajorVersionNumber=2; const TInt KE32MinorVersionNumber=0; -const TInt KE32BuildVersionNumber=3085; +const TInt KE32BuildVersionNumber=3090; const TInt KMachineConfigurationMajorVersionNumber=1; const TInt KMachineConfigurationMinorVersionNumber=0; diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/kernel/cache.h --- a/kernel/eka/include/kernel/cache.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/kernel/cache.h Thu Jun 10 11:48:01 2010 +0100 @@ -126,10 +126,40 @@ On SMP platforms, it only maintains internal cache of the CPU that executes the call. Cache memory common to the all cores (like external cache controllers) are also synchronised. @pre Interrupts must be disabled. + @deprecated in TB 10.1 Use Cache::CpuRetires and Cache::KernelRetires */ IMPORT_C static void AtomicSyncMemory(); /** + Synchronises cache(s) of the current CPU with the next memory level (which may also be cache) + prior to power off or reboot. Caches in other CPUs and those that are shared among them are not affected. + + Shut down or reboot sequence should ensure that the context of cache memories is copied down to the main + memory prior CPU/cache power off. In order to achieve this goal, the following should be obeyed: + - On SMP H/W, any CPU that is about to shut down or reboot should call this method. The very last + running CPU should call both this method and Cache::KernelRetires method. + - On non-SMP H/W. CPU that is about to shut down or reboot should call this method. Call to + Cache::KernelRetires is not required. + + Both Cache::CpuRetires and Cache::KernelRetires assume that Kernel may not be in stable state (as reboot may + be caused by crash), so no attampt will be made to acquire spin lock or call any other Kernel interface. + + @see Cache::KernelRetires + @pre Interrupts must be disabled. + @pre Kernel may not be in stable state. + */ + IMPORT_C static void CpuRetires(); + + /* + Synchronises cache(s) that are shared among CPUs with the main memory prior to power off or reboot. + @see Cache::CpuRetires + @pre Interrupts must be disabled. + @pre Kernel may not be in stable state. + @pre All CPUs other than the current CPU are powered down or their reboot sequence is completed. + */ + IMPORT_C static void KernelRetires(); + + /** Synchronises cache(s) prior to a DMA write (memory to HW DMA transfer) operation. The purpose of SyncMemoryBeforeDmaWrite is to make sure that the main memory is synchronised diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/include/kernel/cache_maintenance.h --- a/kernel/eka/include/kernel/cache_maintenance.h Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/include/kernel/cache_maintenance.h Thu Jun 10 11:48:01 2010 +0100 @@ -301,7 +301,9 @@ /* * Cleans and invalidates the entire content of data and unified cache(s) and drains * write buffers (DSB barrier).. - * On SMP, only the running core is maintained. + * On SMP, only the running core is maintained. + * This methos is called during reboot or power down sequence and therefore is not allowed + * to do Kernel calls that may hold spin lock - such as Kern::Print or precondition checkings. */ static void CleanAndInvalidate_DCache_All(); diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/kernel/arm/cache.cpp --- a/kernel/eka/kernel/arm/cache.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/kernel/arm/cache.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -70,8 +70,10 @@ EXPORT_C void Cache::AtomicSyncMemory() { - CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"Cache::AtomicSyncMemory"); - __KTRACE_OPT(KMMU,Kern::Printf("Cache::AtomicSyncMemory")); + // This methos is called during reboot or power down sequence and therefore is not allowed + // to do Kernel calls that may hold spin lock - such as Kern::Print or precondition checkings. + // CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"Cache::AtomicSyncMemory"); + // __KTRACE_OPT(KMMU,Kern::Printf("Cache::AtomicSyncMemory")); InternalCache::CleanAndInvalidate_DCache_All(); @@ -80,6 +82,29 @@ #endif //__HAS_EXTERNAL_CACHE__ } +EXPORT_C void Cache::CpuRetires() + { + // This methos is called during reboot or power down sequence and therefore is not allowed + // to do Kernel calls that may hold spin lock - such as Kern::Print or precondition checkings. + // CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"Cache::CpuRetires"); + + InternalCache::CleanAndInvalidate_DCache_All(); + +#if !defined(__SMP__) & defined(__HAS_EXTERNAL_CACHE__) + ExternalCache::AtomicSync(); +#endif + } + +EXPORT_C void Cache::KernelRetires() + { + // This methos is called during reboot or power down sequence and therefore is not allowed + // to do Kernel calls that may hold spin lock - such as Kern::Print or precondition checkings. + // CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"Cache::KernelRetires"); + +#if defined(__SMP__) & defined(__HAS_EXTERNAL_CACHE__) + ExternalCache::AtomicSync(); +#endif + } EXPORT_C TInt Cache::GetThresholds(TCacheThresholds& aThresholds, TUint aCacheType) { diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/kernel/arm/cache_external.cpp --- a/kernel/eka/kernel/arm/cache_external.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/kernel/arm/cache_external.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -313,21 +313,24 @@ void ExternalCache::AtomicSync() { - CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"ExternalCache::AtomicSync"); - __KTRACE_OPT(KMMU,Kern::Printf("ExternalCache::AtomicSync")); - + // This methos is called during reboot or power down sequence and therefore is not allowed + // to do Kernel calls that may hold spin lock - such as Kern::Print or precondition checkings. + // CHECK_PRECONDITIONS(MASK_INTERRUPTS_DISABLED,"ExternalCache::AtomicSync"); + // __KTRACE_OPT(KMMU,Kern::Printf("ExternalCache::AtomicSync")); #if defined(__ARM_PL310_CACHE__) - // On Pl310, we hold the lock while maintaining cache. Therefore, we cannot - // do that on a way basis as it takes too long to complete. - // This will also ensure that PL310 erratum 727915 is sorted out. - -#if defined(__ARM_PL310_ERRATUM_588369_FIXED) - Maintain_All((TInt*)(Base+ARML2C_CleanInvalidateByIndexWay)); -#else //defined(__ARM_PL310_ERRATUM_588369_FIXED) - //CleanAndInvalidate is broken. Just clean it. - Maintain_All((TInt*)(Base+ARML2C_CleanByIndexWay)); -#endif //else defined(__ARM_PL310_ERRATUM_588369_FIXED) - + // Do not use maintain-by-way operations on PL310 (due to erratum 727915 for example) + // Also, do not use ARML2C_CleanInvalidateByIndexWay (erratum 588369) + // Do not hold spin lock as it is assumed this is the only running CPU. + TInt indexNo = Info.iSize>>3; // This is the number of cache lines in each way. Assoc is always 8 in this cache + volatile TInt* ctrlReg = (volatile TInt*)(Base+ARML2C_CleanByIndexWay); + TInt way,index; + for (way = 0 ; way iRegs); #else diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/release.txt --- a/kernel/eka/release.txt Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/release.txt Thu Jun 10 11:48:01 2010 +0100 @@ -1,3 +1,60 @@ +Version 2.00.3090 +================= +(Made by vfebvre 03/06/2010) + +1. jimhofe + 1. MINOR_CHANGE Documentation formatting tweaks + + +Version 2.00.3089 +================= +(Made by vfebvre 01/06/2010) + +1. lanerobe + 1. ou1cimx1#397118 Use build-in uint32 sort function + + +Version 2.00.3088 +================= +(Made by vfebvre 28/05/2010) + +1. necliffo + 1. ou1cimx1#407499 modify medmmc to ensure format + +2. lanerobe + 1. ou1cimx1#402843 Fix smppower .mmp files + + +Version 2.00.3086 +================= +(Made by vfebvre 27/05/2010) + +1. atvamos + 1. ou1cimx1#376123 h2.arm4.udeb.f32test.page ROFSBUILD failed on dev-cedar build + +2. vfebvre + 1. ou1cimx1#400806 Warnings reported by the Symbian Foundation license checker + +3. garciato + 1. ou1cimx1#379971 Incorrect Copyright Headers in e32test\timestamp + +4. djkovace + 1. ou1cimx1#367370 Bridge platform neither reboots nor runs crash debugger when crashed + +5. martai + 1. ou1cimx1#399892 E32TEST T_CHUNK test failure investigation (t_chunk.cpp:885) + +6. elzou + 1. ou1cimx1#393943 Phone reset if connect/disconnect USB mouse few times fast + +7. lanerobe + 1. ou1cimx1#399642 Build HCR test roms in its own folder + 2. ou1cimx1#353110 BM_SUITE does not run on NaviEngine + +8. hengrant + 1. ou1cimx1#377057 Trace outputs truncated data for length and position + + Version 2.00.3085 ================= (Made by vfebvre 18/05/2010) diff -r 5e441a173c63 -r 31ea0f8e3c99 kernel/eka/rombuild/nandtest_test_f32tests.oby --- a/kernel/eka/rombuild/nandtest_test_f32tests.oby Mon May 24 18:45:46 2010 +0100 +++ b/kernel/eka/rombuild/nandtest_test_f32tests.oby Thu Jun 10 11:48:01 2010 +0100 @@ -100,7 +100,7 @@ #else rofsname = dir.rofs #endif //MULTIPLEROFS -rofssize = 0x520000 +rofssize = 0x550000 #ifdef PAGED_ROM PAGINGOVERRIDE DEFAULTPAGED diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/bm_ldd.cpp --- a/kerneltest/e32test/benchmark/bm_ldd.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/bm_ldd.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -70,7 +70,7 @@ TInt StartTimerStampOverhead(); TInt RequestTimerStampOverhead(); // iRequestInterrupt() implementation - TInt SetAbsPrioirty(TInt aThreadHandle, TInt aNewPrio, TInt* aOldPrio); + TInt SetAbsPriority(TInt aThreadHandle, TInt aNewPrio, TInt* aOldPrio); DMutex* iLock; // Shall be acquired by anyone who access the object's writable state. @@ -533,9 +533,9 @@ // // -// The implmentation of RBMDriver::SetAbsPrioirty() call. +// The implementation of RBMDriver::SetAbsPriority() call. // -TInt DBMLChannel::SetAbsPrioirty(TInt aThreadHandle, TInt aNewPrio, TInt* aOldPrio) +TInt DBMLChannel::SetAbsPriority(TInt aThreadHandle, TInt aNewPrio, TInt* aOldPrio) { NKern::LockSystem(); // @@ -690,7 +690,7 @@ TInt newPrio; TInt oldPrio; umemget(&newPrio, a2, sizeof(newPrio)); - r = SetAbsPrioirty((TInt) a1, newPrio, &oldPrio); + r = SetAbsPriority((TInt) a1, newPrio, &oldPrio); umemput(a2, &oldPrio, sizeof(oldPrio)); break; } diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/bm_main.cpp --- a/kerneltest/e32test/benchmark/bm_main.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/bm_main.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -78,8 +78,6 @@ #include #include -RTest test(_L("Benchmark Suite")); - // // The default value of the time allocated for one benchmark program. // @@ -300,7 +298,7 @@ User::WaitForRequest(iExitStatus); CLOSE_AND_WAIT(iChild); // - // Lower the parent thread prioirty and then restore the current one + // Lower the parent thread priority and then restore the current one // to make sure that the kernel-side thread destruction DFC had a chance to complete. // TInt prio = BMProgram::SetAbsPriority(RThread(), iProg->iOrigAbsPriority); @@ -362,7 +360,7 @@ User::WaitForRequest(iExitStatus); CLOSE_AND_WAIT(iChild); // - // Lower the parent thread prioirty and then restore the current one + // Lower the parent thread priority and then restore the current one // to make sure that the kernel-side thread destruction DFC had a chance to complete. // TInt prio = BMProgram::SetAbsPriority(RThread(), iProg->iOrigAbsPriority); @@ -418,15 +416,9 @@ // GLDEF_C TInt E32Main() { + RTest test(_L("Benchmark Suite")); test.Title(); - TInt r = UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, 0, 0); - if (r != 1) - { - test.Printf(_L("%d CPUs detected ... test not run\n"), r); - return r; - } - AddProperty(); AddThread(); AddIpc(); @@ -434,7 +426,7 @@ AddOverhead(); AddrtLatency(); - r = User::LoadPhysicalDevice(KBMPddFileName); + TInt r = User::LoadPhysicalDevice(KBMPddFileName); BM_ERROR(r, (r == KErrNone) || (r == KErrAlreadyExists)); r = User::LoadLogicalDevice(KBMLddFileName); @@ -545,7 +537,7 @@ // TBMResult* results = prog->Run(iter, &count); - // Restore the original prioirty + // Restore the original priority BMProgram::SetAbsPriority(RThread(), prog->iOrigAbsPriority); // @@ -617,6 +609,9 @@ void bm_assert_failed(char* aCond, char* aFile, TInt aLine) { + RTest test(_L("Benchmark Suite Assert Failed")); + test.Title(); + TPtrC8 fd((TUint8*)aFile); TPtrC8 cd((TUint8*)aCond); @@ -634,6 +629,9 @@ void bm_error_detected(TInt aError, char* aCond, char* aFile, TInt aLine) { + RTest test(_L("Benchmark Suite Error Detected")); + test.Title(); + TPtrC8 fd((TUint8*)aFile); TPtrC8 cd((TUint8*)aCond); diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/bm_suite.h --- a/kerneltest/e32test/benchmark/bm_suite.h Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/bm_suite.h Thu Jun 10 11:48:01 2010 +0100 @@ -226,7 +226,7 @@ KBMPriorityHigh = 60, // 60 is above all DFC 26 is below timer DFC /** * Absolute priority to be used for middle-priority threads. - * This is also the default prioirty - performance benchmarks are started at this prioirty. + * This is also the default priority - performance benchmarks are started at this prioirty. */ KBMPriorityMid = KBMPriorityHigh - 1, /** @@ -274,7 +274,7 @@ */ TThreadFunction iChildFunc; /** - * The child thread absolute prioirty. + * The child thread absolute priority. * Intialized by constructor. */ TInt iChildPrio; @@ -293,7 +293,7 @@ * Construct a new TBMSpawnArgs object. * * @param aChildFunc the child entry point - * @param aChildPrio the child thread absolute prioirty + * @param aChildPrio the child thread absolute priority * @param aRemote if ETrue the child thread must be created in a separate process; * otherwise, the child thread must be created within the parent's process. */ @@ -343,7 +343,7 @@ * * @param aThread a handle ro the target thread. * @param aNewPrio a new absolute priority for the target thread - * @return the old absolute prioirty of the target thread + * @return the old absolute priority of the target thread */ static TInt SetAbsPriority(RThread aThread, TInt aNewPrio); diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/d32bm.h --- a/kerneltest/e32test/benchmark/d32bm.h Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/d32bm.h Thu Jun 10 11:48:01 2010 +0100 @@ -227,7 +227,7 @@ * The operations are implmented as KBMLdName logical device by KBMLddFileName * logical device driver DLL. * - * The API enables to change the absolute prioirty of a thread. + * The API enables to change the absolute priority of a thread. */ class RBMDriver : public RBusLogicalChannel { @@ -243,7 +243,7 @@ return DoCreate(KBMLdName, TVersion(1,0,1), KNullUnit, &KBMPdName, NULL); } /** - * Change the absolute prioirty of a thread. + * Change the absolute priority of a thread. * * @param aThread a handle to the target thread * @param aNewPrio a new absolute priority for the target thread diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/ipc.cpp --- a/kerneltest/e32test/benchmark/ipc.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/ipc.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -212,11 +212,11 @@ BMProgram( aRemote ? ((aPriority == KBMPriorityHigh) - ? _L("Client-server Framework[Remote High Prioirty Server]") - : _L("Client-server Framework[Remote Low Prioirty Server]")) + ? _L("Client-server Framework[Remote High Priority Server]") + : _L("Client-server Framework[Remote Low Priority Server]")) : ((aPriority == KBMPriorityHigh) - ? _L("Client-server Framework[Local High Prioirty Server]") - : _L("Client-server Framework[Local Low Prioirty Server]"))) + ? _L("Client-server Framework[Local High Priority Server]") + : _L("Client-server Framework[Local Low Priority Server]"))) { iPriority = aPriority; iRemote = aRemote; diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/property.cpp --- a/kerneltest/e32test/benchmark/property.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/property.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -205,25 +205,36 @@ void Property::NotificationLatencyParent(TBMResult* aResult, TBMUInt64 aIter, struct Measurement* aM) { + TRequestStatus st1, st2; + RProperty time; TInt r = time.Define(KPropBenchmarkCategory, 0, RProperty::EByteArray, KPassPolicy, KPassPolicy); BM_ERROR(r, r == KErrNone); r = time.Attach(KPropBenchmarkCategory, 0); BM_ERROR(r, r == KErrNone); + time.Subscribe(st2); RProperty prop; r = prop.Define(KPropBenchmarkCategory, 1, aM->iType, KPassPolicy, KPassPolicy); BM_ERROR(r, r == KErrNone); r = prop.Attach(KPropBenchmarkCategory, 1); BM_ERROR(r, r == KErrNone); + prop.Subscribe(st1); + + RSemaphore sync; + r = sync.CreateGlobal(_L("sync"), 0); + BM_ERROR(r, r == KErrNone); NotificationLatencyArgs sl(aM->iType, aM->iSize, aM->iRemote, aIter, aM->iSetGetType); MBMChild* child = property.SpawnChild(&sl); + for (TBMUInt64 i = 0; i < aIter; ++i) { - TRequestStatus st; - prop.Subscribe(st); - User::WaitForRequest(st); + sync.Signal(); + User::WaitForRequest(st1); + BM_ERROR(st1.Int(), st1.Int() == KErrNone); + prop.Subscribe(st1); + switch(aM->iSetGetType) { case EOneArg: @@ -258,12 +269,11 @@ TBMTicks now; ::bmTimer.Stamp(&now); - BM_ERROR(st.Int(), st.Int() == KErrNone); - // subscribe for the time just before Set() - time.Subscribe(st); - User::WaitForRequest(st); - BM_ERROR(st.Int(), st.Int() == KErrNone); + User::WaitForRequest(st2); + BM_ERROR(st2.Int(), st2.Int() == KErrNone); + time.Subscribe(st2); + // get the time just before Set() TBMTicks propSetTime; TPtr8 ptr((TUint8*) &propSetTime, sizeof(propSetTime), sizeof(propSetTime)); @@ -272,9 +282,19 @@ aResult->Cumulate(TBMTicksDelta(propSetTime, now)); } + + prop.Cancel(); + User::WaitForRequest(st1); + BM_ERROR(st1.Int(), st1.Int() == KErrCancel); + time.Cancel(); + User::WaitForRequest(st2); + BM_ERROR(st2.Int(), st2.Int() == KErrCancel); + prop.Close(); time.Close(); + sync.Close(); child->WaitChildExit(); + r = prop.Delete(KPropBenchmarkCategory, 1); BM_ERROR(r, r == KErrNone); r = time.Delete(KPropBenchmarkCategory, 0); @@ -290,14 +310,25 @@ { iOutBuf[j] = (TUint8)(j + 1); } + RProperty time; + TInt r = time.Attach(KPropBenchmarkCategory, 0); + BM_ERROR(r, r == KErrNone); + RProperty prop; - TInt r = prop.Attach(KPropBenchmarkCategory, 1); + r = prop.Attach(KPropBenchmarkCategory, 1); + BM_ERROR(r, r == KErrNone); + + RSemaphore sync; + r = sync.OpenGlobal(_L("sync")); BM_ERROR(r, r == KErrNone); + for (TBMUInt64 i = 0; i < sl->iIterationCount; ++i) { + sync.Wait(); TBMTicks propSetTime; ::bmTimer.Stamp(&propSetTime); + switch(sl->iSetGetType) { case EOneArg: @@ -336,13 +367,16 @@ } break; } + // publish the time just before Set() TPtr8 ptr((TUint8*) &propSetTime, sizeof(propSetTime), sizeof(propSetTime)); - r = time.Set(KPropBenchmarkCategory, 0, ptr); + r = time.Set(ptr); BM_ERROR(r, r == KErrNone); } + prop.Close(); time.Close(); + sync.Close(); BMProgram::SetAbsPriority(RThread(), prio); return KErrNone; diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/sync.cpp --- a/kerneltest/e32test/benchmark/sync.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/sync.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -272,10 +272,15 @@ void Sync::SemaphoreLatencyParent(TBMResult* aResult, TBMUInt64 aIter, TBool aRemote) { + RSemaphore slSync; + TInt r = slSync.CreateGlobal(_L("slSync"), 0); + BM_ERROR(r, r == KErrNone); + SemaphoreLatencyArgs sl(aRemote, aIter); MBMChild* child = sync.SpawnChild(&sl); for (TBMUInt64 i = 0; i < aIter; ++i) { + slSync.Signal(); sl.iSem.Wait(); TBMTicks now; ::bmTimer.Stamp(&now); @@ -283,20 +288,27 @@ } child->WaitChildExit(); sl.Close(); + slSync.Close(); } TInt Sync::SemaphoreLatencyChild(TAny* ptr) { + RSemaphore slSync; + TInt r = slSync.OpenGlobal(_L("slSync")); + BM_ERROR(r, r == KErrNone); + SemaphoreLatencyArgs* sl = (SemaphoreLatencyArgs*) ptr; sl->ChildOpen(); for (TBMUInt64 i = 0; i < sl->iIterationCount; ++i) { + slSync.Wait(); TBMTicks sigTime; ::bmTimer.Stamp(&sigTime); sl->iSem.Signal(); sl->ChildSignalTime(sigTime); } sl->ChildClose(); + slSync.Close(); return KErrNone; } @@ -368,11 +380,16 @@ void Sync::ThreadSemaphoreLatencyParent(TBMResult* aResult, TBMUInt64 aIter, TBool aRemote) { + RSemaphore tslSync; + TInt r = tslSync.CreateGlobal(_L("tslSync"), 0); + BM_ERROR(r, r == KErrNone); + ThreadSemaphoreLatencyArgs sl(aRemote, aIter); MBMChild* child = sync.SpawnChild(&sl); for (TBMUInt64 i = 0; i < aIter; ++i) { sl.iStatus = KRequestPending; + tslSync.Signal(); User::WaitForRequest(sl.iStatus); BM_ASSERT(sl.iStatus == KErrNone); TBMTicks now; @@ -381,14 +398,20 @@ } child->WaitChildExit(); sl.Close(); + tslSync.Close(); } TInt Sync::ThreadSemaphoreLatencyChild(TAny* ptr) { + RSemaphore tslSync; + TInt r = tslSync.OpenGlobal(_L("tslSync")); + BM_ERROR(r, r == KErrNone); + ThreadSemaphoreLatencyArgs* sl = (ThreadSemaphoreLatencyArgs*) ptr; sl->ChildOpen(); for (TBMUInt64 i = 0; i < sl->iIterationCount; ++i) { + tslSync.Wait(); TRequestStatus* sptr = sl->iStatusPtr; TBMTicks sigTime; ::bmTimer.Stamp(&sigTime); @@ -396,6 +419,7 @@ sl->ChildSignalTime(sigTime); } sl->ChildClose(); + tslSync.Close(); return KErrNone; } diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/benchmark/thread.cpp --- a/kerneltest/e32test/benchmark/thread.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/benchmark/thread.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -164,8 +164,10 @@ TInt r = child.Create(KNullDesC, Thread::KillingChild, 0x2000, NULL, NULL); BM_ERROR(r, r == KErrNone); child.Logon(st); + BMProgram::SetAbsPriority(RThread(), KBMPriorityLow); + child.Resume(); + User::After(1000); // Give the child thread a chance to run - killing it too earlier can leave the heap locked BMProgram::SetAbsPriority(RThread(), KBMPriorityHigh); - child.Resume(); TBMTicks t1; ::bmTimer.Stamp(&t1); child.Kill(KErrCancel); diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/group/t_chunk.mmp --- a/kerneltest/e32test/group/t_chunk.mmp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/group/t_chunk.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -19,7 +19,7 @@ TARGETTYPE EXE SOURCEPATH ../mmu SOURCE t_chunk.cpp -LIBRARY euser.lib +LIBRARY euser.lib hal.lib OS_LAYER_SYSTEMINCLUDE_SYMBIAN diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/group/t_smpsoakspin.mmp --- a/kerneltest/e32test/group/t_smpsoakspin.mmp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/group/t_smpsoakspin.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -1,20 +1,18 @@ -/* -* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// e32test/group/t_smpsoakspin.mmp +// target t_smpsoakspin.exe targettype exe diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/group/t_timestamp.mmp --- a/kerneltest/e32test/group/t_timestamp.mmp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/group/t_timestamp.mmp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/hcr/hcr.inf --- a/kerneltest/e32test/hcr/hcr.inf Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/hcr/hcr.inf Thu Jun 10 11:48:01 2010 +0100 @@ -29,8 +29,6 @@ PRJ_TESTEXPORTS hcr_tests.iby /epoc32/rom/include/hcr_tests.iby -tshell_hcrtest.oby ../../../kernel/eka/rombuild/tshell_hcrtest.oby -nandloader_hcrtest.oby ../../../kernel/eka/rombuild/nandloader_hcrtest.oby hcrtest.auto.bat /epoc32/rom/include/hcrtest.auto.bat hcr_autoexec.bat /epoc32/rom/include/hcr_autoexec.bat diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/hcr/hcrtest_h4roms.mbc --- a/kerneltest/e32test/hcr/hcrtest_h4roms.mbc Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/hcr/hcrtest_h4roms.mbc Thu Jun 10 11:48:01 2010 +0100 @@ -17,57 +17,57 @@ #ifndef BUILD_NO_UREL // Multiple Memory Model // - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR.IMG --type=ubootldr - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-FAT32.IMG --type=ubootldr -D WITH_FAT32 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR.IMG --type=ubootldr + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-FAT32.IMG --type=ubootldr -D WITH_FAT32 // Small block NAND support - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-NAND2LDR.IMG --type=nandloader -D _NAND2 - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-NAND2LDR.IMG --type=nandloader -D _NAND2 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2 // OneNAND support - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-NANDLDR.IMG --type=nandloader -D _ONENAND - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND.IMG --type=tshell_hcrtest -D _ONENAND + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-NANDLDR.IMG --type=nandloader -D _ONENAND + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b urel -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND.IMG --type=tshell_hcrtest -D _ONENAND // Direct/Single Memory model - not supported I think // - // oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v sh4hrp -b urel -i armv5 --zip --symbol --name=SH4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest + // oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v sh4hrp -b urel -i armv5 --zip --symbol --name=SH4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest // Flexible Memory model // - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b urel -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b urel -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest #endif // Direct/Single Memory model - not supported I think // -// oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v sh4hrp -b udeb -i armv5 --zip --symbol --name=SH4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest +// oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v sh4hrp -b udeb -i armv5 --zip --symbol --name=SH4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest // Multiple Memory Model // -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-D.IMG --type=ubootldr -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-FAT32-D.IMG --type=ubootldr -D WITH_FAT32 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-D.IMG --type=ubootldr +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-BOOTLDR-FAT32-D.IMG --type=ubootldr -D WITH_FAT32 // Small block NAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-NAND2LDR-D.IMG --type=nandloader -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_PAGED_NAND2B-D.IMG --type=tshell_hcrtest -D USE_SDIO_SD_MMC,WITH_FAT32,_NAND2,PAGED_ROM,PAGED_CODE +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-NAND2LDR-D.IMG --type=nandloader -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_PAGED_NAND2B-D.IMG --type=tshell_hcrtest -D USE_SDIO_SD_MMC,WITH_FAT32,_NAND2,PAGED_ROM,PAGED_CODE // OneNAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-NANDLDR-D.IMG --type=nandloader -D _ONENAND -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND-D.IMG --type=tshell_hcrtest -D _ONENAND +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-NANDLDR-D.IMG --type=nandloader -D _ONENAND +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v h4hrp -b udeb -i armv5 --zip --symbol --name=H4_TBARMV5D-TSHELL_NAND-D.IMG --type=tshell_hcrtest -D _ONENAND // Flexible Memory model // -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest // Small block NAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-NAND2LDR-D.IMG --type=nandloader -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_PAGED_NAND2B-D.IMG --type=tshell_hcrtest -D USE_SDIO_SD_MMC,WITH_FAT32,_NAND2,PAGED_ROM,PAGED_CODE +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-NAND2LDR-D.IMG --type=nandloader -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_PAGED_NAND2B-D.IMG --type=tshell_hcrtest -D USE_SDIO_SD_MMC,WITH_FAT32,_NAND2,PAGED_ROM,PAGED_CODE // OneNAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-NANDLDR-D.IMG --type=nandloader -D _ONENAND -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_NAND-D.IMG --type=tshell_hcrtest -D _ONENAND +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-NANDLDR-D.IMG --type=nandloader -D _ONENAND +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fh4hrp -b udeb -i armv5 --zip --symbol --name=FH4_TBARMV5D-TSHELL_NAND-D.IMG --type=tshell_hcrtest -D _ONENAND diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/hcr/hcrtest_ne1roms.mbc --- a/kerneltest/e32test/hcr/hcrtest_ne1roms.mbc Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/hcr/hcrtest_ne1roms.mbc Thu Jun 10 11:48:01 2010 +0100 @@ -29,64 +29,64 @@ #ifndef BUILD_NO_UREL // Direct/Single Memory model - unicore - udeb // - // oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v sne1_tb -b urel -i armv5 --zip --symbol --name=SNE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest + // oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v sne1_tb -b urel -i armv5 --zip --symbol --name=SNE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest // Multiple Memory Model - unicore - udeb // - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR.IMG --type=ubootldr - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-FAT32.IMG --type=ubootldr -D WITH_FAT32 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR.IMG --type=ubootldr + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-FAT32.IMG --type=ubootldr -D WITH_FAT32 // Large block NAND support - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-NAND2LDR.IMG --type=nandloader_hcrtest -D _NAND2 - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-NAND2LDR.IMG --type=nandloader_hcrtest -D _NAND2 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b urel -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS // OneNAND support -- -D _ONENANDE not supported on NE1 // Flexible Memory model - unicore & SMP - udeb // - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b urel -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b urel -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS // Large block NAND support - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR.IMG --type=nandloader_hcrtest -D _NAND2 - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS - oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b urel -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR.IMG --type=nandloader_hcrtest -D _NAND2 + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b urel -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS + oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b urel -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS // OneNAND support -- -D _ONENANDE not supported on NE1 #endif // Direct/Single Memory model - unicore - udeb // -// oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v sne1_tb -b udeb -i armv5 --zip --symbol --name=SNE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest +// oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v sne1_tb -b udeb -i armv5 --zip --symbol --name=SNE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest // Multiple Memory Model - unicore - udeb // -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-D.IMG --type=ubootldr -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-FAT32-D.IMG --type=ubootldr -D WITH_FAT32 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-D.IMG --type=ubootldr +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-BOOTLDR-FAT32-D.IMG --type=ubootldr -D WITH_FAT32 // Large block NAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-NAND2LDR-D.IMG --type=nandloader_hcrtest -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-NAND2LDR-D.IMG --type=nandloader_hcrtest -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v ne1_tb -b udeb -i armv5 --zip --symbol --name=NE1_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS // OneNAND support -- -D _ONENANDE not supported on NE1 // Flexible Memory model - unicore & SMP - udeb // -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL-D.IMG --type=tshell_hcrtest -D HCR_INCLUDE_VARIANT_TEST_DRIVERS // Large block NAND support -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR-D.IMG --type=nandloader_hcrtest -D _NAND2 -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR-D.IMG --type=nandloader_hcrtest -D _NAND2 +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2-D.IMG --type=tshell_hcrtest -D _NAND2,HCR_INCLUDE_VARIANT_TEST_DRIVERS // OneNAND support -- -D _ONENANDE not supported on NE1 // Large block NAND support + WDP -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2-WDP-D.IMG --type=tshell_hcrtest -D _NAND2,PAGED_ROM,PAGED_CODE,PAGED_DATA,DATAPAGINGWARNINGS,WITH_FAT32,FULL_NAND_TEST,HCR_INCLUDE_VARIANT_TEST_DRIVERS -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR-WDP-D.IMG --type=nandloader_hcrtest -D _NAND2,_CREATE_NE1_TB_NAND_SWAP -oneoff \os\kernelhwsrv\kernel\eka\rombuild rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2-WDP-D.IMG --type=tshell_hcrtest -D _NAND2,PAGED_ROM,PAGED_CODE,PAGED_DATA,DATAPAGINGWARNINGS,WITH_FAT32,FULL_NAND_TEST,HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-TSHELL_NAND2-WDP-D.IMG --type=tshell_hcrtest -D _NAND2,PAGED_ROM,PAGED_CODE,PAGED_DATA,DATAPAGINGWARNINGS,WITH_FAT32,FULL_NAND_TEST,HCR_INCLUDE_VARIANT_TEST_DRIVERS +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 --zip --symbol --name=FNE1_TBARMV5D-NAND2LDR-WDP-D.IMG --type=nandloader_hcrtest -D _NAND2,_CREATE_NE1_TB_NAND_SWAP +oneoff . \os\kernelhwsrv\kernel\eka\rombuild\rom -v fne1_tb -b udeb -i armv5 -x armv5smp --zip --symbol --name=FNE1_TBARMV5SMPD-TSHELL_NAND2-WDP-D.IMG --type=tshell_hcrtest -D _NAND2,PAGED_ROM,PAGED_CODE,PAGED_DATA,DATAPAGINGWARNINGS,WITH_FAT32,FULL_NAND_TEST,HCR_INCLUDE_VARIANT_TEST_DRIVERS diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/mmu/t_chunk.cpp --- a/kerneltest/e32test/mmu/t_chunk.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/mmu/t_chunk.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -51,6 +51,7 @@ #include #include #include +#include #include "mmudetect.h" #include "d_gobble.h" #include "freeram.h" @@ -820,29 +821,31 @@ { RGobbler gobbler; TInt r = gobbler.Open(); - test(r==KErrNone); + test_KErrNone(r); TUint32 taken = gobbler.GobbleRAM(128*1024*1024); test.Printf(_L("Gobbled: %dK\n"), taken/1024); test.Printf(_L("Free RAM 0x%08X bytes\n"),FreeRam()); test.Next(_L("Create thread")); r=NtfThrd.Create(KNotifierThreadName,NotifierThread,KDefaultStackSize,NULL,NULL); - test(r==KErrNone); + test_KErrNone(r); NtfThrd.SetPriority(EPriorityMore); NtfThrd.Resume(); test.Next(_L("Check for initial notifier")); CheckNotifierCount(1,1); TInt free=FreeRam(); test.Printf(_L("Free RAM: %dK\n"),free/1024); - test(free>=1048576); + test_Value(free, free >= 1048576); test.Next(_L("Set thresholds")); r=UserSvr::SetMemoryThresholds(65536,524288); // low=64K good=512K - test(r==KErrNone); + test_KErrNone(r); test.Next(_L("Create chunk")); // Chunk must not be paged otherwise it will not effect the amount // of free ram reported plus on h4 swap size is less than the total ram. + TInt totalRam; + test_KErrNone(HAL::Get(HAL::EMemoryRAM, totalRam)); TChunkCreateInfo createInfo; - createInfo.SetNormal(0, free+2097152); + createInfo.SetNormal(0, totalRam); createInfo.SetPaging(TChunkCreateInfo::EUnpaged); RChunk c; test_KErrNone(c.Create(createInfo)); @@ -858,31 +861,31 @@ TInt free3=free-(KBufferSpace-free2); // this accounts for space used by page tables test.Next(_L("Leave 32K")); r=c.Adjust(free3-32768); // leave 32K - test(r==KErrNone); + test_KErrNone(r); CheckNotifierCount(2,1); // should get notifier test.Next(_L("Leave 28K")); r=c.Adjust(free3-28672); // leave 28K - test(r==KErrNone); + test_KErrNone(r); CheckNotifierCount(2,1); // shouldn't get another notifier test.Next(_L("Ask for too much")); - r=c.Adjust(free3+4096); // try to get more than available - test(r==KErrNoMemory); + r=c.Adjust(totalRam); // try to get more than available + test_Equal(KErrNoMemory, r); CheckNotifierCount(2,2); // should get another notifier test.Next(_L("Leave 128K")); r=c.Adjust(free3-131072); // leave 128K - test(r==KErrNone); + test_KErrNone(r);; CheckNotifierCount(2,2); // shouldn't get another notifier test.Next(_L("Leave 640K")); r=c.Adjust(free3-655360); // leave 640K - test(r==KErrNone); + test_KErrNone(r); CheckNotifierCount(3,2); // should get another notifier test.Next(_L("Leave 1M")); r=c.Adjust(free3-1048576); // leave 1M - test(r==KErrNone); + test_KErrNone(r); CheckNotifierCount(3,2); // shouldn't get another notifier test.Next(_L("Ask for too much")); - r=c.Adjust(free3+4096); // try to get more than available - test(r==KErrNoMemory); + r=c.Adjust(totalRam); // try to get more than available + test_Equal(KErrNoMemory, r); TInt notifierCount = 3; if(MemModel==EMemModelTypeFlexible) @@ -897,7 +900,7 @@ CheckNotifierCount(notifierCount,3); // should get another notifier test.Next(_L("Leave 1M")); r=c.Adjust(free3-1048576); // leave 1M - test(r==KErrNone); + test_KErrNone(r); CheckNotifierCount(notifierCount,3); // shouldn't get another notifier c.Close(); diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/timestamp/d_timestamp.cpp --- a/kerneltest/e32test/timestamp/d_timestamp.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/timestamp/d_timestamp.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,20 +1,18 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// d_timestamp.cpp +// #include #include diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/timestamp/d_timestamp.h --- a/kerneltest/e32test/timestamp/d_timestamp.h Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/timestamp/d_timestamp.h Thu Jun 10 11:48:01 2010 +0100 @@ -1,20 +1,18 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// d_timestamp.h +// #ifndef __TIMESTAMPTEST_H__ diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/timestamp/d_timestamp_dev.h --- a/kerneltest/e32test/timestamp/d_timestamp_dev.h Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/timestamp/d_timestamp_dev.h Thu Jun 10 11:48:01 2010 +0100 @@ -1,20 +1,18 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// d_timestamp_dev.h +// #ifndef __D_TIMERSTAMP_DEV_H__ #define __D_TIMERSTAMP_DEV_H__ diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl --- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -287,8 +287,4 @@ free space for the file that is going to be created. The default size is 400 MB. -=head1 COPYRIGHT - -Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl --- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -300,8 +300,4 @@ free space for the file that is going to be created. The default size is 400 MB. -=head1 COPYRIGHT - -Copyright (c) 2006-2008 Symbian Software Ltd. All rights reserved. All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl --- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -397,8 +397,4 @@ TestExpectedResults: Read data from files should match with written. -=head1 COPYRIGHT - -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl --- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -248,8 +248,4 @@ with written. Sum of file size and free space should be close to drive size. -=head1 COPYRIGHT - -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/group/wintest.bat --- a/kerneltest/f32test/group/wintest.bat Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/group/wintest.bat Thu Jun 10 11:48:01 2010 +0100 @@ -28,6 +28,9 @@ call :GetParentDirPath F32TEST_PATH echo F32TEST_PATH = %F32TEST_PATH% set EPOC32_DIR=%EPOCROOT%EPOC32\ +set F32TEST_BUILD_PATH=%EPOC32_DIR%BUILD%F32TEST_PATH%GROUP\ +if exist %EPOC32_DIR%data\z\test\f32test set F32TEST_BUILD_PATH=%EPOC32_DIR%data\z\test\f32test\ +echo F32TEST_BUILD_PATH = %F32TEST_BUILD_PATH% echo EPOC32_DIR = %EPOC32_DIR% set EMUL_MEDIA_PATH=%EPOC32_DIR%DATA\MEDIA\ echo EMUL_MEDIA_PATH = %EMUL_MEDIA_PATH% @@ -100,7 +103,7 @@ copy %F32TEST_PATH%\SERVER\T_FILE.CPP %EMUL_Z%\TEST\T_FILE.CPP copy %F32TEST_PATH%\SERVER\T_FSRV.CPP %EMUL_Z%\TEST\T_FSRV.CPP copy %F32TEST_PATH%\SERVER\T_RDSECT.TXT %EMUL_Z%\TEST\T_RDSECT.TXT -copy %EPOC32_DIR%BUILD%F32TEST_PATH%\GROUP\%1.AUTO.BAT %EMUL_Z%\TEST\%1.AUTO.BAT +copy %F32TEST_BUILD_PATH%\%1.AUTO.BAT %EMUL_Z%\TEST\%1.AUTO.BAT copy %REL_DIR%\T_CHKUID.EXE %EMUL_Z%\TEST\T_CHKUID.EXE REM Use both Sys and System directories until the switch has been made diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/loader/dlltree.pl --- a/kerneltest/f32test/loader/dlltree.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/loader/dlltree.pl Thu Jun 10 11:48:01 2010 +0100 @@ -57,6 +57,16 @@ my $copy_end=$year+1900; my $argc=scalar(@ARGV); + +# check whether its raptor specific +my $is_raptor = 0; +if ($ARGV[$argc-1] eq "raptor") # change "raptor" to something you want. +{ + pop(@ARGV); + $is_raptor = 1; + $argc--; +} + ($argc==1 or $argc==2 or $argc==3) or die "Usage: perl dlltree.pl [-allowbad]\n"; my $infile=$ARGV[0]; open IN, $infile or die "Cannot open input file $infile\n"; @@ -795,13 +805,20 @@ open OUT, ">$dlltreename" or die "Could not open $dlltreename for output\n"; print OUT @dlltree; close OUT; -my $testbatch = "$ENV{EPOCROOT}epoc32\\build"; -$destpath =~ s/\//\\/go; -$testbatch.="\\" unless ($destpath =~ /^\\/); -$testbatch.=$destpath; -$testbatch.="##MAIN##.auto.bat"; -if (!$allowbad) { - push @iby, "data=$testbatch\t\ttest\\loader.auto.bat\n"; + +my $testbatch =''; +if($is_raptor) { + $testbatch="$ENV{EPOCROOT}\\epoc32\\data\\z\\test\\gen\\##MAIN##.auto.bat"; +} +else { + $testbatch = "$ENV{EPOCROOT}epoc32\\build"; + $destpath =~ s/\//\\/go; + $testbatch.="\\" unless ($destpath =~ /^\\/); + $testbatch.=$destpath; + $testbatch.="##MAIN##.auto.bat"; + } +if (!$allowbad){ + push @iby, "data=$testbatch\t\ttest\\loader.auto.bat\n"; } open OUT, ">$ibyname" or die "Could not open $ibyname for output\n"; print OUT @iby; diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/loader/ldrtst.flm --- a/kerneltest/f32test/loader/ldrtst.flm Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/loader/ldrtst.flm Thu Jun 10 11:48:01 2010 +0100 @@ -20,7 +20,7 @@ cp -u $$(filter-out %generated,$$^) $$@ $(TO_BLDINF)/$(GDIR)/generated: $(TO_BLDINF)/dlltree.pl $(TO_BLDINF)/dlltree.txt - perl $(TO_BLDINF)/dlltree.pl $(TO_BLDINF)/dlltree.txt $(TO_BLDINF)/$(GDIR) + perl $(TO_BLDINF)/dlltree.pl $(TO_BLDINF)/dlltree.txt $(TO_BLDINF)/$(GDIR) raptor touch $$@ endif diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/locl/CodepageUtils/src/t_cputils_cp932.cpp --- a/kerneltest/f32test/locl/CodepageUtils/src/t_cputils_cp932.cpp Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/locl/CodepageUtils/src/t_cputils_cp932.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,3 +1,16 @@ +// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: // // Auto-generated by the FatConversiontable tool - Do not edit!!! // diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/smassstorage/scripts/usbinterop1.pl --- a/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -279,8 +279,4 @@ TestExpectedResults: Read data from files should match with written. -=head1 COPYRIGHT - -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/smassstorage/scripts/usbinterop2.pl --- a/kerneltest/f32test/smassstorage/scripts/usbinterop2.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/smassstorage/scripts/usbinterop2.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -163,8 +163,4 @@ with written. Sum of file size and free space should be close to drive size. -=head1 COPYRIGHT - -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/smassstorage/scripts/usbperformance.pl --- a/kerneltest/f32test/smassstorage/scripts/usbperformance.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/smassstorage/scripts/usbperformance.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -174,8 +174,4 @@ free space for the file that is going to be created. The default size is 400 MB. -=head1 COPYRIGHT - - Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl --- a/kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl Mon May 24 18:45:46 2010 +0100 +++ b/kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl Thu Jun 10 11:48:01 2010 +0100 @@ -2,7 +2,7 @@ # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). # All rights reserved. # This component and the accompanying materials are made available -# under the terms of "Eclipse Public License v1.0" +# under the terms of the License "Eclipse Public License v1.0" # which accompanies this distribution, and is available # at the URL "http://www.eclipse.org/legal/epl-v10.html". # @@ -186,8 +186,4 @@ free space for the file that is going to be created. The default size is 400 MB. -=head1 COPYRIGHT - -Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. - =cut diff -r 5e441a173c63 -r 31ea0f8e3c99 package_definition.xml --- a/package_definition.xml Mon May 24 18:45:46 2010 +0100 +++ b/package_definition.xml Thu Jun 10 11:48:01 2010 +0100 @@ -61,6 +61,14 @@ + + + + + + + + @@ -133,6 +141,9 @@ + + + diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/bmarm/efileu.def --- a/userlibandfileserver/fileserver/bmarm/efileu.def Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/bmarm/efileu.def Thu Jun 10 11:48:01 2010 +0100 @@ -240,4 +240,5 @@ DriveInfo__C11CFileSystemR10TDriveInfoi @ 239 NONAME R3UNUSED ; CFileSystem::DriveInfo(TDriveInfo &, int) const GetDriveInfo__FR10TDriveInfoi @ 240 NONAME R3UNUSED ; GetDriveInfo(TDriveInfo &, int) Volume__C9RFsPluginR11TVolumeInfoi @ 241 NONAME R3UNUSED ; RFsPlugin::Volume(TVolumeInfo &, int) const - + IsSequentialMode__C7CFileCB @ 242 NONAME R3UNUSED ; CFileCB::IsSequentialMode(void) const + DirectIOMode__7CFileCBRC12RMessagePtr2 @ 243 NONAME R3UNUSED ; CFileCB::DirectIOMode(RMessagePtr2 const &) diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/bwins/efileu.def --- a/userlibandfileserver/fileserver/bwins/efileu.def Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/bwins/efileu.def Thu Jun 10 11:48:01 2010 +0100 @@ -241,3 +241,5 @@ ?DriveInfo@CFileSystem@@UBEXAAVTDriveInfo@@H@Z @ 240 NONAME ; void CFileSystem::DriveInfo(class TDriveInfo &, int) const ?GetDriveInfo@@YAXAAVTDriveInfo@@H@Z @ 241 NONAME ; void GetDriveInfo(class TDriveInfo &, int) ?Volume@RFsPlugin@@QBEHAAVTVolumeInfo@@H@Z @ 242 NONAME ; int RFsPlugin::Volume(class TVolumeInfo &, int) const + ?IsSequentialMode@CFileCB@@QBEHXZ @ 243 NONAME ; int CFileCB::IsSequentialMode(void) const + ?DirectIOMode@CFileCB@@QAEHABVRMessagePtr2@@@Z @ 244 NONAME ; int CFileCB::DirectIOMode(class RMessagePtr2 const &) diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/bx86/efileu.def --- a/userlibandfileserver/fileserver/bx86/efileu.def Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/bx86/efileu.def Thu Jun 10 11:48:01 2010 +0100 @@ -241,3 +241,6 @@ ?DriveInfo@CFileSystem@@UBEXAAVTDriveInfo@@H@Z @ 240 NONAME ; public: virtual void __thiscall CFileSystem::DriveInfo(class TDriveInfo &,int)const ?GetDriveInfo@@YAXAAVTDriveInfo@@H@Z @ 241 NONAME ; void __cdecl GetDriveInfo(class TDriveInfo &,int) ?Volume@RFsPlugin@@QBEHAAVTVolumeInfo@@H@Z @ 242 NONAME ; public: int __thiscall RFsPlugin::Volume(class TVolumeInfo &,int)const + ?IsSequentialMode@CFileCB@@QBEHXZ @ 243 NONAME ; public: int __thiscall CFileCB::IsSequentialMode(void)const + ?DirectIOMode@CFileCB@@QAEHABVRMessagePtr2@@@Z @ 244 NONAME ; int CFileCB::DirectIOMode(class RMessagePtr2 const &) + diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/eabi/efileu.def --- a/userlibandfileserver/fileserver/eabi/efileu.def Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/eabi/efileu.def Thu Jun 10 11:48:01 2010 +0100 @@ -313,3 +313,6 @@ _Z12GetDriveInfoR10TDriveInfoi @ 312 NONAME _ZNK11CFileSystem9DriveInfoER10TDriveInfoi @ 313 NONAME _ZNK9RFsPlugin6VolumeER11TVolumeInfoi @ 314 NONAME + _ZNK7CFileCB16IsSequentialModeEv @ 315 NONAME + _ZN7CFileCB12DirectIOModeERK12RMessagePtr2 @ 316 NONAME + diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/group/release.txt --- a/userlibandfileserver/fileserver/group/release.txt Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/group/release.txt Thu Jun 10 11:48:01 2010 +0100 @@ -1,3 +1,29 @@ +Version 2.00.3044 +================= +(Made by vfebvre 27/05/2010) + +1. vfebvre + 1. ou1cimx1#400806 Warnings reported by the Symbian Foundation license checker + +2. h14jiang + 1. DEF145205 File server crash observed when running F32TEST T_PLUGIN_V2 + +3. michcox + 1. ou1cimx1#378866 MCL Symbian.org Bug 2544 - Possible deadlocks on f32 plugin chains + +4. vinjose + 1. ou1cimx1#394794 Raptor creates incorrect .iby files for f32test/loader + + +Version 2.00.3043 +================= +(Made by vfebvre 27/05/2010) + +1. paconway + 1. REQ 417-56766 MBBMS over CMMB for TD-SCDMA Gen. 2 MobileTv + PackageReleaseID=497412 FeatureReleaseID=494378 + + Version 2.00.3042 ================= (Made by vfebvre 14/05/2010) diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/inc/f32fsys.h --- a/userlibandfileserver/fileserver/inc/f32fsys.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/inc/f32fsys.h Thu Jun 10 11:48:01 2010 +0100 @@ -556,6 +556,10 @@ friend class LocalDrives; // for access to iChanged flag friend class CExtNotifyMediaChange; // for access to iChanged flag + +#if defined(_USE_CONTROLIO) || defined(_DEBUG) || defined(_DEBUG_RELEASE) + friend class TFsControlIo; // for access to LocateDrives() +#endif }; class CFileCB; @@ -1614,7 +1618,6 @@ TBool DeleteOnClose() const; - void SetNotifyAsyncReadersPending(TBool aNotifyAsyncReadersPending); TBool NotifyAsyncReadersPending() const; TInt CancelAsyncReadRequest(CFileShare* aShareP, TRequestStatus* aStatusP); @@ -1629,6 +1632,7 @@ IMPORT_C TInt64 Size64() const; IMPORT_C void SetSize64(TInt64 aSize, TBool aDriveLocked); IMPORT_C void SetMaxSupportedSize(TUint64 aMaxFileSize); + IMPORT_C TBool DirectIOMode(const RMessagePtr2& aMessage); TInt64 CachedSize64() const; @@ -1638,6 +1642,17 @@ TInt RemoveLock64(CFileShare* aFileShare,TInt64 aPos,TInt64 aLength); TInt CheckLock64(CFileShare* aFileShare,TInt64 aPos,TInt64 aLength); + /** Sequential mode */ + + IMPORT_C TBool IsSequentialMode() const; + void SetSequentialMode(TBool aSequential); + + /** + The FileShare List contains the file shares of an open file. + */ + TDblQue& FileShareList() const; + void AddShare(CFileShare& aFileShare); + /** Renames the file with the full file name provided. @@ -1954,12 +1969,12 @@ public: /** - The full name of the file, including drive and extensions. + The full name of the file, including its extension. */ HBufC* iFileName; /** - The full name of the file, including drive and extensions - Folded. + The full name of the file, including its extension - Folded. */ HBufC* iFileNameF; @@ -1968,11 +1983,9 @@ TDrive* iCreatedDrive; TDrive* iDrive; CMountCB* iMount; - TFileLocksArray* iFileLocks; ///< an array of file position locks + TFileLocksArray* iFileLocks; // An array of file position locks TDblQueLink iMountLink; - -private: - CFileBody* iBody; + CFileBody* iBody; friend class TDrive; friend class CMountCB; @@ -2025,7 +2038,7 @@ void InitL(); inline CFileCB& File(); - // For serialising aync requests + // For serialising async requests TBool RequestStart(CFsMessageRequest* aRequest); void RequestEnd(CFsMessageRequest* aRequest); TBool RequestInProgress() const; @@ -2050,8 +2063,13 @@ // A pointer to the current request. Used for serializing client // async read/write requests which might otherwise be processed out - // of order due to fair scheduling - CFsMessageRequest* iCurrentRequest; + // of order due to fair scheduling. + CFsMessageRequest* iCurrentRequest; + + // The FileShare List link object. + TDblQueLink iShareLink; + +friend class CFileBody; // For access to iShareLink }; diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/inc/f32ver.h --- a/userlibandfileserver/fileserver/inc/f32ver.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/inc/f32ver.h Thu Jun 10 11:48:01 2010 +0100 @@ -58,6 +58,6 @@ @see TVersion */ -const TInt KF32BuildVersionNumber=3042; +const TInt KF32BuildVersionNumber=3044; // #endif diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/inc/sl_std.h --- a/userlibandfileserver/fileserver/sfat32/inc/sl_std.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/inc/sl_std.h Thu Jun 10 11:48:01 2010 +0100 @@ -58,7 +58,7 @@ class CFatFileSystem; /** -Represents the position of a directory entery in terms of a cluster and off set into it +Represents the position of a directory entry in terms of a cluster and offset into it */ class TEntryPos { @@ -92,12 +92,12 @@ //-- public interface to the local drive. Provides media driver's error handling (critical and non-critical user notifiers) //-- and thread-safety if required. - TInt ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; + TInt ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; TInt ReadNonCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; TInt ReadCritical(TInt64 aPos,TInt aLength,TDes8& aTrg) const; TInt WriteCritical(TInt64 aPos,const TDesC8& aSrc); - TInt WriteNonCritical(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); + TInt WriteNonCritical(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); TInt GetLastErrorInfo(TDes8& aErrorInfo) const; @@ -148,9 +148,9 @@ inline void LeaveCriticalSection() const {iLock.Signal();} //-- methods' wrappers that are used by TDriveInterface - TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; + TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg) const; - TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); + TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); TInt Write(TInt64 aPos, const TDesC8& aSrc); TInt GetLastErrorInfo(TDes8& aErrorInfo) const; TInt Caps(TDes8& anInfo) const; @@ -336,7 +336,7 @@ @param aMessage Refrence to server message from request @param anOffset Offset into read data to write */ - virtual void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const = 0; + virtual void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const = 0; /** Disk write function @@ -347,7 +347,7 @@ @param aMessage Refrence to server message from request, contains data @param anOffset Offset into write data to use in write */ - virtual void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset) = 0; + virtual void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) = 0; virtual inline MWTCacheInterface* DirCacheInterface(); @@ -428,7 +428,7 @@ /** -Fat file system mount implmentation, provides all that is required of a plug in +Fat file system mount implementation, provides all that is required of a plug in file system mount as well as Fat mount specific functionality */ class CFatMountCB : public CLocDrvMountCB, @@ -570,8 +570,8 @@ void DirReadL(const TEntryPos& aPos,TInt aLength,TDes8& aDes) const; void DirWriteL(const TEntryPos& aPos,const TDesC8& aDes); - void ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const; - void WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster); + void ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const; + void WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag); void MoveToNextEntryL(TEntryPos& aPos) const; void MoveToDosEntryL(TEntryPos& aPos,TFatDirEntry& anEntry) const; @@ -703,8 +703,8 @@ void DoCheckFatForLoopsL(TUint32 aCluster, TUint32& aPreviousCluster, TUint32& aChangePreviousCluster, TUint32& aCount) const; void InitializeL(const TLocalDriveCaps& aLocDrvCaps, TBool aIgnoreFSInfo=EFalse); - void DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const; - void DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster); + void DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const; + void DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag); TBool IsUniqueNameL(const TShortName& aName, TUint32 aDirCluster); TBool FindShortNameL(const TShortName& aName,TEntryPos& anEntryPos); @@ -900,10 +900,10 @@ TUint iStartCluster; ///< Start cluster number of file TEntryPos iCurrentPos; ///< Current position in file data - TEntryPos iFileDosEntryPos; ///< File DOS dir. entry position + TEntryPos iFileDosEntryPos; ///< File DOS dir. entry position - TBool iFileSizeModified :1; ///< flag, indicating that file size was modified and needs to be flushed onto the media (see FlushL()) - TBool iFileTimeModified :1; ///< flag, indicating that file modification time was modified and needs to be flushed onto the media (see FlushL()) + TBool iFileSizeModified :1; ///< flag, indicating that file size was modified and needs to be flushed onto the media (see FlushL()) + TBool iFileTimeModified :1; ///< flag, indicating that file modification time was modified and needs to be flushed onto the media (see FlushL()) }; diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_disk.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_disk.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_disk.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -286,11 +286,11 @@ @leave on error */ -void CAtaDisk::ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const +void CAtaDisk::ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const { __PRINT4(_L("CAtaDisk::ReadL() pos:%u:%u, len:%u, offset:%u"), I64HIGH(aPos), I64LOW(aPos), aLength, anOffset); - User::LeaveIfError(iDrive.ReadNonCritical(aPos,aLength,aTrg,aMessage,anOffset)); + User::LeaveIfError(iDrive.ReadNonCritical(aPos,aLength,aTrg,aMessage,anOffset, aFlag)); } //------------------------------------------------------------------------------------- @@ -309,12 +309,12 @@ @leave on error */ -void CAtaDisk::WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset) +void CAtaDisk::WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) { __PRINT4(_L("CAtaDisk::WriteL() pos:%u:%u, len:%u, offset:%u"), I64HIGH(aPos), I64LOW(aPos), aLength, anOffset); //-- write data to the media directly - User::LeaveIfError(iDrive.WriteNonCritical(aPos,aLength,aSrc,aMessage,anOffset)); + User::LeaveIfError(iDrive.WriteNonCritical(aPos,aLength,aSrc,aMessage,anOffset, aFlag)); //-- we need to invalidate UID cache page that corresponds to aPos (if any). This is UID caching specific. UID is stored in the first few bytes of //-- the executable module and therefore belongs to one cache page only. @@ -444,7 +444,7 @@ // // Read from ramDrive into thread relative descriptor // -void CRamDisk::ReadL(TInt64 aPos,TInt aLength,const TAny* /*aTrg*/,const RMessagePtr2 &aMessage,TInt anOffset) const +void CRamDisk::ReadL(TInt64 aPos,TInt aLength,const TAny* /*aTrg*/,const RMessagePtr2 &aMessage,TInt anOffset, TUint /*aFlag*/) const { __PRINT2(_L("CRamDisk::ReadL TAny* Pos 0x%x, Len %d"),aPos,aLength); __ASSERT_ALWAYS((aPos+aLength<=I64INT(iFatMount->Size())) && (aLength>=0),User::Leave(KErrCorrupt)); @@ -457,7 +457,7 @@ // // Write from thread relative descriptor into ramDrive // -void CRamDisk::WriteL(TInt64 aPos,TInt aLength,const TAny* /*aSrc*/,const RMessagePtr2 &aMessage,TInt anOffset) +void CRamDisk::WriteL(TInt64 aPos,TInt aLength,const TAny* /*aSrc*/,const RMessagePtr2 &aMessage,TInt anOffset, TUint /*aFlag*/) { __PRINT2(_L("CRamDisk::WriteL TAny* Pos 0x%x, Len %d"),aPos,aLength); __ASSERT_ALWAYS(aPos+aLength<=I64INT(iFatMount->Size()),User::Leave(KErrCorrupt)); diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_disk.h --- a/userlibandfileserver/fileserver/sfat32/sl_disk.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_disk.h Thu Jun 10 11:48:01 2010 +0100 @@ -49,8 +49,8 @@ virtual void InvalidateUidCachePage(TUint64 aPos); - void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; - void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); + void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; + void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); virtual TInt GetLastErrorInfo(TDes8& aErrorInfo) const; MWTCacheInterface* DirCacheInterface(); @@ -80,11 +80,9 @@ public: void ReadCachedL(TInt64 aPos,TInt aLength,TDes8& aDes) const; void WriteCachedL(TInt64 aPos,const TDesC8& aDes); - void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const; - void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset); - - - + void ReadL(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const; + void WriteL(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag); + private: inline TUint8 *RamDiskBase() const; diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_drv.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_drv.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_drv.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1,4 +1,4 @@ -// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 1996-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of the License "Eclipse Public License v1.0" @@ -46,12 +46,11 @@ Close the interface to the media driver */ void TDriveInterface::Close() -{ - if(iMount) +{ + if((iMount != NULL) && (iMount->LocalDrive() != NULL)) { iMount->LocalDrive()->SetMount(NULL); - } - + } iMount = NULL; } @@ -118,7 +117,7 @@ @return KErrBadPower - failure due to low power */ -TInt TDriveInterface::ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const +TInt TDriveInterface::ReadNonCritical(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const { //__PRINT2(_L("#=+++ Read_nc2: pos:%LU, len:%u"), aPos, aLength); @@ -127,7 +126,7 @@ for(;;) { - nRes = iProxyDrive.Read(aPos, aLength, aTrg, aMessage, anOffset); + nRes = iProxyDrive.Read(aPos, aLength, aTrg, aMessage, anOffset, aFlag); if (nRes==KErrNone) break; @@ -201,7 +200,7 @@ @return KErrCorrupt - an illegal write is detected @return KErrAccessDenied - write to protected media */ -TInt TDriveInterface::WriteNonCritical(TInt64 aPos, TInt aLength, const TAny* aSrc, const RMessagePtr2 &aMessage, TInt anOffset) +TInt TDriveInterface::WriteNonCritical(TInt64 aPos, TInt aLength, const TAny* aSrc, const RMessagePtr2 &aMessage, TInt anOffset, TUint aFlag) { //__PRINT2(_L("#=+++ Write_NC: pos:%LU, len:%u"), aPos, aLength); @@ -212,7 +211,7 @@ for(;;) { iMount->OpenMountForWrite(); //-- make a callback to CFatMountCB to perform some actions on 1st write. - nRes = iProxyDrive.Write(aPos, aLength, aSrc, aMessage, anOffset); + nRes = iProxyDrive.Write(aPos, aLength, aSrc, aMessage, anOffset, aFlag); if (nRes==KErrNone) break; @@ -543,10 +542,10 @@ //-- see original TDriveInterface methods -TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset) const +TInt TDriveInterface::XProxyDriveWrapper::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) const { EnterCriticalSection(); - TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg, aMessage.Handle(), anOffset); + TInt nRes = iLocalDrive->Read(aPos, aLength, aTrg, aMessage.Handle(), anOffset, aFlag); LeaveCriticalSection(); return nRes; } @@ -559,10 +558,10 @@ return nRes; } -TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset) +TInt TDriveInterface::XProxyDriveWrapper::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2 &aMessage,TInt anOffset, TUint aFlag) { EnterCriticalSection(); - TInt nRes = iLocalDrive->Write(aPos, aLength, aSrc, aMessage.Handle(), anOffset); + TInt nRes = iLocalDrive->Write(aPos, aLength, aSrc, aMessage.Handle(), anOffset, aFlag); LeaveCriticalSection(); return nRes; } diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_file.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_file.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_file.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -11,7 +11,7 @@ // Contributors: // // Description: -// f32\sfat\sl_file.cpp +// f32\sfat32\sl_file.cpp // // @@ -245,8 +245,10 @@ if((startPos + length > curSize) || (startPos > startPos + length) ) aLength=curSize-startPos; + + TUint flag = DirectIOMode(aMessage) ? RLocalDrive::ELocDrvDirectIO : 0; - FatMount().ReadFromClusterListL(iCurrentPos,aLength,aDes,aMessage,aOffset); + FatMount().ReadFromClusterListL(iCurrentPos,aLength,aDes,aMessage,aOffset, flag); aLength=iCurrentPos.iPos-startPos; } @@ -295,7 +297,9 @@ TUint badcluster=0; TUint goodcluster=0; - TRAPD(ret, FatMount().WriteToClusterListL(iCurrentPos,aLength,aSrc,aMessage,aOffset,badcluster, goodcluster)); + TUint flag = DirectIOMode(aMessage) ? RLocalDrive::ELocDrvDirectIO : 0; + + TRAPD(ret, FatMount().WriteToClusterListL(iCurrentPos,aLength,aSrc,aMessage,aOffset,badcluster, goodcluster, flag)); if (ret == KErrCorrupt || ret == KErrDied) { @@ -367,7 +371,7 @@ } aLength=iCurrentPos.iPos-startPos; - if(FatMount().IsRuggedFSys() && pos+(TUint)aLength > FCB_FileSize()) + if(!IsSequentialMode() && FatMount().IsRuggedFSys() && pos+(TUint)aLength > FCB_FileSize()) { WriteFileSizeL(pos+aLength); } @@ -381,7 +385,6 @@ } - //----------------------------------------------------------------------------- void CFatFileCB::ResizeIndex(TInt aNewMult,TUint aNewSize) @@ -502,7 +505,7 @@ if (I64HIGH(aSize)) User::Leave(KErrNotSupported); - DoSetSizeL(I64LOW(aSize), FatMount().IsRuggedFSys()); + DoSetSizeL(I64LOW(aSize), FatMount().IsRuggedFSys()); } @@ -520,7 +523,7 @@ ASSERT(FCB_FileSize()); ASSERT(FileSizeModified()); - ClearIndex(0); //-- clear seek index array + ClearIndex(0); // Clear seek index array //-- update file dir. entry const TUint32 cluster = FCB_StartCluster(); @@ -608,8 +611,8 @@ FAT().FlushL(); - if(aForceCachesFlush) // write file size if increasing - WriteFileSizeL(aNewSize); + if(!IsSequentialMode() && aForceCachesFlush) // Write file size directly to its dir. entry if a cache flush + WriteFileSizeL(aNewSize); // is needed and rugged FAT is not ignored by client } } @@ -884,7 +887,6 @@ } - TInt CFatFileCB::GetInterface(TInt aInterfaceId,TAny*& aInterface,TAny* aInput) { switch(aInterfaceId) @@ -906,8 +908,6 @@ } - - /** Overwrites file's start cluster (iStartCluster) in its directory entry. */ diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_mnt.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_mnt.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_mnt.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1607,7 +1607,7 @@ /** Overwrite as many contiguous file clusters as possible. */ -void CFatMountCB::DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster) +void CFatMountCB::DoWriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint aLastcluster, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag) { __PRINT(_L("CFatMountCB::DoWriteToClusterListL")); @@ -1621,7 +1621,7 @@ const TInt writeLength=Min(aLength,(clusterListLen<WriteL(dataStart,writeLength,aSrc,aMessage,anOffset)); + TRAPD(r, iRawDisk->WriteL(dataStart,writeLength,aSrc,aMessage,anOffset, aFlag)); if(r == KErrNone) // Write succeded { @@ -1736,7 +1736,7 @@ //----------------------------------------------------------------------------------------- -void CFatMountCB::WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster) +void CFatMountCB::WriteToClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aSrc,const RMessagePtr2& aMessage,TInt anOffset, TUint& aBadcluster, TUint& aGoodcluster, TUint aFlag) // // Overwrite cluster list. // @@ -1758,7 +1758,7 @@ TInt previouscluster=0; FOREVER { - DoWriteToClusterListL(aPos,length-offset,aSrc,aMessage,anOffset+offset, previouscluster, aBadcluster, aGoodcluster); + DoWriteToClusterListL(aPos,length-offset,aSrc,aMessage,anOffset+offset, previouscluster, aBadcluster, aGoodcluster, aFlag); if (offset == (aPos.iPos-startPos)) continue; offset=aPos.iPos-startPos; @@ -1773,7 +1773,7 @@ //----------------------------------------------------------------------------------------- -void CFatMountCB::DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const +void CFatMountCB::DoReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const // // Read from as many contiguous file clusters as possible // @@ -1789,7 +1789,7 @@ const TInt readLength=Min(aLength,(clusterListLen<ReadL(dataStart,readLength,aTrg,aMessage,anOffset)); + TRAPD(r, iRawDisk->ReadL(dataStart,readLength,aTrg,aMessage,anOffset, aFlag)); if(r == KErrNone) // Read succeded { @@ -1814,7 +1814,7 @@ //----------------------------------------------------------------------------------------- -void CFatMountCB::ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset) const +void CFatMountCB::ReadFromClusterListL(TEntryPos& aPos,TInt aLength,const TAny* aTrg,const RMessagePtr2& aMessage,TInt anOffset, TUint aFlag) const // // Read from cluster list // @@ -1834,7 +1834,7 @@ TInt offset=0; FOREVER { - DoReadFromClusterListL(aPos,aLength-offset,aTrg,aMessage,anOffset+offset); + DoReadFromClusterListL(aPos,aLength-offset,aTrg,aMessage,anOffset+offset, aFlag); offset=aPos.iPos-startPos; if ((offset0,Fault(EReadFileSectionFailed)); TInt64 dataAddress=(FAT().DataPositionInBytes(cluster))+pos; - iRawDisk->ReadL(dataAddress,readLength,aTrg,aMessage,readTotal); + iRawDisk->ReadL(dataAddress,readLength,aTrg,aMessage,readTotal, 0); readTotal += readLength; if (readTotal == aLength) @@ -3256,7 +3256,7 @@ // Read aLength of data from disk directly to thread relative descriptor // { - iRawDisk->ReadL(aPos,aLength,aTrg,aMessage,anOffset); + iRawDisk->ReadL(aPos,aLength,aTrg,aMessage,anOffset, 0); } //----------------------------------------------------------------------------------------- @@ -3271,7 +3271,7 @@ //-- check if we are trying to write to the FAT directly and wait until FAT scan thread finishes in this case. FAT().RequestRawWriteAccess(aPos, aLength); - iRawDisk->WriteL(aPos,aLength,aSrc,aMessage,anOffset); + iRawDisk->WriteL(aPos,aLength,aSrc,aMessage,anOffset, 0); //-- Note: FAT directory cache will be invalidated in MountL() } diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp --- a/userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -1073,7 +1073,7 @@ TInt readLength = (TInt)Min((TInt64)(aLength-readTotal),(clusterListLen<0,Fault(EReadFileSectionFailed)); TInt64 dataAddress=(FAT().DataPositionInBytes(cluster))+pos; - iRawDisk->ReadL(dataAddress,readLength,aTrg,aMessage,readTotal); + iRawDisk->ReadL(dataAddress,readLength,aTrg,aMessage,readTotal, 0); readTotal += readLength; if (readTotal == aLength) diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_file.cpp --- a/userlibandfileserver/fileserver/sfile/sf_file.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_file.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -701,8 +701,18 @@ // Current operation points to a local buffer // The request originated from the file server (e.g. file cache) with a local message handle (KLocalMessageHandle) TPtr8 dataDesc((TUint8*) currentOperation.iReadWriteArgs.iData + currentOperation.iReadWriteArgs.iOffset, len, len); - const RLocalMessage msg; - TRAP(r,file->ReadL(pos, len, &dataDesc, msg, 0)); + + // save the client's RMessage2 + const RMessage2 msgClient = aRequest->Message(); + + // overwrite RMessage2 in CFsMessageRequest with RLocalMessage + const RLocalMessage msgLocal; + const_cast (aRequest->Message()) = msgLocal; + + TRAP(r,file->ReadL(pos, len, &dataDesc, aRequest->Message(), 0)); + + // restore the client's RMessage2 + const_cast (aRequest->Message()) = msgClient; } } @@ -1099,8 +1109,18 @@ else { TPtr8 dataDesc((TUint8*) currentOperation.iReadWriteArgs.iData + currentOperation.iReadWriteArgs.iOffset, len, len); - const RLocalMessage msg; - TRAP(r,file->WriteL(pos, len, &dataDesc, msg, 0)); + + // save the client's RMessage2 + const RMessage2 msgClient = aRequest->Message(); + + // overwrite RMessage2 in CFsMessageRequest with RLocalMessage + const RLocalMessage msgLocal; + const_cast (aRequest->Message()) = msgLocal; + + TRAP(r,file->WriteL(pos, len, &dataDesc, aRequest->Message(), 0)); + + // restore the client's RMessage2 + const_cast (aRequest->Message()) = msgClient; } } @@ -3670,13 +3690,25 @@ - - - - - - - - - - +EXPORT_C TBool CFileCB::DirectIOMode(const RMessagePtr2& aMessage) + { + CFsMessageRequest* msgRequest = CFsMessageRequest::RequestFromMessage(aMessage); + + TInt func = msgRequest->Operation()->Function(); + ASSERT(func == EFsFileRead || func == EFsFileWrite || func == EFsFileWriteDirty || func == EFsReadFileSection); + + CFileShare* share; + CFileCB* file; + GetFileFromScratch(msgRequest, share, file); + if (share == NULL) // no share indicates this is a request originating from the file cache + return EFalse; + + return func == EFsFileRead ? share->iMode & EFileReadDirectIO : share->iMode & EFileWriteDirectIO; + } + + + + + + + diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_lepoc.cpp --- a/userlibandfileserver/fileserver/sfile/sf_lepoc.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_lepoc.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -3248,30 +3248,6 @@ } -/** -This function is defined because RArray does not natively support -sorting 64-bit integers. - -It is used by FixupDlls to order the import fixup locations in the image -so they can be organized by page. - -@param aLeft 64-bit unsigned integer to compare against aRight. -@param aRight 64-bit unsigned integer to compare against aLeft. -@return -1 if aLeft < aRight; 0 if aLeft == aRight; and - +1 if aLeft > aRight. This conforms to the behavior - which is expected from a function used by TLinearOrder. -*/ -static TInt Uint64LinearOrderFunc(const TUint64& aLeft, const TUint64& aRight) - { - if (aLeft < aRight) - return -1; - else if (aLeft > aRight) - return 1; - else - return 0; - } - - TUint64* E32Image::ExpandFixups(TInt aNumFixups) { __IF_DEBUG(Printf("ExpandFixups,%d+%d", iFixupCount,aNumFixups)); @@ -3315,8 +3291,10 @@ // sort the array in address order, to organize by page RArray fixup64ToSort(sizeof(TUint64), iFixups, iFixupCount); - // SortUnsigned doesn't work on TUint64 - fixup64ToSort.Sort(TLinearOrder(Uint64LinearOrderFunc)); + + // address is in high word of entry, offset 4 + fixup64ToSort.SetKeyOffset(4); + fixup64ToSort.SortUnsigned(); // now have
pairs, organize into pages. // Each page is stored as fXXX YYYY ZZZZ where YYYY ZZZZ is written diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_plugin.h --- a/userlibandfileserver/fileserver/sfile/sf_plugin.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_plugin.h Thu Jun 10 11:48:01 2010 +0100 @@ -66,7 +66,7 @@ static TInt IsInChain(TInt aUPos, TInt aPos,TInt aDrive, CFsPluginFactory* aPluginFactory); static CFsPlugin* FindByUniquePosition(TInt aPos); - static TInt InitPlugin(CFsPlugin& aPlugin); + static TInt InitPlugin(CFsPlugin& aPlugin, RLibrary aLibrary); static void TransferRequests(CPluginThread* aPluginThread); static void CancelPlugin(CFsPlugin* aPlugin,CSessionFs* aSession); static TInt ChainCount(); diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp --- a/userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -162,7 +162,7 @@ return err; } - err = InitPlugin(*pP); + err = InitPlugin(*pP, aPluginFactory.Library()); if(err != KErrNone) { return err; @@ -624,13 +624,13 @@ Create a plugin thread Should only by called from main file server thread with plugin thread unavailable */ -TInt FsPluginManager::InitPlugin(CFsPlugin& aPlugin) +TInt FsPluginManager::InitPlugin(CFsPlugin& aPlugin, RLibrary aLibrary) { TInt err = KErrNone; if(!aPlugin.iThreadP) { - TRAP(err,aPlugin.iThreadP=CPluginThread::NewL(aPlugin)); + TRAP(err,aPlugin.iThreadP=CPluginThread::NewL(aPlugin, aLibrary)); if(err!=KErrNone) return err; } @@ -745,11 +745,12 @@ FsPluginManager::LockChain(); TInt count = FsPluginManager::ChainCount(); + TInt oldCount = count; TInt i; for(i=0; iiCurrentPlugin = plugin; aRequest->Status() = KRequestPending; @@ -761,6 +762,12 @@ FsPluginManager::LockChain(); __ASSERT_ALWAYS(aRequest->Status().Int()==KErrNone||aRequest->Status().Int()==KErrCancel,Fault(ESessionDisconnectThread2)); count = FsPluginManager::ChainCount(); + //If a plugin was removed whilst the chain was unlocked we need to make sure we don't skip any plugins + if(count != oldCount) + { + i=0; + oldCount = count; + } } FsPluginManager::UnlockChain(); diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_plugin_ops.cpp --- a/userlibandfileserver/fileserver/sfile/sf_plugin_ops.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_plugin_ops.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -252,8 +252,11 @@ CFsPlugin* plugin=NULL; FsPluginManager::LockChain(); TInt err = FsPluginManager::Plugin(plugin, aRequest->Message().Int2()); - if(err != KErrNone) + if(err != KErrNone) //should be ok but just in case + { + FsPluginManager::UnlockChain(); return err; + } TInt r = KErrNotFound; if(plugin) diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_std.h --- a/userlibandfileserver/fileserver/sfile/sf_std.h Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_std.h Thu Jun 10 11:48:01 2010 +0100 @@ -114,6 +114,8 @@ #define __PLUGIN_PRINT3(t,a,b,c) #endif +#define _LOFF(p,T,f) ((T*)(((TUint8*)(p))-_FOFF(T,f))) + const TInt KMaxTotalDriveReserved =0x100000; const TInt KMaxSessionDriveReserved =0x10000; @@ -807,7 +809,7 @@ NONSHARABLE_CLASS(CPluginThread) : public CRequestThread { public: - CPluginThread(CFsPlugin& aPlugin); + CPluginThread(CFsPlugin& aPlugin, RLibrary aLibrary); ~CPluginThread(); void CompleteSessionRequests(CSessionFs* aSession, TInt aValue); @@ -819,7 +821,7 @@ void OperationLockSignal(); private: - static CPluginThread* NewL(CFsPlugin& aPlugin); + static CPluginThread* NewL(CFsPlugin& aPlugin, RLibrary aLibrary); TUint StartL(); virtual TInt DoThreadInitialise(); private: @@ -828,6 +830,7 @@ /** @prototype */ RSemaphore iOperationLock; + RLibrary iLib; // contains a handle to the library which created the plugin friend class FsPluginManager; }; @@ -1311,6 +1314,7 @@ inline void Init(); void ReStart(); TBool IsPluginRequest(); + static inline CFsMessageRequest* RequestFromMessage(const RMessagePtr2& aMessage); // UID of the process to touching the file. (To be used in notification framework). // TUid iUID; diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_std.inl --- a/userlibandfileserver/fileserver/sfile/sf_std.inl Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_std.inl Thu Jun 10 11:48:01 2010 +0100 @@ -252,6 +252,11 @@ void CFsMessageRequest::SetMessage(RMessage2& aMessage) {iMessage=aMessage;} + +CFsMessageRequest* CFsMessageRequest::RequestFromMessage(const RMessagePtr2& aMessage) + {return _LOFF(&aMessage, CFsMessageRequest, iMessage);} + + TMsgOperation* CFsMessageRequest::CurrentOperationPtr() {return iCurrentOperation;} diff -r 5e441a173c63 -r 31ea0f8e3c99 userlibandfileserver/fileserver/sfile/sf_thread.cpp --- a/userlibandfileserver/fileserver/sfile/sf_thread.cpp Mon May 24 18:45:46 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_thread.cpp Thu Jun 10 11:48:01 2010 +0100 @@ -926,24 +926,34 @@ } -CPluginThread::CPluginThread(CFsPlugin& aPlugin) - : iPlugin(aPlugin) +CPluginThread::CPluginThread(CFsPlugin& aPlugin, RLibrary aLibrary) + : iPlugin(aPlugin), iLib(aLibrary) { /** @prototype */ iOperationLock.Close(); iPlugin.Open(); + + /* + Duplicate the handle to the DLL which created the plugin to prevent + TFsRemovePlugin::DoRequestL() from unmapping the DLL's code segment before + this thread's destructor has been called as the destructor closes the plugin + which results in a call to the plugin's derived destructor contained in the DLL (!) + */ + TInt r = iLib.Duplicate(iThread, EOwnerProcess); + __ASSERT_ALWAYS(r==KErrNone, Fault(EFsThreadConstructor)); } CPluginThread::~CPluginThread() { iPlugin.Close(); + iLib.Close(); } -CPluginThread* CPluginThread::NewL(CFsPlugin& aPlugin) +CPluginThread* CPluginThread::NewL(CFsPlugin& aPlugin, RLibrary aLibrary) { __PRINT(_L("CPluginThread::NewL()")); - CPluginThread* pT=new(ELeave) CPluginThread(aPlugin); + CPluginThread* pT=new(ELeave) CPluginThread(aPlugin, aLibrary); TInt r=pT->Initialise(); /** @prototype */