Revision: 201025
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 19:44:53 +0300
changeset 200 73ea206103e6
parent 152 657f875b013e
child 201 43365a9b78a3
Revision: 201025 Kit: 2010125
halservices/hal/src/hal_gcc_shim.cia
kernel/eka/bmarm/ekernsmp.def
kernel/eka/bmarm/ekernu.def
kernel/eka/bmarm/euseru.def
kernel/eka/bwins/ekernu.def
kernel/eka/bwins/euseru.def
kernel/eka/bx86/ekernsmp.def
kernel/eka/bx86/ekernu.def
kernel/eka/bx86/euseru.def
kernel/eka/bx86gcc/ekernsmp.def
kernel/eka/bx86gcc/ekernu.def
kernel/eka/bx86gcc/euseru.def
kernel/eka/common/array.cpp
kernel/eka/common/heap_hybrid.cpp
kernel/eka/drivers/locmedia/locmedia.cpp
kernel/eka/drivers/media/base_e32_drivers_media.mrp
kernel/eka/drivers/media/bld.inf
kernel/eka/drivers/medmmc/medmmc.cpp
kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp
kernel/eka/drivers/power/smppower/idlehelper.cia
kernel/eka/drivers/power/smppower/idlehelper.cpp
kernel/eka/drivers/power/smppower/idlehelper_lib.mmp
kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp
kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp
kernel/eka/drivers/sdapc/d_sdapc.cpp
kernel/eka/drivers/sdapc/d_sdapc.h
kernel/eka/drivers/sdapc/d_sdapc.mmp
kernel/eka/drivers/sdapc/traces/OstTraceDefinitions.h
kernel/eka/eabi/ekernsmp.def
kernel/eka/eabi/ekernu.def
kernel/eka/eabi/euseru.def
kernel/eka/euser/v7_0/euser-7_0.cia
kernel/eka/include/d32locd.h
kernel/eka/include/drivers/sdcard.h
kernel/eka/include/drivers/sdcard.inl
kernel/eka/include/drivers/smppower/idlehelper.h
kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h
kernel/eka/include/e32cmn.h
kernel/eka/include/e32cmn.inl
kernel/eka/include/e32ver.h
kernel/eka/include/kernel/cache.h
kernel/eka/include/kernel/cache_maintenance.h
kernel/eka/kernel/arm/cache.cpp
kernel/eka/kernel/arm/cache_external.cpp
kernel/eka/kernel/arm/cutils.cpp
kernel/eka/kernel/win32/cache.cpp
kernel/eka/kernel/x86/cache.cpp
kernel/eka/kernel/x86/cutils.cpp
kernel/eka/release.txt
kernel/eka/rombuild/nandtest_test_f32tests.oby
kernelhwsrv_info/doc_pub/base_how_to_armv7_cache_and_access_remapping_-_design.doc
kernelhwsrv_info/doc_pub/base_how_to_crash_logging.doc
kerneltest/e32test/active/t_messge.cpp
kerneltest/e32test/benchmark/bm_ldd.cpp
kerneltest/e32test/benchmark/bm_main.cpp
kerneltest/e32test/benchmark/bm_suite.h
kerneltest/e32test/benchmark/d32bm.h
kerneltest/e32test/benchmark/ipc.cpp
kerneltest/e32test/benchmark/property.cpp
kerneltest/e32test/benchmark/sync.cpp
kerneltest/e32test/benchmark/thread.cpp
kerneltest/e32test/group/t_chunk.mmp
kerneltest/e32test/group/t_smpsoakspin.mmp
kerneltest/e32test/group/t_timestamp.mmp
kerneltest/e32test/hcr/hcr.inf
kerneltest/e32test/hcr/hcrtest_h4roms.mbc
kerneltest/e32test/hcr/hcrtest_ne1roms.mbc
kerneltest/e32test/mmu/t_chunk.cpp
kerneltest/e32test/timestamp/d_timestamp.cpp
kerneltest/e32test/timestamp/d_timestamp.h
kerneltest/e32test/timestamp/d_timestamp_dev.h
kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl
kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl
kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl
kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl
kerneltest/e32utils/group/base_e32utils.mrp
kerneltest/e32utils/group/bld.inf
kerneltest/f32test/fileutils/inc/f32_test_utils.h
kerneltest/f32test/fileutils/src/f32_test_utils.cpp
kerneltest/f32test/group/b_file.mmp
kerneltest/f32test/group/b_mtst.mmp
kerneltest/f32test/group/b_open.mmp
kerneltest/f32test/group/b_osfil.mmp
kerneltest/f32test/group/b_rand.mmp
kerneltest/f32test/group/b_rep.mmp
kerneltest/f32test/group/clean_prepdc.mmp
kerneltest/f32test/group/t_alert.mmp
kerneltest/f32test/group/t_appins.mmp
kerneltest/f32test/group/t_bigfile.mmp
kerneltest/f32test/group/t_blockmap.mmp
kerneltest/f32test/group/t_cfileman.mmp
kerneltest/f32test/group/t_chkuid.mmp
kerneltest/f32test/group/t_clobbr.mmp
kerneltest/f32test/group/t_dcallcaps.mmp
kerneltest/f32test/group/t_dcallfiles.mmp
kerneltest/f32test/group/t_dcdiskadmin.mmp
kerneltest/f32test/group/t_dcdiskadminallfiles.mmp
kerneltest/f32test/group/t_dcnone.mmp
kerneltest/f32test/group/t_dctcb.mmp
kerneltest/f32test/group/t_dctcballfiles.mmp
kerneltest/f32test/group/t_dctcbdiskadmin.mmp
kerneltest/f32test/group/t_dlocl.mmp
kerneltest/f32test/group/t_dspace.mmp
kerneltest/f32test/group/t_fman.mmp
kerneltest/f32test/group/t_fnames.mmp
kerneltest/f32test/group/t_fragmentdp.mmp
kerneltest/f32test/group/t_fsched.mmp
kerneltest/f32test/group/t_fsrvbm.mmp
kerneltest/f32test/group/t_fsy2k.mmp
kerneltest/f32test/group/t_fsysbm.mmp
kerneltest/f32test/group/t_gdir.mmp
kerneltest/f32test/group/t_gen.mmp
kerneltest/f32test/group/t_gen32.mmp
kerneltest/f32test/group/t_handshare.mmp
kerneltest/f32test/group/t_localtime.mmp
kerneltest/f32test/group/t_locate.mmp
kerneltest/f32test/group/t_lock.mmp
kerneltest/f32test/group/t_misc.mmp
kerneltest/f32test/group/t_nmbs.mmp
kerneltest/f32test/group/t_notifier.mmp
kerneltest/f32test/group/t_notify.mmp
kerneltest/f32test/group/t_notify_mfs.mmp
kerneltest/f32test/group/t_notify_perf.mmp
kerneltest/f32test/group/t_notifydismount.mmp
kerneltest/f32test/group/t_oom.mmp
kerneltest/f32test/group/t_open.mmp
kerneltest/f32test/group/t_parse.mmp
kerneltest/f32test/group/t_proc.mmp
kerneltest/f32test/group/t_ramstr.mmp
kerneltest/f32test/group/t_rand.mmp
kerneltest/f32test/group/t_rcount.mmp
kerneltest/f32test/group/t_rdsect.mmp
kerneltest/f32test/group/t_resize.mmp
kerneltest/f32test/group/t_romg.mmp
kerneltest/f32test/group/t_scan.mmp
kerneltest/f32test/group/t_sess.mmp
kerneltest/f32test/group/t_soak1.mmp
kerneltest/f32test/group/t_vfat.mmp
kerneltest/f32test/group/t_virus.mmp
kerneltest/f32test/group/t_whet.mmp
kerneltest/f32test/group/t_whetvfp.mmp
kerneltest/f32test/group/wintest.bat
kerneltest/f32test/loader/dlltree.pl
kerneltest/f32test/loader/ldrtst.flm
kerneltest/f32test/locl/CodepageUtils/src/t_cputils_cp932.cpp
kerneltest/f32test/locl/t_filematch.cpp
kerneltest/f32test/plugins/version_2/crypto_encryption/group/t_encplugin.mmp
kerneltest/f32test/plugins/version_2/file64bit/group/t_file64bit_plugin.mmp
kerneltest/f32test/plugins/version_2/group/t_plugin_v2.mmp
kerneltest/f32test/plugins/version_2beta/t_plugin_v2beta.cpp
kerneltest/f32test/server/b_gen.cpp
kerneltest/f32test/server/b_open.cpp
kerneltest/f32test/server/t_ext1.cpp
kerneltest/f32test/server/t_falsespace.cpp
kerneltest/f32test/server/t_file.cpp
kerneltest/f32test/server/t_file64bit.cpp
kerneltest/f32test/server/t_format.cpp
kerneltest/f32test/server/t_fsched.cpp
kerneltest/f32test/server/t_fsrv.cpp
kerneltest/f32test/server/t_main.cpp
kerneltest/f32test/server/t_notify.cpp
kerneltest/f32test/smassstorage/scripts/usbinterop1.pl
kerneltest/f32test/smassstorage/scripts/usbinterop2.pl
kerneltest/f32test/smassstorage/scripts/usbperformance.pl
kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl
package_definition.xml
userlibandfileserver/fileserver/bmarm/efileu.def
userlibandfileserver/fileserver/bwins/efileu.def
userlibandfileserver/fileserver/bx86/efileu.def
userlibandfileserver/fileserver/eabi/efileu.def
userlibandfileserver/fileserver/group/release.txt
userlibandfileserver/fileserver/inc/f32fsys.h
userlibandfileserver/fileserver/inc/f32ver.h
userlibandfileserver/fileserver/sfat32/inc/sl_std.h
userlibandfileserver/fileserver/sfat32/sl_disk.cpp
userlibandfileserver/fileserver/sfat32/sl_disk.h
userlibandfileserver/fileserver/sfat32/sl_drv.cpp
userlibandfileserver/fileserver/sfat32/sl_file.cpp
userlibandfileserver/fileserver/sfat32/sl_mnt.cpp
userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp
userlibandfileserver/fileserver/sfile/sf_file.cpp
userlibandfileserver/fileserver/sfile/sf_lepoc.cpp
userlibandfileserver/fileserver/sfile/sf_plugin.h
userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp
userlibandfileserver/fileserver/sfile/sf_plugin_ops.cpp
userlibandfileserver/fileserver/sfile/sf_std.h
userlibandfileserver/fileserver/sfile/sf_std.inl
userlibandfileserver/fileserver/sfile/sf_thread.cpp
--- a/halservices/hal/src/hal_gcc_shim.cia	Fri Jun 11 15:02:23 2010 +0300
+++ b/halservices/hal/src/hal_gcc_shim.cia	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bmarm/ekernsmp.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bmarm/ekernu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bmarm/euseru.def	Wed Jun 23 19:44:53 2010 +0300
@@ -2267,4 +2267,5 @@
 	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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bwins/ekernu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bwins/euseru.def	Wed Jun 23 19:44:53 2010 +0300
@@ -2215,4 +2215,5 @@
 	?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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86/ekernsmp.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86/ekernu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86/euseru.def	Wed Jun 23 19:44:53 2010 +0300
@@ -2215,4 +2215,5 @@
 	?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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86gcc/ekernsmp.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86gcc/ekernu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/bx86gcc/euseru.def	Wed Jun 23 19:44:53 2010 +0300
@@ -2494,4 +2494,5 @@
 	_ZNK10RAllocator9MaxLengthEv @ 2493 NONAME
 	_ZN10RAllocator17__DbgGetAllocFailEv @ 2494 NONAME
 	_ZN4User17__DbgGetAllocFailEi @ 2495 NONAME
+	_ZN10RArrayBase12SetKeyOffsetEi @ 2496 NONAME
 
--- a/kernel/eka/common/array.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/common/array.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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/common/heap_hybrid.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/common/heap_hybrid.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -2890,7 +2890,7 @@
                      byte alignment is guaranteed for all allocations 8 bytes or
                      more in size.  4 byte allocations will be aligned to a 4
                      byte boundary.  Best to pass in zero.
-@param aSingleThread ETrue if the heap is to be accessed from multiple threads.
+@param aSingleThread EFalse if the heap is to be accessed from multiple threads.
                      This will cause internal locks to be created, guaranteeing
                      thread safety.
 
@@ -3030,7 +3030,7 @@
                      byte alignment is guaranteed for all allocations 8 bytes or
                      more in size.  4 byte allocations will be aligned to a 4
                      byte boundary.  Best to pass in zero.
-@param aSingleThread ETrue if the heap is to be accessed from multiple threads.
+@param aSingleThread EFalse if the heap is to be accessed from multiple threads.
                      This will cause internal locks to be created, guaranteeing
                      thread safety.
 
@@ -3077,7 +3077,7 @@
                      byte alignment is guaranteed for all allocations 8 bytes or
                      more in size.  4 byte allocations will be aligned to a 4
                      byte boundary.  Best to pass in zero.
-@param aSingleThread ETrue if the heap is to be accessed from multiple threads.
+@param aSingleThread EFalse if the heap is to be accessed from multiple threads.
                      This will cause internal locks to be created, guaranteeing
                      thread safety.
 @param aMode         Flags controlling the heap creation.  See RAllocator::TFlags.
@@ -3137,7 +3137,7 @@
                      byte alignment is guaranteed for all allocations 8 bytes or
                      more in size.  4 byte allocations will be aligned to a 4
                      byte boundary.  Best to pass in zero.
-@param aSingleThread ETrue if the heap is to be accessed from multiple threads.
+@param aSingleThread EFalse if the heap is to be accessed from multiple threads.
                      This will cause internal locks to be created, guaranteeing
                      thread safety.
 @param aMode         Flags controlling the heap creation.  See RAllocator::TFlags.
--- a/kernel/eka/drivers/locmedia/locmedia.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/locmedia/locmedia.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/media/base_e32_drivers_media.mrp	Wed Jun 23 19:44:53 2010 +0300
@@ -10,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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/media/bld.inf	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/medmmc/medmmc.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/pbus/mmc/sdcard/sdcard3c/sdcard.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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
 	}
--- a/kernel/eka/drivers/power/smppower/idlehelper.cia	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/idlehelper.cia	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/idlehelper.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/idlehelper_lib.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/eabi/ekernsmp.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/eabi/ekernu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/eabi/euseru.def	Wed Jun 23 19:44:53 2010 +0300
@@ -2537,4 +2537,5 @@
 	_ZNK10RAllocator9MaxLengthEv @ 2536 NONAME
 	_ZN10RAllocator17__DbgGetAllocFailEv @ 2537 NONAME
 	_ZN4User17__DbgGetAllocFailEi @ 2538 NONAME
+	_ZN10RArrayBase12SetKeyOffsetEi @ 2539 NONAME
 
--- a/kernel/eka/euser/v7_0/euser-7_0.cia	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/euser/v7_0/euser-7_0.cia	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/d32locd.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/drivers/sdcard.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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"
@@ -82,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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/drivers/sdcard.inl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/drivers/smppower/idlehelper.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/e32cmn.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/e32cmn.inl	Wed Jun 23 19:44:53 2010 +0300
@@ -4866,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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/e32ver.h	Wed Jun 23 19:44:53 2010 +0300
@@ -28,7 +28,7 @@
 
 const TInt KE32MajorVersionNumber=2;
 const TInt KE32MinorVersionNumber=0;
-const TInt KE32BuildVersionNumber=3085;
+const TInt KE32BuildVersionNumber=3093;
 
 const TInt KMachineConfigurationMajorVersionNumber=1;
 const TInt KMachineConfigurationMinorVersionNumber=0;
--- a/kernel/eka/include/kernel/cache.h	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/kernel/cache.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/include/kernel/cache_maintenance.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/arm/cache.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/arm/cache_external.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/arm/cutils.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/win32/cache.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/x86/cache.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/kernel/x86/cutils.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/release.txt	Wed Jun 23 19:44:53 2010 +0300
@@ -1,3 +1,87 @@
+Version 2.00.3093
+=================
+(Made by vfebvre 09/06/2010)
+
+1.	gcochran
+	1.	ou1cimx1#400079 MCL: E32TEST RMessagePtr2::Kill is not exercised by t_message
+
+2.	jimhofe
+	1.	ou1cimx1#411346 MCL wk22 build break in kernelhwsrv
+
+
+Version 2.00.3092
+=================
+(Made by vfebvre 04/06/2010)
+
+1.	cnotton
+	1.	ou1cimx1#413372 Attempt to export missing file bootstrap_smrif.h
+
+
+Version 2.00.3091
+=================
+(Made by vfebvre 04/06/2010)
+
+1.	mmoate
+	1.	MINOR_CHANGE Correct insource docs for aSingleThread parameter in UserHeap methods
+
+
+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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kernel/eka/rombuild/nandtest_test_f32tests.oby	Wed Jun 23 19:44:53 2010 +0300
@@ -100,7 +100,7 @@
 #else
 rofsname = dir.rofs
 #endif	//MULTIPLEROFS
-rofssize = 0x520000
+rofssize = 0x5E0000
 
 #ifdef PAGED_ROM
 PAGINGOVERRIDE DEFAULTPAGED
Binary file kernelhwsrv_info/doc_pub/base_how_to_armv7_cache_and_access_remapping_-_design.doc has changed
Binary file kernelhwsrv_info/doc_pub/base_how_to_crash_logging.doc has changed
--- a/kerneltest/e32test/active/t_messge.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/active/t_messge.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -78,7 +78,8 @@
 class CTestSession : public CSession2
 	{
 public:
-	enum {EStop,ETestInt,ETestPtr,ETestClient,ETestComplete,ETestPtrComplete,ETestCompletePanic,ETestOtherSession,ETestCompleteAfter,ETestMessageConstruction, ETestRMessagePtr2LeavingInterface};
+	enum {EStop,ETestInt,ETestPtr,ETestClient,ETestComplete,ETestPtrComplete,ETestCompletePanic,ETestOtherSession,ETestCompleteAfter,ETestMessageConstruction, 
+		ETestRMessagePtr2LeavingInterface, ETestKillCompletePanic};
 //Override pure virtual
 	IMPORT_C virtual void ServiceL(const RMessage2& aMessage);
 private:
@@ -323,6 +324,10 @@
 		case ETestRMessagePtr2LeavingInterface:
 			r=TestRMessagePtr2LeavingInterface(aMessage);
 			break;
+		case ETestKillCompletePanic:
+			aMessage.Complete(KErrNone);
+			aMessage.Panic(_L("Testing Panic"),0xFF); //This will panic the server!
+			break;
 		default:
 			r=KErrNotSupported;
 
@@ -480,7 +485,7 @@
 
 
 	test.Next(_L("Start ActiveScheduler and signal to client"));
-	test.Printf(_L("        There might be something going on beneath this window"));
+	test.Printf(_L("        There might be something going on beneath this window\n"));
 	sem.Signal();
 	CActiveScheduler::Start();
 	test.Next(_L("Destroy ActiveScheduler"));
@@ -522,6 +527,23 @@
 	session.PublicSendReceive(CTestSession::EStop, TIpcArgs());//panic should occur before this is serviced 
 	return(KErrNone);
 	}
+	
+TInt KillCompletePanicClientThread (TAny*)
+//
+//  A client thread entry - signals to server to kill client after completing the message
+//
+	{
+	sem.Wait();
+	
+	TInt r=session.PublicCreateSession(_L("CTestServer"),1);
+	test(r==KErrNone);
+
+	r=session.PublicSendReceive(CTestSession::ETestKillCompletePanic, TIpcArgs());
+	test(r==KErrNone);
+
+	session.PublicSendReceive(CTestSession::EStop, TIpcArgs());//panic should occur before this is serviced 
+	return(KErrNone);
+	}
 
 void SimpleRMessage()
 //
@@ -575,7 +597,86 @@
 
 	test.End();
 	}
+	
+void TestServerCompleteTwicePanic(void)
+	{
+	TRequestStatus clientStat,serverStat;
+	
+	TBool justInTime=User::JustInTime();
+	
+ 	test.Next(_L("Check server panics if you try to complete a message twice"));
+	test.Start(_L("Create client and server threads"));
+	clientThread.Create(_L("Client Thread1"),CompletePanicClientThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
+	serverThread.Create(_L("Server Thread"),ServerThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
+	
+	test.Next(_L("Logon to the threads"));
+	clientThread.Logon(clientStat);
+	serverThread.Logon(serverStat);
 
+	test.Next(_L("Start the threads"));
+	sem.CreateLocal(0);
+	User::SetJustInTime(EFalse); 
+	clientThread.Resume();
+	serverThread.Resume();
+	
+	test.Next(_L("Wait for the threads to stop"));
+	User::WaitForRequest(clientStat); //
+	User::WaitForRequest(serverStat);
+	User::SetJustInTime(justInTime); 
+	test.Next(_L("Check the exit categories"));
+	test(clientThread.ExitType()==EExitKill);
+	test(clientThread.ExitCategory().Compare(_L("Kill"))==0);
+	test(clientThread.ExitReason()==KErrNone);
+		
+	test(serverThread.ExitType()==EExitPanic);
+	test(serverThread.ExitCategory().Compare(_L("USER"))==0);
+	test(serverThread.ExitReason()==ETMesCompletion);
+
+	test.Next(_L("Close the threads"));
+	CLOSE_AND_WAIT(serverThread);
+	CLOSE_AND_WAIT(clientThread);
+	test.End();	  
+	}
+	
+void TestServerKillCompletePanic(void)
+	{
+	TRequestStatus clientStat,serverStat;
+	
+	TBool justInTime=User::JustInTime();
+	
+	test.Next(_L("Check Server panics if you try to panic a client using a completed message"));
+	test.Start(_L("Create client and server threads"));
+	clientThread.Create(_L("Client Thread2"),KillCompletePanicClientThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
+	serverThread.Create(_L("Server Thread"),ServerThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
+	
+	test.Next(_L("Logon to the threads"));
+	clientThread.Logon(clientStat);
+	serverThread.Logon(serverStat);
+
+	test.Next(_L("Start the threads"));
+	sem.CreateLocal(0);
+	User::SetJustInTime(EFalse); 
+	clientThread.Resume();
+	serverThread.Resume();
+	
+	test.Next(_L("Wait for the threads to stop"));
+	User::WaitForRequest(clientStat); 
+	User::WaitForRequest(serverStat);
+	User::SetJustInTime(justInTime); 
+	test.Next(_L("Check the exit categories"));
+	test(clientThread.ExitType()==EExitKill);
+	test(clientThread.ExitCategory().Compare(_L("Kill"))==0);
+	test(clientThread.ExitReason()==KErrNone);
+		
+	test(serverThread.ExitType()==EExitPanic);
+	test(serverThread.ExitCategory().Compare(_L("KERN-EXEC"))==0);
+	test(serverThread.ExitReason()==EBadMessageHandle);
+	
+	test.Next(_L("Close the threads"));
+	CLOSE_AND_WAIT(serverThread);
+	CLOSE_AND_WAIT(clientThread);
+	test.End();	 
+	}	
 
 GLDEF_C TInt E32Main()
 	{
@@ -643,41 +744,10 @@
 	CLOSE_AND_WAIT(serverThread);
 	CLOSE_AND_WAIT(clientThread);
 	test.End();
-
-	TBool justInTime=User::JustInTime();
-	
- 	test.Next(_L("Check it Panics if you try to Complete a message twice"));
-	test.Start(_L("Create client and server threads"));
-	clientThread.Create(_L("Client Thread1"),CompletePanicClientThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
-	serverThread.Create(_L("Server Thread"),ServerThread,KDefaultStackSize,KHeapMinSize,KHeapMaxSize,NULL);
-	
-	test.Next(_L("Logon to the threads"));
-	clientThread.Logon(clientStat);
-	serverThread.Logon(serverStat);
-
-	test.Next(_L("Start the threads"));
-	sem.CreateLocal(0);
-	User::SetJustInTime(EFalse); 
-	clientThread.Resume();
-	serverThread.Resume();
 	
-	test.Next(_L("Wait for the threads to stop"));
-	User::WaitForRequest(clientStat); //
-	User::WaitForRequest(serverStat);
-	User::SetJustInTime(justInTime); 
-	test.Next(_L("Check the exit categories"));
-	test(clientThread.ExitType()==EExitKill);
-	test(clientThread.ExitCategory().Compare(_L("Kill"))==0);
-	test(clientThread.ExitReason()==KErrNone);
-		
-	test(serverThread.ExitType()==EExitPanic);
-	test(serverThread.ExitCategory().Compare(_L("USER"))==0);
-	test(serverThread.ExitReason()==ETMesCompletion);
-
-	test.Next(_L("Close the threads"));
-	CLOSE_AND_WAIT(serverThread);
-	CLOSE_AND_WAIT(clientThread);
-	test.End();	  
+	TestServerCompleteTwicePanic();
+	
+	TestServerKillCompletePanic();
   	
 	test.End();
   
--- a/kerneltest/e32test/benchmark/bm_ldd.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/bm_ldd.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/bm_main.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/bm_suite.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/d32bm.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/ipc.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/property.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/sync.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/benchmark/thread.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/group/t_chunk.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/group/t_smpsoakspin.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -1,6 +1,17 @@
-// e32test\group\t_smpsoakspin.mmp
+// 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".
 //
-// Copyright (c) 2005 Symbian Ltd. All rights reserved.
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32test/group/t_smpsoakspin.mmp
 //
 
 target			t_smpsoakspin.exe        
--- a/kerneltest/e32test/group/t_timestamp.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/group/t_timestamp.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/hcr/hcr.inf	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/hcr/hcrtest_h4roms.mbc	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/hcr/hcrtest_ne1roms.mbc	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/mmu/t_chunk.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -1,22 +1,18 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
+// 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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp.h	Wed Jun 23 19:44:53 2010 +0300
@@ -1,22 +1,18 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
+// 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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp_dev.h	Wed Jun 23 19:44:53 2010 +0300
@@ -1,22 +1,18 @@
-/*
-* Copyright (c) 2010 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:
-*
-*/
+// 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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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/e32utils/group/base_e32utils.mrp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32utils/group/base_e32utils.mrp	Wed Jun 23 19:44:53 2010 +0300
@@ -17,7 +17,6 @@
 source	\sf\os\kernelhwsrv\kerneltest\e32utils\trace
 source	\sf\os\kernelhwsrv\kerneltest\e32utils\usbmsapp
 source	\sf\os\kernelhwsrv\kerneltest\e32utils\sdpartition	
-source	\sf\os\kernelhwsrv\kerneltest\e32utils\nandboot\coreldr\bootstrap_smrif.h
 	
 #MattD: Reltools 2.67 don't understand 'cwtools' are the CW equivelent of 'tools' and try to do '-what cwtools udeb' instead of '-what cwtools deb'.
 #binary	\sf\os\kernelhwsrv\kerneltest\e32utils\group cwtools
--- a/kerneltest/e32utils/group/bld.inf	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/e32utils/group/bld.inf	Wed Jun 23 19:44:53 2010 +0300
@@ -30,8 +30,6 @@
 
 PRJ_EXPORTS
 
-../nandboot/coreldr/bootstrap_smrif.h 		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(bootstrap_smrif.h)
-
 ../profiler/profiler.h						SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(profiler.h)
 
 ../analyse/profiler.rtf						/epoc32/engdoc/profiler/profiler.rtf
--- a/kerneltest/f32test/fileutils/inc/f32_test_utils.h	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/fileutils/inc/f32_test_utils.h	Wed Jun 23 19:44:53 2010 +0300
@@ -138,11 +138,14 @@
 
 
 
-TBool Is_Lffs(RFs &aFs, TInt aDrive);   //-- returns ETrue if "lffs" FS is mounted on this drive 
-TBool Is_Win32(RFs &aFs, TInt aDrive);  //-- returns ETrue if "win32" FS is mounted on this drive (i.e this is emulator's drive c:)
-TBool Is_ExFat(RFs &aFs, TInt aDrive);  //-- returns ETrue if "exFAT" FS is mounted on this drive 
-TBool Is_Automounter(RFs &aFs, TInt aDrive);  //-- returns ETrue if "Automounter" FS is mounted on this drive 
+TBool Is_Lffs(RFs &aFs, TInt aDrive);	//-- returns ETrue if "lffs" FS is mounted on this drive 
+TBool Is_Win32(RFs &aFs, TInt aDrive);	//-- returns ETrue if "Win32" FS is mounted on this drive (i.e this is emulator's drive C:)										
+TBool Is_ExFat(RFs &aFs, TInt aDrive);	//-- returns ETrue if "exFAT" FS is mounted on this drive 
+TBool Is_Automounter(RFs &aFs, TInt aDrive);	//-- returns ETrue if "Automounter" FS is mounted on this drive 
 
+TBool Is_HVFS(RFs &aFs, TInt aDrive);			//-- returns ETrue if "HVFS" is mounted on this drive (i.e PlatSim's drive C:)
+TBool Is_SimulatedSystemDrive(RFs &aFs, TInt aDrive);	//-- returns ETrue if "HVFS" or "Win32" FS is mounted on this drive
+														//	 (i.e drive C: of PlatSim or the emulator)
 
 TBool Is_Fat(RFs &aFs, TInt aDrive);    //-- returns ETrue if "FAT" FS (FAT12/16/32) is mounted on this drive 
 
--- a/kerneltest/f32test/fileutils/src/f32_test_utils.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/fileutils/src/f32_test_utils.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -248,6 +248,7 @@
 _LIT(KFsName_Win32, "Win32");
 _LIT(KFsName_ExFAT, "ExFat");
 _LIT(KFsName_AutoMonuter, "automounter");
+_LIT(KFsName_HVFS, "HVFS");
 
 /**  @return ETrue if "Automounter" FS is mounted on this drive */
 TBool F32_Test_Utils::Is_Automounter(RFs &aFs, TInt aDrive)
@@ -273,7 +274,7 @@
 
 }
    
-/** @return ETrue if "Win32" FS is mounted on this drive (i.e this is emulator's drive c:) */
+/** @return ETrue if "Win32" FS is mounted on this drive (i.e this is emulator's drive C:) */
 TBool F32_Test_Utils::Is_Win32(RFs &aFs, TInt aDrive)   
 {
 	ASSERT(aDrive >= EDriveA && aDrive <= EDriveZ);
@@ -284,6 +285,29 @@
     return (f.CompareF(KFsName_Win32) == 0 );
 }
 
+/** @return ETrue if "HVFS" is mounted on this drive (i.e PlatSim's drive C:) */
+TBool F32_Test_Utils::Is_HVFS(RFs &aFs, TInt aDrive)
+{
+	ASSERT(aDrive >= EDriveA && aDrive <= EDriveZ);
+    TFSName f;
+	TInt r = aFs.FileSystemName(f, aDrive);
+    __ASSERT_ALWAYS((r==KErrNone) && (f.Length()>0), User::Invariant());
+
+    return (f.CompareF(KFsName_HVFS) == 0);
+}
+
+/** @return ETrue if "HVFS" or "Win32" FS is mounted on this drive
+ * 			(i.e drive C: of PlatSim or the emulator) */
+TBool F32_Test_Utils::Is_SimulatedSystemDrive(RFs &aFs, TInt aDrive)
+{
+	ASSERT(aDrive >= EDriveA && aDrive <= EDriveZ);
+    TFSName f;
+	TInt r = aFs.FileSystemName(f, aDrive);
+    __ASSERT_ALWAYS((r==KErrNone) && (f.Length()>0), User::Invariant());
+
+    return (f.CompareF(KFsName_HVFS) == 0 || f.CompareF(KFsName_Win32) == 0);
+}
+
 /** @return ETrue if the filesystem if FAT (fat12/16/32) */
 TBool F32_Test_Utils::Is_Fat(RFs &aFs, TInt aDrive)
 {
--- a/kerneltest/f32test/group/b_file.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_file.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -15,12 +15,13 @@
 // 
 //
 
-TARGET         b_file.exe        
+TARGET         b_file.exe
 TARGETTYPE     EXE
 SOURCEPATH     ../server
 SOURCE         b_file.cpp
 SOURCE         t_main.cpp 
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/b_mtst.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_mtst.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         b_mtst.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/b_open.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_open.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         b_open.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/b_osfil.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_osfil.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         b_osfil.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/b_rand.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_rand.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         b_rand.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/b_rep.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/b_rep.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         b_rep.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/clean_prepdc.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/clean_prepdc.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         clean_prepdc.cpp
 SOURCE         t_main.cpp 
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/t_alert.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_alert.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_alert.cpp
 SOURCE         t_main.cpp 
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_appins.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_appins.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,7 +20,8 @@
 SOURCEPATH	../server
 SOURCE         t_appins.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/t_bigfile.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_bigfile.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         T_BIGFILE.CPP
 SOURCE         T_MAIN.CPP
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 LIBRARY        EUSER.LIB EFSRV.LIB HAL.LIB
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_blockmap.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_blockmap.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE		t_blockmap.cpp
 SOURCE		t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_cfileman.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_cfileman.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -24,6 +24,7 @@
 SOURCEPATH     ../server
 SOURCE	       t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 USERINCLUDE    ../server
--- a/kerneltest/f32test/group/t_chkuid.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_chkuid.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_chkuid.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_clobbr.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_clobbr.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH	../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_dcallcaps.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dcallcaps.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_dcallcaps.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_dcallfiles.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dcallfiles.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_dcallfiles.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_dcdiskadmin.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dcdiskadmin.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         t_dcdiskadmin.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dcdiskadminallfiles.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dcdiskadminallfiles.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_dcdiskadminallfiles.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_dcnone.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dcnone.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         t_dcnone.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dctcb.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dctcb.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         	t_dctcb.cpp
 SOURCE         	t_main.cpp
 SOURCEPATH      ../fileutils/src
-SOURCE          t_chlffs.cpp 
+SOURCE          f32_test_utils.cpp
+SOURCE          t_chlffs.cpp
 
 LIBRARY        	euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dctcballfiles.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dctcballfiles.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         t_dctcballfiles.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dctcbdiskadmin.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dctcbdiskadmin.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         t_dctcbdiskadmin.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dlocl.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dlocl.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,7 +20,8 @@
 SOURCEPATH	../server
 SOURCE         t_dlocl.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib ektran.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_dspace.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_dspace.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,7 +21,8 @@
 SOURCE         t_dspace.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp 
+SOURCE         f32_test_utils.cpp
+SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_fman.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fman.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 source		t_fman.cpp
 source		t_main.cpp
 sourcepath      ../fileutils/src
+source          f32_test_utils.cpp
 source          t_chlffs.cpp
 
 library		euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_fnames.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fnames.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_fnames.cpp
 SOURCE         t_main.cpp 
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_fragmentdp.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fragmentdp.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_fsched.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fsched.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,9 +20,12 @@
 
 SOURCEPATH		../server
 SOURCE			t_fsched.cpp
+SOURCEPATH		../fileutils/src
+SOURCE			f32_test_utils.cpp
 
 LIBRARY			euser.lib efsrv.lib hal.lib 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE		../fileutils/inc
 EPOCSTACKSIZE	0x10000
 EPOCHEAPSIZE	0x1000 0x02000000
 
--- a/kerneltest/f32test/group/t_fsrvbm.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fsrvbm.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_fsy2k.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fsy2k.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_fsy2k.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_fsysbm.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_fsysbm.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_gdir.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_gdir.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_gdir.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_gen.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_gen.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 SOURCEPATH     ../math
 SOURCE         t_gen.cpp
--- a/kerneltest/f32test/group/t_gen32.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_gen32.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 SOURCEPATH	../math
 SOURCE         t_gen32.cpp
--- a/kerneltest/f32test/group/t_handshare.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_handshare.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH 	../server
 SOURCE         	t_main.cpp
 SOURCEPATH      ../fileutils/src
+SOURCE          f32_test_utils.cpp
 SOURCE          t_chlffs.cpp
 
 LIBRARY        	euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_localtime.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_localtime.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH	../server
 SOURCE		t_localtime.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_locate.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_locate.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_locate.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_lock.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_lock.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_lock.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_misc.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_misc.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE          t_misc.cpp
 SOURCE          t_main.cpp
 SOURCEPATH      ../fileutils/src
+SOURCE          f32_test_utils.cpp
 SOURCE          t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_nmbs.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_nmbs.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_nmbs.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_notifier.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_notifier.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,8 +20,9 @@
 sourcepath		../server
 source			t_notifier.cpp
 source			t_main.cpp 
-sourcepath      ../fileutils/src
-source          t_chlffs.cpp
+sourcepath		../fileutils/src
+source			f32_test_utils.cpp
+source			t_chlffs.cpp
 library			euser.lib efsrv.lib hal.lib
 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_notify.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_notify.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 source	       t_notify.cpp
 source	       t_main.cpp
 SOURCEPATH     ../fileutils/src
+source         f32_test_utils.cpp
 source         t_chlffs.cpp
 
 library		euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_notify_mfs.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_notify_mfs.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,8 +22,9 @@
 source			t_notify_perf_impl.cpp t_notify_perf_util.cpp
 sourcepath		../server
 source			t_notify_mfs.cpp t_main.cpp
-sourcepath      ../fileutils/src
-source          t_chlffs.cpp
+sourcepath		../fileutils/src
+source			f32_test_utils.cpp
+source			t_chlffs.cpp
 
 library			euser.lib efsrv.lib hal.lib
 
--- a/kerneltest/f32test/group/t_notify_perf.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_notify_perf.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -23,7 +23,8 @@
 sourcepath		../server
 source			t_main.cpp
 sourcepath		../fileutils/src
-source          t_chlffs.cpp
+source			f32_test_utils.cpp
+source			t_chlffs.cpp
 
 library			euser.lib efsrv.lib hal.lib
 
--- a/kerneltest/f32test/group/t_notifydismount.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_notifydismount.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH     ../server
 SOURCE         t_notifydismount.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_oom.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_oom.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_open.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_open.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_open.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_parse.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_parse.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH     ../server
 SOURCE         t_parse.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_proc.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_proc.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,8 +20,9 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
-SOURCEPATH	   ../manager
+SOURCEPATH     ../manager
 SOURCE         t_proc.cpp
 
 LIBRARY         euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_ramstr.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_ramstr.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_rand.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_rand.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_rand.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_rcount.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_rcount.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_rcount.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_rdsect.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_rdsect.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -20,6 +20,7 @@
 SOURCEPATH     ../server
 SOURCE         t_rdsect.cpp t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_resize.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_resize.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_resize.cpp
 SOURCE	       t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_romg.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_romg.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../SERVER
 SOURCE         T_MAIN.CPP
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         T_CHLFFS.CPP
 
 LIBRARY        EUSER.LIB EFSRV.LIB HAL.LIB
--- a/kerneltest/f32test/group/t_scan.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_scan.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_scan.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_sess.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_sess.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -23,6 +23,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_soak1.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_soak1.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH	../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_vfat.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_vfat.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,7 @@
 SOURCE         t_vfat.cpp
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 LIBRARY        euser.lib efsrv.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
--- a/kerneltest/f32test/group/t_virus.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_virus.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_whet.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_whet.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/t_whetvfp.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/t_whetvfp.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/group/wintest.bat	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/group/wintest.bat	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/loader/dlltree.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/loader/ldrtst.flm	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/locl/CodepageUtils/src/t_cputils_cp932.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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/locl/t_filematch.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/locl/t_filematch.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -114,7 +114,8 @@
 	r = dir.Open(TheFs, name, KEntryAttNormal);
 	test_KErrNone(r);
 	TEntry entry;
-	test(dir.Read(entry) == KErrNone);
+	r = dir.Read(entry);
+	test_KErrNone(r);
 	dir.Close();
 	}
 
@@ -128,7 +129,8 @@
 	r = dir.Open(TheFs, name, KEntryAttNormal);
 	test_KErrNone(r);
 	TEntry entry;
-	test(dir.Read(entry) == KErrEof);
+	r = dir.Read(entry);
+	test_Equal(KErrEof, r);
 	dir.Close();
 	}
 
@@ -184,11 +186,11 @@
     F32_Test_Utils::SetConsole(test.Console()); 
     
     TInt nRes=TheFs.CharToDrive(gDriveToTest, gDriveNum);
-    test(nRes==KErrNone);
+    test_KErrNone(nRes);
     
     PrintDrvInfo(TheFs, gDriveNum);
 
-    if(Is_Win32(TheFs, gDriveNum) || Is_Fat(TheFs, gDriveNum) || Is_Lffs(TheFs, gDriveNum))
+    if(Is_SimulatedSystemDrive(TheFs, gDriveNum) || Is_Fat(TheFs, gDriveNum) || Is_Lffs(TheFs, gDriveNum))
         {
 	    TestFilenameMatches();
         }
--- a/kerneltest/f32test/plugins/version_2/crypto_encryption/group/t_encplugin.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/plugins/version_2/crypto_encryption/group/t_encplugin.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -22,6 +22,7 @@
 SOURCEPATH     ../../../../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../../../../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp 
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/plugins/version_2/file64bit/group/t_file64bit_plugin.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/plugins/version_2/file64bit/group/t_file64bit_plugin.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -26,6 +26,7 @@
 SOURCEPATH     ../../../../server
 SOURCE         t_main.cpp
 SOURCEPATH     ../../../../fileutils/src
+SOURCE         f32_test_utils.cpp
 SOURCE         t_chlffs.cpp
 
 LIBRARY        euser.lib efsrv.lib hal.lib
--- a/kerneltest/f32test/plugins/version_2/group/t_plugin_v2.mmp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/plugins/version_2/group/t_plugin_v2.mmp	Wed Jun 23 19:44:53 2010 +0300
@@ -27,6 +27,7 @@
 SOURCEPATH	../../../server
 SOURCE		t_main.cpp
 SOURCEPATH	../../../fileutils/src
+SOURCE          f32_test_utils.cpp
 SOURCE          t_chlffs.cpp
 
 USERINCLUDE	../../../server
--- a/kerneltest/f32test/plugins/version_2beta/t_plugin_v2beta.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/plugins/version_2beta/t_plugin_v2beta.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -172,7 +172,7 @@
 
 		}
 	else
-		if ((gFileSystemExtensionLoaded || name.CompareF(_L("Win32"))==0)&& r == KErrNotSupported)
+		if ((gFileSystemExtensionLoaded || F32_Test_Utils::Is_Win32(TheFs,driveNum)) && r == KErrNotSupported)
 			{
 			test.Printf(_L("File system extension does not support local buffers\n"));
 			file.Close();
@@ -449,7 +449,7 @@
 	// run T_FILE with trace plugin installed
 
 #if defined(__WINS__)	// only in WINS to save time
-TestLoadingOfTracePlugin();
+	TestLoadingOfTracePlugin();
 
 	RProcess p;
 
@@ -464,11 +464,11 @@
 	p.Logon(status);
 	p.Resume();
 	User::WaitForRequest(status);
-TestUnloadingOfTracePlugin();
+	TestUnloadingOfTracePlugin();
 #endif // __WINS__
 
 	// Cannot format drive C: so skip this test on that drive
-	if (!F32_Test_Utils::Is_Win32(TheFs, EDriveC))
+	if (!F32_Test_Utils::Is_SimulatedSystemDrive(TheFs, EDriveC))
 	    {
         TestLoadingOfFormatPlugin();
         TestFormatDriveIntercept();
--- a/kerneltest/f32test/server/b_gen.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/b_gen.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -693,12 +693,12 @@
     
     PrintDrvInfo(TheFs, gDriveNum);
 
-    //-- quick format the drive, if it isn't the emulator's C:  
-    if(!Is_Win32(TheFs, gDriveNum))
-    {
+    //-- quick format the drive, if it isn't drive C: of the emulator or PlatSim
+    if(!Is_SimulatedSystemDrive(TheFs, gDriveNum))
+    	{
         nRes = FormatDrive(TheFs, gDriveNum, ETrue); 
         test_KErrNone(nRes);
-    }
+    	}
 
     //-----------------------------------
 	TInt c;
--- a/kerneltest/f32test/server/b_open.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/b_open.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -23,6 +23,9 @@
 #include <f32dbg.h>
 #include "t_server.h"
 #include "t_chlffs.h"
+#include "f32_test_utils.h"
+
+using namespace F32_Test_Utils;
 
 #ifdef __WINS__
 #define WIN32_LEAN_AND_MEAN
@@ -344,15 +347,15 @@
 // Call tests that may leave
 //
 	{
+    if (Is_SimulatedSystemDrive(TheFs, CurrentDrive()))
+        {
+		// These tests try to create a huge file to fill up the drive.
+		// This fails on WINS with drives with > 1/2G free because
+		// RFile::SetSize() (among other things) only takes a TInt.
+		test.Printf(_L("Skipping B_OPEN on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
+		return;
+        }
 
-#ifdef __WINS__
-// These tests try to create a huge file to fill up the drive.
-// This fails on WINS with drives with > 1/2G free because
-// RFile::SetSize() (among other things) only takes a TInt.
-//
-	if (gSessionPath.Left(1).CompareF(_L("C")) == 0)
-		return;
-#endif
 	CreateTestDirectory(_L("\\B_OPEN\\"));
 	InitTest();
 	testOpenFiles();
--- a/kerneltest/f32test/server/t_ext1.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_ext1.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -60,10 +60,10 @@
 	test_KErrNone(r);
 	test.Printf(_L("fsName=%S\n"),&fsName);
 
-#if defined(__WINS__)
-	if(drive==EDriveC)
+	if (Is_SimulatedSystemDrive(TheFs, drive))
 		{
-		// check that the extension cannot be mounted since not supported by the file system
+		// check that the extension cannot be mounted since it is not supported by the file system
+		test.Printf(_L("Test extension cannot be mounted"));
 		r=TheFs.AddExtension(KExtensionLog);
 		test_KErrNone(r);
 		r=TheFs.MountExtension(KExtensionLogName,drive);
@@ -72,7 +72,6 @@
 		test_KErrNone(r);
 		return;
 		}
-#endif
 
 	test.Next(_L("RFs::AddExtension()"));
 	r=TheFs.AddExtension(KExtensionLog);
@@ -279,10 +278,11 @@
 	TInt err=RFs::CharToDrive(gDriveToTest,drive);
 	test_KErrNone(err);
 
-#if defined(__WINS__)
-	if(drive==EDriveC)
+	if(Is_SimulatedSystemDrive(TheFs, drive))
+	    {
+		test.Printf(_L("Skipping TestPrimaryExtensions on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
 		return;
-#endif
+	    }
 
 	TPckgBuf<TBool> drvSyncBuf;
 	err = TheFs.QueryVolumeInfoExt(drive, EIsDriveSync, drvSyncBuf);
@@ -456,7 +456,7 @@
 	test_KErrNone(err);
 	if(!extensionsSupported)
 	    {
-        test.Printf(_L("Drive %d does not support file sys extensions. Skipping test."), drive);
+        test.Printf(_L("Drive %C: does not support file sys extensions. Skipping T_EXT1."), gSessionPath[0]);
         test.End();
         test.Close();
         return;
@@ -475,6 +475,7 @@
 	TheFs.Drive(driveInfo,drive);
 	if (driveInfo.iType == EMediaNANDFlash)
 		{
+		test.Printf(_L("Skipping T_EXT1 as drive %C: is NAND\n"), gSessionPath[0]);
 		return;
 		}
 #endif
--- a/kerneltest/f32test/server/t_falsespace.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_falsespace.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -1178,11 +1178,9 @@
 	r = TheFs.Drive(drv, gTestDrive);
 	test_KErrNone(r);
 
-
 	//-- print drive information
 	PrintDrvInfo(TheFs, gTestDrive);
 
-
 	// do not run the remainder of this test on RAM drive
 	if (drv.iType == EMediaRam)
 		{
@@ -1191,9 +1189,9 @@
 		return;
 		}
 
-	if (Is_Win32(TheFs, gTestDrive))
+	if (Is_SimulatedSystemDrive(TheFs, gTestDrive))
 		{
-		test.Printf(_L("Skipping on emulator %C: drive\n"), gSessionPath[0]);
+		test.Printf(_L("Skipping T_FALSESPACE on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
 		return;
 		}
 
@@ -1201,12 +1199,12 @@
 	Test1();	// General test for new APIs
 	Test2();	// Test to ensure drive and session reserve limits are not exceeded
 	Test3();
-	Test4();	// test filling the drive and that each checked API fails
+	Test4();	// Test filling the drive and that each checked API fails
 	Test5();
 	Test6();
 	Test7();
 	TestForDEF142554();
-	Test2();	// run this test to check reserves are being cleared correctly
+	Test2();	// Run this test to check reserves are being cleared correctly
 
 	TestFAT4G_Boundary();
 
--- a/kerneltest/f32test/server/t_file.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_file.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -1175,12 +1175,8 @@
 	err = TheFs.GetShortName(KOrigFileName, shortName);
 	test_KErrNone(err);
 
-	// Validate the generated shorname against the original filename.
-	if (Is_Win32(TheFs, gDriveNum))
-		{
-		test(shortName==_L("2222~1.JAR"));
-		}
-	else if(!IsTestingLFFS())
+	// Validate the generated shortname against the original filename.
+	if(!IsTestingLFFS())
 		{
 		// LFFS short names not the same as VFAT ones
 		test(shortName==_L("2222~1.JAR"));
@@ -1777,11 +1773,11 @@
 // Test max length filenames can be created/deleted
 //
 	{
-
-#if defined(__WINS__)
-	if (gSessionPath[0]=='C')
+	if(Is_SimulatedSystemDrive(TheFs, gDriveNum))
+		{
+		test.Printf(_L("Skipping TestMaxLengthFilenames() on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
 		return;
-#endif
+		}
 
 	test.Next(_L("Test max length filenames"));
 	TFileName bigName;
@@ -3040,7 +3036,7 @@
         gShortFileNamesSupported = ETrue;
     
     if(Is_Win32(TheFs, gDriveNum)) 
-    {//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
+    	{//-- find out if this is NTFS and if it supports short names (this feature can be switched OFF)
         
         _LIT(KLongFN, "\\this is a long file name");
         nRes = CreateEmptyFile(TheFs, KLongFN, 10);   
@@ -3054,12 +3050,12 @@
         test_KErrNone(nRes);
 
         DeleteTestDirectory();
-    }
+    	}
     else
-    {
+    	{
         nRes = FormatDrive(TheFs, gDriveNum, ETrue);
         test_KErrNone(nRes);
-    }
+    	}
 
 	CreateTestDirectory(_L("\\F32-TST\\TFILE\\"));
 
--- a/kerneltest/f32test/server/t_file64bit.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_file64bit.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -5961,9 +5961,11 @@
         {
         KFileSizeMaxLargerThan4GBMinusOne = EFalse; //-- FAT doesn't support >= 4G files
         }
-    else if(Is_Win32(TheFs, aDrive))
-        {//-- this is the emulator's windows drive. The maximal file size depends on the Windows FS used for this drive.
-         //-- if it is NTFS, files >= 4G are supported.   
+    else if(Is_SimulatedSystemDrive(TheFs, aDrive))
+        {
+		 //-- This is the emulator's windows drive or PlatSim's HVFS.
+		 //-- The maximal file size depends on the Windows FS used for this drive.
+         //-- If it is NTFS, files >= 4G are supported.
         r = CreateEmptyFile(TheFs, _L("\\test_file"), K4GB);
         
         KFileSizeMaxLargerThan4GBMinusOne = (r == KErrNone);
--- a/kerneltest/f32test/server/t_format.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_format.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -695,9 +695,9 @@
     test_KErrNone(nRes);
 
     //-- this will mark the current Mount as "Dismounted" and will instantiate another CMountCB for formatting
-    fmtMode = EQuickFormat | EForceFormat; 
+    fmtMode = EQuickFormat | EForceFormat;
 
-    nRes = format.Open(TheFs, drivePath, fmtMode, fmtCnt); 
+    nRes = format.Open(TheFs, drivePath, fmtMode, fmtCnt);
     test_KErrNone(nRes);
     
     nRes = DoFormatSteps(format, fmtCnt);
@@ -877,8 +877,11 @@
     
     PrintDrvInfo(TheFs, gDrive);
 
-    if(Is_Win32(TheFs, gDrive))
-        return; //-- emulator drive c:
+    if(Is_SimulatedSystemDrive(TheFs, gDrive))
+    	{
+		test.Printf(_L("Skipping T_FORMAT on PlatSim/Emulator drive %C:\n"), gSessionPath[0]);
+		return;
+    	}
 
 
 	SetSessionPath(_L("\\"));
--- a/kerneltest/f32test/server/t_fsched.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_fsched.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -29,6 +29,9 @@
 #include "t_server.h"
 #include <e32twin.h>
 #include <e32cmn.h>
+#include "f32_test_utils.h"
+
+using namespace F32_Test_Utils;
 
 //----------------------------------------------------------------------------------------------
 //! @SYMTestCaseID      PBASE-T_FSCHED-0191
@@ -930,9 +933,9 @@
 	test.Printf(_L("\nSync read done %d ms before the write ended\n"),I64LOW(timeTaken.Int64() / KuStomS));
 	TReal time=I64LOW(timeTaken.Int64() / KuStomS); 
 	#if !defined(__WINS__)
-	// If this condition fails, means that writing the sync file while fairscheduling a small sync read takes too long
+		// If this condition fails, it means that writing the sync file while fairscheduling a small sync read takes too long
 		test.Printf(_L("time: %f\n"), time);
-//		test((time > 0) && (((gTotalTimeSync[0]-time)>0) || ((gTotalTimeSync[1]-time)>0)) );  
+		// test((time > 0) && (((gTotalTimeSync[0]-time)>0) || ((gTotalTimeSync[1]-time)>0)) );  
 		test(time > 0);
 	#endif 
 	
@@ -959,11 +962,14 @@
 	time = I64LOW(timeTaken.Int64() / KuStomS); 
 
 	#if !defined(__WINS__)
-	// If this condition fails, means that writing the async file while fairscheduling a small async read takes too long
+	if (!Is_HVFS(TheFs, gDrive))
+		{
+		// If this condition fails, it means that writing the async file while fairscheduling a small async read takes too long
 		test.Printf(_L("time: %f\n"), time);
 		test.Printf(_L("gTotalTimeAsync[0] = %d , gTotalTimeAsync[1] = %d\n"),gTotalTimeAsync[0],gTotalTimeAsync[1] );
-//		test((time > 0) && (((gTotalTimeAsync[0]-time)>0) || ((gTotalTimeAsync[1]-time)>0)) );
+		// test((time > 0) && (((gTotalTimeAsync[0]-time)>0) || ((gTotalTimeAsync[1]-time)>0)) );
 		test(time > 0);
+		}
 	#endif
 }
 
@@ -998,9 +1004,9 @@
 	test.Printf(_L("\nSync write done %d ms before the big write ended\n"),I64LOW(timeTaken.Int64() / KuStomS));
 	TReal time=I64LOW(timeTaken.Int64() / KuStomS); 
 	#if !defined(__WINS__)
-	// If this condition fails, means that writing the sync file while fairscheduling a small sync write takes too long
+		// If this condition fails, it means that writing the sync file while fairscheduling a small sync write takes too long
 		test.Printf(_L("time: %f\n"), time);
-// 		test((time > 0) && (((gTotalTimeSync[0]-time)>0) || ((gTotalTimeSync[1]-time)>0)) ); 
+		// test((time > 0) && (((gTotalTimeSync[0]-time)>0) || ((gTotalTimeSync[1]-time)>0)) ); 
 		test(time > 0);
 	#endif 
 
@@ -1018,13 +1024,16 @@
 	
 	timeTaken = time2.MicroSecondsFrom(time1);
 	test.Printf(_L("\nAsync write done %d ms before the big write ended\n"),I64LOW(timeTaken.Int64() / KuStomS));
-	time=I64LOW(timeTaken.Int64() / KuStomS); 
+	time=I64LOW(timeTaken.Int64() / KuStomS);
 	#if !defined(__WINS__)
-	// If this condition fails, means that writing the async file while fairscheduling a small async write takes too long
+	if (!Is_HVFS(TheFs, gDrive))
+		{
+		// If this condition fails, it means that writing the async file while fairscheduling a small async write takes too long
 		test.Printf(_L("time: %f\n"), time);
 		test.Printf(_L("gTotalTimeAsync[0] = %d , gTotalTimeAsync[1] = %d\n"),gTotalTimeAsync[0],gTotalTimeAsync[1] );
-//		test((time > 0) && (((gTotalTimeAsync[0]-time)>0) || ((gTotalTimeAsync[1]-time)>0)) ); 
+		// test((time > 0) && (((gTotalTimeAsync[0]-time)>0) || ((gTotalTimeAsync[1]-time)>0)) );
 		test(time > 0);
+		}
 	#endif
 	bigFile.Close();
 	smallFile.Close();	
@@ -1336,9 +1345,9 @@
 	TestWriteOrder();
 	
 	// Format the drive to make sure no blocks are left to be erased in LFFS
-	#if !defined(__WINS__)
+	if (!Is_Win32(TheFs, gDrive))
 		Format(gDrive);	
-	#endif
+	
 	r = TheFs.MkDirAll(gSessionPath);
 	
 	TimeTakenToWriteBigFile(1);  
@@ -1505,10 +1514,9 @@
 		test.Printf(_L("%c: Media corruption; previous test may have aborted; else, check hardware\n"), (TUint)gDrive + 'A');
 		}
 	TESTERROR(r);
-#if !defined(__WINS__)
-	if ((volInfo.iDrive.iMediaAtt & KMediaAttFormattable))
+	
+	if (!Is_Win32(TheFs, gDrive) && (volInfo.iDrive.iMediaAtt & KMediaAttFormattable))
 		Format(gDrive);
-#endif
 
 	if(CheckForDiskSize())
 		{
--- a/kerneltest/f32test/server/t_fsrv.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_fsrv.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -1682,10 +1682,8 @@
 			break;
 		test_KErrNone(r);
 		count++;
-#if defined(__WINS__)
-		if (count==32 && sessionPath[0]=='C')
-			break;
-#endif
+		if (Is_SimulatedSystemDrive(TheFs,gDrive) && count==32)
+			break;	// Limit on disk size for emulator/PlatSim
 		}
 
 	r=TheFs.CheckDisk(fileName);
--- a/kerneltest/f32test/server/t_main.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_main.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -24,6 +24,7 @@
 #include <f32dbg.h>
 #include "t_server.h"
 #include "t_chlffs.h"
+#include "f32_test_utils.h"
 
 GLDEF_D	RFs TheFs;
 GLDEF_D TFileName gSessionPath;
@@ -157,14 +158,11 @@
 
 		while(illegalChar)
 			{
-#if defined(__WINS__)
-			if (gSessionPath[0]=='C')
+			if (F32_Test_Utils::Is_SimulatedSystemDrive(TheFs, CurrentDrive()))
 				letter=(TChar)('A'+Math::Rand(aSeed)%26);
 			else
 				letter=(TChar)Math::Rand(aSeed)%256;
-#else
-			letter=(TChar)Math::Rand(aSeed)%256;
-#endif
+
 			TBool space=letter.IsSpace();
 			if (space && spaceChar==-1)
 				spaceChar=i;
--- a/kerneltest/f32test/server/t_notify.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/server/t_notify.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -21,6 +21,9 @@
 #include <e32svr.h>
 #include <hal.h>
 #include "t_server.h"
+#include "f32_test_utils.h"
+
+using namespace F32_Test_Utils;
 
 const TInt KHeapSize=0x200;
 
@@ -139,7 +142,7 @@
 		{
 		TRequestStatus s;
 		fs.NotifyChange(ENotifyAll,s);
-		test(s==KRequestPending);
+		test_Value(s.Int(), s==KRequestPending);
 		gSleepThread.Signal();
 		User::After(100000000);
 		}
@@ -216,7 +219,7 @@
 		TRequestStatus s;
 		TFileName path=_L("\\F32-TST\\NOTIFY\\");
 		fs.NotifyChange(ENotifyAll,s,path);
-		test(s==KRequestPending);
+		test_Value(s.Int(), s==KRequestPending);
 		gSleepThread.Signal();
 		User::After(100000000);
 		}
@@ -293,21 +296,21 @@
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	thread.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	RFile file;
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileWrite|EFileShareExclusive);
 	test_KErrNone(r);
 	file.Write(_L8("Somewhere over the rainbow..."),reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	TBuf8<256> buf;
 	file.Read(0, buf,reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileShareExclusive);
@@ -319,28 +322,28 @@
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileShareAny);
 	test_KErrNone(r);
 	file.Read(0, buf, 100, reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileShareAny);
 	test_KErrNone(r);
 	file.Read(0, buf, 100, reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.ReadCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	file.Close();
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileWrite|EFileShareAny);
 	test_KErrNone(r);
 	file.Read(0, buf, 100, reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetSize(100);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(buf.Length() == 100);
+	test_KErrNone(reqStat.Int());
+	test_Equal(100, buf.Length());
 	file.Close();
 
 	test.Next(_L("Repeat Test notification of an entry change"));
@@ -349,15 +352,10 @@
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	thread.Close();
 	User::WaitForRequest(reqStat);
-	if (reqStat!=KErrNone)
-		{
-		test.Printf(_L("ReqStat=%d\n"),reqStat.Int());
-		//test.Getch();
-		}
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	test.Next(_L("Test Notify cancel"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat);
@@ -370,10 +368,10 @@
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	thread.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	}
 
 static void Test2()
@@ -396,14 +394,14 @@
 	test_KErrNone(r);
 	fs2.NotifyChange(ENotifyEntry,reqStat2);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\NEWFILE.TXT"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
 	}
 
 static void Test3()
@@ -428,25 +426,25 @@
 	fs1.NotifyChange(ENotifyAll,status3);
 	fs1.NotifyChange(ENotifyAll,status4);
 	fs1.NotifyChange(ENotifyAll,status5);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KRequestPending);
 
 	test.Next(_L("RFs::NotifyCancel()"));
 //	Test that one call to RFs::NotifyCancel() cancels all outstanding requests
 	fs1.NotifyChangeCancel();
 	User::WaitForRequest(status1);
-	test(status1==KErrCancel);
+	test_Value(status1.Int(), status1==KErrCancel);
 	User::WaitForRequest(status2);
-	test(status2==KErrCancel);
+	test_Value(status2.Int(), status2==KErrCancel);
 	User::WaitForRequest(status3);
-	test(status3==KErrCancel);
+	test_Value(status3.Int(), status3==KErrCancel);
 	User::WaitForRequest(status4);
-	test(status4==KErrCancel);
+	test_Value(status4.Int(), status4==KErrCancel);
 	User::WaitForRequest(status5);
-	test(status5==KErrCancel);
+	test_Value(status5.Int(), status5==KErrCancel);
 //	Call the cancel function again to check no further action
 	fs1.NotifyChangeCancel();
 
@@ -457,49 +455,49 @@
 	fs1.NotifyChange(ENotifyAll,status3);
 	fs1.NotifyChange(ENotifyAll,status4);
 	fs1.NotifyChange(ENotifyAll,status5);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KRequestPending);
 
 //	Cancel the outstanding request with status5
 	test.Next(_L("RFs::NotifyCancel()"));
 	fs1.NotifyChangeCancel(status5);
 	User::WaitForRequest(status5);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KErrCancel);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KErrCancel);
 
 	fs1.NotifyChangeCancel(status2);
 	User::WaitForRequest(status2);
 
-	test(status1==KRequestPending);
-	test(status2==KErrCancel);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KErrCancel);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
 
 	fs1.NotifyChangeCancel(status4);
 	User::WaitForRequest(status4);
-	test(status1==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KErrCancel);
-
-	fs1.NotifyChangeCancel(status4);	//	Test no side effects on trying to cancel a request
-	test(status4==KErrCancel);			//	that has already been cancelled
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KErrCancel);
+
+	fs1.NotifyChangeCancel(status4);				//	Test no side effects on trying to cancel a request
+	test_Value(status4.Int(), status4==KErrCancel);	//	that has already been cancelled
 
 	fs1.NotifyChangeCancel(status1);
 	User::WaitForRequest(status1);
-	test(status1==KErrCancel);
-	test(status3==KRequestPending);
+	test_Value(status1.Int(), status1==KErrCancel);
+	test_Value(status3.Int(), status3==KRequestPending);
 	fs1.NotifyChangeCancel(status1);	//	Test no side effects on trying to cancel a request
-	test(status1==KErrCancel);			//	that has already been cancelled
+	test_Value(status1.Int(), status1==KErrCancel);			//	that has already been cancelled
 
 	fs1.NotifyChangeCancel(status3);
 	User::WaitForRequest(status3);
-	test(status3==KErrCancel);
+	test_Value(status3.Int(), status3==KErrCancel);
 
 	fs1.Close();
 	}
@@ -560,7 +558,7 @@
 
 	TRequestStatus reqStat=0;
 	TheFs.NotifyChange(ENotifyEntry,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -569,12 +567,12 @@
 	test_KErrNone(r);
 	clientThread.Resume();
 	gSleepThread.Wait();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\kangaroo.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\koala.txt"));
 	test_KErrNone(r);
@@ -605,7 +603,7 @@
         TRequestStatus reqStat=0;
         TInt r;
         TheFs.NotifyChange(ENotifyEntry,reqStat);
-        test(reqStat==KRequestPending);
+        test_Value(reqStat.Int(), reqStat==KRequestPending);
         r=gSleepThread.CreateLocal(0);
         test_KErrNone(r);
         RThread clientThread;
@@ -614,7 +612,7 @@
         clientThread.Resume();
         gSleepThread.Wait();
         TInt reqInt=reqStat.Int();
-        test(reqInt==KErrNone);
+        test_KErrNone(reqInt);
         User::WaitForRequest(reqStat);
         WaitForMediaChange();
         gSleepThread.Close();
@@ -641,7 +639,7 @@
 	MakeFile(_L("NewFile.TXT"));
 	TInt r;
 	TheFs.NotifyChange(ENotifyEntry,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -650,7 +648,7 @@
 	test_KErrNone(r);
 	clientThread.Resume();
 	gSleepThread.Wait();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=TheFs.Delete(_L("Newfile.txt"));
 	test_KErrNone(r);
@@ -679,7 +677,7 @@
 		TFileName path = _L("\\F32-tst\\NOTIFY\\");
 		TInt r;
 		TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=gSleepThread.CreateLocal(0);
 		test_KErrNone(r);
 		RThread clientThread;
@@ -689,7 +687,7 @@
 		clientThread.Resume();
 		gSleepThread.Wait();
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		WaitForMediaChange();
 		gSleepThread.Close();
 		clientThread.Close();
@@ -701,7 +699,7 @@
 
 
 		TheFs.NotifyChange(ENotifyDisk,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=gSleepThread.CreateLocal(0);
 		test_KErrNone(r);
 		r=clientThread.Create(_L("Test6Thread2"),ThreadEntryPoint,0x4000,KHeapSize,KHeapSize,(TAny*)ETest6);
@@ -709,7 +707,7 @@
 		clientThread.Resume();
 		gSleepThread.Wait();
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		WaitForMediaChange();
 		gSleepThread.Close();
 		clientThread.Close();
@@ -720,7 +718,7 @@
 	    test_KErrNone(r);
 
 		TheFs.NotifyChange(ENotifyWrite,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=gSleepThread.CreateLocal(0);
 		test_KErrNone(r);
 		r=clientThread.Create(_L("Test6Thread3"),ThreadEntryPoint,0x4000,KHeapSize,KHeapSize,(TAny*)ETest6);
@@ -728,7 +726,7 @@
 		clientThread.Resume();
 		gSleepThread.Wait();
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		WaitForMediaChange();
 		gSleepThread.Close();
 		clientThread.Close();
@@ -756,17 +754,17 @@
 	TFileName path=_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\");
 	TRequestStatus reqStat(KRequestPending);
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\"));
 	test_KErrNone(r);
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	path=_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\PayNoAttention.man");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	RFile file;
 	r=file.Replace(TheFs,path,EFileStream);
@@ -774,130 +772,130 @@
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Repeat with a ENotifyFile request
 	TheFs.NotifyChange(ENotifyFile,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=file.Replace(TheFs,path,EFileStream);
 	test_KErrNone(r);
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyFile,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Repeat with an ENotifyAttributes request
 	TheFs.NotifyChange(ENotifyAttributes,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=file.Replace(TheFs,path,EFileStream);
 	test_KErrNone(r);
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);	//	Monitoring attributes but informed anyway
+	test_KErrNone(reqStat.Int());	//	Monitoring attributes but informed anyway
 
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyAttributes,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Repeat with an ENotifyWrite request
 	TheFs.NotifyChange(ENotifyWrite,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=file.Replace(TheFs,path,EFileStream);
 	test_KErrNone(r);
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);	//	Monitoring file writing but informed anyway
+	test_KErrNone(reqStat.Int());	//	Monitoring file writing but informed anyway
 
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyWrite,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Repeat with an ENotifyDisk request
 	TheFs.NotifyChange(ENotifyDisk,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=file.Replace(TheFs,path,EFileStream);
 	test_KErrNone(r);
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);	//	Monitoring disk activity but informed anyway
+	test_KErrNone(reqStat.Int());	//	Monitoring disk activity but informed anyway
 
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyAttributes,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Now do much the same with directory monitoring
 	path=_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\");
 	TheFs.RmDir(path);
 
 	TheFs.NotifyChange(ENotifyDir,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	TheFs.MkDir(path);
 	test_KErrNone(r);
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	TheFs.RmDir(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyDir,reqStat,path);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 	TheFs.NotifyChange(ENotifyDir,reqStat,path);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	Get a separate thread to create the directory
 	RThread thread;
@@ -908,9 +906,9 @@
 	thread.Close();
 
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	TheFs.RmDir(path);
 	test_KErrNone(r);
@@ -920,7 +918,7 @@
 	path=_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\PayNoAttention.man");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	thread.Create(_L("RequestAheadThread"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest10);
 	thread.Logon(thrdStat);
@@ -928,31 +926,31 @@
 	thread.Close();
 
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
-	test(reqStat==KRequestPending);
+	test_KErrNone(thrdStat.Int());
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	Now get a thread to create the file
 	thread.Create(_L("RequestAhead"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest11);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	thread.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	TheFs.Delete(path);
 	test_KErrNone(r);
 
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	Now cancel the outstanding request
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\BehindTheCurtain\\");
 	TheFs.RmDir(path);
@@ -972,52 +970,52 @@
 	TFileName path=(_L("\\F32-TST\\"));
 
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	RThread thread;
 	TInt r=thread.Create(_L("MyThread"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 //	Repeat the test
 	test.Next(_L("Repeat Test notification of an entry change"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread2"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 //	Test it can be cancelled
 	test.Next(_L("Test Notify cancel"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TheFs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Test it can be notified again
 	test.Next(_L("Test notification still works"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread3"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 //	Test notification doesn't occur when a change occurs above the directory monitored
@@ -1028,53 +1026,53 @@
 	test_Value(r, (r == KErrNone)||(r==KErrAlreadyExists));
 	path=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread4"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::After(500000);
 	thread.Close();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TheFs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Test notification occurs when a change is made to the subdirectory monitored
 	test.Next(_L("Create a file in monitored subdirectory"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread5"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest2);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 	test.Next(_L("Create a directory in monitored subdirectory"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread6"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest3);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\SCARECROW\\TINMAN\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\SCARECROW\\TINMAN\\"));
@@ -1089,28 +1087,28 @@
 	path=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\");
 
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread7"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::After(500000);
 	thread.Close();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TheFs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Test notification occurs when a change is made to the subdirectory monitored
 	test.Next(_L("Delete a file in monitored subdirectory"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	RFile file;
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\WickedWitch.msg"),EFileStream);
@@ -1121,104 +1119,104 @@
 	test.Next(_L("Monitor changes to a specific file"));
 	path+=_L("WickedWitch.msg");
 	TheFs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread8"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest8);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 
 //	Test notification does not occur if a change is made above the file
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	thread.Create(_L("MyThread9"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest2);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::After(500000);
 	thread.Close();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TheFs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	Test notification occurs when a change is made to the file
 	test.Next(_L("Delete monitored file"));
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\WickedWitch.Msg"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	Test notification request is now submitted on the non existent path successfully
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TheFs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.Doc");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.Doc"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	path=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	Submit a request for a path which does not yet exist
 	path=_L("\\F32-TST\\NOTIFY\\GOOD_WITCH\\");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now create the directory we are waiting on
 	r=TheFs.MkDir(path);
 	test_KErrNone(r);
 //	Make sure the notification has now been received
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	Submit a request for a file which does not yet exist
 	path=_L("\\F32-TST\\NOTIFY\\GOOD_WITCH\\Red-Shoes.red");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 //	Now create the file we are waiting on
 	r=file.Replace(TheFs,path,EFileStream);
 	test_KErrNone(r);
 	file.Close();
 //	Make sure the notification has now been received
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 //	Submit another notification request and delete the file
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(path);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	path=_L("\\F32-TST\\NOTIFY\\GOOD_WITCH\\");
 	TheFs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(path);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	// test passing in an empty string
 	TheFs.NotifyChange(ENotifyEntry,reqStat,_L(""));
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrArgument);
+	test_Value(reqStat.Int(), reqStat==KErrArgument);
 	}
 
 static void Test9()
@@ -1296,12 +1294,12 @@
 	test_KErrNone(r);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 //	Make a change a the top level and check that only the session monitoring
 //	that level is notified
@@ -1310,13 +1308,13 @@
 	test_KErrNone(r);
 	file.Close();
 	User::WaitForRequest(reqStat1);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat6.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NewFile.txt"));
 	test_KErrNone(r);
@@ -1324,8 +1322,8 @@
 //	Renew the notify request at the top level and make a change one step lower
 	fs1.NotifyChange(ENotifyEntry,reqStat1,path1);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
-	test(reqStat1==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 	test.Next(_L("Test clients monitoring levels 1 and 2 are notified"));
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileStream);
@@ -1334,13 +1332,13 @@
 
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat6.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\NewFile.txt"));
 	test_KErrNone(r);
@@ -1350,9 +1348,9 @@
 	fs1.NotifyChange(ENotifyEntry,reqStat1,path1);
 	fs2.NotifyChange(ENotifyEntry,reqStat2,path2);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 	test.Next(_L("Test clients monitoring levels 1,2 and 3 are notified"));
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\ANIMAL\\NewFile.txt"),EFileStream);
@@ -1362,13 +1360,13 @@
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat6.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\ANIMAL\\NewFile.txt"));
 	test_KErrNone(r);
@@ -1379,10 +1377,10 @@
 	fs2.NotifyChange(ENotifyEntry,reqStat2,path2);
 	fs3.NotifyChange(ENotifyEntry,reqStat3,path3);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat6==KRequestPending);
 
 	test.Next(_L("Test clients monitoring levels 1 - 4 are notified"));
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\ANIMAL\\cat.txt"));
@@ -1391,13 +1389,13 @@
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
 	User::WaitForRequest(reqStat4);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KErrNone);
-	test(reqStat5==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_KErrNone(reqStat4.Int());
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat6.Int());
 
 //	Renew the notify request at the top, second and third levels and on the file deleted above
 //	which will be successful, but will not complete (for obvious reasons)
@@ -1408,11 +1406,11 @@
 	fs3.NotifyChange(ENotifyEntry,reqStat3,path3);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
 	fs4.NotifyChange(ENotifyEntry,reqStat4,path4);
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 	test.Next(_L("Test clients monitoring levels 1 - 3 and 5 are notified"));
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\ANIMAL\\dog.txt"));
@@ -1423,16 +1421,16 @@
 //	Don't wait for reqStat4
 	User::WaitForRequest(reqStat5);
 	User::WaitForRequest(reqStat6);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	File does not exist
-	test(reqStat5==KErrNone);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	File does not exist
+	test_KErrNone(reqStat5.Int());
+	test_KErrNone(reqStat6.Int());
 
 	fs4.NotifyChangeCancel(reqStat4);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 //	Renew the notify request at the top, second and third levels and attempt to renew
 //	the request on the files deleted above (which will fail).
 
@@ -1443,25 +1441,25 @@
 	fs4.NotifyChange(ENotifyEntry,reqStat4,path4);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
 	fs5.NotifyChange(ENotifyEntry,reqStat5,path5);
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\ANIMAL\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrNone);
+	test_KErrNone(reqStat6.Int());
 
 //	Renew the notify request at the top and second levels on the third level
 //	which was removed - it'll succeed but won't complete.
@@ -1473,12 +1471,12 @@
 	fs3.NotifyChange(ENotifyEntry,reqStat3,path3);
 	fs6.NotifyChange(ENotifyEntry,reqStat6,path6);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 
 	fs1.NotifyChangeCancel();
 	fs2.NotifyChangeCancel();
@@ -1525,25 +1523,25 @@
 	fs1.NotifyChange(ENotifyAll,status3,path);
 	fs1.NotifyChange(ENotifyAll,status4,path);
 	fs1.NotifyChange(ENotifyAll,status5,path);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KRequestPending);
 
 	test.Next(_L("RFs::NotifyCancel()"));
 //	Test that one call to RFs::NotifyCancel() cancels all outstanding requests
 	fs1.NotifyChangeCancel();
 	User::WaitForRequest(status1);
-	test(status1==KErrCancel);
+	test_Value(status1.Int(), status1==KErrCancel);
 	User::WaitForRequest(status2);
-	test(status2==KErrCancel);
+	test_Value(status2.Int(), status2==KErrCancel);
 	User::WaitForRequest(status3);
-	test(status3==KErrCancel);
+	test_Value(status3.Int(), status3==KErrCancel);
 	User::WaitForRequest(status4);
-	test(status4==KErrCancel);
+	test_Value(status4.Int(), status4==KErrCancel);
 	User::WaitForRequest(status5);
-	test(status5==KErrCancel);
+	test_Value(status5.Int(), status5==KErrCancel);
 //	Call the cancel function again to check no further action
 	fs1.NotifyChangeCancel();
 
@@ -1554,62 +1552,62 @@
 	fs1.NotifyChange(ENotifyAll,status3,path);
 	fs1.NotifyChange(ENotifyAll,status4,path);
 	fs1.NotifyChange(ENotifyAll,status5,path);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KRequestPending);
 
 //	Cancel the outstanding request with status5
 	test.Next(_L("RFs::NotifyCancel()"));
 	fs1.NotifyChangeCancel(status5);
 	User::WaitForRequest(status5);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KErrCancel);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KErrCancel);
 
 	r=TheFs.MkDir(_L("\\F32-TST\\TROPICANA\\"));
 	test_KErrNone(r);
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
 
 	fs1.NotifyChangeCancel(status2);
 	User::WaitForRequest(status2);
 
-	test(status1==KRequestPending);
-	test(status2==KErrCancel);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KErrCancel);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
 
 	r=TheFs.RmDir(_L("\\F32-TST\\TROPICANA\\"));
 	test_KErrNone(r);
-	test(status1==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
 
 	fs1.NotifyChangeCancel(status4);
 	User::WaitForRequest(status4);
-	test(status1==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KErrCancel);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KErrCancel);
 
 	fs1.NotifyChangeCancel(status4);	//	Test no side effects on trying to cancel a request
-	test(status4==KErrCancel);			//	that has already been cancelled
+	test_Value(status4.Int(), status4==KErrCancel);			//	that has already been cancelled
 
 	fs1.NotifyChangeCancel(status1);
 	User::WaitForRequest(status1);
-	test(status1==KErrCancel);
-	test(status3==KRequestPending);
+	test_Value(status1.Int(), status1==KErrCancel);
+	test_Value(status3.Int(), status3==KRequestPending);
 	fs1.NotifyChangeCancel(status1);	//	Test no side effects on trying to cancel a request
-	test(status1==KErrCancel);			//	that has already been cancelled
+	test_Value(status1.Int(), status1==KErrCancel);			//	that has already been cancelled
 
 	fs1.NotifyChangeCancel(status3);
 	User::WaitForRequest(status3);
-	test(status3==KErrCancel);
+	test_Value(status3.Int(), status3==KErrCancel);
 
 	fs1.Close();
 	}
@@ -1693,9 +1691,9 @@
 	test_KErrNone(r);
 	fs3.NotifyChange(ENotifyEntry,reqStat3,path);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -1705,18 +1703,18 @@
 	thread1.Resume();
 	gSleepThread.Wait();
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\kangaroo.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat1==KErrNone);	//	All three notifications occur because they
-	test(reqStat2==KErrNone);	//	are all monitoring the top level directory
-	test(reqStat3==KErrNone);	//	Later, we'll test monitoring individual files...
+	test_KErrNone(reqStat1.Int());	//	All three notifications occur because they
+	test_KErrNone(reqStat2.Int());	//	are all monitoring the top level directory
+	test_KErrNone(reqStat3.Int());	//	Later, we'll test monitoring individual files...
 
 	gSleepThread.Close();
 	thread1.Close();
@@ -1730,9 +1728,9 @@
 	fs2.NotifyChange(ENotifyAll,reqStat2,path);
 	fs3.NotifyChange(ENotifyAll,reqStat3,path);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -1745,9 +1743,9 @@
 	User::WaitForRequest(reqStat1);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat1.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 
 	gSleepThread.Close();
 	thread2.Close();
@@ -1764,9 +1762,9 @@
 	fs2.NotifyChange(ENotifyEntry,reqStat2,path2);
 	fs3.NotifyChange(ENotifyAll,reqStat3,path3);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -1777,15 +1775,15 @@
 	gSleepThread.Wait();
 
 	User::WaitForRequest(reqStat1);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_KErrNone(reqStat1.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring with ENotifyEntry
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat3.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\koala.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrNone);
+	test_KErrNone(reqStat2.Int());
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\kangaroo.txt"));
 	test_KErrNone(r);
@@ -1826,40 +1824,40 @@
 	TRequestStatus reqStat(KRequestPending);
 	TRequestStatus thrdStat(KRequestPending);
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	RThread thread;
 	r=thread.Create(_L("MyThread7"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest8);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	thread.Close();
 //	Test notification does not occur if a change is made above the file
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=thread.Create(_L("MyThread8"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest1);
 	test_KErrNone(r);
 	thread.Logon(thrdStat);
 	thread.Resume();
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	User::After(500000);
 	thread.Close();
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\NEWFILE.TXT"));
 	test_KErrNone(r);
 
 //	Test notification does not occur if a change is made to another file
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Lion.log"),EFileStream);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.Close();
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Lion.log"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 
 //	Test notification occurs when a change is made to the file
@@ -1867,7 +1865,7 @@
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\WickedWitch.Msg"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	fs.Close();
 	}
@@ -1893,178 +1891,178 @@
 	RFile file;
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Write(0,_L8("Pay no attention to the man behind the curtain"));
 	test_KErrNone(r);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Read() a file within the monitored directory - no notification for reads
 	path=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\");
 	TBuf8<100> temp;
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Read(0,temp,100);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	RFile::SetAtt() of a file within the monitored directory
 	test.Next(_L("RFile::SetAtt()"));
 	r=file.SetAtt(KEntryAttSystem,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	RFile::SetSize() of a file within the monitored directory
 	test.Next(_L("RFile::SetSize()"));
 	r=file.SetSize(256);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFile::Temp() to create a temp file within the monitored directory
 	test.Next(_L("RFile::Temp()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TFileName fileName;
 	r=file.Temp(TheFs,path,fileName,EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFile::SetModified() to change modification time of a file within monitored dir
 	test.Next(_L("RFile::SetModified()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TTime now;
 	now.HomeTime();
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetModified(now);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetEntry() to change a directory entry within the monitored directory
 	test.Next(_L("RFs::SetEntry()"));
 	TEntry entry;
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	r=TheFs.Entry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),entry);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=TheFs.SetEntry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),now,KEntryAttHidden,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Set() to change file's modification time and attributes
 	test.Next(_L("RFile::Set()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=file.Set(now,KEntryAttNormal,KEntryAttHidden);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetDriveName()
 	test.Next(_L("RFs::SetDriveName()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVETEST"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("TEST"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	fs.NotifyChange(ENotifyDisk,reqStat,path);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVE"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 
 //	RFs::MkDir()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	test.Next(_L("RFs::MkDir()"));
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::RmDir()
 	test.Next(_L("RFs::RmDir()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Create()
 	test.Next(_L("RFile::Create()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Replace()
 	test.Next(_L("RFile::Replace()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetVolumeLabel() - should only be notification when monitoring relevant TNotifyTypes
 	test.Next(_L("RFs::SetVolumeLabel"));
@@ -2076,24 +2074,24 @@
 
 	r=TheFs.Volume(volInfo,driveNum);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	currentVolName=volInfo.iName;
 
 	r=TheFs.SetVolumeLabel(_L("VOL"),driveNum);
 	if (r==KErrNone)
 		{
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==_L("VOL"));
 	//	Test notification occurs under ENotifyDisk
 		fs.NotifyChange(ENotifyDisk,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(_L("ABCDEFGHIJK"),driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2103,7 +2101,7 @@
 		fs.NotifyChange(ENotifyAttributes,reqStat,path);
 		r=TheFs.SetVolumeLabel(_L("TROPICANA"),driveNum);
 		test_KErrNone(r);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2111,14 +2109,14 @@
 
 		fs.NotifyChangeCancel(reqStat);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrCancel);
+		test_Value(reqStat.Int(), reqStat==KErrCancel);
 	//	Test notification occurs under ENotifyEntry
 		fs.NotifyChange(ENotifyEntry,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(currentVolName,driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==currentVolName);
@@ -2136,19 +2134,17 @@
 
 	test.Next(_L("RFs::Rename()"));
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Toto.doc"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Toto.doc"),_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"));
 	test_KErrNone(r);
 
-#if defined(__WINS__)
-	if(gSessionPath[0]=='Y'||gSessionPath[0]=='X')
-#endif
-		{
+	if(!Is_SimulatedSystemDrive(TheFs,driveNum))
+		{// Skip emulator/PlatSim drive C:
 		test.Next(_L("RFs::Rename() with max path length"));
 		TFileName longName=_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\");
 		while(longName.Length()<(KMaxFileName-2))
@@ -2156,11 +2152,11 @@
 		r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),longName);
 		test_KErrNone(r);
 		fs.NotifyChange(ENotifyEntry,reqStat,longName);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.Rename(longName,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"));
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		}
 
 	fs.Close();
@@ -2189,47 +2185,47 @@
 	RFile file;
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Write(0,_L8("Pay no attention to the man behind the curtain"));
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Read() a file within the monitored directory - no notification for reads
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	TBuf8<100> temp;
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Read(0,temp,100);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	RFile::SetAtt() of a file within the monitored directory
 	test.Next(_L("RFile::SetAtt()"));
 	r=file.SetAtt(KEntryAttNormal,KEntryAttHidden);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::SetSize() of a file within the monitored directory
 	test.Next(_L("RFile::SetSize()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.SetSize(256);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFile::Temp() to create a temp file in the subtree
 	test.Next(_L("RFile::Temp()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	TFileName fileName;
 	r=file.Temp(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\"),fileName,EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFile::SetModified() to change modification time of a file within monitored dir
@@ -2239,117 +2235,117 @@
 	now.HomeTime();
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetModified(now);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::Entry() to change a directory entry within the monitored directory
 	test.Next(_L("RFs::Entry()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	TEntry entry;
 	r=TheFs.Entry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),entry);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=TheFs.SetEntry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),now,KEntryAttHidden,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Set() to change file's modification time and attributes
 	test.Next(_L("RFile::Set()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=file.Set(now,KEntryAttNormal,KEntryAttHidden);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetDriveName()
 	test.Next(_L("RFs::SetDriveName()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVETEST"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("TEST"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	User::After(KNotifyChangeAfter);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	fs.NotifyChange(ENotifyDisk,reqStat,path);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVE"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 //	RFs::MkDir()
 	test.Next(_L("RFs::MkDir()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::RmDir()
 	test.Next(_L("RFs::RmDir()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Create()
 	test.Next(_L("RFile::Create()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Replace()
 	test.Next(_L("RFile::Replace()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetVolumeLabel() - should be notification under relevant TNotifyType monitoring
 //	The operation is non-path specific so all outstanding interested requests are notified
@@ -2362,24 +2358,24 @@
 	TFileName currentVolName;
 	r=TheFs.Volume(volInfo,driveNum);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	currentVolName=volInfo.iName;
 
 	r=TheFs.SetVolumeLabel(_L("VOL"),driveNum);
 	if (r==KErrNone)
 		{
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==_L("VOL"));
 	//	Test notification occurs under ENotifyDisk
 		fs.NotifyChange(ENotifyDisk,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(_L("ABCDEFGHIJK"),driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2389,7 +2385,7 @@
 		fs.NotifyChange(ENotifyAttributes,reqStat,path);
 		r=TheFs.SetVolumeLabel(_L("TROPICANA"),driveNum);
 		test_KErrNone(r);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2397,14 +2393,14 @@
 
 		fs.NotifyChangeCancel(reqStat);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrCancel);
+		test_Value(reqStat.Int(), reqStat==KErrCancel);
 	//	Test notification occurs under ENotifyEntry
 		fs.NotifyChange(ENotifyEntry,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(currentVolName,driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==currentVolName);
@@ -2421,18 +2417,18 @@
 
 //	Test that notification is made when change is made to monitored directory
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.Close();
 	}
 
@@ -2458,34 +2454,34 @@
 	RFile file;
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Write(0,_L8("Pay no attention to the man behind the curtain"));
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Read() a file within the monitored directory - no notification for reads
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	TBuf8<100> temp;
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Read(0,temp,100);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 //	RFile::SetAtt() of a file within the monitored directory
 	r=file.SetAtt(KEntryAttNormal,KEntryAttHidden);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::SetSize() of a file within the monitored directory
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.SetSize(256);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 
@@ -2495,108 +2491,108 @@
 	now.HomeTime();
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetModified(now);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::Entry() to change a directory entry within the monitored directory
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	TEntry entry;
 	r=TheFs.Entry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),entry);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=TheFs.SetEntry(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),now,KEntryAttHidden,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Set() to change file's modification time and attributes
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=file.Set(now,KEntryAttNormal,KEntryAttHidden);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetDriveName() - should be no notification ever with extended notification
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVETEST"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("TEST"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
 	fs.NotifyChange(ENotifyDisk,reqStat,path);
 	User::After(KNotifyChangeAfter);
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVE"));
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 
 
 //	RFs::MkDir()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::RmDir()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Create()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFile::Replace()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	file.Close();
 
 //	RFs::Delete()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	RFs::SetVolumeLabel()
 //	Not path specific, so all outstanding requests of correct TNotifyType are notified
@@ -2606,24 +2602,24 @@
 	TFileName currentVolName;
 	r=TheFs.Volume(volInfo,driveNum);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	currentVolName=volInfo.iName;
 
 	r=TheFs.SetVolumeLabel(_L("VOL"),driveNum);
 	if (r==KErrNone)
 		{
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==_L("VOL"));
 	//	Test notification occurs under ENotifyDisk
 		fs.NotifyChange(ENotifyDisk,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(_L("ABCDEFGHIJK"),driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2633,7 +2629,7 @@
 		fs.NotifyChange(ENotifyAttributes,reqStat,path);
 		r=TheFs.SetVolumeLabel(_L("TROPICANA"),driveNum);
 		test_KErrNone(r);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 
@@ -2641,14 +2637,14 @@
 
 		fs.NotifyChangeCancel(reqStat);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrCancel);
+		test_Value(reqStat.Int(), reqStat==KErrCancel);
 	//	Test notification occurs under ENotifyEntry
 		fs.NotifyChange(ENotifyEntry,reqStat,path);
-		test(reqStat==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
 		r=TheFs.SetVolumeLabel(currentVolName,driveNum);
 		test_KErrNone(r);
 		User::WaitForRequest(reqStat);
-		test(reqStat==KErrNone);
+		test_KErrNone(reqStat.Int());
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
 		test(volInfo.iName==currentVolName);
@@ -2663,26 +2659,26 @@
 
 //	RFs::Rename()
 	fs.NotifyChange(ENotifyEntry,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Dorothy.doc"),_L("\\F32-TST\\NOTIFY\\MUNCHKINS\\Toto.doc"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 //	Test that notification is made when change is made to monitored directory
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 	fs.Close();
 	}
 
@@ -2767,59 +2763,59 @@
 	thread1.Resume();
 	gSleepThread.Wait();
 
-	test(status1==KRequestPending);
-	test(status2==KRequestPending);
-	test(status3==KRequestPending);
-	test(status4==KRequestPending);
-	test(status5==KRequestPending);
-	test(status6==KRequestPending);
-
-	test(statusExtended1==KRequestPending);
-	test(statusExtended2==KRequestPending);
-	test(statusExtended3==KRequestPending);
-	test(statusExtended4==KRequestPending);
-	test(statusExtended5==KRequestPending);
-	test(statusExtended6==KRequestPending);
-
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(status1.Int(), status1==KRequestPending);
+	test_Value(status2.Int(), status2==KRequestPending);
+	test_Value(status3.Int(), status3==KRequestPending);
+	test_Value(status4.Int(), status4==KRequestPending);
+	test_Value(status5.Int(), status5==KRequestPending);
+	test_Value(status6.Int(), status6==KRequestPending);
+
+	test_Value(statusExtended1.Int(), statusExtended1==KRequestPending);
+	test_Value(statusExtended2.Int(), statusExtended2==KRequestPending);
+	test_Value(statusExtended3.Int(), statusExtended3==KRequestPending);
+	test_Value(statusExtended4.Int(), statusExtended4==KRequestPending);
+	test_Value(statusExtended5.Int(), statusExtended5==KRequestPending);
+	test_Value(statusExtended6.Int(), statusExtended6==KRequestPending);
+
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\kangaroo.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat1);
-	test(reqStat1==KErrNone);
+	test_KErrNone(reqStat1.Int());
 	User::WaitForRequest(status1);
-	test(status1==KErrNone);
+	test_KErrNone(status1.Int());
 	User::WaitForRequest(status2);
-	test(status2==KErrNone);
+	test_KErrNone(status2.Int());
 	User::WaitForRequest(status3);
-	test(status3==KErrNone);
+	test_KErrNone(status3.Int());
 	User::WaitForRequest(status4);
-	test(status4==KErrNone);
+	test_KErrNone(status4.Int());
 	User::WaitForRequest(status5);
-	test(status5==KErrNone);
+	test_KErrNone(status5.Int());
 	User::WaitForRequest(status6);
-	test(status6==KErrNone);
+	test_KErrNone(status6.Int());
 
 	User::WaitForRequest(statusExtended1);
-	test(statusExtended1==KErrNone);
+	test_KErrNone(statusExtended1.Int());
 	User::WaitForRequest(statusExtended2);
-	test(statusExtended2==KErrNone);
+	test_KErrNone(statusExtended2.Int());
 	User::WaitForRequest(statusExtended3);
-	test(statusExtended3==KErrNone);
+	test_KErrNone(statusExtended3.Int());
 	User::WaitForRequest(statusExtended4);
-	test(statusExtended4==KErrNone);
+	test_KErrNone(statusExtended4.Int());
 	User::WaitForRequest(statusExtended5);
-	test(statusExtended5==KErrNone);
+	test_KErrNone(statusExtended5.Int());
 	User::WaitForRequest(statusExtended6);
-	test(statusExtended6==KErrNone);
+	test_KErrNone(statusExtended6.Int());
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();	//	Cancels both remaining notification requests
 
 	User::WaitForRequest(reqStat3);
@@ -2837,10 +2833,10 @@
 	fs.NotifyChange(ENotifyEntry,reqStat2,path2);
 	fs.NotifyChange(ENotifyAll,reqStat3,path3);
 	fs.NotifyChange(ENotifyEntry,reqStat4,path4);
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -2851,11 +2847,11 @@
 	gSleepThread.Wait();
 
 	User::WaitForRequest(reqStat1);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KRequestPending);
+	test_KErrNone(reqStat1.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	gSleepThread.Close();
 	thread2.Close();
@@ -2863,10 +2859,10 @@
 	fs.NotifyChange(ENotifyAll,reqStat1,path1);
 	fs.NotifyChange(ENotifyAll,reqStat3,path3);
 
-	test(reqStat1==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat1.Int(), reqStat1==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=gSleepThread.CreateLocal(0);
 	test_KErrNone(r);
@@ -2877,11 +2873,11 @@
 	gSleepThread.Wait();
 
 	User::WaitForRequest(reqStat1);
-	test(reqStat1==KErrNone);
-	test(reqStat2==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_KErrNone(reqStat1.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring with ENotifyEntry
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Monitoring with ENotifyEntry
 
 	RFs fs2;
 	r=fs2.Connect();
@@ -2891,27 +2887,27 @@
 
 	TRequestStatus reqStat(KRequestPending);
 	fs2.NotifyChange(ENotifyEntry,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\kangaroo.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
+	test_KErrNone(reqStat.Int());
 
 	fs2.NotifyChange(ENotifyAll,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\koala.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\dingo.txt"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat4.Int());
 
 	gSleepThread.Close();
 	thread3.Close();
@@ -2958,40 +2954,40 @@
 	fs.NotifyChange(ENotifyDisk,reqStat7,path);
 
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument); //	Cannot monitor a file with ENotifyDir
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument); //	Cannot monitor a file with ENotifyDir
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
 	fs.NotifyChange(ENotifyEntry,reqStat4,path);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Write(0,_L8("Pay no attention to the man behind the curtain"));
 	file.Close();
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	Monitoring with ENotifyEntry
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
-	test(reqStat7==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+	test_Value(reqStat7.Int(), reqStat7==KRequestPending);
 	fs.NotifyChangeCancel();			//	Cancels all outstanding notification requests
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 	User::WaitForRequest(reqStat5);
-	test(reqStat5==KErrCancel);
+	test_Value(reqStat5.Int(), reqStat5==KErrCancel);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrCancel);
+	test_Value(reqStat6.Int(), reqStat6==KErrCancel);
 	User::WaitForRequest(reqStat7);
-	test(reqStat7==KErrCancel);
+	test_Value(reqStat7.Int(), reqStat7==KErrCancel);
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileWrite);
 	test_KErrNone(r);
@@ -3005,57 +3001,57 @@
 	fs.NotifyChange(ENotifyWrite,reqStat6,path);
 	fs.NotifyChange(ENotifyDisk,reqStat7,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	User::WaitForRequest(reqStat5);
-	test(reqStat5==KErrArgument);
-	test(reqStat6==KRequestPending);
-	test(reqStat7==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KErrArgument);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+	test_Value(reqStat7.Int(), reqStat7==KRequestPending);
 
 	test.Next(_L("RFile::SetAtt()"));
 	r=file.SetAtt(KEntryAttSystem,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
-	test(reqStat3==KRequestPending);	//	Monitoring with ENotifyEntry
-	test(reqStat4==KErrNone);				//	Monitoring a file - can't use ENotifyDir
-	test(reqStat6==KRequestPending);
-	test(reqStat7==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_KErrNone(reqStat4.Int());				//	Monitoring a file - can't use ENotifyDir
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+	test_Value(reqStat7.Int(), reqStat7==KRequestPending);
 
 	fs.NotifyChange(ENotifyWrite,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 	r=file.SetAtt(KEntryAttNormal,KEntryAttSystem);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);		//	Monitoring with ENotifyWrite
+	test_Value(reqStat.Int(), reqStat==KRequestPending);		//	Monitoring with ENotifyWrite
 	fs.NotifyChangeCancel();	//	Cancel outstanding notification request
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 	User::WaitForRequest(reqStat6);
-	test(reqStat6==KErrCancel);
+	test_Value(reqStat6.Int(), reqStat6==KErrCancel);
 	User::WaitForRequest(reqStat7);
-	test(reqStat7==KErrCancel);
+	test_Value(reqStat7.Int(), reqStat7==KErrCancel);
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	fs.NotifyChange(ENotifyFile,reqStat2,path);
 	fs.NotifyChange(ENotifyEntry,reqStat3,path);
 	fs.NotifyChange(ENotifyAttributes,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 //	RFile::SetSize() of a file within the monitored directory
 	test.Next(_L("RFile::SetSize()"));
@@ -3063,30 +3059,30 @@
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
-	test(reqStat3==KRequestPending);	//	Monitoring with ENotifyEntry
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring with ENotifyFile
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring with ENotifyEntry
+	test_KErrNone(reqStat4.Int());
 
 	fs.NotifyChange(ENotifyWrite,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 	r=file.SetSize(200);
 	test_KErrNone(r);
 	User::After(1000000);
-	test(reqStat==KRequestPending);		//	Monitoring with ENotifyWrite
+	test_Value(reqStat.Int(), reqStat==KRequestPending);		//	Monitoring with ENotifyWrite
 
 	file.Close();
 	fs.NotifyChangeCancel();			//	Cancels all outstanding notification requests
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 //	RFile::Temp() to create a temp file within the monitored directory
 	test.Next(_L("RFile::Temp()"));
@@ -3097,47 +3093,47 @@
 	fs.NotifyChange(ENotifyEntry,reqStat3,path);
 	fs.NotifyChange(ENotifyAttributes,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	TFileName fileName;
 	r=file.Temp(TheFs,path,fileName,EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);	//	Monitoring ENotifyEntry
-	test(reqStat4==KRequestPending);	//	Monitoring ENotifyAttributes
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring ENotifyEntry
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Monitoring ENotifyAttributes
 	file.Close();
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 	fs.NotifyChange(ENotifyFile,reqStat,path);
 	fs.NotifyChange(ENotifyDisk,reqStat2,path);
 	fs.NotifyChange(ENotifyWrite,reqStat3,path);
 	r=file.Temp(TheFs,path,fileName,EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);		//	Monitoring ENotifyFile
-	test(reqStat2==KRequestPending);	//	Monitoring ENotifyDisk
-	test(reqStat3==KRequestPending);	//	Monitoring ENotifyWrite
+	test_Value(reqStat.Int(), reqStat==KRequestPending);	//	Monitoring ENotifyFile
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);	//	Monitoring ENotifyDisk
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring ENotifyWrite
 	file.Close();
 
 	fs.NotifyChangeCancel();	//	Cancels all outstanding notification requests
 
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 //	RFile::SetModified() to change modification time of a file within monitored dir
 	test.Next(_L("RFile::SetModified()"));
@@ -3147,30 +3143,30 @@
 	fs.NotifyChange(ENotifyAttributes,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	TTime now;
 	now.HomeTime();
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetModified(now);
 	file.Close();
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFs::SetEntry() to change a directory entry within the monitored directory
 	test.Next(_L("RFs::SetEntry()"));
@@ -3180,28 +3176,28 @@
 	fs.NotifyChange(ENotifyAttributes,reqStat3,path);
 	fs.NotifyChange(ENotifyDisk,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Entry(_L("\\F32-TST\\NOTIFY\\NewFile.txt"),entry);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=TheFs.SetEntry(_L("\\F32-TST\\NOTIFY\\NewFile.txt"),now,KEntryAttHidden,KEntryAttNormal);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFile::Set() to change file's modification time and attributes
 	test.Next(_L("RFile::Set()"));
@@ -3210,29 +3206,29 @@
 	fs.NotifyChange(ENotifyAttributes,reqStat3,path);
 	fs.NotifyChange(ENotifyWrite,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	now.HomeTime();
 	r=file.Set(now,KEntryAttNormal,KEntryAttHidden);
 	file.Close();
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFs::SetDriveName()
 
@@ -3242,27 +3238,27 @@
 	fs.NotifyChange(ENotifyDisk,reqStat3,path);
 	fs.NotifyChange(ENotifyAttributes,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	User::After(KNotifyChangeAfter);
 
 	r=TheFs.SetDriveName(KDefaultDrive,_L("DRIVETEST"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFs::MkDir()
 	test.Next(_L("RFs::MkDir()"));
@@ -3273,20 +3269,20 @@
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.MkDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 //	RFs::RmDir()
 	test.Next(_L("RFs::RmDir()"));
@@ -3294,24 +3290,24 @@
 	fs.NotifyChange(ENotifyDir,reqStat2,path);
 	fs.NotifyChange(ENotifyWrite,reqStat3,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=TheFs.RmDir(_L("\\F32-TST\\NOTIFY\\EMERALD_CITY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFile::Create()
 	test.Next(_L("RFile::Create()"));
@@ -3320,20 +3316,20 @@
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);	//	Monitoring ENotifyDir
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring ENotifyDir
+	test_KErrNone(reqStat4.Int());
 	file.Close();
 	fs.NotifyChangeCancel(reqStat3);
 	User::WaitForRequest(reqStat3);
@@ -3343,26 +3339,26 @@
 	fs.NotifyChange(ENotifyDisk,reqStat3,path);
 	fs.NotifyChange(ENotifyWrite,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\Bad_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	file.Close();
 	fs.NotifyChangeCancel();
 
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
@@ -3371,46 +3367,46 @@
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);	//	Monitoring ENotifyDir
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);	//	Monitoring ENotifyDir
+	test_KErrNone(reqStat4.Int());
 	fs.NotifyChangeCancel(reqStat3);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
 	fs.NotifyChange(ENotifyAttributes,reqStat3,path);
 	fs.NotifyChange(ENotifyAll,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\Bad_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_KErrNone(reqStat4.Int());
 	fs.NotifyChangeCancel(reqStat3);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 //	RFile::Replace()
 	test.Next(_L("RFile::Replace()"));
@@ -3419,28 +3415,28 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Replace(TheFs,_L("\\F32-TST\\NOTIFY\\Good_Witch.bat"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	file.Close();
 	fs.NotifyChangeCancel();
 
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
@@ -3450,21 +3446,21 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\Good_Witch.bat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KErrArgument);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 
 //	RFs::SetVolumeLabel()
 	test.Next(_L("RFs::SetVolumeLabel()"));
@@ -3477,20 +3473,20 @@
 	fs.NotifyChange(ENotifyAttributes,reqStat6,path);
 	fs.NotifyChange(ENotifyDisk,reqStat7,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
-	test(reqStat5==KRequestPending);
-	test(reqStat6==KRequestPending);
-	test(reqStat7==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+	test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+	test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+	test_Value(reqStat7.Int(), reqStat7==KRequestPending);
 
 	TInt driveNum=CurrentDrive();
 	TVolumeInfo volInfo;
 	TFileName currentVolName;
 	r=TheFs.Volume(volInfo,driveNum);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	currentVolName=volInfo.iName;
 
 	r=TheFs.SetVolumeLabel(_L("VOL"),driveNum);
@@ -3500,21 +3496,21 @@
 		User::WaitForRequest(reqStat2);
 		User::WaitForRequest(reqStat7);
 
-		test(reqStat==KErrNone);
-		test(reqStat2==KErrNone);
-		test(reqStat3==KRequestPending);
-		test(reqStat4==KRequestPending);
-		test(reqStat5==KRequestPending);
-		test(reqStat6==KRequestPending);
-		test(reqStat7==KErrNone);
+		test_KErrNone(reqStat.Int());
+		test_KErrNone(reqStat2.Int());
+		test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+		test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+		test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+		test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+		test_KErrNone(reqStat7.Int());
 
 		fs.NotifyChange(ENotifyAll,reqStat,path);
 		fs.NotifyChange(ENotifyEntry,reqStat2,path);
 		fs.NotifyChange(ENotifyDisk,reqStat7,path);
 
-		test(reqStat==KRequestPending);
-		test(reqStat2==KRequestPending);
-		test(reqStat7==KRequestPending);
+		test_Value(reqStat.Int(), reqStat==KRequestPending);
+		test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+		test_Value(reqStat7.Int(), reqStat7==KRequestPending);
 
 		r=TheFs.SetVolumeLabel(currentVolName,driveNum);
 		test_KErrNone(r);
@@ -3523,13 +3519,13 @@
 		User::WaitForRequest(reqStat2);
 		User::WaitForRequest(reqStat7);
 
-		test(reqStat==KErrNone);
-		test(reqStat2==KErrNone);
-		test(reqStat3==KRequestPending);
-		test(reqStat4==KRequestPending);
-		test(reqStat5==KRequestPending);
-		test(reqStat6==KRequestPending);
-		test(reqStat7==KErrNone);
+		test_KErrNone(reqStat.Int());
+		test_KErrNone(reqStat2.Int());
+		test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+		test_Value(reqStat4.Int(), reqStat4==KRequestPending);
+		test_Value(reqStat5.Int(), reqStat5==KRequestPending);
+		test_Value(reqStat6.Int(), reqStat6==KRequestPending);
+		test_KErrNone(reqStat7.Int());
 
 		r=TheFs.Volume(volInfo,driveNum);
 		test_KErrNone(r);
@@ -3538,13 +3534,13 @@
 		fs.NotifyChangeCancel();
 
 		User::WaitForRequest(reqStat3);
-		test(reqStat3==KErrCancel);
+		test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 		User::WaitForRequest(reqStat4);
-		test(reqStat4==KErrCancel);
+		test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 		User::WaitForRequest(reqStat5);
-		test(reqStat5==KErrCancel);
+		test_Value(reqStat5.Int(), reqStat5==KErrCancel);
 		User::WaitForRequest(reqStat6);
-		test(reqStat6==KErrCancel);
+		test_Value(reqStat6.Int(), reqStat6==KErrCancel);
 		}
 
 	else	//	RFs::SetVolumeLabel() doesn't work on subst drives
@@ -3571,24 +3567,24 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Rename(_L("\\F32-TST\\NOTIFY\\OldFile.abc"));
 	test_Value(r, r == KErrNone||r==KErrAlreadyExists);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	Monitoring ENotifyDir
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Monitoring ENotifyDir
 	file.Close();
 	fs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\OldFile.abc");
 
@@ -3599,21 +3595,21 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 
 	r=file.Rename(_L("\\F32-TST\\NOTIFY\\NewFile.xyz"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KErrArgument);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 	file.Close();
 
 //	RFs::Rename()
@@ -3624,27 +3620,27 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\NewFile.xyz"),_L("\\F32-TST\\NOTIFY\\NewerFile.cat"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	Changed a file not a directory entry
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Changed a file not a directory entry
 	fs.NotifyChangeCancel();
 
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\NewerFile.cat");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3652,20 +3648,20 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\NewerFile.cat"),_L("\\F32-TST\\NOTIFY\\Original.dog"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 
 	path=_L("\\F32-TST\\NOTIFY\\");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3673,10 +3669,10 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY\\"),_L("\\F32-TST\\NOTIFY_TEMP\\"));
 	test_KErrNone(r);
@@ -3684,11 +3680,11 @@
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);	//	Changed a directory entry but notified anyway despite
-	test(reqStat4==KErrNone);	//	requesting file notification only because the path we
-								//	were monitoring has changed
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());	//	Changed a directory entry but notified anyway despite
+	test_KErrNone(reqStat4.Int());	//	requesting file notification only because the path we
+									//	were monitoring has changed
 
 	path=_L("\\F32-TST\\NOTIFY_TEMP\\Original.dog");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3696,102 +3692,102 @@
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	fs.NotifyChange(ENotifyDir,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrArgument);
+	test_Value(reqStat4.Int(), reqStat4==KErrArgument);
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY_TEMP\\"),_L("\\F32-TST\\NOTIFY\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);			//	Modified a directory above the level at which we
-	test(reqStat2==KErrNone);			//	are monitoring for changes - we must be notified
-	test(reqStat3==KErrNone);			//	anyway because the path has changed
+	test_KErrNone(reqStat.Int());			//	Modified a directory above the level at which we
+	test_KErrNone(reqStat2.Int());			//	are monitoring for changes - we must be notified
+	test_KErrNone(reqStat3.Int());			//	anyway because the path has changed
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
-	test(reqStat2==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	fs.NotifyChangeCancel(reqStat2);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	fs.NotifyChangeCancel(reqStat3);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\Original.dog");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\Original.dog"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 
 	path=_L("\\F32-TST\\NOTIFY\\");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TST\\"),_L("\\F32-TEST\\"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);			//	Modified a directory above the level at which we
-	test(reqStat2==KErrNone);			//	are monitoring for changes but we receive notification
-	test(reqStat3==KErrNone);			//	because the notification path has been changed
+	test_KErrNone(reqStat.Int());			//	Modified a directory above the level at which we
+	test_KErrNone(reqStat2.Int());			//	are monitoring for changes but we receive notification
+	test_KErrNone(reqStat3.Int());			//	because the notification path has been changed
 
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	//	Notification request is submitted, despite the subject's disappearance
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
 	//	Notification request is submitted, despite the subject's disappearance
-	test(reqStat2==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
 	fs.NotifyChange(ENotifyFile,reqStat3,path);
 	//	Notification request is submitted, despite the subject's disappearance
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	fs.NotifyChangeCancel(reqStat);
 	User::WaitForRequest(reqStat);
-	test(reqStat==KErrCancel);
+	test_Value(reqStat.Int(), reqStat==KErrCancel);
 	fs.NotifyChangeCancel(reqStat2);
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 	fs.NotifyChangeCancel(reqStat3);
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 	path=_L("\\F32-TEST\\NOTIFY\\");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
 	fs.NotifyChange(ENotifyEntry,reqStat2,path);
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TEST\\NOTIFY\\"),_L("\\F32-TEST\\NOTIFY_CHANGED\\"));
 	test_KErrNone(r);
@@ -3800,9 +3796,9 @@
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
 
-	test(reqStat==KErrNone);			//	Rename the directory we were monitoring
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
+	test_KErrNone(reqStat.Int());			//	Rename the directory we were monitoring
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
 
 //	Tidy up the test directory before continuing (while testing notifications of renaming to the monitored directory)
 
@@ -3812,10 +3808,10 @@
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TEST\\"),_L("\\F32-TST\\"));
 	test_KErrNone(r);
@@ -3824,14 +3820,14 @@
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
 
-	test(reqStat==KErrNone);			//	Renaming to (under) the directory we were monitoring
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());			//	Renaming to (under) the directory we were monitoring
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	fs.NotifyChangeCancel(reqStat4);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 	path=_L("\\F32-TST\\NOTIFY\\");
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3839,10 +3835,10 @@
 	fs.NotifyChange(ENotifyDir,reqStat3,path);
 	fs.NotifyChange(ENotifyFile,reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Rename(_L("\\F32-TST\\NOTIFY_CHANGED\\"),_L("\\F32-TST\\NOTIFY\\"));
 	test_KErrNone(r);
@@ -3851,14 +3847,14 @@
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
 
-	test(reqStat==KErrNone);			//	Renaming to the directory we were monitoring
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());			//	Renaming to the directory we were monitoring
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	fs.NotifyChangeCancel(reqStat4);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	Test combinations of notify types
 	test.Next(_L("Test combinations of notify types"));
@@ -3869,24 +3865,24 @@
 	fs.NotifyChange((TNotifyType)(ENotifyDir|ENotifyFile),reqStat3,path);
 	fs.NotifyChange((TNotifyType)(ENotifyDisk|ENotifyAttributes),reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Create(TheFs,_L("\\F32-TST\\NOTIFY\\Munchkin.msg"),EFileRead|EFileWrite);
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);	//	Monitoring ENotifyAttributes|ENotifyDisk
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);	//	Monitoring ENotifyAttributes|ENotifyDisk
 	file.Close();
 	fs.NotifyChangeCancel(reqStat4);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 //	RFile::SetModified()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3894,28 +3890,28 @@
 	fs.NotifyChange((TNotifyType)(ENotifyDir|ENotifyFile),reqStat3,path);
 	fs.NotifyChange((TNotifyType)(ENotifyDisk|ENotifyAttributes),reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	TTime nowTime;
 	nowTime.HomeTime();
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\Munchkin.msg"),EFileRead|EFileWrite);
 	test_KErrNone(r);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	file.SetModified(now);
 	file.Close();
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_KErrNone(reqStat4.Int());
 	fs.NotifyChangeCancel();
 	User::WaitForRequest(reqStat3);
-	test(reqStat3==KErrCancel);
+	test_Value(reqStat3.Int(), reqStat3==KErrCancel);
 
 //	RFile::Write()
 	fs.NotifyChange(ENotifyAll,reqStat,path);
@@ -3923,10 +3919,10 @@
 	fs.NotifyChange((TNotifyType)(ENotifyFile|ENotifyWrite),reqStat3,path);
 	fs.NotifyChange((TNotifyType)(ENotifyDir|ENotifyWrite),reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=file.Open(TheFs,_L("\\F32-TST\\NOTIFY\\Munchkin.msg"),EFileRead|EFileWrite);
 	test_KErrNone(r);
@@ -3935,13 +3931,13 @@
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat3);
 	User::WaitForRequest(reqStat4);
-	test(reqStat==KErrNone);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KErrNone);
+	test_KErrNone(reqStat.Int());
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_KErrNone(reqStat3.Int());
+	test_KErrNone(reqStat4.Int());
 	fs.NotifyChangeCancel(reqStat2);	//	Cancels all outstanding notification requests
 	User::WaitForRequest(reqStat2);
-	test(reqStat2==KErrCancel);
+	test_Value(reqStat2.Int(), reqStat2==KErrCancel);
 
 //	RFs::Delete()
 	test.Next(_L("RFs::Delete()"));
@@ -3950,23 +3946,23 @@
 	fs.NotifyChange((TNotifyType)(ENotifyFile|ENotifyWrite),reqStat3,path);
 	fs.NotifyChange((TNotifyType)(ENotifyDir|ENotifyWrite),reqStat4,path);
 
-	test(reqStat==KRequestPending);
-	test(reqStat2==KRequestPending);
-	test(reqStat3==KRequestPending);
-	test(reqStat4==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
+	test_Value(reqStat2.Int(), reqStat2==KRequestPending);
+	test_Value(reqStat3.Int(), reqStat3==KRequestPending);
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 
 	r=TheFs.Delete(_L("\\F32-TST\\NOTIFY\\Munchkin.msg"));
 	test_KErrNone(r);
 	User::WaitForRequest(reqStat);
 	User::WaitForRequest(reqStat2);
 	User::WaitForRequest(reqStat3);
-	test(reqStat==KErrNone);
-	test(reqStat2==KErrNone);
-	test(reqStat3==KErrNone);
-	test(reqStat4==KRequestPending);
+	test_KErrNone(reqStat.Int());
+	test_KErrNone(reqStat2.Int());
+	test_KErrNone(reqStat3.Int());
+	test_Value(reqStat4.Int(), reqStat4==KRequestPending);
 	fs.NotifyChangeCancel(reqStat4);
 	User::WaitForRequest(reqStat4);
-	test(reqStat4==KErrCancel);
+	test_Value(reqStat4.Int(), reqStat4==KErrCancel);
 
 	fs.Close();
 	}
@@ -3998,12 +3994,12 @@
 
 	// ask the user to eject the media
 	TheFs.NotifyChange(ENotifyEntry,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	test.Printf(_L("Please eject media on drive %C...\n"), 'A' + driveNum);
 	User::WaitForRequest(reqStat);
 	test.Printf(_L("Done.\n"));
 	TInt reqInt=reqStat.Int();
-	test(reqInt==KErrNone);
+	test_KErrNone(reqInt);
 	User::WaitForRequest(reqStat);
 
 	// verify TDriveInfo.iType == EMediaNotPresent
@@ -4015,12 +4011,12 @@
 
 	// ask the user to re-insert the media
 	TheFs.NotifyChange(ENotifyEntry,reqStat);
-	test(reqStat==KRequestPending);
+	test_Value(reqStat.Int(), reqStat==KRequestPending);
 	test.Printf(_L("Please re-insert media...\n"));
 	User::WaitForRequest(reqStat);
 	test.Printf(_L("Done.\n"));
 	reqInt = reqStat.Int();
-	test(reqInt==KErrNone);
+	test_KErrNone(reqInt);
 	User::WaitForRequest(reqStat);
 
 	// verify TDriveInfo.iType == EMediaHardDisk
@@ -4063,8 +4059,8 @@
 	TBuf8<596> readBuf;
 	reader.Read(0, readBuf, 100, readStat1);
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrNone);
-	test(readBuf.Length()==0);
+	test_KErrNone(readStat1.Int());
+	test_Equal(0, readBuf.Length());
 	reader.Close();
 
 	test.Next(_L("Test asynchronous read fails in EFileShareExclusive mode"));
@@ -4079,19 +4075,19 @@
 	r=reader.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileShareAny);
 	test_KErrNone(r);
 	reader.Read(0, readBuf, 100, readStat1);
-	test(readStat1==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
 	reader.Close();
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrCancel);
+	test_Value(readStat1.Int(), readStat1==KErrCancel);
 
 	test.Next(_L("Test asynchronous read can be cancelled"));
 	r=reader.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileShareAny);
 	test_KErrNone(r);
 	reader.Read(0, readBuf, 100, readStat1);
-	test(readStat1==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
 	reader.ReadCancel(readStat1);
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrCancel);
+	test_Value(readStat1.Int(), readStat1==KErrCancel);
 	reader.Close();
 
 	// DEF105438: File server thread safety issues
@@ -4103,11 +4099,11 @@
 	RThread	thisThread;
 	thisThread.SetPriority(EPriorityRealTime);
 	reader.Read(0, readBuf, 100, readStat1);
-	test(readStat1==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
 	reader.ReadCancel(readStat1);
 	test.Printf(_L("readStat1 %d"), readStat1.Int());
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrCancel);
+	test_Value(readStat1.Int(), readStat1==KErrCancel);
 	reader.Close();
 	thisThread.SetPriority(EPriorityNormal);
 
@@ -4115,12 +4111,12 @@
 	r=reader.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileWrite|EFileShareAny);
 	test_KErrNone(r);
 	reader.Read(0, readBuf, 100, readStat1);
-	test(readStat1==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
 	r = reader.SetSize(100);
 	test_KErrNone(r);
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrNone);
-	test(readBuf.Length() == 100);
+	test_KErrNone(readStat1.Int());
+	test_Equal(100, readBuf.Length());
 	r=reader.SetSize(0);
 	test_KErrNone(r);
 	reader.Close();
@@ -4129,13 +4125,13 @@
 	r=reader.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileRead|EFileReadAsyncAll|EFileWrite|EFileShareAny);
 	test_KErrNone(r);
 	reader.Read(0, readBuf, 26, readStat1);
-	test(readStat1==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
 	RFile writer;
 	r=writer.Open(TheFs,_L("\\F32-TST\\NOTIFY\\NewFile.txt"),EFileWrite|EFileShareAny);
 	writer.Write(_L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrNone);
-	test(readBuf.Length() == 26);
+	test_KErrNone(readStat1.Int());
+	test_Equal(26, readBuf.Length());
 	reader.Close();
 	writer.Close();
 
@@ -4150,8 +4146,8 @@
 	TBuf8<596> readBuf2;
 	test.Printf(_L(">Read%d[%d]\n"), 1, KReadLen);
 	reader.Read(KReadLen, readBuf2, KReadLen, readStat2);
-	test(readStat1==KRequestPending);
-	test(readStat2==KRequestPending);
+	test_Value(readStat1.Int(), readStat1==KRequestPending);
+	test_Value(readStat2.Int(), readStat2==KRequestPending);
 
 	RThread thread;
 	r=thread.Create(_L("MyThread"),ThreadEntryPoint,KDefaultStackSize,KHeapSize,KHeapSize,(TAny*)ETest12);
@@ -4164,7 +4160,7 @@
 	TRequestStatus timerStat(KRequestPending);
 	timer.CreateLocal();
 	timer.After(timerStat, 30000000);	// 30 seconds timeout (the following async test should take 10 seconds)
-	test(timerStat==KRequestPending);
+	test_Value(timerStat.Int(), timerStat==KRequestPending);
 
 	#define ODDPASS  (pass&0x01)
 	#define REQSTAT  (ODDPASS ? readStat2 : readStat1)
@@ -4178,13 +4174,13 @@
 	FOREVER
 		{
         User::WaitForRequest(REQSTAT, timerStat);
-		test(REQSTAT==KErrNone);
-		test(timerStat==KRequestPending);
-		test(READBUF.Length() == COMPLEN);
+		test_KErrNone(REQSTAT.Int());
+		test_Value(timerStat.Int(), timerStat==KRequestPending);
+		test_Equal(COMPLEN, READBUF.Length());
 		test(READBUF.Right(KReadLen) == _L8("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
 		test.Printf(_L(">Read%d[%d]\n"), pass&0x01, READLEN);
 		reader.Read(READPOS, READBUF, READLEN, REQSTAT);
-		test(REQSTAT==KRequestPending);
+		test_Value(REQSTAT.Int(), REQSTAT==KRequestPending);
 		if(++pass==10)
 			break;
 		}
@@ -4194,12 +4190,12 @@
 	User::WaitForRequest(timerStat);
 	reader.Close();
 	User::WaitForRequest(readStat1);
-	test(readStat1==KErrCancel);
+	test_Value(readStat1.Int(), readStat1==KErrCancel);
 	User::WaitForRequest(readStat2);
-	test(readStat2==KErrCancel);
+	test_Value(readStat2.Int(), readStat2==KErrCancel);
 
 	User::WaitForRequest(thrdStat);
-	test(thrdStat==KErrNone);
+	test_KErrNone(thrdStat.Int());
 	}
 
 
@@ -4219,7 +4215,7 @@
 
     //-- set up notifier
     TheFs.NotifyChange(ENotifyAll, reqStatNotify1, KTestPath);
-    test(reqStatNotify1.Int() == KRequestPending);
+    test_Value(reqStatNotify1.Int(), reqStatNotify1 == KRequestPending);
 
     //-- create a file in the root dir
     RFile       file;
@@ -4233,7 +4229,7 @@
 
     //-- check that the notifier worked
     User::WaitForRequest(reqStatNotify1);
-    test(reqStatNotify1.Int() == KErrNone);
+    test_KErrNone(reqStatNotify1.Int());
 
 }
 
@@ -4324,7 +4320,7 @@
 
 //	Test RFs::NotifyChange() extended notification
 	TInt uid;
-	test(HAL::Get(HAL::EMachineUid,uid)==KErrNone);
+	test_KErrNone(HAL::Get(HAL::EMachineUid,uid));
 	if(uid!=HAL::EMachineUid_Cogent && uid!=HAL::EMachineUid_IQ80310 &&
 				uid != HAL::EMachineUid_Integrator && uid!=HAL::EMachineUid_X86PC)
 		MediaChangeExtendedNotification();
--- a/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbinterop2.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbperformance.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/package_definition.xml	Wed Jun 23 19:44:53 2010 +0300
@@ -141,7 +141,7 @@
       <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_metadata" name="Kernel and Hardware Services Public Documentation" class="doc" introduced="^3" purpose="development">
+      <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>
--- a/userlibandfileserver/fileserver/bmarm/efileu.def	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/bmarm/efileu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -241,4 +241,4 @@
 	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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/bwins/efileu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -242,4 +242,4 @@
 	?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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/bx86/efileu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -242,4 +242,5 @@
 	?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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/eabi/efileu.def	Wed Jun 23 19:44:53 2010 +0300
@@ -314,4 +314,5 @@
 	_ZNK11CFileSystem9DriveInfoER10TDriveInfoi @ 313 NONAME
 	_ZNK9RFsPlugin6VolumeER11TVolumeInfoi @ 314 NONAME
 	_ZNK7CFileCB16IsSequentialModeEv @ 315 NONAME
+	_ZN7CFileCB12DirectIOModeERK12RMessagePtr2 @ 316 NONAME
 
--- a/userlibandfileserver/fileserver/group/release.txt	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/group/release.txt	Wed Jun 23 19:44:53 2010 +0300
@@ -1,3 +1,48 @@
+Version 2.00.3046
+=================
+(Made by vfebvre 07/06/2010)
+
+1.	davegord
+	1.	ou1cimx1#414735 Occasional Loader crashes observed during T_WSD_TST_* tests
+		Crash caused by interrupt occurring during handling of SWI called from
+		SVC mode -- which is not supported. Fix is for Loader not to call RDebug
+		methods while executing in supervisor mode.
+
+
+Version 2.00.3045
+=================
+(Made by vfebvre 04/06/2010)
+
+1.	famustaf
+	1.	ou1cimx1#383105 Modify F32 Tests for Platsim's HVFS
+
+
+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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/inc/f32fsys.h	Wed Jun 23 19:44:53 2010 +0300
@@ -1632,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;
--- a/userlibandfileserver/fileserver/inc/f32ver.h	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/inc/f32ver.h	Wed Jun 23 19:44:53 2010 +0300
@@ -58,6 +58,6 @@
 
 @see TVersion
 */
-const TInt KF32BuildVersionNumber=3042;
+const TInt KF32BuildVersionNumber=3046;
 //
 #endif
--- a/userlibandfileserver/fileserver/sfat32/inc/sl_std.h	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/inc/sl_std.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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();
@@ -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);
--- a/userlibandfileserver/fileserver/sfat32/sl_disk.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_disk.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_disk.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_drv.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -117,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);
 
@@ -126,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;
 
@@ -200,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);
 
@@ -211,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;
 
@@ -542,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;
 }
@@ -558,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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_file.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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)
 		{
--- a/userlibandfileserver/fileserver/sfat32/sl_mnt.cpp	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_mnt.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/sl_mnt32.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_file.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_lepoc.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -287,9 +287,22 @@
 		}
 	}
 
-// A version that will work in user or supervisor mode
-void MyPrintf(const char* aFmt, ...)
+/**
+It would be nice to be able to print debug information from the various functions
+supervisor-mode functions below. Unfortunately, we can't call RDebug::Printf() or
+any of its relatives in supervisor mode, and of course we can't call the equivalent
+kernel functions even when we're already in supervisor mode, because the entry
+points aren't visible.
+
+So this function just wraps and guards the call to RDebug, so we won't call it
+in SVC mode. The outcome is that trace messages are only generated if using the
+flexible memory model, where the code doesn't actually run in SVC mode anyway.
+*/
+void svPrintf(const char* aFmt, ...)
 	{
+	if (gExecutesInSupervisorMode)
+		return;
+
 	VA_LIST list;
 	VA_START(list, aFmt);
 	TPtrC8 fmt((const TText8*)aFmt);
@@ -379,15 +392,15 @@
 	E32Image& exporter = *(E32Image*)aPtr;
 
 	// Dump everything potentially useful that we know about the exporter ...
-	__LDRTRACE(MyPrintf("RelocateExports: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
+	__LDRTRACE(svPrintf("RelocateExports: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
 						exporter.iUseCodePaging, exporter.iRomImageHeader, exporter.iHeader));
-	__LDRTRACE(MyPrintf("  iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
+	__LDRTRACE(svPrintf("  iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
 						exporter.iCodeLoadAddress, exporter.iCodeRunAddress,
 						exporter.iCodeSize, exporter.iTextSize))
-	__LDRTRACE(MyPrintf("  iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
+	__LDRTRACE(svPrintf("  iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
 						exporter.iDataLoadAddress, exporter.iDataRunAddress,
 						exporter.iDataSize, exporter.iBssSize, exporter.iTotalDataSize));
-	__LDRTRACE(MyPrintf("  iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
+	__LDRTRACE(svPrintf("  iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
 						exporter.iCodeDelta, exporter.iDataDelta, exporter.iExportDirEntryDelta));
 
 	// It turns out that very little of the exporter info is useful! For
@@ -429,7 +442,7 @@
 			newValue = relocAddr;					// unknown - just leave it alone
 		*destExport++ = newValue;
 
-		__LDRTRACE(MyPrintf("RelocateExports: export %d %08x => %08x %c",
+		__LDRTRACE(svPrintf("RelocateExports: export %d %08x => %08x %c",
 							exporter.iExportDirCount-i, relocAddr, newValue,
 							(relocAddr >= codeStart && relocAddr < codeFinish) ? 'C' :
 							(relocAddr >= dataStart && relocAddr < dataFinish) ? 'D' : 'X'));
@@ -471,39 +484,39 @@
 	E32Image& exporter = *info.iExporter;
 
 #ifdef _DEBUG
-	__LDRTRACE(MyPrintf(">svFixupImportAddresses %d imports, code@%08x, fixup@%08x exporter@%08x",
+	__LDRTRACE(svPrintf(">svFixupImportAddresses %d imports, code@%08x, fixup@%08x exporter@%08x",
 						info.iNumImports, info.iCodeLoadAddress, info.iFixup64, info.iExporter));
 
 	// Dump everything potentially useful that we know about the exporter ...
-	__LDRTRACE(MyPrintf("%S: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
+	__LDRTRACE(svPrintf("%S: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
 						&exporter.iFileName, exporter.iUseCodePaging,
 						exporter.iRomImageHeader, exporter.iHeader));
-	__LDRTRACE(MyPrintf("iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
+	__LDRTRACE(svPrintf("iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
 						exporter.iCodeLoadAddress, exporter.iCodeRunAddress,
 						exporter.iCodeSize, exporter.iTextSize))
-	__LDRTRACE(MyPrintf("iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
+	__LDRTRACE(svPrintf("iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
 						exporter.iDataLoadAddress, exporter.iDataRunAddress,
 						exporter.iDataSize, exporter.iBssSize, exporter.iTotalDataSize));
-	__LDRTRACE(MyPrintf("iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
+	__LDRTRACE(svPrintf("iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
 						exporter.iCodeDelta, exporter.iDataDelta, exporter.iExportDirEntryDelta));
 
 	if (exporter.iRomImageHeader)
 		{
 		const TRomImageHeader& rh = *exporter.iRomImageHeader;
-		__LDRTRACE(MyPrintf("ROM: iCodeAddress %08x, iCodeSize %x, iTextSize %x",
+		__LDRTRACE(svPrintf("ROM: iCodeAddress %08x, iCodeSize %x, iTextSize %x",
 							rh.iCodeAddress, rh.iCodeSize, rh.iTextSize));
-		__LDRTRACE(MyPrintf("ROM: iDataAddress %08x, iDataSize %x, iBssSize %x",
+		__LDRTRACE(svPrintf("ROM: iDataAddress %08x, iDataSize %x, iBssSize %x",
 							rh.iDataAddress, rh.iDataSize, rh.iBssSize));
-		__LDRTRACE(MyPrintf("ROM: iDataBssLinearBase %08x, iTotalDataSize %x",
+		__LDRTRACE(svPrintf("ROM: iDataBssLinearBase %08x, iTotalDataSize %x",
 							rh.iDataBssLinearBase, rh.iTotalDataSize));
 		}
 
 	if (exporter.iHeader)
 		{
 		const E32ImageHeader& ih = *exporter.iHeader;
-		__LDRTRACE(MyPrintf("HEAD: iCodeBase %08x, iCodeSize %x, iTextSize %x",
+		__LDRTRACE(svPrintf("HEAD: iCodeBase %08x, iCodeSize %x, iTextSize %x",
 							ih.iCodeBase, ih.iCodeSize, ih.iTextSize));
-		__LDRTRACE(MyPrintf("HEAD: iDataBase %08x, iDataSize %x, iBssSize %x",
+		__LDRTRACE(svPrintf("HEAD: iDataBase %08x, iDataSize %x, iBssSize %x",
 							ih.iDataBase, ih.iDataSize, ih.iBssSize));
 		}
 #endif // _DEBUG
@@ -538,7 +551,7 @@
 			newValue = expAddr;
 			}
 
-		__LDRTRACE(MyPrintf("svFixupImportAddresses: import[%d]@%08x is export[%d] == %08x",
+		__LDRTRACE(svPrintf("svFixupImportAddresses: import[%d]@%08x is export[%d] == %08x",
 							iat - info.iIat, iat, ordinal, newValue));
 
 		// In non-paged code, we can simply replace the ordinals in the IAT with the
@@ -573,39 +586,39 @@
 	E32Image& exporter = *info.iExporter;
 
 #ifdef _DEBUG
-	__LDRTRACE(MyPrintf(">svElfDerivedFixupImportAddresses %d imports, code@%08x, fixup@%08x exporter@%08x",
+	__LDRTRACE(svPrintf(">svElfDerivedFixupImportAddresses %d imports, code@%08x, fixup@%08x exporter@%08x",
 						info.iNumImports, info.iCodeLoadAddress, info.iFixup64, info.iExporter));
 
 	// Dump everything potentially useful that we know about the exporter ...
-	__LDRTRACE(MyPrintf("%S: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
+	__LDRTRACE(svPrintf("%S: paged? %d, iRomImageHeader@%08x, iHeader@%08x",
 						&exporter.iFileName, exporter.iUseCodePaging,
 						exporter.iRomImageHeader, exporter.iHeader));
-	__LDRTRACE(MyPrintf("iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
+	__LDRTRACE(svPrintf("iCodeLoadAddress %08x, iCodeRunAddress %08x, iCodeSize %x iTextSize %x",
 						exporter.iCodeLoadAddress, exporter.iCodeRunAddress,
 						exporter.iCodeSize, exporter.iTextSize))
-	__LDRTRACE(MyPrintf("iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
+	__LDRTRACE(svPrintf("iDataLoadAddress %08x, iDataRunAddress %08x, iDataSize %x iBssSize %x iTotalDataSize %x",
 						exporter.iDataLoadAddress, exporter.iDataRunAddress,
 						exporter.iDataSize, exporter.iBssSize, exporter.iTotalDataSize));
-	__LDRTRACE(MyPrintf("iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
+	__LDRTRACE(svPrintf("iCodeDelta, %x iDataDelta %x, iExportDirEntryDelta %x",
 						exporter.iCodeDelta, exporter.iDataDelta, exporter.iExportDirEntryDelta));
 
 	if (exporter.iRomImageHeader)
 		{
 		const TRomImageHeader& rh = *exporter.iRomImageHeader;
-		__LDRTRACE(MyPrintf("ROM: iCodeAddress %08x, iCodeSize %x, iTextSize %x",
+		__LDRTRACE(svPrintf("ROM: iCodeAddress %08x, iCodeSize %x, iTextSize %x",
 							rh.iCodeAddress, rh.iCodeSize, rh.iTextSize));
-		__LDRTRACE(MyPrintf("ROM: iDataAddress %08x, iDataSize %x, iBssSize %x",
+		__LDRTRACE(svPrintf("ROM: iDataAddress %08x, iDataSize %x, iBssSize %x",
 							rh.iDataAddress, rh.iDataSize, rh.iBssSize));
-		__LDRTRACE(MyPrintf("ROM: iDataBssLinearBase %08x, iTotalDataSize %x",
+		__LDRTRACE(svPrintf("ROM: iDataBssLinearBase %08x, iTotalDataSize %x",
 							rh.iDataBssLinearBase, rh.iTotalDataSize));
 		}
 
 	if (exporter.iHeader)
 		{
 		const E32ImageHeader& ih = *exporter.iHeader;
-		__LDRTRACE(MyPrintf("HEAD: iCodeBase %08x, iCodeSize %x, iTextSize %x",
+		__LDRTRACE(svPrintf("HEAD: iCodeBase %08x, iCodeSize %x, iTextSize %x",
 							ih.iCodeBase, ih.iCodeSize, ih.iTextSize));
-		__LDRTRACE(MyPrintf("HEAD: iDataBase %08x, iDataSize %x, iBssSize %x",
+		__LDRTRACE(svPrintf("HEAD: iDataBase %08x, iDataSize %x, iBssSize %x",
 							ih.iDataBase, ih.iDataSize, ih.iBssSize));
 		}
 #endif // _DEBUG
@@ -700,7 +713,7 @@
 			newValue = expAddr + sectionDelta + adjustment;
 			}
 
-		__LDRTRACE(MyPrintf("svElfDerivedFixupImportAddresses: import[%d] (%08x:%08x) is export[%d] %08x+%08x => %08x",
+		__LDRTRACE(svPrintf("svElfDerivedFixupImportAddresses: import[%d] (%08x:%08x) is export[%d] %08x+%08x => %08x",
 							iol - info.iImportOffsetList, codePtr, importInfo, ordinal, expAddr, adjustment, newValue));
 
 		// In non-paged code, we can simply replace the ordinals in the IAT with the
@@ -3248,30 +3261,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 +3304,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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_plugin.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_plugin_ops.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_std.h	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_std.inl	Wed Jun 23 19:44:53 2010 +0300
@@ -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	Fri Jun 11 15:02:23 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_thread.cpp	Wed Jun 23 19:44:53 2010 +0300
@@ -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 */