--- 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
//
--- 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)
--- 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)
--- 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)
+
--- 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)
--- 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)
--- 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)
--- 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)
--- 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)
+
--- 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
+
--- 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
--- 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
+
--- 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)<TUint(iEntrySize) && (aKeyOffset&3)==0, Panic(EBadArrayKeyOffset));
+ iKeyOffset = aKeyOffset;
+ }
+
#ifndef __ARRAY_MACHINE_CODED__
EXPORT_C TAny* RArrayBase::At(TInt anIndex) const
{
--- a/kernel/eka/drivers/locmedia/locmedia.cpp Mon May 24 18:45:46 2010 +0100
+++ b/kernel/eka/drivers/locmedia/locmedia.cpp Thu Jun 10 11:48:01 2010 +0100
@@ -29,7 +29,6 @@
#include "locmediaTraces.h"
#endif
-
#if defined(_DEBUG) && defined(__DEMAND_PAGING__)
//#define __DEBUG_DEMAND_PAGING__
#endif
@@ -586,10 +585,12 @@
if (r==KErrNone)
{
__TRACE_TIMING(2);
- OstTraceDefExt4( OST_TRACE_CATEGORY_RND, TRACE_REQUEST, DLOCALDRIVE_REQUEST_READ, "ERead 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, "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();
--- 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
--- 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.
--- 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
--- 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;
}
--- 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"
--- 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"
--- 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
--- 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
--- 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
--- /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 <kernel/kernel.h>
+#include <drivers/mmc.h>
+#include <drivers/sdcard.h>
+#include <drivers/sdio/sdio.h>
+#include <drivers/d_sdapc.h>
+
+#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<DMMCSocket*>(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<DSDStack*>(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<TSDCard*>(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;
+ }
+ }
--- /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 <e32cmn.h>
+
+
+
+
+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
--- /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
+
--- /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 <OpenSystemTrace.h>
+#endif
--- 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
--- 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
--- 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
--- 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
//
--- 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()
--- 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
--- 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)
--- 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
--- 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__
--- 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);
--- 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 <class T>
inline TRefByValue<T>::TRefByValue(T &aRef)
@@ -4980,6 +4866,21 @@
template <class T>
+inline void RArray<T>::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 <class T>
inline TInt RArray<T>::Count() const
/**
Gets the number of objects in the array.
--- 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;
--- 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
--- 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();
--- 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)
{
--- 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 <Info.iAssoc ; way++)
+ {
+ for (index = 0 ; index <indexNo ; index++)
+ {
+ *ctrlReg = (way<<ARML2C_WayShift) | (index<<ARML2C_IndexShift); //This will maintain a single cache line
+ }
+ }
#else //defined(__ARM_PL310_CACHE__)
#if defined (__ARM_L210_CACHE__)
--- a/kernel/eka/kernel/arm/cutils.cpp Mon May 24 18:45:46 2010 +0100
+++ b/kernel/eka/kernel/arm/cutils.cpp Thu Jun 10 11:48:01 2010 +0100
@@ -153,9 +153,10 @@
{
if (aPhase==0)
{
- Cache::AtomicSyncMemory();
+ Cache::CpuRetires();
return;
}
+ Cache::KernelRetires();
#ifdef __SMP__
SFullArmRegSet* regs = SubScheduler().iSSX.iRegs;
#else
--- a/kernel/eka/kernel/win32/cache.cpp Mon May 24 18:45:46 2010 +0100
+++ b/kernel/eka/kernel/win32/cache.cpp Thu Jun 10 11:48:01 2010 +0100
@@ -38,6 +38,14 @@
{
}
+EXPORT_C void Cache::CpuRetires()
+ {
+ }
+
+EXPORT_C void Cache::KernelRetires()
+ {
+ }
+
EXPORT_C void Cache::SyncMemoryBeforeDmaWrite(TLinAddr, TUint, TUint32)
{
}
--- a/kernel/eka/kernel/x86/cache.cpp Mon May 24 18:45:46 2010 +0100
+++ b/kernel/eka/kernel/x86/cache.cpp Thu Jun 10 11:48:01 2010 +0100
@@ -48,6 +48,14 @@
{
}
+EXPORT_C void Cache::CpuRetires()
+ {
+ }
+
+EXPORT_C void Cache::KernelRetires()
+ {
+ }
+
EXPORT_C void Cache::SyncMemoryBeforeDmaWrite(TLinAddr, TUint, TUint32)
{
}
--- a/kernel/eka/kernel/x86/cutils.cpp Mon May 24 18:45:46 2010 +0100
+++ b/kernel/eka/kernel/x86/cutils.cpp Thu Jun 10 11:48:01 2010 +0100
@@ -102,9 +102,10 @@
{
if (aPhase==0)
{
- Cache::AtomicSyncMemory();
+ Cache::CpuRetires();
return;
}
+ Cache::KernelRetires();
#ifdef __SMP__
SFullX86RegSet* regs = &(((SCpuData*)SubScheduler().iSSX.iTss)->iRegs);
#else
--- 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)
--- 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
--- 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;
}
--- 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 <e32svr.h>
#include <u32hal.h>
-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);
--- 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 <code>TBMSpawnArgs</code> object.
*
* @param aChildFunc the child entry point
- * @param aChildPrio the child thread absolute prioirty
+ * @param aChildPrio the child thread absolute priority
* @param aRemote if <code>ETrue</code> 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);
--- 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 <code>KBMLdName</code> logical device by <code>KBMLddFileName</code>
* 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
--- 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;
--- 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;
--- 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;
}
--- 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);
--- 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
--- 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
--- 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"
--- 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
--- 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
--- 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
--- 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 <e32test.h>
#include <e32panic.h>
#include <e32svr.h>
+#include <hal.h>
#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();
--- 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 <kern_priv.h>
#include <kernel.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__
--- 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__
--- 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
--- 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
--- 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
--- 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
--- 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
--- 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 <filename> <dir> [-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;
--- 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
--- 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!!!
//
--- 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
--- 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
--- 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
--- 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
--- 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 @@
<!-- owned and maintained by usb package. To be moved there as soon as technical limitations are resolved -->
<unit bldFile="kernel/eka/drivers/usbc" mrp="kernel/eka/drivers/usbc/base_e32_drivers_usbcli.mrp"/>
</component>
+ <component id="usbdescriptors" name="USB Descriptors" purpose="optional">
+ <!-- owned and maintained by usb package. To be moved there as soon as technical limitations are resolved -->
+ <unit bldFile="kernel/eka/drivers/usbho/usbdescriptors" mrp="kernel/eka/drivers/usbho/usbdescriptors/base_drivers_usbdescriptors.mrp"/>
+ </component>
+ <component id="usbdi_utils" name="USB DI Utils" purpose="optional">
+ <!-- owned and maintained by usb package. To be moved there as soon as technical limitations are resolved -->
+ <unit bldFile="kernel/eka/drivers/usbho/usbdi_utils" mrp="kernel/eka/drivers/usbho/usbdi_utils/base_drivers_usbdi_utils.mrp"/>
+ </component>
</collection>
<collection id="driversupport" name="Generic Driver Support" level="hw-if">
<component id="mediadrivers" name="Media Drivers" purpose="optional">
@@ -133,6 +141,9 @@
<component id="kernelhwsrv_metadata" name="Kernel and Hardware Services Metadata" class="config" introduced="^2" purpose="development" target="desktop">
<unit mrp="kernelhwsrv_info/kernelhwsrv_metadata/kernelhwsrv_metadata.mrp"/>
</component>
+ <component id="kernelhwsrv_docpub" name="Kernel and Hardware Services Public Documentation" class="doc" introduced="^3" purpose="development">
+ <unit mrp="kernelhwsrv_info/doc_pub/kernelhwsrv_doc_pub.mrp"/>
+ </component>
</collection>
</package>
</SystemDefinition>
--- 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 &)
--- 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 &)
--- 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 &)
+
--- 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
+
--- 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)
--- 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<CFileShare>& 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
};
--- 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
--- 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())
};
--- 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));
--- 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;
--- 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;
}
--- 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.
*/
--- 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<<ClusterSizeLog2())-clusterRelativePos);
TInt64 dataStart=FAT().DataPositionInBytes(aPos.iCluster)+clusterRelativePos;
- TRAPD(r, iRawDisk->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<<ClusterSizeLog2())-clusterRelativePos);
const TInt64 dataStart=FAT().DataPositionInBytes(aPos.iCluster)+clusterRelativePos;
- TRAPD(r, iRawDisk->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 ((offset<aLength))
{
@@ -3228,7 +3228,7 @@
TInt readLength = Min(aLength-readTotal,(clusterListLen<<ClusterSizeLog2())-pos);
__ASSERT_DEBUG(readLength>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)
@@ -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()
}
--- 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<<ClusterSizeLog2())-pos);
__ASSERT_DEBUG(readLength>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)
--- 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<RMessage2&> (aRequest->Message()) = msgLocal;
+
+ TRAP(r,file->ReadL(pos, len, &dataDesc, aRequest->Message(), 0));
+
+ // restore the client's RMessage2
+ const_cast<RMessage2&> (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<RMessage2&> (aRequest->Message()) = msgLocal;
+
+ TRAP(r,file->WriteL(pos, len, &dataDesc, aRequest->Message(), 0));
+
+ // restore the client's RMessage2
+ const_cast<RMessage2&> (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;
+ }
+
+
+
+
+
+
+
--- 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<TUint64> fixup64ToSort(sizeof(TUint64), iFixups, iFixupCount);
- // SortUnsigned doesn't work on TUint64
- fixup64ToSort.Sort(TLinearOrder<TUint64>(Uint64LinearOrderFunc));
+
+ // address is in high word of entry, offset 4
+ fixup64ToSort.SetKeyOffset(4);
+ fixup64ToSort.SortUnsigned();
// now have <address | new-value> pairs, organize into pages.
// Each page is stored as fXXX YYYY ZZZZ where YYYY ZZZZ is written
--- 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();
--- 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; i<count; i++)
{
CFsPlugin* plugin = NULL;
- User::LeaveIfError(FsPluginManager::Plugin(plugin, i));
+ (void) FsPluginManager::Plugin(plugin, i); // (void) as chain is locked.
__ASSERT_DEBUG(plugin, User::Leave(KErrNotFound));
aRequest->iCurrentPlugin = 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();
--- 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)
--- 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;
--- 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;}
--- 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 */