Revision: 201023
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 15:02:23 +0300
changeset 152 657f875b013e
parent 139 95f71bcdcdb7
child 200 73ea206103e6
Revision: 201023 Kit: 2010123
baseapitest/basesvs/group/basesvs.mrp
brdbootldr/ubootldr/base_ubootldr.mrp
brdbootldr/ubootldr/inflate.c
bsptemplate/asspandvariant/base_template.mrp
bsptemplate/asspandvariant/template_assp/pa_usbc.cpp
bsptemplate/asspandvariant/template_variant/hal/config.hcf
build.config.xml
halservices/hal/base_hal.mrp
halservices/hal/inc/hal_data.h
halservices/hal/rom/hal.hby
halservices/hal/src/userhal.cpp
halservices/hal/tsrc/t_newhal.cpp
kernel/eka/base_e32.history.xml
kernel/eka/base_e32.mrp
kernel/eka/bld.inf
kernel/eka/bmarm/ekernsmp.def
kernel/eka/bmarm/ekernu.def
kernel/eka/bwins/ekernu.def
kernel/eka/bx86/ekernsmp.def
kernel/eka/bx86/ekernu.def
kernel/eka/bx86gcc/ekernsmp.def
kernel/eka/bx86gcc/ekernu.def
kernel/eka/drivers/adc/base_e32_drivers_adc.mrp
kernel/eka/drivers/bsp/base_e32_drivers_bsp.mrp
kernel/eka/drivers/camerasc/base_drivers_camerasc.mrp
kernel/eka/drivers/debug/group/base_e32_drivers_debug.mrp
kernel/eka/drivers/display/base_e32_drivers_display.mrp
kernel/eka/drivers/eabi/rm_debug_extu.def
kernel/eka/drivers/ecomm/base_e32_drivers_ecomm.mrp
kernel/eka/drivers/ethernet/base_e32_drivers_ethernet.mrp
kernel/eka/drivers/locmedia/base_e32_drivers_locmedia.mrp
kernel/eka/drivers/locmedia/locmedia.cpp
kernel/eka/drivers/media/base_e32_drivers_media.mrp
kernel/eka/drivers/medmmc/medmmc.cpp
kernel/eka/drivers/pbus/mmc/stack.cpp
kernel/eka/drivers/pbus/pccard/epoc/pccd_init.cpp
kernel/eka/drivers/pbus/pccard/socket.cpp
kernel/eka/drivers/pbus/spbus.cpp
kernel/eka/drivers/power/smppower/idlehelper.cia
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/soundsc/base_e32_drivers_sound.mrp
kernel/eka/drivers/trace/base_e32_drivers_trace.mrp
kernel/eka/drivers/usbc/base_e32_drivers_usbcli.mrp
kernel/eka/drivers/usbho/usbdescriptors/base_drivers_usbdescriptors.mrp
kernel/eka/drivers/usbho/usbdi_utils/base_drivers_usbdi_utils.mrp
kernel/eka/drivers/xyin/d_xyin.cpp
kernel/eka/eabi/ekernsmp.def
kernel/eka/eabi/ekernu.def
kernel/eka/euser/base_e32_euser.mrp
kernel/eka/ewsrv/base_e32_ewsrv.mrp
kernel/eka/include/d32comm.h
kernel/eka/include/d32public.h
kernel/eka/include/d32usbdi_errors.h
kernel/eka/include/drivers/dma_v1.h
kernel/eka/include/drivers/dma_v2.h
kernel/eka/include/drivers/resourcecontrol_clientsettings.h
kernel/eka/include/drivers/resourcecontrol_settings.h
kernel/eka/include/drivers/smppower/idlehelper.h
kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h
kernel/eka/include/drivers/xyin.h
kernel/eka/include/e32math.h
kernel/eka/include/e32ver.h
kernel/eka/include/kernel/kbma.h
kernel/eka/include/kernel/kern_priv.h
kernel/eka/include/kernel/kerncorestats.h
kernel/eka/include/memmodel/epoc/mmubase/mmubase.h
kernel/eka/include/memmodel/epoc/mmubase/ramalloc.h
kernel/eka/include/u32hal.h
kernel/eka/kernel/device.cpp
kernel/eka/kernel/kerncorestats.cpp
kernel/eka/kernel/object.cpp
kernel/eka/kernel/power.cpp
kernel/eka/kernel/scodeseg.cpp
kernel/eka/kernel/server.cpp
kernel/eka/kernel/sexec.cpp
kernel/eka/kernel/sipc.cpp
kernel/eka/kernel/skernel.cpp
kernel/eka/kernel/smonitor.cpp
kernel/eka/kernel/sprocess.cpp
kernel/eka/kernel/sthread.cpp
kernel/eka/kernel/sutils.cpp
kernel/eka/klib/bma.cpp
kernel/eka/memmodel/emul/win32/mcodeseg.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mdefrag.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mmanager.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mmanager.h
kernel/eka/memmodel/epoc/flexible/mmu/mmu.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mmu.h
kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.h
kernel/eka/memmodel/epoc/flexible/mmu/mpager.cpp
kernel/eka/memmodel/epoc/flexible/mmu/mpager.h
kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp
kernel/eka/memmodel/epoc/mmubase/mmubase.cpp
kernel/eka/memmodel/epoc/mmubase/ramalloc.cpp
kernel/eka/memmodel/epoc/moving/mchunk.cpp
kernel/eka/memmodel/epoc/multiple/arm/xmmu.cpp
kernel/eka/memmodel/epoc/multiple/mchunk.cpp
kernel/eka/release.txt
kernel/eka/rombuild/base.iby
kernel/eka/rombuild/not_data_paged.txt
kernel/eka/rombuild/user.iby
kernelhwsrv_info/doc_pub/kernelhwsrv_doc_pub.mrp
kernelhwsrv_info/kernelhwsrv_metadata/kernelhwsrv_metadata.mrp
kerneltest/e32test/benchmark/bm_rapu_pdd.cpp
kerneltest/e32test/buffer/t_char.cpp
kerneltest/e32test/buffer/t_tbma.cpp
kerneltest/e32test/buffer/t_tbma.h
kerneltest/e32test/cppexceptions/second_excp.h
kerneltest/e32test/defrag/t_ramdefrag.cpp
kerneltest/e32test/demandpaging/t_datapaging.cpp
kerneltest/e32test/device/t_usbapi.cpp
kerneltest/e32test/digitiser/digi.auto.bat
kerneltest/e32test/digitiser/digitiser.inf
kerneltest/e32test/digitiser/digitiser_tests.iby
kerneltest/e32test/digitiser/t_traweventdigitiser.cpp
kerneltest/e32test/digitiser/t_userdigitisertest.cpp
kerneltest/e32test/digitiser/tshell_digitisertests.oby
kerneltest/e32test/eabi/d_second_excp2_40u.def
kerneltest/e32test/eabi/d_second_excp_40u.def
kerneltest/e32test/group/base_e32test.mrp
kerneltest/e32test/group/bld.inf
kerneltest/e32test/group/bm_pdd.mmp
kerneltest/e32test/group/d_cache.mmp
kerneltest/e32test/group/d_kerncorestats.mmp
kerneltest/e32test/group/d_second_excp.mmp
kerneltest/e32test/group/d_second_excp2.mmp
kerneltest/e32test/group/t_datapaging.mmp
kerneltest/e32test/group/t_kerncorestats.mmp
kerneltest/e32test/group/t_ramall.mmp
kerneltest/e32test/group/t_smpsoakspin.mmp
kerneltest/e32test/group/t_suser.mmp
kerneltest/e32test/group/t_traweventdigitiser.mmp
kerneltest/e32test/group/t_userdigitisernocaps.mmp
kerneltest/e32test/group/t_userdigitisertest.mmp
kerneltest/e32test/hcr/d_hcrut_psl.cpp
kerneltest/e32test/locl/t_lat1.cpp
kerneltest/e32test/mediaext/d_nfe.cpp
kerneltest/e32test/misc/d_testkerncorestats.cpp
kerneltest/e32test/misc/d_testkerncorestats.h
kerneltest/e32test/misc/inflate.c
kerneltest/e32test/misc/t_kerncorestats.cpp
kerneltest/e32test/mmu/t_cachechunk.cpp
kerneltest/e32test/mmu/t_ramall.cpp
kerneltest/e32test/mmu/t_wsd_tst.h
kerneltest/e32test/multimedia/t_sound2.cpp
kerneltest/e32test/power/t_domain.cpp
kerneltest/e32test/prime/t_semutx.cpp
kerneltest/e32test/prime/t_semutx2.cpp
kerneltest/e32test/prime/t_timer.cpp
kerneltest/e32test/realtime/d_latncy.cpp
kerneltest/e32test/resourceman/t_rescontrolcli.cpp
kerneltest/e32test/secure/t_suser.cpp
kerneltest/e32test/smr/d_smr.cpp
kerneltest/e32test/system/d_mstim.cpp
kerneltest/e32test/system/d_tick.cpp
kerneltest/e32test/system/t_condvar.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/e32utils/hcrscripts/hcrdat.pm
kerneltest/e32utils/hcrscripts/hcrmd.bat
kerneltest/e32utils/hcrscripts/hcrrec.pm
kerneltest/e32utils/hcrscripts/hcrscripts.inf
kerneltest/e32utils/hcrscripts/makehcrdat.pl
kerneltest/e32utils/hcrscripts/test/array_hcrfile.dat
kerneltest/e32utils/hcrscripts/test/array_hcrfile.dat.img
kerneltest/e32utils/hcrscripts/test/array_test.txt
kerneltest/e32utils/hcrscripts/test/integer_hcrfile.dat
kerneltest/e32utils/hcrscripts/test/integer_hcrfile.dat.img
kerneltest/e32utils/hcrscripts/test/integer_test.txt
kerneltest/e32utils/hcrscripts/test/large_hcrfile.dat
kerneltest/e32utils/hcrscripts/test/large_hcrfile.dat.img
kerneltest/e32utils/hcrscripts/test/large_test.txt
kerneltest/e32utils/nistsecurerng/include/cephes.h
kerneltest/e32utils/nistsecurerng/include/config.h
kerneltest/e32utils/nistsecurerng/include/decls.h
kerneltest/e32utils/nistsecurerng/include/defs.h
kerneltest/e32utils/nistsecurerng/include/externs.h
kerneltest/e32utils/nistsecurerng/include/generators.h
kerneltest/e32utils/nistsecurerng/include/genutils.h
kerneltest/e32utils/nistsecurerng/include/matrix.h
kerneltest/e32utils/nistsecurerng/include/stat_fncs.h
kerneltest/e32utils/nistsecurerng/include/utilities.h
kerneltest/e32utils/nistsecurerng/include/utils/openc.h
kerneltest/e32utils/nistsecurerng/src/approximateEntropy.cpp
kerneltest/e32utils/nistsecurerng/src/assess.cpp
kerneltest/e32utils/nistsecurerng/src/blockFrequency.cpp
kerneltest/e32utils/nistsecurerng/src/cephes.cpp
kerneltest/e32utils/nistsecurerng/src/cusum.cpp
kerneltest/e32utils/nistsecurerng/src/dfft.cpp
kerneltest/e32utils/nistsecurerng/src/discreteFourierTransform.cpp
kerneltest/e32utils/nistsecurerng/src/frequency.cpp
kerneltest/e32utils/nistsecurerng/src/generators.cpp
kerneltest/e32utils/nistsecurerng/src/genutils.cpp
kerneltest/e32utils/nistsecurerng/src/linearComplexity.cpp
kerneltest/e32utils/nistsecurerng/src/longestRunOfOnes.cpp
kerneltest/e32utils/nistsecurerng/src/math/erf.cpp
kerneltest/e32utils/nistsecurerng/src/matrix.cpp
kerneltest/e32utils/nistsecurerng/src/nonOverlappingTemplateMatchings.cpp
kerneltest/e32utils/nistsecurerng/src/overlappingTemplateMatchings.cpp
kerneltest/e32utils/nistsecurerng/src/randomExcursions.cpp
kerneltest/e32utils/nistsecurerng/src/randomExcursionsVariant.cpp
kerneltest/e32utils/nistsecurerng/src/rank.cpp
kerneltest/e32utils/nistsecurerng/src/runs.cpp
kerneltest/e32utils/nistsecurerng/src/serial.cpp
kerneltest/e32utils/nistsecurerng/src/universal.cpp
kerneltest/e32utils/nistsecurerng/src/utilities.cpp
kerneltest/e32utils/nistsecurerng/src/utils/openc.cpp
kerneltest/e32utils/nistsecurerng/src/utils/qsort.cpp
kerneltest/e32utils/nistsecurerng/testdata/testdata.zip
kerneltest/e32utils/trace/btracevw.pl
kerneltest/f32test/demandpaging/t_nandpaging.cpp
kerneltest/f32test/group/base_f32test.mrp
kerneltest/f32test/group/bld.inf
kerneltest/f32test/group/t_ftrace.mmp
kerneltest/f32test/loader/base_loader.mrp
kerneltest/f32test/locl/localeutils/elocl32_japan/src/t_tlocl32_lat1.cpp
kerneltest/f32test/server/t_dlocl.cpp
kerneltest/f32test/server/t_falsespace.cpp
kerneltest/f32test/server/t_filecache.cpp
kerneltest/f32test/server/t_ftrace.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
userlibandfileserver/domainmgr/group/base_domain.mrp
userlibandfileserver/fileserver/automounter/base_f32_automounter.mrp
userlibandfileserver/fileserver/estart/base_f32_estart.mrp
userlibandfileserver/fileserver/etshell/base_f32_eshell.mrp
userlibandfileserver/fileserver/etshell/ts_com.cpp
userlibandfileserver/fileserver/ftrace/d_ftrace.cpp
userlibandfileserver/fileserver/ftrace/f32trace.h
userlibandfileserver/fileserver/group/base_f32.mrp
userlibandfileserver/fileserver/group/bld.inf
userlibandfileserver/fileserver/group/efile.mmh
userlibandfileserver/fileserver/group/efile.mmp
userlibandfileserver/fileserver/group/efile_instrumented.mmp
userlibandfileserver/fileserver/group/efsrv.mmh
userlibandfileserver/fileserver/group/efsrv.mmp
userlibandfileserver/fileserver/group/efsrv_instrumented.mmp
userlibandfileserver/fileserver/group/ftrace.mmp
userlibandfileserver/fileserver/group/release.txt
userlibandfileserver/fileserver/inc/f32file.h
userlibandfileserver/fileserver/inc/f32tracedef.h
userlibandfileserver/fileserver/inc/f32ver.h
userlibandfileserver/fileserver/inc/utraceefile.h
userlibandfileserver/fileserver/inc/utraceefsrv.h
userlibandfileserver/fileserver/rom/f32.iby
userlibandfileserver/fileserver/scomp/base_f32_scomp.mrp
userlibandfileserver/fileserver/sfat/base_f32_sfat.mrp
userlibandfileserver/fileserver/sfat32/base_f32_sfat32.mrp
userlibandfileserver/fileserver/sfile/efile.mmh
userlibandfileserver/fileserver/sfile/efile.mmp
userlibandfileserver/fileserver/sfile/sf_dat.cpp
userlibandfileserver/fileserver/sfile/sf_dir.cpp
userlibandfileserver/fileserver/sfile/sf_drv.cpp
userlibandfileserver/fileserver/sfile/sf_ext.cpp
userlibandfileserver/fileserver/sfile/sf_file.cpp
userlibandfileserver/fileserver/sfile/sf_file_cache.cpp
userlibandfileserver/fileserver/sfile/sf_fmt.cpp
userlibandfileserver/fileserver/sfile/sf_main.cpp
userlibandfileserver/fileserver/sfile/sf_mnt.cpp
userlibandfileserver/fileserver/sfile/sf_nbs.cpp
userlibandfileserver/fileserver/sfile/sf_plugin_shim.cpp
userlibandfileserver/fileserver/sfile/sf_raw.cpp
userlibandfileserver/fileserver/sfile/sf_std.h
userlibandfileserver/fileserver/sfile/sf_svr.cpp
userlibandfileserver/fileserver/sfile/sf_sys.cpp
userlibandfileserver/fileserver/sfile/sf_utl.cpp
userlibandfileserver/fileserver/sfile/traces/OstTraceDefinitions.h
userlibandfileserver/fileserver/sfile/traces/fixed_id.definitions
userlibandfileserver/fileserver/sfsrv/cl_cli.cpp
userlibandfileserver/fileserver/sfsrv/cl_dir.cpp
userlibandfileserver/fileserver/sfsrv/cl_file.cpp
userlibandfileserver/fileserver/sfsrv/cl_fman.cpp
userlibandfileserver/fileserver/sfsrv/cl_fmt.cpp
userlibandfileserver/fileserver/sfsrv/cl_main.cpp
userlibandfileserver/fileserver/sfsrv/cl_plugin.cpp
userlibandfileserver/fileserver/sfsrv/cl_scan.cpp
userlibandfileserver/fileserver/sfsrv/cl_std.h
userlibandfileserver/fileserver/sfsrv/efsrv.mmh
userlibandfileserver/fileserver/sfsrv/efsrv.mmp
userlibandfileserver/fileserver/sfsrv/traces/OstTraceDefinitions.h
userlibandfileserver/fileserver/sfsrv/traces/fixed_id.definitions
userlibandfileserver/fileserver/shostmassstorage/base_f32_shostmassstorage.mrp
userlibandfileserver/fileserver/shostmassstorage/client/hostmsclient.mmp
userlibandfileserver/fileserver/shostmassstorage/server/hostmsserver.mmp
userlibandfileserver/fileserver/smassstorage/base_f32_smassstorage.mrp
userlibandfileserver/fileserver/srofs/base_f32_srofs.mrp
userlibandfileserver/fileserver/srom/base_f32_srom.mrp
--- a/baseapitest/basesvs/group/basesvs.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/baseapitest/basesvs/group/basesvs.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
 component		basesvs
 source			\sf\os\kernelhwsrv\baseapitest\basesvs
 notes_source	\sf\os\kernelhwsrv\baseapitest\basesvs\group\release.txt
--- a/brdbootldr/ubootldr/base_ubootldr.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/brdbootldr/ubootldr/base_ubootldr.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Bootstrap"
 
 component	base_ubootldr
--- a/brdbootldr/ubootldr/inflate.c	Thu May 27 14:17:14 2010 +0300
+++ b/brdbootldr/ubootldr/inflate.c	Fri Jun 11 15:02:23 2010 +0300
@@ -1,19 +1,3 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
 /* inflate.c -- Not copyrighted 1992 by Mark Adler
    version c10p1, 10 January 1993 */
 
--- a/bsptemplate/asspandvariant/base_template.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/bsptemplate/asspandvariant/base_template.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Template Variant"
 
 component	base_template
--- a/bsptemplate/asspandvariant/template_assp/pa_usbc.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/bsptemplate/asspandvariant/template_assp/pa_usbc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1904,7 +1904,7 @@
 #ifdef _DEBUG
 	_LIT(KIns, "inserted");
 	_LIT(KRem, "removed");
-	__KTRACE_OPT(KUSB, Kern::Printf(" > USB cable now %lS", ptr->iCableConnected ? &KIns : &KRem));
+	__KTRACE_OPT(KUSB, Kern::Printf(" > USB cable now %S", ptr->iCableConnected ? &KIns : &KRem));
 #endif
 	if (ptr->iCableConnected)
 		{
--- a/bsptemplate/asspandvariant/template_variant/hal/config.hcf	Thu May 27 14:17:14 2010 +0300
+++ b/bsptemplate/asspandvariant/template_variant/hal/config.hcf	Fri Jun 11 15:02:23 2010 +0300
@@ -99,3 +99,4 @@
 ECustomResourceDrive : set = 0
 EDisplayNumberOfScreens=0
 ENumCpus=GetNumCpus
+EDigitiserOrientation : set = DigitiserOrientation
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/build.config.xml	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,284 @@
+<?xml version="1.0"?>
+<!DOCTYPE SystemDefinition [
+ <!ELEMENT SystemDefinition (systemModel?, build?)>
+ <!ATTLIST SystemDefinition
+  name CDATA #REQUIRED
+  schema CDATA #REQUIRED>
+ <!ELEMENT systemModel (layer+)>
+ <!ELEMENT layer (logicalset* | module*)*>
+ <!ATTLIST layer
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED
+  span CDATA #IMPLIED>
+ <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalset 
+  name CDATA #REQUIRED
+  levels CDATA #IMPLIED  
+  span CDATA #IMPLIED
+  level CDATA #IMPLIED>
+ <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
+ <!ATTLIST logicalsubset name CDATA #REQUIRED>
+ <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
+ <!ATTLIST module
+  name CDATA #REQUIRED
+  level CDATA #IMPLIED>
+ <!ELEMENT component (unit* | package* | prebuilt*)*>
+ <!ATTLIST component name CDATA #REQUIRED>
+ <!ELEMENT unit EMPTY>
+ <!ATTLIST unit
+  unitID ID #REQUIRED
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  bldFile CDATA #REQUIRED
+  priority CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT package EMPTY>
+ <!ATTLIST package
+  name CDATA #REQUIRED
+  mrp CDATA #REQUIRED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT prebuilt EMPTY>
+ <!ATTLIST prebuilt
+  name CDATA #REQUIRED
+  version CDATA #REQUIRED
+  late (Y|N) #IMPLIED
+  filter CDATA #IMPLIED
+  contract CDATA #IMPLIED>
+ <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
+ <!ELEMENT unitList (unitRef+)>
+ <!ATTLIST unitList
+  name ID #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT unitRef EMPTY>
+ <!ATTLIST unitRef unit IDREF #REQUIRED>
+ <!ELEMENT targetList EMPTY>
+ <!ATTLIST targetList
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  target IDREFS #REQUIRED>
+ <!ELEMENT target EMPTY>
+ <!ATTLIST target
+  name ID #REQUIRED
+  abldTarget CDATA #REQUIRED
+  description CDATA #REQUIRED>
+ <!ELEMENT option EMPTY>
+ <!ATTLIST option
+  name ID #REQUIRED
+  abldOption CDATA #REQUIRED
+  description CDATA #REQUIRED
+  enable (Y | N | y | n) #REQUIRED>
+ <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
+ <!ATTLIST configuration
+  name ID #REQUIRED
+  description CDATA #REQUIRED
+  filter CDATA #REQUIRED>
+ <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
+ <!ELEMENT unitListRef EMPTY>
+ <!ATTLIST unitListRef unitList IDREF #REQUIRED>
+ <!ELEMENT layerRef EMPTY>
+ <!ATTLIST layerRef layerName CDATA #REQUIRED>
+ <!ELEMENT buildLayer EMPTY>
+ <!ATTLIST buildLayer
+  command CDATA #REQUIRED
+  targetList IDREFS #IMPLIED
+  unitParallel (Y | N | y | n) #REQUIRED
+  targetParallel (Y | N | y | n) #IMPLIED>
+ <!ELEMENT specialInstructions EMPTY>
+ <!ATTLIST specialInstructions
+  name CDATA #REQUIRED
+  cwd CDATA #REQUIRED
+  command CDATA #REQUIRED>
+ <!ENTITY layer_real_source_path "/sf/os/kernelhwsrv" >
+]>
+<SystemDefinition name="KHS" schema="1.4.0">
+  <systemModel>
+	<layer name="os_layer">
+
+		<module name="KHS_HalServices"> 
+			<unit name="khs_hal" unitID="sos.khs_hal" bldFile="\sf\os\kernelhwsrv\halservices\hal" mrp="\sf\os\kernelhwsrv\halservices\hal\base_hal.mrp"/> 
+		</module> 
+		<module name="KHS_Kernel"> 
+			<unit name="eka" unitID="sos.eka" bldFile="\sf\os\kernelhwsrv\kernel\eka" mrp="\sf\os\kernelhwsrv\kernel\eka\base_e32.mrp"/>
+			<unit name="eka_compsupp" unitID="sos.eka_compsupp" bldFile="\sf\os\kernelhwsrv\kernel\eka\compsupp" mrp="\sf\os\kernelhwsrv\kernel\eka\compsupp\base_e32_compsupp.mrp"/>
+			<unit name="eka_drivers_bsp" unitID="sos.eka_drivers_bsp" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\bsp\" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\bsp\base_e32_drivers_bsp.mrp.mrp"/>
+			<unit name="eka_drivers_camerasc" unitID="sos.eka_drivers_camerasc" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\camerasc" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\camerasc\base_drivers_camerasc.mrp"/>
+			<unit name="eka_drivers_cf_unistore2" unitID="sos.eka_drivers_cf_unistore2" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\crashflash\unistore2" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\crashflash\unistore2\base_crashflash_unistore2.mrp"/>
+			<unit name="eka_drivers_debug" unitID="sos.eka_drivers_debug" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\debug\group" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\debug\group\base_e32_drivers_debug.mrp"/>
+			<unit name="eka_drivers_display" unitID="sos.eka_drivers_display" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\display" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\display\base_e32_drivers_display.mrp"/>
+			<unit name="eka_drivers_ecomm" unitID="sos.eka_drivers_ecomm" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\ecomm" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\ecomm\base_e32_drivers_ecomm.mrp"/>
+			<unit name="eka_drivers_ethernet" unitID="sos.eka_drivers_ethernet" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\ethernet" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\ethernet\base_e32_drivers_ethernet.mrp"/>
+			<unit name="eka_drivers_locmedia" unitID="sos.eka_drivers_locmedia" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\locmedia" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\locmedia\base_e32_drivers_locmedia.mrp"/>
+			<unit name="eka_drivers_media" unitID="sos.eka_drivers_media" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\media" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\media\base_e32_drivers_media.mrp"/>
+			<unit name="eka_drivers_medsd3c" unitID="sos.eka_drivers_medsd3c" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\medsd3c" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\medsd3c\base_e32_sd3c.mrp"/>
+			<unit name="eka_drivers_sdcard4c" unitID="sos.eka_drivers_sdcard4c" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\pbus\mmc\sdcard\sdcard4c" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\pbus\mmc\sdcard\sdcard4c\base_e32_sd4c.mrp"/>
+			<unit name="eka_drivers_soundsc" unitID="sos.eka_drivers_soundsc" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\soundsc" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\soundsc\base_e32_drivers_sound.mrp"/>
+			<unit name="eka_drivers_trace" unitID="sos.eka_drivers_trace" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\trace" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\trace\base_e32_drivers_trace.mrp"/>
+			<unit name="eka_drivers_unistore2" unitID="sos.eka_drivers_unistore2" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\unistore2" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\unistore2\base_drivers_unistore2.mrp"/>
+			<unit name="eka_drivers_usbdescriptors" unitID="sos.eka_drivers_usbdescriptors" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho\usbdescriptors" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho\usbdescriptors\base_drivers_usbdescriptors.mrp"/>
+			<unit name="eka_drivers_usbdi_utils" unitID="sos.eka_drivers_usbdi_utils" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho\usbdi_utils" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho\usbdi_utils\base_drivers_usbdi_utils.mrp"/>
+			<unit name="eka_drivers_usbc" unitID="sos.eka_drivers_usbc" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\usbc" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\usbc\base_e32_drivers_usbcli.mrp"/>
+			<unit name="eka_drivers_usbho" unitID="sos.eka_drivers_usbho" bldFile="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho" mrp="\sf\os\kernelhwsrv\kernel\eka\drivers\usbho\base_drivers_usbhostotg.mrp"/>
+			<unit name="eka_euser" unitID="sos.eka_euser" bldFile="\sf\os\kernelhwsrv\kernel\eka\euser" mrp="\sf\os\kernelhwsrv\kernel\eka\euser\base_e32_euser.mrp"/>
+			<unit name="eka_ewsrv" unitID="sos.eka_ewsrv" bldFile="\sf\os\kernelhwsrv\kernel\eka\ewsrv\" mrp="\sf\os\kernelhwsrv\kernel\eka\ewsrv\base_e32_ewsrv.mrp"/>
+		</module> 
+
+		<module name="KHS_UserLibraryAndFileServer"> 
+			<unit name="usrlibflsrv_domainmgr" unitID="sos.usrlibflsrv_domainmgr" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\domainmgr\group" mrp="\sf\os\kernelhwsrv\userlibandfileserver\domainmgr\group\base_domain.mrp"/>
+			<unit name="usrlibflsrv_flsrv_automounter" unitID="sos.usrlibflsrv_flsrv_automounter" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\automounter" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\automounter\base_domain.mrp"/>
+			<unit name="usrlibflsrv_flsrv_estart" unitID="sos.usrlibflsrv_flsrv_estart" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\estart" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\estart\base_f32_estart.mrp"/>
+			<unit name="usrlibflsrv_flsrv_etshell" unitID="sos.usrlibflsrv_flsrv_etshell" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\etshell" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\etshell\base_f32_eshell.mrp"/>
+			<unit name="usrlibflsrv_flsrv" unitID="sos.usrlibflsrv_flsrv" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\group" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\group\base_f32.mrp"/>
+			<unit name="usrlibflsrv_flsrv_iso9660" unitID="sos.usrlibflsrv_flsrv_iso9660" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\iso9660" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\base_f32_siso9660.mrp"/>
+			<unit name="usrlibflsrv_flsrv_ntfs" unitID="sos.usrlibflsrv_flsrv_ntfs" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\ntfs" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\ntfs\base_f32_sntfs.mrp"/>
+			<unit name="usrlibflsrv_flsrv_scomp" unitID="sos.usrlibflsrv_flsrv_scomp" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\scomp" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\scomp\base_f32_scomp.mrp"/>
+			<unit name="usrlibflsrv_flsrv_sfat" unitID="sos.usrlibflsrv_flsrv_sfat" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\sfat" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\sfat\base_f32_sfat.mrp"/>
+			<unit name="usrlibflsrv_flsrv_sfat32" unitID="sos.usrlibflsrv_flsrv_sfat32" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\sfat32" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\sfat32\base_f32_sfat32.mrp"/>
+			<unit name="usrlibflsrv_flsrv_shostmassstorage" unitID="sos.usrlibflsrv_flsrv_shostmassstorage" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\shostmassstorage" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\shostmassstorage\base_f32_shostmassstorage.mrp"/>
+			<unit name="usrlibflsrv_flsrv_smassstorage" unitID="sos.usrlibflsrv_flsrv_smassstorage" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\smassstorage" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\smassstorage\base_f32_smassstorage.mrp"/>
+			<unit name="usrlibflsrv_flsrv_srofs" unitID="sos.usrlibflsrv_flsrv_srofs" bldFile="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\srofs" mrp="\sf\os\kernelhwsrv\userlibandfileserver\fileserver\srofs\base_f32_srofs.mrp"/>
+		</module> 
+
+		<module name="KHS_Unistore2"> 
+			<unit name="unistore2_uiibootsupport" unitID="sos.unistore2_uiibootsupport" bldFile="\sf\os\kernelhwsrv\unistore2\uiibootsupport" mrp="\sf\os\kernelhwsrv\unistore2\uiibootsupport\base_nandboot_unistore2.mrp"/>
+		</module>
+
+		<module name="KHS_E32utils"> 
+			<unit name="e32utils" unitID="sos.e32utils" bldFile="\sf\os\kernelhwsrv\kerneltest\e32utils\group" mrp="\sf\os\kernelhwsrv\kerneltest\e32utils\group\base_e32utils.mrp"/>
+			<unit name="e32utils_restricted" unitID="sos.e32utils_restricted" bldFile="\sf\os\kernelhwsrv\kerneltest\e32utils\group\restricted" mrp="\sf\os\kernelhwsrv\kerneltest\e32utils\group\restricted\base_e32utils_restricted.mrp"/>
+		</module> 
+		<!--
+		<module name="BSP_Emulator"> 
+			<unit name="emulatorbsp" unitID="sos.emulatorbsp" bldFile="\sf\os\boardsupport\emulator\emulatorbsp" mrp="\sf\os\boardsupport\emulator\emulatorbsp\base_wins.mrp"/>
+			<unit name="unistore2emulatorsupport" unitID="sos.unistore2emulatorsupport" bldFile="\sf\os\boardsupport\emulator\unistore2emulatorsupport" mrp="\sf\os\boardsupport\emulator\unistore2emulatorsupport\base_wins_unistore2.mrp"/>
+		</module>
+		<module name="BSP_NaviEngine"> 
+			<unit name="navienginebootldr" unitID="sos.navienginebootldr" bldFile="\sf\os\boardsupport\naviengine\navienginebootldr" mrp="\sf\os\boardsupport\naviengine\navienginebootldr\base_wins.mrp"/>
+			<unit name="navienginebsp_ne1_tb" unitID="sos.navienginebsp_ne1_tb" bldFile="\sf\os\boardsupport\naviengine\navienginebsp\ne1_tb" mrp=""/>
+			<unit name="navienginebsp_ne1_tb_single" unitID="sos.navienginebsp_ne1_tb_single" bldFile="\sf\os\boardsupport\naviengine\navienginebsp\ne1_tb\single" mrp=""/>
+			<unit name="navienginebspflexible" unitID="sos.navienginebspflexible" bldFile="\sf\os\boardsupport\naviengine\navienginebspflexible" mrp="\sf\os\boardsupport\naviengine\navienginebspflexible\base_naviengine_flexible.mrp"/>
+			<unit name="naviengineunistore2" unitID="sos.naviengineunistore2" bldFile="\sf\os\boardsupport\naviengine\naviengineunistore2" mrp="\sf\os\boardsupport\naviengine\naviengineunistore2\base_nec_naviengine_unistore2.mrp"/>
+			<unit name="naviengineunistore2flex" unitID="sos.naviengineunistore2flex" bldFile="\sf\os\boardsupport\naviengine\naviengineunistore2flex" mrp="\sf\os\boardsupport\naviengine\naviengineunistore2flex\base_nec_naviengine_unistore2_flexible.mrp"/>
+			<unit name="naviengineusbhcd" unitID="sos.naviengineusbhcd" bldFile="\sf\os\boardsupport\naviengine\naviengineusbhcd" mrp="\sf\os\boardsupport\naviengine\naviengineusbhcd\base_naviengine_usbhost.mrp"/>
+			<unit name="naviengineusbhcd_flexible" unitID="sos.naviengineusbhcd_flexible" bldFile="\sf\os\boardsupport\naviengine\naviengineusbhcd\flexible" mrp=""/>
+		</module>
+		<module name="BSP_OMAP3Variants"> 
+			<unit name="34xx_sdp" unitID="sos.34xx_sdp" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp" mrp=""/>
+			<unit name="34xx_sdp_bootloader" unitID="sos.34xx_sdp_bootloader" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\34xx_sdp_bootloader" mrp=""/>
+			<unit name="34xx_sdp_bootstrap" unitID="sos.34xx_sdp_bootstrap" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\bootstrap" mrp=""/>
+			<unit name="34xx_sdp_flexible" unitID="sos.34xx_sdp_flexible" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\flexible" mrp="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\flexible\base_tiomap3_flexible.mrp"/>
+			<unit name="34xx_sdp_restricted_sdio" unitID="sos.34xx_sdp_restricted_sdio" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp_restricted\sdio" mrp="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp_restricted\sdio\base_tiomap3_sdio.mrp"/>
+			<unit name="34xx_sdp_restricted_unistore2" unitID="sos.34xx_sdp_restricted_unistore2" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp_restricted\unistore2" mrp=""/>
+			<unit name="34xx_sdp_restricted_unistore2_flexible" unitID="sos.34xx_sdp_restricted_unistore2_flexible" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp_restricted\unistore2\flexible" mrp="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp_restricted\unistore2\flexible\base_tiomap3_unistore2_flexible.mrp"/>
+			<unit name="lab" unitID="sos.lab" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab" mrp="\base_tiomap3_lab.mrp"/>
+			<unit name="lab_bootloader" unitID="sos.lab_bootloader" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab\lab_bootloader" mrp=""/>
+			<unit name="lab_restricted_sdio" unitID="sos.lab_restricted_sdio" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab_restricted\sdio" mrp="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab_restricted\sdio\base_tiomap3_lab_sdio.mrp"/>
+			<unit name="lab_restricted_unistore2" unitID="sos.lab_restricted_unistore2" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab_restricted\unistore2" mrp="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab_restricted\unistore2\base_tiomap3_lab_unistore2.mrp"/>
+		</module>
+		<module name="BSP_OMAPH2"> 
+			<unit name="omaph2bsp_h2" unitID="sos.omaph2bsp_h2" bldFile="\sf\os\boardsupport\omaph2\omaph2bsp\h2" mrp="\sf\os\boardsupport\omaph2\omaph2bsp\h2\base_omaph2.mrp"/>
+			<unit name="omaph2bsp_h2_single" unitID="sos.omaph2bsp_h2_single" bldFile="\sf\os\boardsupport\omaph2\omaph2bsp\h2\single" mrp=""/>
+			<unit name="omaph2sdio" unitID="sos.omaph2sdio" bldFile="\sf\os\boardsupport\omaph2\omaph2sdio" mrp="\sf\os\boardsupport\omaph2\omaph2sdio\base_h2_sdio.mrp"/>
+			<unit name="omaph2unistore2" unitID="sos.omaph2unistore2" bldFile="\sf\os\boardsupport\omaph2\omaph2unistore2" mrp="\sf\os\boardsupport\omaph2\omaph2unistore2\base_h2_unistore2.mrp"/>
+		</module>
+		<module name="BSP_OMAPH4"> 
+			<unit name="h4bootloader" unitID="sos.h4bootloader" bldFile="\sf\os\boardsupport\omaph4\h4bootloader" mrp="\sf\os\boardsupport\omaph4\h4bootloader\base_omaph4hrp_bootldr.mrp"/>
+			<unit name="omaph4bsp_h4" unitID="sos.omaph4bsp_h4" bldFile="\sf\os\boardsupport\omaph4\omaph4bsp\h4" mrp="\sf\os\boardsupport\omaph4\omaph4bsp\h4\base_omaph4hrp.mrp"/>
+			<unit name="omaph4bsp_h4_flexible" unitID="sos.omaph4bsp_h4_flexible" bldFile="\sf\os\boardsupport\omaph4\omaph4bsp\h4\flexible" mrp="\sf\os\boardsupport\omaph4\omaph4bsp\h4\flexible\base_omaph4hrp_flexible.mrp"/>
+			<unit name="omaph4minienvbootloader" unitID="sos.omaph4minienvbootloader" bldFile="\sf\os\boardsupport\omaph4\omaph4minienvbootloader" mrp="\sf\os\boardsupport\omaph4\omaph4minienvbootloader\base_omaph4hrp_mebootldr.mrp"/>
+			<unit name="omaph4sdio" unitID="sos.omaph4sdio" bldFile="\sf\os\boardsupport\omaph4\omaph4sdio" mrp="\sf\os\boardsupport\omaph4\omaph4sdio\base_omaph4hrp_sdio.mrp"/>
+			<unit name="omaph4unistore2" unitID="sos.omaph4unistore2" bldFile="\sf\os\boardsupport\omaph4\omaph4unistore2" mrp="\sf\os\boardsupport\omaph4\omaph4unistore2\base_omaph4hrp_unistore2.mrp"/>
+			<unit name="omapusbhotgdrivers" unitID="sos.omapusbhotgdrivers" bldFile="\sf\os\boardsupport\omaph4\omapusbhotgdrivers" mrp="\sf\os\boardsupport\omaph4\omapusbhotgdrivers\base_omaph4hrp_usbhostotg_usbware.mrp"/>
+		</module>
+		<module name="BSP_STVariants"> 
+			<unit name="montblanc_test" unitID="sos.montblanc_test" bldFile="\sf\os\boardsupport\stvariants\montblanc\test" mrp=""/>
+			<unit name="nokia_smpower" unitID="sos.nokia_smpower" bldFile="\sf\os\boardsupport\emulator\unistore2emulatorsupport" mrp=""/>
+		</module>
+		-->
+		<module name="NCP_Rapu"> 
+			<!-- <unit name="PRM" unitID="sos.PRM" bldFile="\ncp_sw\core7.0\base_rapu\rapu\PowerResourceManager" mrp=""/> -->
+			<unit name="power" unitID="sos.power" bldFile="\ncp_sw\core7.0\base_rapu\rapu\power" mrp=""/>
+			<unit name="ip_devices_keymap" unitID="sos.ip_devices_keymap" bldFile="\ncp_sw\corecom\bbc_components\input_devices\keymap\group" mrp=""/>
+			<unit name="security_components" unitID="sos.security_components" bldFile="\ncp_sw\corecom\security_components\group" mrp=""/>
+			<unit name="power_common" unitID="sos.power_common" bldFile="\ncp_sw\corecom\base_components\power_common\group" mrp=""/>
+
+			<unit name="I2C" unitID="sos.I2C" bldFile="\ncp_sw\corecom\base_components\I2C\group" mrp=""/>
+			<unit name="hal" unitID="sos.hal" bldFile="\overlay\10.1_overlay\79.01_vasco_overlay\variation\group" mrp=""/>
+			<unit name="ip_devices_mednand_common" unitID="sos.ip_devices_mednand_common" bldFile="\ncp_sw\corecom\bbc_components\memory\mednand_common" mrp=""/>
+			<unit name="ip_devices_medusii17" unitID="sos.ip_devices_medusii17" bldFile="\ncp_sw\corecom\bbc_components\memory\medusii17\group" mrp=""/>
+			<unit name="ip_devices_memcard_sd_devlon" unitID="sos.ip_devices_memcard_sd_devlon" bldFile="\ncp_sw\corecom\bbc_components\memory\memcard\rapu\devlon70" mrp=""/>
+			<unit name="display_chipset" unitID="sos.display_chipset" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\display\display_chipset_drv_ive_bc" mrp=""/>
+
+			<unit name="vcdriver" unitID="sos.vcdriver" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\interface\vcdriver\group" mrp=""/>
+			<unit name="vchi" unitID="sos.vchi" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\interface\vchi" mrp=""/>
+			<unit name="rmi" unitID="sos.rmi" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\interface\rmi" mrp=""/>
+			<unit name="test_logger" unitID="sos.test_logger" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\test\logger" mrp=""/>
+			<unit name="dispcommanddrv" unitID="sos.dispcommanddrv" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\display\dispcommanddrv" mrp=""/>
+			<unit name="tv_out" unitID="sos.tv_out" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\display\tv_out" mrp=""/>
+			<unit name="vc_dispman" unitID="sos.vc_dispman" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\display\vc_dispman\group" mrp=""/>
+			<unit name="dgsw_s60display_group_common" unitID="sos.dgsw_s60display_group_common" bldFile="\ncp_sw\corecom\dgsw_s60display\group_common" mrp=""/>
+			<unit name="dgsw_s60display_group_variation" unitID="sos.dgsw_s60display_group_variation" bldFile="\ncp_sw\corecom\dgsw_s60display\group_variation" mrp=""/>
+			<unit name="cts79" unitID="sos.cts79" bldFile="\ncp_sw\corecom\dgsw_s60display\group_variation\cts79" mrp=""/>
+			<unit name="isaaccessdriver" unitID="sos.isaaccessdriver" bldFile="\ncp_sw\corecom\modemadaptation_ext\connectivitylayer_ext\isaaccessdriver\group" mrp=""/>
+			<unit name="ist" unitID="sos.ist" bldFile="\ncp_sw\corecom\modemadaptation_ext\connectivitylayer_ext\ist\group" mrp=""/>
+			<unit name="isimessage" unitID="sos.isimessage" bldFile="\ncp_sw\corecom\modemadaptation_ext\connectivitylayer_ext\isimessage\group" mrp=""/>
+			<unit name="TraceCore" unitID="sos.TraceCore" bldFile="\ncp_sw\corecom\SWATI_Symbian_Tools\Trace\TraceCore\group" mrp=""/>
+			<unit name="rapu" unitID="sos.rapu" bldFile="\ncp_sw\core7.0\base_rapu\rapu" mrp=""/>
+            <!-- RJC added -->
+			<unit name="rapu_flexible" unitID="sos.rapu.flexible" bldFile="\ncp_sw\core7.0\base_rapu\rapu\flexible" mrp=""/>
+			<unit name="gape" unitID="sos.gape" bldFile="\ncp_sw\corecom\base_components\gape\group" mrp=""/>
+			<unit name="srawfs" unitID="sos.srawfs" bldFile="\ncp_sw\corecom\bbc_components\memory\srawfs\group" mrp=""/>
+			<unit name="rebootdrv" unitID="sos.rebootdrv" bldFile="\ncp_sw\corecom\modemadaptation_ext\adaptationlayer_ext\rebootdriver\group" mrp=""/>
+			<unit name="vcbufmanx" unitID="sos.vcbufmanx" bldFile="\ncp_sw\core7.0\IVE3_Engine\IVE3_rapu_drivers\interface\bufmanx" mrp=""/>
+            
+		</module>
+	</layer>
+	
+	<layer name="api_test_layer">
+		<module name="KHS_Test_E32test"> 
+			<unit name="e32test_dll" unitID="sos.e32test_dll" bldFile="\sf\os\kernelhwsrv\kerneltest\e32test\dll\oe\group" mrp=""/>
+			<unit name="e32test" unitID="sos.e32test" bldFile="\sf\os\kernelhwsrv\kerneltest\e32test\group" mrp="\sf\os\kernelhwsrv\kerneltest\e32test\groupbase_e32test.mrp"/>
+			<unit name="e32test_resourceman_acctst" unitID="sos.e32test_resourceman_acctst" bldFile="\sf\os\kernelhwsrv\kerneltest\e32test\resourceman\acctst" mrp=""/>
+			<unit name="e32test_otgdi" unitID="sos.e32test_otgdi" bldFile="\sf\os\kernelhwsrv\kerneltest\e32test\usbho\t_otgdi" mrp=""/>
+			<unit name="e32test_usbdi" unitID="sos.e32test_usbdi" bldFile="\sf\os\kernelhwsrv\kerneltest\e32test\usbho\t_usbdi" mrp=""/>
+		</module> 
+
+		<!-- <module name="KHS_Test_F32test"> 
+			<unit name="f32test_automounter" unitID="sos.f32test_automounter" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\filesystem\automounter" mrp=""/>
+			<unit name="f32test" unitID="sos.f32test" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\group" mrp="\sf\os\kernelhwsrv\kerneltest\f32test\group\base_f32test.mrp"/>
+			<unit name="f32test_loader" unitID="sos.f32test_loader" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\loader" mrp="\sf\os\kernelhwsrv\kerneltest\f32test\loader\base_loader.mrp"/>
+			<unit name="f32test_rofs" unitID="sos.f32test_rofs" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\rofs" mrp=""/>
+			<unit name="f32test_shostmassstorage" unitID="sos.f32test_shostmassstorage" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\shostmassstorage" mrp=""/>
+			<unit name="f32test_tools" unitID="sos.f32test_tools" bldFile="\sf\os\kernelhwsrv\kerneltest\f32test\tools" mrp=""/>
+		</module> -->
+
+		<module name="KHS_Test_SDIOTest"> 
+			<unit name="sdiotest" unitID="sos.sdiotest" bldFile="\sf\os\kernelhwsrv\kerneltest\sdiotest" mrp="\sf\os\kernelhwsrv\kerneltest\sdiotest\base_sdiotests.mrp"/>
+			<unit name="sdiotest_restricted" unitID="sos.sdiotest_restricted" bldFile="\sf\os\kernelhwsrv\kerneltest\sdiotest_restricted" mrp="\sf\os\kernelhwsrv\kerneltest\sdiotest_restricted\base_sdiotests_restricted.mrp"/>
+			<unit name="sdiotest_restricted_btsdiodriver" unitID="sos.sdiotest_restricted_btsdiodriver" bldFile="\sf\os\kernelhwsrv\kerneltest\sdiotest_restricted\btsdiodriver\group" mrp=""/>
+		</module>
+		<!--
+		<module name="BSP_Test_Emulator"> 
+			<unit name="emulatorbsp_test" unitID="sos.emulatorbsp_test" bldFile="\sf\os\boardsupport\emulator\emulatorbsp\test" mrp=""/>
+		</module>
+		<module name="BSP_Test_NaviEngine"> 
+			<unit name="navienginebsp_ne1_tb_test" unitID="sos.navienginebsp_ne1_tb_test" bldFile="\sf\os\boardsupport\naviengine\navienginebsp\ne1_tb\test" mrp=""/>
+			<unit name="navienginebspflexible_test" unitID="sos.navienginebspflexible_test" bldFile="\sf\os\boardsupport\naviengine\navienginebspflexible\test" mrp=""/>
+		</module>
+		<module name="BSP_Test_OMAP3Variants"> 
+			<unit name="34xx_sdp_flexible_test" unitID="sos.34xx_sdp_flexible_test" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\flexible\test" mrp=""/>
+			<unit name="34xx_sdp_test" unitID="sos.34xx_sdp_test" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\34xx_sdp\test" mrp=""/>
+			<unit name="lab_test" unitID="sos.lab_test" bldFile="\sf\os\boardsupport\omap3variants\tiomap3bsp\variant\lab\test" mrp=""/>
+		</module>
+		<module name="BSP_Test_OMAPH2"> 
+			<unit name="omaph2bsp_h2_test" unitID="sos.omaph2bsp_h2_test" bldFile="\sf\os\boardsupport\omaph2\omaph2bsp\h2\test" mrp=""/>
+		</module>
+		<module name="BSP_Test_OMAPH4"> 
+			<unit name="omaph4bsp_h4_test" unitID="sos.omaph4bsp_h4_test" bldFile="\sf\os\boardsupport\omaph4\omaph4bsp\h4\test" mrp=""/>
+			<unit name="omaph4bsp_h4_flexible_test" unitID="sos.omaph4bsp_h4_flexible_test" bldFile="\sf\os\boardsupport\omaph4\omaph4bsp\h4\flexible\test" mrp=""/>
+		</module>
+		-->
+	</layer>
+  </systemModel>
+</SystemDefinition>
\ No newline at end of file
--- a/halservices/hal/base_hal.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/halservices/hal/base_hal.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "User Side Hardware Abstraction"
 
 component	base_hal
--- a/halservices/hal/inc/hal_data.h	Thu May 27 14:17:14 2010 +0300
+++ b/halservices/hal/inc/hal_data.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1110,6 +1110,13 @@
 		*/
 		ENumCpus,
 
+		/**
+		The orientation of the Digitiser. Usually mirrors device orientation.
+		
+		@see TDigitiserOrientation for allowed values
+		@capability WriteDeviceData needed to Set this attribute
+		*/
+		EDigitiserOrientation,
 
 		/*
 		 * NOTE:
@@ -1328,6 +1335,29 @@
 		EPowerBackupStatus_Good,
 		};
 	
+	
+    /**
+    Describes the orientation of the screen digitiser, usually mirrors the
+    device orientation not necessarily the display rotation as this might be
+	limited to upright and left 90 only. The values in degrees measures 
+	the anti-clockwise angle from the left edge of the digitiser from the 
+	normal default position of the device. 
+	
+	User-side clients can use attribute to inform the digitiser driver of the
+	digitiser orientation. The driver may then use this information to adjust 
+	X.Y sampling depending on input pointer type.
+	
+    @see HALData::TAttribute
+    */
+	enum TDigitiserOrientation
+		{
+		EDigitiserOrientation_default,	///< Driver using build-in default
+		EDigitiserOrientation_000,		///< Device normal 'make-call' position
+		EDigitiserOrientation_090,		///< Device rotated left 90 degrees
+		EDigitiserOrientation_180,		///< Device rotated 180 degrees
+		EDigitiserOrientation_270		///< Device rotated right 90 degrees
+		};
+	
 	};
 
 #endif
--- a/halservices/hal/rom/hal.hby	Thu May 27 14:17:14 2010 +0300
+++ b/halservices/hal/rom/hal.hby	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-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"
@@ -139,3 +139,5 @@
 #define ESerialNumber					117
 #define ECpuProfilingDefaultInterruptBase		118
 #define ENumCpus						119
+#define EDigitiserOrientation			120
+
--- a/halservices/hal/src/userhal.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/halservices/hal/src/userhal.cpp	Fri Jun 11 15:02:23 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"
@@ -41,7 +41,8 @@
 	EInvalidAttribKeybd=13,
 	EInvalidAttribPen=14,
 	EInvalidAttribMouse=15,
-	EInvalidAttrib3DPointer=16
+	EInvalidAttrib3DPointer=16,
+	EInvalidAttribDigitiserOrientation=17
 	};
 
 void Panic(THalUserHalPanic aPanic)
@@ -929,3 +930,27 @@
 	return KErrNone;
 	}
 
+// EDigitiserOrientation
+#if defined(_DEBUG)
+TInt DigitiserOrientation(TInt aDeviceNumber, TInt aAttrib, TBool aSet, TAny* aInOut)
+#else
+TInt DigitiserOrientation(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
+#endif
+	{
+	__ASSERT_DEBUG(aAttrib == HALData::EDigitiserOrientation, Panic(EInvalidAttribDigitiserOrientation));
+	__ASSERT_DEBUG(aDeviceNumber >= 0, Panic(EInvalidAttribDigitiserOrientation));	
+	
+	if (aSet)
+		{
+		//Set
+		if ( ((TInt)aInOut) < 0 || ((TInt)aInOut) > HALData::EDigitiserOrientation_270) 
+			return KErrArgument;
+		return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserOrientation, aInOut, (TAny*)ETrue, aDeviceNumber);
+		}
+		
+	//Get
+	__ASSERT_DEBUG(aInOut != 0, Panic(EInvalidAttribDigitiserOrientation));
+	return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserOrientation, aInOut, (TAny*)EFalse, aDeviceNumber);
+	}
+
+
--- a/halservices/hal/tsrc/t_newhal.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/halservices/hal/tsrc/t_newhal.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -144,7 +144,7 @@
 	_S("ESerialNumber"),
 	_S("ECpuProfilingDefaultInterruptBase"),
 	_S("ENumCpus"),
-
+	_S("EDigitiserOrientation")
 	};
 
 TInt MatchAbbrev(const TDesC& anInput, const TText** aList, TInt aListLen)
@@ -159,7 +159,7 @@
 		if (r>=0)
 			{
 			// substring matches
-			if (r==0 && list_entry.Length()==anInput.Length())
+			if (r==0 && list_entry.Length()==anInput.Length()) 
 				{
 				// exact match
 				return i;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/base_e32.history.xml	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<relnotes name="Kernel Architecture 2">
+  <purpose>
+  </purpose>
+
+  <minorchange revision="001">
+    MINOR CHANGE: Improved test code T_Match by adding more cases to test for INC092513 (SYSLIB-UNICODE-CT-3337)
+  </minorchange>
+</relnotes>
--- a/kernel/eka/base_e32.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/base_e32.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Kernel Architecture 2"
 
 component	base_e32
--- a/kernel/eka/bld.inf	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bld.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -262,6 +262,8 @@
 include/drivers/resourcecontrol_trace.h			SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
 include/drivers/resource_category.h				SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
 include/drivers/resource_extend.h				SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
+include/drivers/resourcecontrol_settings.h		SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
+include/drivers/resourcecontrol_clientsettings.h	SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
 
 // Power Resource Manager User-Side API
 include/drivers/resmanus_trace.h				SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(drivers/)
--- a/kernel/eka/bmarm/ekernsmp.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bmarm/ekernsmp.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1054,4 +1054,5 @@
 	SetNumberOfActiveCpus__5NKerni @ 1053 NONAME
 	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)
 
--- a/kernel/eka/bmarm/ekernu.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bmarm/ekernu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1051,3 +1051,4 @@
 	Stats__13KernCoreStatsPv @ 1050 NONAME R3UNUSED ; KernCoreStats::Stats(void *)
 	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)
--- a/kernel/eka/bwins/ekernu.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bwins/ekernu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -934,4 +934,5 @@
 	?Engage@KernCoreStats@@SAHH@Z @ 933 NONAME	;  public: static int KernCoreStats::Engage(int)
 	?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)
 
--- a/kernel/eka/bx86/ekernsmp.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bx86/ekernsmp.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1011,4 +1011,5 @@
 	?Stats@KernCoreStats@@SAHPAX@Z @ 1010 NONAME	;  public: static int KernCoreStats::Stats(void *)
 	?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)
 
--- a/kernel/eka/bx86/ekernu.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bx86/ekernu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -956,4 +956,5 @@
 	?Retire@KernCoreStats@@SAHHH@Z @ 955 NONAME	;  public: static int KernCoreStats::Retire(int, int)
 	?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)
 
--- a/kernel/eka/bx86gcc/ekernsmp.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bx86gcc/ekernsmp.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1099,4 +1099,5 @@
 	_ZN13KernCoreStats9ConfigureEj @ 1098 NONAME
 	_ZN5NKern21SetNumberOfActiveCpusEi @ 1099 NONAME
 	_ZN4Epoc11FreeRamZoneEj @ 1100 NONAME
+	_ZN16TBitMapAllocator14SelectiveAllocEii @ 1101 NONAME
 
--- a/kernel/eka/bx86gcc/ekernu.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/bx86gcc/ekernu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1039,4 +1039,5 @@
 	_ZN13KernCoreStats9EnterIdleEv @ 1038 NONAME
 	_ZN13KernCoreStats9LeaveIdleEj @ 1039 NONAME
 	_ZN4Epoc11FreeRamZoneEj @ 1040 NONAME
+	_ZN16TBitMapAllocator14SelectiveAllocEii @ 1041 NONAME
 
--- a/kernel/eka/drivers/adc/base_e32_drivers_adc.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/adc/base_e32_drivers_adc.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "ADC controller"
 
 component	base_e32_drivers_adc
--- a/kernel/eka/drivers/bsp/base_e32_drivers_bsp.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/bsp/base_e32_drivers_bsp.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Generic Board Support Packages"
 
 component	base_e32_drivers_bsp
--- a/kernel/eka/drivers/camerasc/base_drivers_camerasc.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/camerasc/base_drivers_camerasc.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Camera Driver - Shared Chunk"
 
 component	base_drivers_camerasc
--- a/kernel/eka/drivers/debug/group/base_e32_drivers_debug.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/debug/group/base_e32_drivers_debug.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Run mode debugger"
 
 component	base_e32_drivers_debug
--- a/kernel/eka/drivers/display/base_e32_drivers_display.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/display/base_e32_drivers_display.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Graphics GCE Driver"
 
 component	base_e32_drivers_display
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/drivers/eabi/rm_debug_extu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,22 @@
+EXPORTS
+	_Z19CreateLogicalDevicev @ 1 NONAME
+	_ZN5Debug7GetListEPKNS_9TListItemEi @ 2 NONAME
+	_ZTI11DDebugAgent @ 3 NONAME
+	_ZTI12DRMDStepping @ 4 NONAME
+	_ZTI14DBufferManager @ 5 NONAME
+	_ZTI14DTargetProcess @ 6 NONAME
+	_ZTI15DProcessTracker @ 7 NONAME
+	_ZTI16DRM_DebugChannel @ 8 NONAME
+	_ZTI17D_RMD_Breakpoints @ 9 NONAME
+	_ZTI21DRM_DebugEventHandler @ 10 NONAME
+	_ZTI22DRM_DebugDriverFactory @ 11 NONAME
+	_ZTV11DDebugAgent @ 12 NONAME
+	_ZTV12DRMDStepping @ 13 NONAME
+	_ZTV14DBufferManager @ 14 NONAME
+	_ZTV14DTargetProcess @ 15 NONAME
+	_ZTV15DProcessTracker @ 16 NONAME
+	_ZTV16DRM_DebugChannel @ 17 NONAME
+	_ZTV17D_RMD_Breakpoints @ 18 NONAME
+	_ZTV21DRM_DebugEventHandler @ 19 NONAME
+	_ZTV22DRM_DebugDriverFactory @ 20 NONAME
+
--- a/kernel/eka/drivers/ecomm/base_e32_drivers_ecomm.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/ecomm/base_e32_drivers_ecomm.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Serial Port Driver"
 
 component	base_e32_drivers_ecomm
--- a/kernel/eka/drivers/ethernet/base_e32_drivers_ethernet.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/ethernet/base_e32_drivers_ethernet.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Ethernet Driver"
 
 component	base_e32_drivers_ethernet
--- a/kernel/eka/drivers/locmedia/base_e32_drivers_locmedia.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/locmedia/base_e32_drivers_locmedia.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Local Media Subsystem"
 
 component	base_e32_drivers_locmedia
--- a/kernel/eka/drivers/locmedia/locmedia.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/locmedia/locmedia.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -2878,9 +2878,10 @@
 			}
 		else
 #endif
-
-		CompleteRequest(m, s);
-		OstTraceDefExt3( OST_TRACE_CATEGORY_RND, TRACE_INTERNALS, DPRIMARYMEDIABASE_DOREQUEST_RETURN, "Return req Id=%d; Remote Thread=0x%x; retval=%d", (TInt) m.Id(), (TUint) m.RemoteThread(), (TInt) s);
+			{
+			CompleteRequest(m, s);
+			OstTraceDefExt2( OST_TRACE_CATEGORY_RND, TRACE_INTERNALS, DPRIMARYMEDIABASE_DOREQUEST_RETURN, "Return Remote Thread=0x%x; retval=%d", (TUint) m.RemoteThread(), (TInt) s);
+			}
 		}
 
 	iCurrentReq=NULL;
@@ -4956,7 +4957,7 @@
 	{
 	OstTraceFunctionEntry0( LOCDRV_REGISTERMEDIADEVICE_ENTRY );
 	// Create TLocDrv / DMedia objects to handle a media device
-	__KTRACE_OPT(KBOOT,Kern::Printf("RegisterMediaDevice %lS dev=%1d #drives=%d 1st=%d PM=%08x #media=%d",&aName,aDevice,aDriveCount,*aDriveList,aPrimaryMedia,aNumMedia));
+	__KTRACE_OPT(KBOOT,Kern::Printf("RegisterMediaDevice %S dev=%1d #drives=%d 1st=%d PM=%08x #media=%d",&aName,aDevice,aDriveCount,*aDriveList,aPrimaryMedia,aNumMedia));
 	OstTraceExt5( TRACE_INTERNALS, LOCDRV_REGISTERMEDIADEVICE1, "aDevice=%d; aDriveCount=%d; aDriveList=%d; aPrimaryMedia=0x%08x; aNumMedia=%d", (TInt) aDevice, (TInt) aDriveCount, (TInt) *aDriveList, (TUint) aPrimaryMedia, (TInt) aNumMedia );
 
 	if (UsedMedia+aNumMedia>KMaxLocalDrives)
@@ -5331,7 +5332,7 @@
 			drive = TheDrives[i];
 			if(drive && drive->iPrimaryMedia == aPrimaryMedia)
 				{
-				__KTRACE_OPT2(KBOOT,KLOCDPAGING, Kern::Printf("RegisterPagingDevice: local drive %d, partition type %x base %lx size %lx name %lS", i, drive->iPartitionType, drive->iPartitionBaseAddr, drive->iPartitionLen, DriveNames[i] ? DriveNames[i] : &KNullDesC8));
+				__KTRACE_OPT2(KBOOT,KLOCDPAGING, Kern::Printf("RegisterPagingDevice: local drive %d, partition type %x base %lx size %lx name %S", i, drive->iPartitionType, drive->iPartitionBaseAddr, drive->iPartitionLen, DriveNames[i] ? DriveNames[i] : &KNullDesC8));
 				// ROM partition ?
 				if ((romPagingDriveNumber == KErrNotFound) && 
 					(drive->iPartitionType == KPartitionTypeROM) &&
@@ -5388,7 +5389,7 @@
 
 #ifdef __DEBUG_DEMAND_PAGING__
 	Kern::Printf("PagingDevice :");
-	Kern::Printf("Name %lS", firstLocalDriveNumber >= 0 && DriveNames[firstLocalDriveNumber] ? DriveNames[firstLocalDriveNumber] : &KNullDesC8);
+	Kern::Printf("Name %S", firstLocalDriveNumber >= 0 && DriveNames[firstLocalDriveNumber] ? DriveNames[firstLocalDriveNumber] : &KNullDesC8);
 	Kern::Printf("iType 0x%x", pagingDevice->iType);
 	Kern::Printf("iReadUnitShift 0x%x", pagingDevice->iReadUnitShift);
 	Kern::Printf("iFirstLocalDriveNumber 0x%x", pagingDevice->iFirstLocalDriveNumber);
@@ -5612,7 +5613,7 @@
 				if (!(sock_mask & (1<<sockNum)))
 					{
 					info.iSocketName[sockNum]=*DriveNames[i];
-					__KTRACE_OPT(KLOCDRV,Kern::Printf("Socket %d device %d name %lS", sockNum, pM->iDevice, DriveNames[i]));
+					__KTRACE_OPT(KLOCDRV,Kern::Printf("Socket %d device %d name %S", sockNum, pM->iDevice, DriveNames[i]));
 					OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO1, "Socket=%d; device=%d", sockNum, (TUint) pM->iDevice );
 					if ( (sockNum + 1) > sockets )
 						sockets = sockNum + 1;
@@ -5620,7 +5621,7 @@
 				sock_mask |= (1<<sockNum);
 				}
 			info.iDriveName[i]=*DriveNames[i];
-			__KTRACE_OPT(KLOCDRV,Kern::Printf("Drive %d device %d name %lS",i,pM->iDevice,DriveNames[i]));
+			__KTRACE_OPT(KLOCDRV,Kern::Printf("Drive %d device %d name %S",i,pM->iDevice,DriveNames[i]));
 			OstTraceExt2( TRACE_INTERNALS, GETDRIVEINFO2, "Drive=%d; device=%d", i, (TUint) pM->iDevice );
 			
 			info.iRegisteredDriveBitmask |= (0x01 << i);
--- a/kernel/eka/drivers/media/base_e32_drivers_media.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/media/base_e32_drivers_media.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Media Drivers"
 
 component	base_e32_drivers_media
--- a/kernel/eka/drivers/medmmc/medmmc.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/medmmc/medmmc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1485,7 +1485,8 @@
 					}
 				}
 			}
-	
+
+#ifdef _ENABLE_EMMC_RELIABLE_WRITE_		
 			//Reliable Write only supported by v4.3+ MMC media
 			if (iCard->ExtendedCSD().ExtendedCSDRev() >= 3)
 				{
@@ -1497,6 +1498,7 @@
 					iSession->Command().iFlags|= KMMCCmdFlagReliableWrite;
 					}
 				}
+#endif //_ENABLE_EMMC_RELIABLE_WRITE_			
 		
 			// Engage the data transfer session...
 			r = EngageAndSetWriteRequest(aMedReq);
--- a/kernel/eka/drivers/pbus/mmc/stack.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/pbus/mmc/stack.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -6408,6 +6408,9 @@
 			{
 			EStBegin=0,
 			EStNextIndex,
+			EStSendStatus,
+			EStGetStatus,
+			EStUnlock,
 			EStInitStackAfterUnlock,
 			EStIssuedLockUnlock,
 			EStDone,
@@ -6470,6 +6473,25 @@
 		//
 		// Upon completion, test the next card before performing further initialisation.
 		//
+		
+		SMF_STATE(EStSendStatus)
+		        
+		s.FillCommandDesc(ECmdSendStatus, 0);
+		                        
+		SMF_INVOKES(ExecCommandSMST,EStGetStatus)
+		                        
+		SMF_STATE(EStGetStatus)
+		                        
+		const TMMCStatus st = s.LastStatus();
+		if((st & KMMCStatCardIsLocked) == 0)
+			{
+		    SMF_RETURN(err)
+		    }
+		                        
+		SMF_STATE(EStUnlock)
+		                        
+		const TMapping *mp = NULL;
+		mp = iSocket->iPasswordStore->FindMappingInStore(iCardArray->CardP(iAutoUnlockIndex)->CID());
 
 		TMMCard &cd = *(iCardArray->CardP(iAutoUnlockIndex++));
 		OstTrace1( TRACE_INTERNALS, DMMCSTACK_CIMAUTOUNLOCKSM4, "Attempting to unlock card %d", cd.Number() );
--- a/kernel/eka/drivers/pbus/pccard/epoc/pccd_init.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/pbus/pccard/epoc/pccd_init.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -122,7 +122,7 @@
 			if (!pM)
 				return KErrNoMemory;
 			r=LocDrv::RegisterMediaDevice(mdi.iDevice,mdi.iDriveCount,mdi.iDriveList,pM,mdi.iNumMedia,*mdi.iDeviceName);
-			__KTRACE_OPT(KPBUS1,Kern::Printf("Registering PcCard device %lS (socket %d) for %d drives returns %d",mdi.iDeviceName,pM->iSocket->iSocketNumber,mdi.iDriveCount,r));
+			__KTRACE_OPT(KPBUS1,Kern::Printf("Registering PcCard device %S (socket %d) for %d drives returns %d",mdi.iDeviceName,pM->iSocket->iSocketNumber,mdi.iDriveCount,r));
 			if (r!=KErrNone)
 				return r;
 			}
--- a/kernel/eka/drivers/pbus/pccard/socket.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/pbus/pccard/socket.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -141,7 +141,7 @@
 //
 	{
 
-	__KTRACE_OPT(KPBUS1,Kern::Printf(">Skt(%d):Create(%lS)",iSocketNumber,aName));
+	__KTRACE_OPT(KPBUS1,Kern::Printf(">Skt(%d):Create(%S)",iSocketNumber,aName));
 
 	TInt r=DPBusSocket::Create(aName);
 	if (r!=KErrNone)
--- a/kernel/eka/drivers/pbus/spbus.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/pbus/spbus.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -683,7 +683,7 @@
 TInt DPBusSocket::Create(const TDesC* aName)
 	{
 	OstTraceFunctionEntry1( DPBUSSOCKET_CREATE_ENTRY, this );
-	__KTRACE_OPT(KPBUS1,Kern::Printf(">DPBusSocket(%d)::Create %lS",iSocketNumber,aName));
+	__KTRACE_OPT(KPBUS1,Kern::Printf(">DPBusSocket(%d)::Create %S",iSocketNumber,aName));
 	OstTrace1(TRACE_INTERNALS, DPBUSSOCKET_CREATE, "iSocketNumber=%d",iSocketNumber);
 	iName=aName;
 	DPBusPowerHandler* pH=new DPBusPowerHandler(this);
--- a/kernel/eka/drivers/power/smppower/idlehelper.cia	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/idlehelper.cia	Fri Jun 11 15:02:23 2010 +0300
@@ -85,12 +85,12 @@
 	LDREX(3,1);                                                       // r3 = iIdlingCpus
     asm("orr    r3,r0,r3");                                           // orr in mask for this CPU
     asm("cmp    r3,r2");                                              // compare to iAllEngagedCpusMask
-    asm("orreq  r3,r3,#%a0" : : "i" (TIdleSupport::KGlobalIdleFlag)); // if equal orr in KGlobalIdleFlag
+    asm("orreq  r3,r3,#%a0" : : "i" ((TUint32)TIdleSupport::KGlobalIdleFlag)); // if equal orr in KGlobalIdleFlag
     STREX(12,3,1);
     asm("cmp    r12, #0 ");                                              // 
 	asm("bne    1b ");                                                   // write didn't succeed try again
     __DATA_MEMORY_BARRIER__(r12);
-    asm("and    r0,r3,#%a0" : : "i" (TIdleSupport::KGlobalIdleFlag));
+    asm("and    r0,r3,#%a0" : : "i" ((TUint32)TIdleSupport::KGlobalIdleFlag));
 	__JUMP(,lr);
     asm("__iAllEngagedCpusMask:");
     asm(".word %a0" : : "i" ((TInt)&TIdleSupport::iAllEngagedCpusMask));//
@@ -125,7 +125,7 @@
     asm("stmfd sp!, {r4-r5,lr} ");	
     asm("add r0,r0,#%a0" : : "i"  _FOFF(TSyncPointBase, iStageAndCPUWaitingMask)); // skip vt
     asm("ldr r4,[r0,#4]"); 
-    asm("ldr r4,[r4]")
+    asm("ldr r4,[r4]");
    __DATA_MEMORY_BARRIER_Z__(r12);          // 
     asm("1: ");
 	LDREX(2,0);                             // r2 =  iStageAndCPUWaitingMask, r4 = iAllEnagedCpusMask
@@ -149,7 +149,7 @@
 #endif		
     asm("2: ");
     asm("cmp r3,r5");                       // all (old stage does not equal new stage)
-    asm("ldmfdne sp!, {r4-r5,pc}");         // yup return
+    asm("bne 3f");                            // yup return
 #ifdef SYNCPOINT_WFE		
 	__DATA_MEMORY_BARRIER__(r12);        
 	ARM_WFE;
@@ -158,6 +158,8 @@
     __DATA_MEMORY_BARRIER__(r12);           // ensure read is observed
     asm("mov r3,r2,lsr #16");               // re-read new stage
     asm("b 2b");                            // loop back
+    asm("3: ");
+    asm("ldmfd sp!, {r4-r5,pc}");         // return
     }
 
 /** 
@@ -188,7 +190,7 @@
     asm("stmfd sp!, {r4,lr} ");	
     asm("add r0,r0,#%a0" : : "i"  _FOFF(TSyncPointBase, iStageAndCPUWaitingMask)); // skip vt
     asm("ldr r4,[r0,#4]");
-    asm("ldr r4,[r4]")
+    asm("ldr r4,[r4]");
     __DATA_MEMORY_BARRIER_Z__(r12);          // 
     asm("1: ");
 	LDREX(2,0);                             // r2 =  iStageAndCPUWaitingMask, r4 = iAllEnagedCpusMask
@@ -208,7 +210,7 @@
 #endif		
     asm("2: ");
     asm("ands r3,r2,#0x80000000");          // MSB set?	
-    asm("ldmfdne sp!, {r4,pc}");            // yup return
+    asm("bne 4f");                          // yup return
 #ifdef SYNCPOINT_WFE		
 	__DATA_MEMORY_BARRIER__(r12);
 	ARM_WFE;
@@ -222,7 +224,8 @@
     __DATA_MEMORY_BARRIER__(r12);           // ensure that's written
 	ARM_SEV;
 #endif	
-    asm("ldmfd sp!, {r4,pc}");            // yup return
+    asm("4:");
+    asm("ldmfd sp!, {r4,pc}");            // return
     }
 	
 	
@@ -292,7 +295,7 @@
     }
 #endif
 
-__NAKED__  TInt TIdleSupport::IntPending()  
+__NAKED__  TUint32 TIdleSupport::IntPending()  
     {
 	asm("ldr    r1,__KCPUIFAddr");//r1 = address of iBaseIntIfAddress
 	asm("ldr	r1, [r1]");//r1 = address of Hw GIC CPU interrupt interface base address
--- a/kernel/eka/drivers/power/smppower/idlehelper_lib.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/idlehelper_lib.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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 ".
 //
--- a/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -41,6 +41,11 @@
       }
 
 
+DSMPIdleHandler::~DSMPIdleHandler()
+	{
+	}
+
+
 /**
    To be called after construction in a thread context with interrupts enabled. Power extension entry point ideal
    @pre thread context ints enable no kernel locks or fast mutexes
--- a/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/power/smppower/sample_idlehandler/smpidlehandler_lib.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL " http://www.eclipse.org/legal/epl-v10.html ".
 //
--- a/kernel/eka/drivers/soundsc/base_e32_drivers_sound.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/soundsc/base_e32_drivers_sound.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Audio Driver"
 
 component	base_e32_drivers_sound
--- a/kernel/eka/drivers/trace/base_e32_drivers_trace.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/trace/base_e32_drivers_trace.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Kernel Trace Tool"
 
 component	base_e32_drivers_trace
--- a/kernel/eka/drivers/usbc/base_e32_drivers_usbcli.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/usbc/base_e32_drivers_usbcli.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "USB Client Driver"
 
 component	base_e32_drivers_usbcli
--- a/kernel/eka/drivers/usbho/usbdescriptors/base_drivers_usbdescriptors.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/usbho/usbdescriptors/base_drivers_usbdescriptors.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "USB Descriptors"
 
 component	base_drivers_usbdescriptors
--- a/kernel/eka/drivers/usbho/usbdi_utils/base_drivers_usbdi_utils.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/usbho/usbdi_utils/base_drivers_usbdi_utils.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "USB DI Utils"
 
 component	base_drivers_usbdi_utils
--- a/kernel/eka/drivers/xyin/d_xyin.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/drivers/xyin/d_xyin.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1998-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"
@@ -19,6 +19,7 @@
 
 #include <drivers/xyin.h>
 #include <kernel/kern_priv.h>
+#include <hal_data.h>
 
 _LIT(KLitDigitiser,"Digitiser");
 
@@ -50,7 +51,8 @@
 	:	DPowerHandler(KLitDigitiser),
 		iMsgQ(rxMsg,this,NULL,1),
 		iSampleDfc(sampleDfc,this,5),
-		iPenUpDfc(penUpDfc,this,5)
+		iPenUpDfc(penUpDfc,this,5),
+		iOrientation(HALData::EDigitiserOrientation_default)
 	{
 //	iBufferIndex=0;
 //	iLastPos=TPoint(0,0);
@@ -358,6 +360,26 @@
 		case EDigitiserHalXYState:
 			kumemput32(a1, (TBool*)&iPointerOn, sizeof(TBool));
 			break;
+			
+		// a2 = TBool aSet (ETrue for setting, EFalse for retrieval) 
+		// a1 = TDigitizerOrientation (set)
+		// a1 = &TDigitizerOrientation (get)
+		case EDigitiserOrientation:	
+			if ((TBool)a2)
+				{
+				// Set the orientation attribute
+				// In case user thread, check it has WDD capability
+				if(!Kern::CurrentThreadHasCapability(ECapabilityWriteDeviceData,__PLATSEC_DIAGNOSTIC_STRING("Checked by Hal function EDigitiserOrientation")))
+					return KErrPermissionDenied;
+				iOrientation = (TInt)a1;
+				}
+			else
+				{
+				// Get the orientation attribute, safe copy it into user memory
+				kumemput32(a1, &iOrientation, sizeof(TInt));	
+				}
+			break; 
+			
 		default:
 			r=KErrNotSupported;
 			break;
--- a/kernel/eka/eabi/ekernsmp.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/eabi/ekernsmp.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1188,4 +1188,5 @@
 	_ZN5NKern21SetNumberOfActiveCpusEi @ 1187 NONAME
 	_ZN3Arm14SetIdleHandlerEPFvPvmPVvES0_ @ 1188 NONAME
 	_ZN4Epoc11FreeRamZoneEj @ 1189 NONAME
+	_ZN16TBitMapAllocator14SelectiveAllocEii @ 1190 NONAME
 
--- a/kernel/eka/eabi/ekernu.def	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/eabi/ekernu.def	Fri Jun 11 15:02:23 2010 +0300
@@ -1180,4 +1180,5 @@
 	_ZN13KernCoreStats9LeaveIdleEj @ 1179 NONAME
 	_ZN3Arm14SetIdleHandlerEPFvPvmES0_ @ 1180 NONAME
 	_ZN4Epoc11FreeRamZoneEj @ 1181 NONAME
+	_ZN16TBitMapAllocator14SelectiveAllocEii @ 1182 NONAME
 
--- a/kernel/eka/euser/base_e32_euser.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/euser/base_e32_euser.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "User Library"
 
 component	base_e32_euser
--- a/kernel/eka/ewsrv/base_e32_ewsrv.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/ewsrv/base_e32_ewsrv.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Text Window Server"
 
 component	base_e32_ewsrv
--- a/kernel/eka/include/d32comm.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/d32comm.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1995-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"
@@ -30,64 +30,6 @@
 #include <d32public.h>
 
 /**
- Enumeration of number of data bits for serial port configuration.
- Typically, these values are used to initialize the iDataBits of 
- TCommConfigV01 before calling DComm::Configure() or any other serial
- comm API to configure the serial port's databits size.
- */
-enum TDataBits {EData5,EData6,EData7,EData8};
-/**
- Enumeration of number of stop bits for serial port configuration.
- Typically, these values are used to initialize the iStopBits of 
- TCommConfigV01 before calling DComm::Configure() or any other serial
- comm API to configure the serial port's stopbits.
- */
-enum TStopBits {EStop1,EStop2};
-/**
- Enumeration of types of parity for serial port configuration.
- Typically, these values are used to initialize the iParity of 
- TCommConfigV01 before calling DComm::Configure() or any other serial
- comm API to configure the serial port's parity setting.
- */
-enum TParity {EParityNone,EParityEven,EParityOdd,EParityMark,EParitySpace};
-/**
- Enumeration of baud rates in bits per second for serial port configuration.
- * e.g EBps115200 is for 115200Bps data rate  
- Typically, these values are used to initialize the iRate of TCommConfigV01 
- before calling DComm::Configure() or any other serial comm API to configure
- the serial port's baud rate.
- */
-enum TBps
-	{
-	EBps50,
-	EBps75,
-	EBps110,
-	EBps134,
-	EBps150,
-	EBps300,
-	EBps600,
-	EBps1200,
-	EBps1800,
-	EBps2000,
-	EBps2400,
-	EBps3600,
-	EBps4800,
-	EBps7200,
-	EBps9600,
-	EBps19200,
-	EBps38400,
-	EBps57600,
-	EBps115200,
-	EBps230400,
-	EBps460800,
-	EBps576000,
-	EBps1152000,
-	EBps4000000,
-	EBps921600,
-	EBpsAutobaud=0x40000000,
-	EBpsSpecial=0x80000000,
-	};
-/**
  Enumeration of Fifo status (enable and disable) for serial port configuration.
  Typically, these values are used to initialize the iFifo of TCommConfigV01 
  before calling DComm::Configure() or any other serial comm API to configure
--- a/kernel/eka/include/d32public.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/d32public.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1995-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"
@@ -26,6 +26,67 @@
 #ifndef __D32PUBLIC_H__
 #define __D32PUBLIC_H__
 
+/**
+ Enumeration of number of data bits for serial port configuration.
+ Typically, these values are used to initialize the iDataBits of 
+ TCommConfigV01 before calling DComm::Configure() or any other serial
+ comm API to configure the serial port's databits size.
+ */
+enum TDataBits {EData5,EData6,EData7,EData8};
+
+/**
+ Enumeration of number of stop bits for serial port configuration.
+ Typically, these values are used to initialize the iStopBits of 
+ TCommConfigV01 before calling DComm::Configure() or any other serial
+ comm API to configure the serial port's stopbits.
+ */
+enum TStopBits {EStop1,EStop2};
+
+/**
+ Enumeration of types of parity for serial port configuration.
+ Typically, these values are used to initialize the iParity of 
+ TCommConfigV01 before calling DComm::Configure() or any other serial
+ comm API to configure the serial port's parity setting.
+ */
+enum TParity {EParityNone,EParityEven,EParityOdd,EParityMark,EParitySpace};
+
+/**
+ Enumeration of baud rates in bits per second for serial port configuration.
+ * e.g EBps115200 is for 115200Bps data rate  
+ Typically, these values are used to initialize the iRate of TCommConfigV01 
+ before calling DComm::Configure() or any other serial comm API to configure
+ the serial port's baud rate.
+ */
+enum TBps
+	{
+	EBps50,
+	EBps75,
+	EBps110,
+	EBps134,
+	EBps150,
+	EBps300,
+	EBps600,
+	EBps1200,
+	EBps1800,
+	EBps2000,
+	EBps2400,
+	EBps3600,
+	EBps4800,
+	EBps7200,
+	EBps9600,
+	EBps19200,
+	EBps38400,
+	EBps57600,
+	EBps115200,
+	EBps230400,
+	EBps460800,
+	EBps576000,
+	EBps1152000,
+	EBps4000000,
+	EBps921600,
+	EBpsAutobaud=0x40000000,
+	EBpsSpecial=0x80000000,
+	};
 
 enum TFlowControl
 	{
--- a/kernel/eka/include/d32usbdi_errors.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/d32usbdi_errors.h	Fri Jun 11 15:02:23 2010 +0300
@@ -201,6 +201,7 @@
 		EUsbDevMonDeviceAttachDenied					= 41,
 		EUsbHubDriverZeroInterfaceTokenProduced			= 42,
 		EUsbInterfaceSuccessfulPipeOpenWithNoPipe		= 43,
+		EFailedToLockHostStackInWaitDeviceStateMutex    = 44,
 		};
 
 	_LIT(KUsbDescFaultCat, "USBDesc-Fault");
--- a/kernel/eka/include/drivers/dma_v1.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/drivers/dma_v1.h	Fri Jun 11 15:02:23 2010 +0300
@@ -349,27 +349,66 @@
 	virtual void DoUnlink(SDmaDesHdr& aHdr);
 	virtual void DoDfc(DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr) = 0;
 	/**
-	   This function allows the Platform Specific Layer (PSL) to control the
-	   power management of the channel or its controller by overriding the
-	   PIL's default implementation (which does nothing) and making appropriate
-	   use of the Power Resource Manager (PRM).
+		This function allows the Platform Specific Layer (PSL) to control the
+		power management of the channel or its controller by overriding the
+		PIL's default implementation (which does nothing) and making
+		appropriate use of the Power Resource Manager (PRM).
+
+		The function gets called by the PIL whenever the channel's queued
+		requests count has changed in a significant way, either before the
+		channel's Transfer() method is invoked for a request on a previously
+		empty request queue, or immediately after the request count has become
+		zero because of request cancellation or completion.
+
+		Depending on the current and previous observed values of
+		iQueuedRequests, the PSL may power down or power up the channel.
 
-	   The function gets called by the PIL whenever the channel's queued
-	   requests count has changed in a significant way, either before the
-	   channel's Transfer() method is invoked for a request on a previously
-	   empty request queue, or immediately after the request count has become
-	   zero because of request cancellation or completion.
+		Note that iQueuedRequests gets accessed and changed by different
+		threads, so the PSL needs to take the usual precautions when evaluating
+		the variable's value. Also, due to the multithreaded framework
+		architecture, there is no guarantee that the function calls always
+		arrive at the PSL level in the strict chronological order of
+		iQueuedRequests being incremented/decremented in the PIL, i.e. it might
+		happen that the PSL finds iQueuedRequests to have the same value in two
+		or more consecutive calls (that's why the previous observed value needs
+		to be locally available and taken into account). It is however promised
+		that before any actual transfer commences the PSL will find the request
+		count to be greater than zero and that after the last request has
+		finished it will be found to be zero.
+
+		None of the internal DMA framework mutexes is being held by the PIL
+		when calling this function.
 
-	   Depending on the current value of iQueuedRequests, the PSL may power
-	   down or power up the channel. Note that iQueuedRequests gets accessed
-	   and changed by different threads, so the PSL needs to take the usual
-	   precautions when evaluating the variable's value.
+		Here is an example implementation for a derived channel class:
+
+		@code
+
+		class TFooDmaChannel : public TDmaSgChannel
+			{
+			DMutex* iDmaMutex;
+			TInt iPrevQueuedRequests;
+			virtual void QueuedRequestCountChanged();
+			};
 
-	   None of the internal DMA framework mutexes is being held by the PIL when
-	   calling this function.
+		void TFooDmaChannel::QueuedRequestCountChanged()
+			{
+			Kern::MutexWait(*iDmaMutex);
+			if ((iQueuedRequests > 0) && (iPrevQueuedRequests == 0))
+				{
+				IncreasePowerCount(); // Base port specific
+				}
+			else if ((iQueuedRequests == 0) && (iPrevQueuedRequests > 0))
+				{
+				DecreasePowerCount(); // Base port specific
+				}
+			iPrevQueuedRequests = iQueuedRequests;
+			Kern::MutexSignal(*iDmaMutex);
+			}
 
-	   @see iQueuedRequests
-	 */
+		@endcode
+
+		@see iQueuedRequests
+	*/
 	virtual void QueuedRequestCountChanged();
 #if defined(__CPU_ARM) && !defined(__EABI__)
 	inline virtual ~TDmaChannel() {}	// kill really annoying warning
--- a/kernel/eka/include/drivers/dma_v2.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/drivers/dma_v2.h	Fri Jun 11 15:02:23 2010 +0300
@@ -70,7 +70,7 @@
 
 	Some peripherals may require a post-increment address mode.
 
-	@see DDmaRequest::Fragment
+	@see DDmaRequest::Fragment()
 
 	Note: This enum is only required for backwards compatibility with the old
 	DMA framework, it can be removed once this is no longer needed.
@@ -337,10 +337,11 @@
 		Works like ExpandDesList except that it uses the iSrcFirstHdr and
 		iSrcLastHdr fields.
 
-		@see ExpandDesList
+		@see ExpandDesList()
 
-		This function can only be used if SDmacCaps::iAsymHwDescriptors is
-		true, otherwise it will just return KErrGeneral.
+		This function should only be used if SDmacCaps::iAsymHwDescriptors is
+		reported as true, as only then the framework will actually use the
+		allocated descriptors.
 
 		@param aCount Number of descriptors to append.
 
@@ -357,10 +358,11 @@
 		Works like ExpandDesList except that it uses the iDstFirstHdr and
 		iDstLastHdr fields.
 
-		@see ExpandDesList
+		@see ExpandDesList()
 
-		This function can only be used if SDmacCaps::iAsymHwDescriptors is
-		true, otherwise it will just return KErrGeneral.
+		This function should only be used if SDmacCaps::iAsymHwDescriptors is
+		reported as true, as only then the framework will actually use the
+		allocated descriptors.
 
 		@param aCount Number of descriptors to append.
 
@@ -373,7 +375,9 @@
 
 	/** Free resources associated with this request.
 
-		Assume the request is not being transferred or pending.
+		Assumes the request is not being transferred or pending.
+
+		@see ExpandDesList()
 
 		@released
 	*/
@@ -383,10 +387,9 @@
 	/** Free resources associated with this request. This function variant
 		operates on the source port descriptor chain.
 
-		@see FreeDesList
+		Assumes the request is not being transferred or pending.
 
-		This function can only be used if SDmacCaps::iAsymHwDescriptors is
-		true, otherwise it will do nothing.
+		@see ExpandSrcDesList()
 
 		@prototype
 	*/
@@ -396,10 +399,9 @@
 	/** Free resources associated with this request. This function variant
 		operates on the destination port descriptor chain.
 
-		@see FreeDesList
+		Assumes the request is not being transferred or pending.
 
-		This function can only be used if SDmacCaps::iAsymHwDescriptors is
-		true, otherwise it will do nothing.
+		@see ExpandDstDesList()
 
 		@prototype
 	*/
@@ -1197,14 +1199,53 @@
 		empty request queue, or immediately after the request count has become
 		zero because of request cancellation or completion.
 
-		Depending on the current value of iQueuedRequests, the PSL may power
-		down or power up the channel. Note that iQueuedRequests gets accessed
-		and changed by different threads, so the PSL needs to take the usual
-		precautions when evaluating the variable's value.
+		Depending on the current and previous observed values of
+		iQueuedRequests, the PSL may power down or power up the channel.
+
+		Note that iQueuedRequests gets accessed and changed by different
+		threads, so the PSL needs to take the usual precautions when evaluating
+		the variable's value. Also, due to the multithreaded framework
+		architecture, there is no guarantee that the function calls always
+		arrive at the PSL level in the strict chronological order of
+		iQueuedRequests being incremented/decremented in the PIL, i.e. it might
+		happen that the PSL finds iQueuedRequests to have the same value in two
+		or more consecutive calls (that's why the previous observed value needs
+		to be locally available and taken into account). It is however promised
+		that before any actual transfer commences the PSL will find the request
+		count to be greater than zero and that after the last request has
+		finished it will be found to be zero.
 
 		None of the internal DMA framework mutexes is being held by the PIL
 		when calling this function.
 
+		Here is an example implementation for a derived channel class:
+
+		@code
+
+		class TFooDmaChannel : public TDmaSgChannel
+			{
+			DMutex* iDmaMutex;
+			TInt iPrevQueuedRequests;
+			virtual void QueuedRequestCountChanged();
+			};
+
+		void TFooDmaChannel::QueuedRequestCountChanged()
+			{
+			Kern::MutexWait(*iDmaMutex);
+			if ((iQueuedRequests > 0) && (iPrevQueuedRequests == 0))
+				{
+				IncreasePowerCount(); // Base port specific
+				}
+			else if ((iQueuedRequests == 0) && (iPrevQueuedRequests > 0))
+				{
+				DecreasePowerCount(); // Base port specific
+				}
+			iPrevQueuedRequests = iQueuedRequests;
+			Kern::MutexSignal(*iDmaMutex);
+			}
+
+		@endcode
+
 		@see iQueuedRequests
 	*/
 	virtual void QueuedRequestCountChanged();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/resourcecontrol_clientsettings.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,109 @@
+// 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\include\drivers\resourcecontrol_clientsettings.h
+//
+//
+
+#ifndef __RESOURCECONTROL_CLIENTSETTINGS_H__
+#define __RESOURCECONTROL_CLIENTSETTINGS_H__
+
+#include <drivers/hcr.h>
+
+const TUint KBitPerClientSettings = 5; // 0 - 31, Max of 32 elements defined for use per client
+const TUint KClientElementIdBase = 0x10;	// Max of 16 elements defined for use by resman
+const TUint8 KStaticResourceTableSize = 5;
+
+inline TUint ElementId_ClientSettingBase(TUint aClientToken)
+	{
+	return	((aClientToken << KBitPerClientSettings) + KClientElementIdBase);
+	}
+
+inline HCR::TElementId ElementId_ClientName(TUint aClientToken)
+	{
+	return ((HCR::TElementId) ElementId_ClientSettingBase(aClientToken));
+	}
+
+inline HCR::TElementId ElementId_ClientPropertyFlag(TUint aClientToken)
+	{
+	return ((HCR::TElementId) (ElementId_ClientSettingBase(aClientToken) + 1));
+	}
+
+inline HCR::TElementId ElementId_ClientPreallocation(TUint aClientToken)
+	{
+	return ((HCR::TElementId) (ElementId_ClientSettingBase(aClientToken) + 2));
+	}
+
+inline HCR::TElementId ElementId_ClientStaticResource(TUint aClientToken, TUint aResource)
+	{
+	return ((HCR::TElementId) (ElementId_ClientSettingBase(aClientToken) + 3 + aResource));
+	}
+
+inline HCR::TElementId ElementId_ClientDynamicResource(TUint aClientToken, TUint aResource)
+	{
+	return ((HCR::TElementId) (ElementId_ClientSettingBase(aClientToken) + 3 + KStaticResourceTableSize + aResource));
+	}
+
+
+// Dynamic Resource Settings
+
+const TUint KDynamicResourceElementIdBase = 0x20000;
+const TUint KBitPerDynamicResourceSettings = 5; // 0 - 31, Max of 32 elements defined for use per dynamic resource
+
+inline TUint ElementId_DynamicResourceBase(TUint aDynamicResource)
+	{
+	return ((aDynamicResource << KBitPerDynamicResourceSettings) + KDynamicResourceElementIdBase);
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceName(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource)));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourcePropertyFlag(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 1));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceMaxLevel(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 2));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceMinLevel(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 3));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceDefaultLevel(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 4));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceDependencyMask1(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 5));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceDependencyMask2(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 6));
+	}
+
+inline HCR::TElementId ElementId_DynamicResourceDependencyMask3(TUint aDynamicResource)
+	{
+	return ((HCR::TElementId) (ElementId_DynamicResourceBase(aDynamicResource) + 7));
+	}
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/include/drivers/resourcecontrol_settings.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,29 @@
+// 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\include\drivers\resourcecontrol_settings.h
+//
+//
+
+#ifndef __RESOURCECONTROL_SETTINGS_H__
+#define __RESOURCECONTROL_SETTINGS_H__
+
+#include <drivers/hcr.h>
+
+const HCR::TElementId KPRMPoolSizeKernelClient = 0;
+const HCR::TElementId KPRMPoolSizeUserClient = 1;
+const HCR::TElementId KPRMPoolSizeClientLevel = 2;
+const HCR::TElementId KPRMPoolSizeClientRequest = 3;
+
+#endif
+
--- a/kernel/eka/include/drivers/smppower/idlehelper.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/drivers/smppower/idlehelper.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,24 +1,26 @@
 /*
 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* 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:  
+* Description: 
 * os\kernelhwsrv\kernel\eka\include\drivers\smpidlehelper.h
 * Helper classes required to implement CPU idle
 * functionality in a SMP BSP.
 *
 */
 
-
 /**
  @file
  @prototype
@@ -174,7 +176,7 @@
 	static void ClearIdleIPI();
 	static void DoWFI();//puts current CPU in wait for interrupt state
 	static TBool IsIntPending();
-	static TInt	IntPending();
+	static TUint32	IntPending();
 	static TUint32 GetTimerCount();//HW timer can be used for tracing
 	//Atomic checks used to synchronise cores going idle
 	static TBool ClearLocalAndCheckGlobalIdle(TUint32);
--- a/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,24 +1,26 @@
 /*
 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* 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:  
+* Description: 
 * os/kernelhwsrv/kernel/eka/include/drivers/smppower/sample_idlehandler/smpidlehandler.h
 * Example of a generic idle handler layer
 *
 */
 
 
-
 #ifndef __SMPIDLEHANDLER_H__
 #define __SMPIDLEHANDLER_H__
 
@@ -41,6 +43,8 @@
     
 
     DSMPIdleHandler();
+	virtual ~DSMPIdleHandler();
+
     /*
       called to init and bind the idle handler. After this call idle will be directed to idle handler
       @pre thread context, no locks no fast mutexes, interrupt on
--- a/kernel/eka/include/drivers/xyin.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/drivers/xyin.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1998-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,6 +27,7 @@
 #include <platform.h>
 #include <e32hal.h>
 
+
 #ifdef _DEBUG
 //#define __DIGITISER_DEBUG1__
 //#define __DIGITISER_DEBUG2__
@@ -180,6 +181,7 @@
 	TState iState;
 	TInt iCount;
 	TUint8 iPointerOn;
+	TInt iOrientation;	 			// HALData::TDigitizerOrientation
 	};
 
 
--- a/kernel/eka/include/e32math.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/e32math.h	Fri Jun 11 15:02:23 2010 +0300
@@ -456,11 +456,6 @@
 	IMPORT_C static TInt ATan(TReal &aTrg,const TReal &aSrc);
 	IMPORT_C static TInt ATan(TReal &aTrg,const TReal &aSrcY,const TReal &aSrcX);
 	IMPORT_C static TInt Cos(TReal &aTrg,const TReal &aSrc);
-	
-	/**
-	This function is not implemented by Symbian OS.
-	*/
-	IMPORT_C static TInt DtoR(TReal &aTrg,const TDesC &aSrc,TInt &aPos,const TChar aPoint);
 	IMPORT_C static TInt Exp(TReal &aTrg,const TReal &aSrc);
 	IMPORT_C static TInt Frac(TReal &aTrg,const TReal &aSrc);
 	IMPORT_C static TInt Int(TReal &aTrg,const TReal &aSrc);
--- a/kernel/eka/include/e32ver.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/e32ver.h	Fri Jun 11 15:02:23 2010 +0300
@@ -28,7 +28,7 @@
 
 const TInt KE32MajorVersionNumber=2;
 const TInt KE32MinorVersionNumber=0;
-const TInt KE32BuildVersionNumber=3076;
+const TInt KE32BuildVersionNumber=3085;
 
 const TInt KMachineConfigurationMajorVersionNumber=1;
 const TInt KMachineConfigurationMinorVersionNumber=0;
--- a/kernel/eka/include/kernel/kbma.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/kernel/kbma.h	Fri Jun 11 15:02:23 2010 +0300
@@ -39,6 +39,7 @@
 	IMPORT_C void Free(TInt aPos);
 	IMPORT_C void Alloc(TInt aStart, TInt aLength);
 	IMPORT_C void Free(TInt aStart, TInt aLength);
+	IMPORT_C TUint SelectiveAlloc(TInt aStart, TInt aLength);
 	IMPORT_C void SelectiveFree(TInt aStart, TInt aLength);
 	IMPORT_C TBool NotFree(TInt aStart, TInt aLength) const;
 	IMPORT_C TBool NotAllocated(TInt aStart, TInt aLength) const;
--- a/kernel/eka/include/kernel/kern_priv.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/kernel/kern_priv.h	Fri Jun 11 15:02:23 2010 +0300
@@ -2787,6 +2787,7 @@
 	static TUint NumberOfFreeDpPages();
 	static TUint NumberOfDirtyDpPages();
 	static TInt MovePage(TPhysAddr aOld, TPhysAddr& aNew, TUint aBlockZoneId, TBool aBlockRest);
+	static TInt MoveAndAllocPage(TPhysAddr aAddr, TZonePageType aPageType);
 	static TInt DiscardPage(TPhysAddr aAddr, TUint aBlockZoneId, TBool aBlockRest);
 	static void RamZoneClaimed(SZone* aZone);
 	static TInt RamDefragFault(TAny* aExceptionInfo);
--- a/kernel/eka/include/kernel/kerncorestats.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/kernel/kerncorestats.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/kernel/eka/include/memmodel/epoc/mmubase/mmubase.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/memmodel/epoc/mmubase/mmubase.h	Fri Jun 11 15:02:23 2010 +0300
@@ -526,8 +526,8 @@
 public:
 	TInt AllocRamPages(TPhysAddr* aPageList, TInt aNumPages, TZonePageType aPageType, TUint aBlockedZoneId=KRamZoneInvalidId, TBool aBlockRest=EFalse);
 	TInt ZoneAllocRamPages(TUint* aZoneIdList, TUint aZoneIdCount, TPhysAddr* aPageList, TInt aNumPages, TZonePageType aPageType);
-	TInt AllocContiguousRam(TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aPageType, TInt aAlign, TUint aBlockedZoneId=KRamZoneInvalidId, TBool aBlockRest=EFalse);
-	TInt ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aPageType, TInt aAlign);
+	TInt AllocContiguousRam(TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign);
+	TInt ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign);
 
 public:
 	TInt iPageSize;				// page size in bytes
--- a/kernel/eka/include/memmodel/epoc/mmubase/ramalloc.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/memmodel/epoc/mmubase/ramalloc.h	Fri Jun 11 15:02:23 2010 +0300
@@ -142,8 +142,14 @@
 	void FreeRamPages(TPhysAddr* aPageList, TInt aNumPages, TZonePageType aType);
 	TInt AllocRamPages(TPhysAddr* aPageList, TInt aNumPages, TZonePageType aType, TUint aBlockedZoneId=KRamZoneInvalidId, TBool aBlockRest=EFalse);
 	TInt ZoneAllocRamPages(TUint* aZoneIdList, TUint aZoneIdCount, TPhysAddr* aPageList, TInt aNumPages, TZonePageType aType);
-	TInt AllocContiguousRam(TUint aNumPages, TPhysAddr& aPhysAddr, TZonePageType aType, TInt aAlign=0, TUint aBlockZoneId=KRamZoneInvalidId, TBool aBlockRest=EFalse);
-	TInt ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aType, TInt aAlign);
+	TInt AllocContiguousRam(TUint aNumPages, TPhysAddr& aPhysAddr, TInt aAlign=0);
+#if !defined(__MEMMODEL_MULTIPLE__) && !defined(__MEMMODEL_MOVING__)
+	void BlockContiguousRegion(TPhysAddr aAddrBase, TUint aNumPages);
+	void UnblockSetAllocRuns(TUint& aOffset1, TUint& aOffset2, TUint aRunLength1, TUint aRunLength2, TUint& aAllocLength, TUint& aAllocStart);
+	void UnblockContiguousRegion(TPhysAddr aAddrBase, TUint aNumPages);
+	TBool ClearContiguousRegion(TPhysAddr aAddrBase, TPhysAddr aZoneBase, TUint aNumPages, TInt& aOffset);
+#endif
+	TInt ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign);
 #ifdef _DEBUG
 	void DebugDump();
 #endif
@@ -158,6 +164,7 @@
 	TInt GetZoneAddress(TUint aZoneId, TPhysAddr& aPhysBase, TUint& aNumPages);
 	TInt HalFunction(TInt aFunction, TAny* a1, TAny* a2);
 	TInt NextAllocatedPage(SZone* aZone, TUint& aOffset, TZonePageType aType) const;
+	TInt NextAllocatedRun(SZone* aZone, TUint& aOffset, TUint aEndOffset, TZonePageType aType) const;
 	TUint GenDefragFreePages(TZonePageType aType) const;
 	SZone* GeneralDefragStart0(TGenDefragStage& aStage, TUint& aRequiredToBeDiscarded);
 	SZone* GeneralDefragNextZone0();
@@ -205,9 +212,7 @@
 	SDblQueLink* iZoneGeneralPrefLink;	/**< Link to the current RAM zone being defragged*/
 	SDblQueLink* iZoneGeneralTmpLink;	/**< Link to the current RAM zone being defragged*/
 	TUint iZoneGeneralStage;			/**< The current stage of any general defrag operation*/
-#ifdef _DEBUG
-	TBool iAllowBmaVerify;
-#endif
+	TUint iContiguousReserved;			/**< The count of the number of separate contiguous allocations that have reserved pages*/
 	};
 
 #endif
--- a/kernel/eka/include/u32hal.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/include/u32hal.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1995-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"
@@ -2015,7 +2015,23 @@
     @see TPckgBuf
     @see TDigitiserInfoV02
     */
-	EDigitiserHal3DInfo
+	EDigitiserHal3DInfo,
+
+	/**
+	Get or sets the digitiser driver's current orientation property.
+	Requirements of the HAL function handler's 2nd, 3rd and 4th parameters:
+	
+	- TInt aFunction : This enum value.
+    - TAny* a1 : if Set, a TDigitiserOrientation value the driver should now use	
+			   : If Get, a pointer to a TDigitiserOrientation. The HAL function 
+			   : needs to set its value to the current value used in the driver.	
+	- TAny* a2 : Cast to a TInt. Should be assigned the value 
+			   : EFalse - Get property; ETrue - Set property 
+	
+	@see HALData::TDigitiserOrientation
+	@capability WriteDeviceData To set the property, None to read
+	*/
+	EDigitiserOrientation
 
 	};
 
--- a/kernel/eka/kernel/device.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/device.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -629,9 +629,9 @@
 			r=pdev.FindByFullName(h,n,fn);
 			if (r!=KErrNone)
 				break;
-			__KTRACE_OPT(KDEVICE,Kern::Printf("Found PDD %lS",&fn));
+			__KTRACE_OPT(KDEVICE,Kern::Printf("Found PDD %S",&fn));
 			pP=(DPhysicalDevice *)pdev.At(h);
-			__KTRACE_OPT(KDEVICE,{TBuf<16> verBuf(iVersion.Name()); Kern::Printf("unit=%d, info=%08x, ver=%lS",aInfo.iUnit,aInfo.iInfo,&verBuf);});
+			__KTRACE_OPT(KDEVICE,{TBuf<16> verBuf(iVersion.Name()); Kern::Printf("unit=%d, info=%08x, ver=%S",aInfo.iUnit,aInfo.iInfo,&verBuf);});
 			r=pP->Validate(aInfo.iUnit,aInfo.iInfo,iVersion);
 			__KTRACE_OPT(KDEVICE,Kern::Printf("DPhysicalDevice::Validate returns %d",r));
 			if (r!=KErrNotSupported)
@@ -692,7 +692,7 @@
 		info.iPhysicalDevice=&pddName;
 		}
 
-	__KTRACE_OPT(KDEVICE,Kern::Printf("Exec::ChannelCreate LDD %lS PDD %lS Unit %d",&lddName,info.iPhysicalDevice,info.iUnit));
+	__KTRACE_OPT(KDEVICE,Kern::Printf("Exec::ChannelCreate LDD %S PDD %S Unit %d",&lddName,info.iPhysicalDevice,info.iUnit));
 
 	TInt r=Kern::ValidateName(lddName);
 	if (r<0)
--- a/kernel/eka/kernel/kerncorestats.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/kerncorestats.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 1994-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/kernel/eka/kernel/object.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/object.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -441,7 +441,7 @@
 EXPORT_C TInt DObject::SetName(const TDesC* aName)
 	{
 	CHECK_PRECONDITIONS(MASK_THREAD_CRITICAL,"DObject::SetName");		
-	__KTRACE_OPT(KOBJECT,Kern::Printf("SetName %O (%lS)",this,aName));
+	__KTRACE_OPT(KOBJECT,Kern::Printf("SetName %O (%S)",this,aName));
 	TAny* pN=NULL;
 	if (aName)
 		{
@@ -456,7 +456,7 @@
 	pN = __e32_atomic_swp_ord_ptr(&iName, pN);
 	if (iName)
 		{
-		__KTRACE_OPT(KOBJECT,Kern::Printf("Name is now %lS",iName));
+		__KTRACE_OPT(KOBJECT,Kern::Printf("Name is now %S",iName));
 		}
 	else
 		{
@@ -1164,7 +1164,7 @@
 			__KTRACE_OPT(KOBJECT,Kern::Printf("Container %d created OK",pC->UniqueID()));
 			return pC;
 			}
-		__KTRACE_OPT(KOBJECT,Kern::Printf("Error %d creating mutex %lS",r,&n));
+		__KTRACE_OPT(KOBJECT,Kern::Printf("Error %d creating mutex %S",r,&n));
 		}
 	return NULL;
 	}
--- a/kernel/eka/kernel/power.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/power.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -194,7 +194,7 @@
 // Called in CS
 void DPowerManager::AppendHandler(DPowerHandler* aPh)
 	{ // called by drivers (power handler)
-	__KTRACE_OPT(KPOWER,Kern::Printf("PowerManger::AppendHandler('%lS')", &aPh->iName));
+	__KTRACE_OPT(KPOWER,Kern::Printf("PowerManger::AppendHandler('%S')", &aPh->iName));
 	__ASSERT_CRITICAL;
 	//Check to ensure that handler is not added multiple times and not part of any other list
 	__PM_ASSERT(!(aPh->iPrev) && !(aPh->iNext));
@@ -220,7 +220,7 @@
 // Called in CS
 void DPowerManager::RemoveHandler(DPowerHandler* aPh)
 	{ // called by drivers (power handler)
-	__KTRACE_OPT(KPOWER,Kern::Printf("PowerManger::RemoveHandler('%lS')", &aPh->iName));
+	__KTRACE_OPT(KPOWER,Kern::Printf("PowerManger::RemoveHandler('%S')", &aPh->iName));
 	__ASSERT_CRITICAL;
 	Lock();
 	__PM_ASSERT(aPh);
@@ -529,7 +529,7 @@
 	iStatus |= EDone;
 #endif
 	NKern::Lock();
-	__KTRACE_OPT(KPOWER,Kern::Printf("DPowerHandler::Done('%lS') sem=0x%x", &iName, iSem));
+	__KTRACE_OPT(KPOWER,Kern::Printf("DPowerHandler::Done('%S') sem=0x%x", &iName, iSem));
 	NFastSemaphore* sem = (NFastSemaphore*)__e32_atomic_swp_ord_ptr(&iSem, 0);
 	if (sem)
 		sem->Signal();
--- a/kernel/eka/kernel/scodeseg.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/scodeseg.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -671,7 +671,7 @@
 	const TInt KValidAttrMask =
 		ECodeSegAttKernel | ECodeSegAttGlobal | ECodeSegAttFixed | ECodeSegAttABIMask | ECodeSegAttHDll | ECodeSegAttExpVer | ECodeSegAttNmdExpData | ECodeSegAttSMPSafe;
 	
-	__KTRACE_OPT(KDLL,Kern::Printf("DCodeSeg::Create %08x file %lS ver %08x process %O",this,&aInfo.iFileName,aInfo.iModuleVersion,aProcess));
+	__KTRACE_OPT(KDLL,Kern::Printf("DCodeSeg::Create %08x file %S ver %08x process %O",this,&aInfo.iFileName,aInfo.iModuleVersion,aProcess));
 	TInt32 uid1=aInfo.iUids.iUid[0].iUid;
 	if (uid1!=KDynamicLibraryUidValue && uid1!=KExecutableImageUidValue)
 		return KErrNotSupported;
@@ -1420,7 +1420,7 @@
 	{
 	TCodeSegCreateInfo info;
 	kumemget32(&info, &aInfo, sizeof(info));
-	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::CodeSegCreate %lS ver %08x", &info.iFileName, info.iModuleVersion));
+	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::CodeSegCreate %S ver %08x", &info.iFileName, info.iModuleVersion));
 	__KTRACE_OPT(KDLL,DumpCodeSegCreateInfo(info));
 	K::CheckFileServerAccess();			// only F32 can use this exec function
 	info.iHandle=NULL;
@@ -1448,7 +1448,7 @@
 	{
 	TCodeSegCreateInfo info;
 	kumemget32(&info, &aInfo, sizeof(info));
-	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::CodeSegLoaded %lS ver %08x", &info.iFileName, info.iModuleVersion));
+	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::CodeSegLoaded %S ver %08x", &info.iFileName, info.iModuleVersion));
 	__KTRACE_OPT(KDLL,DumpCodeSegCreateInfo(info));
 	DCodeSeg* pS=DCodeSeg::VerifyCallerAndHandle(info.iHandle);
 	Kern::AccessCode();
@@ -1667,7 +1667,7 @@
 	{
 	TProcessCreateInfo info;
 	kumemget32(&info, &aInfo, sizeof(info));
-	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::ProcessCreate %lS ver %08x", &info.iFileName, info.iModuleVersion));
+	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::ProcessCreate %S ver %08x", &info.iFileName, info.iModuleVersion));
 	__KTRACE_OPT(KDLL,DumpProcessCreateInfo(info));
 	K::CheckFileServerAccess();			// only F32 can use this exec function
 	if (info.iHandle)
@@ -1794,7 +1794,7 @@
 	{
 	TProcessCreateInfo info;
 	kumemget32(&info, &aInfo, sizeof(info));
-	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::ProcessLoaded %lS ver %08x", &info.iFileName, info.iModuleVersion));
+	__KTRACE_OPT2(KEXEC,KDLL,Kern::Printf("Exec::ProcessLoaded %S ver %08x", &info.iFileName, info.iModuleVersion));
 	__KTRACE_OPT(KDLL,DumpProcessCreateInfo(info));
 	K::CheckFileServerAccess();			// only F32 can use this exec function
 	NKern::LockSystem();
--- a/kernel/eka/kernel/server.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/server.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -840,7 +840,7 @@
 	TBuf<KMaxExitCategoryName> cat;
 	if (aType==EExitPanic && aCategory)
 		GetCategory(cat,*aCategory);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadKill %d,%d,%lS",aType,aReason,&cat));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadKill %d,%d,%S",aType,aReason,&cat));
 	K::CheckKernelUnlocked();
 	NKern::LockSystem();
 	DThread* pT=(DThread*)K::ObjectFromHandle(aHandle,EThread);
@@ -856,7 +856,7 @@
 	TBuf<KMaxExitCategoryName> cat;
 	if (aType==EExitPanic && aCategory)
 		GetCategory(cat,*aCategory);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ProcessKill %d,%d,%lS",aType,aReason,&cat));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ProcessKill %d,%d,%S",aType,aReason,&cat));
 	K::CheckKernelUnlocked();
 	NKern::LockSystem();
 	DProcess* pP=(DProcess*)K::ThreadEnterCS(aHandle,EProcess);
@@ -932,7 +932,7 @@
 	{
 	CHECK_PRECONDITIONS(MASK_THREAD_STANDARD,"Kern::PanicCurrentThread");			
 	// enter with system unlocked
-	__KTRACE_OPT(KEXEC,Kern::Printf("Kern::PanicCurrentThread %lS %d",&aCategory,aReason));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Kern::PanicCurrentThread %S %d",&aCategory,aReason));
 	K::CheckKernelUnlocked();
 	NKern::LockSystem();
 	TheCurrentThread->Die(EExitPanic,aReason,aCategory);	// doesn't return
--- a/kernel/eka/kernel/sexec.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/sexec.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -36,7 +36,7 @@
 	TFindHandle h;
 	Kern::KUDesGet(match,aName);
 	kumemget32(&h,&aFindHandle,sizeof(h));
-	__KTRACE_OPT(KEXEC,Kern::Printf("ObjN: %lS %08x", &match, h.Handle()));
+	__KTRACE_OPT(KEXEC,Kern::Printf("ObjN: %S %08x", &match, h.Handle()));
 	NKern::ThreadEnterCS();
 	TInt r=pC->FindByFullName(h, match, fn);
 	NKern::ThreadLeaveCS();
@@ -812,7 +812,7 @@
 	TKName n;
 	if (aName)
 		Kern::KUDesGet(n,*aName);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ChunkCreate %lS",&n));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ChunkCreate %S",&n));
 	TChunkCreate uinfo;
 	SChunkCreateInfo info;
 	kumemget32(&uinfo,&anInfo,sizeof(uinfo));
@@ -938,9 +938,9 @@
 
 TInt ExecHandler::OpenObject(TObjectType aObjType, const TDesC8& aName, TOwnerType aType)
 	{
-	__KTRACE_OPT(KTHREAD,Kern::Printf("Exec::OpenObject %lS",&aName));
 	TFullName n;
 	Kern::KUDesGet(n,aName);
+	__KTRACE_OPT(KTHREAD,Kern::Printf("Exec::OpenObject %S",&n));
 	if (Kern::ValidateFullName(n)!=KErrNone)
 		K::PanicKernExec(EBadName);
 	if ((TUint)aObjType>=(TUint)ENumObjectTypes)
@@ -1012,12 +1012,12 @@
 		{
 		Kern::KUDesGet(n,*aName);
 		pN=&n;
+		__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::MutexCreate %S",pN));
 		}
 	else if (aType==EOwnerThread)
 		pO=TheCurrentThread;
 	else
 		pO=TheCurrentThread->iOwningProcess;
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::MutexCreate %lS",aName));
 	NKern::ThreadEnterCS();
 	DMutex* pM;
 	TInt r=K::MutexCreate(pM, *pN, pO, ETrue, KMutexOrdUser);
@@ -1036,7 +1036,6 @@
 
 TInt ExecHandler::SemaphoreCreate(const TDesC8* aName, TInt aCount, TOwnerType aType)
 	{
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::SemaphoreCreate %lS",aName));
 	TKName n;
 	DObject* pO=NULL;
 	const TDesC* pN=NULL;
@@ -1044,6 +1043,7 @@
 		{
 		Kern::KUDesGet(n,*aName);
 		pN=&n;
+		__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::SemaphoreCreate %S",pN));
 		}
 	else if (aType==EOwnerThread)
 		pO=TheCurrentThread;
@@ -1230,7 +1230,7 @@
 	{
 	TKName n;
 	Kern::KUDesGet(n,aName);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadRename %lS",&n));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadRename %S",&n));
 	NKern::LockSystem();
 	DThread* pT=(DThread*)K::ThreadEnterCS(aHandle,EThread);
 	if (pT!=TheCurrentThread &&
@@ -1255,7 +1255,7 @@
 	{
 	TKName n;
 	Kern::KUDesGet(n,aName);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ProcessRename %lS",&n));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ProcessRename %S",&n));
 	NKern::LockSystem();
 	DProcess* pP=(DProcess*)K::ThreadEnterCS(aHandle,EProcess);
 	if (pP->iSecurityZone!=TheCurrentThread->iOwningProcess->iSecurityZone)
@@ -1907,7 +1907,7 @@
 	{
 	TKName n;
 	Kern::KUDesGet(n,aName);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadCreate %lS",&n));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::ThreadCreate %S",&n));
 	TUint32 infoBuf[KMaxThreadCreateInfo/sizeof(TUint32)];
 	SThreadCreateInfo& info = *(SThreadCreateInfo*)infoBuf;
 	kumemget32(&info, &aInfo, sizeof(SThreadCreateInfo));
@@ -1942,7 +1942,7 @@
 
 TInt K::MutexCreate(DMutex*& aMutex, const TDesC& aName, DObject* anOwner, TBool aVisible, TUint aOrder)
 	{
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("K::MutexCreate %lS owner %O visible=%d order=%02x",&aName,anOwner,aVisible,aOrder));
+	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("K::MutexCreate %S owner %O visible=%d order=%02x",&aName,anOwner,aVisible,aOrder));
 	DMutex* pM=new DMutex;
 	TInt r=KErrNoMemory;
 	if (pM)
@@ -2009,7 +2009,7 @@
 EXPORT_C TInt Kern::ThreadCreate(SThreadCreateInfo& aInfo)
 	{
 	CHECK_PRECONDITIONS(MASK_THREAD_CRITICAL,"Kern::ThreadCreate");		
-	__KTRACE_OPT(KEXEC,Kern::Printf("Kern::ThreadCreate %lS",&aInfo.iName));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Kern::ThreadCreate %S",&aInfo.iName));
 	aInfo.iHandle=NULL;
 	DThread* pT=NULL;
 	TBool svc = aInfo.iType!=EThreadUser;
--- a/kernel/eka/kernel/sipc.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/sipc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -2044,7 +2044,7 @@
 	TBuf<KMaxExitCategoryName> cat;
 	if (aType==EExitPanic && aCategory)
 		GetCategory(cat,*aCategory);
-	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::MessageKill %d,%d,%lS",aType,aReason,&cat));
+	__KTRACE_OPT(KEXEC,Kern::Printf("Exec::MessageKill %d,%d,%S",aType,aReason,&cat));
 	K::CheckKernelUnlocked();
 	NKern::LockSystem();
 	RMessageK* pM = RMessageK::MessageK(aHandle);
--- a/kernel/eka/kernel/skernel.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/skernel.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -53,7 +53,7 @@
 // Enter and return with system unlocked.
 TInt DSemaphore::Create(DObject* aOwner, const TDesC* aName, TInt aInitialCount, TBool aVisible)
 	{
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DSemaphore::Create owner %O, name %lS, init count=%d, visible=%d",aOwner,aName,aInitialCount,aVisible));
+	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DSemaphore::Create owner %O, name %S, init count=%d, visible=%d",aOwner,aName,aInitialCount,aVisible));
 	if (aInitialCount<0)
 		return KErrArgument;
 	SetOwner(aOwner);
@@ -306,7 +306,7 @@
 // Enter and return with system unlocked.
 TInt DMutex::Create(DObject* aOwner, const TDesC* aName, TBool aVisible, TUint aOrder)
 	{
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DMutex::Create owner %O, name %lS, visible=%d, order=%02x",aOwner,aName,aVisible,aOrder));
+	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DMutex::Create owner %O, name %S, visible=%d, order=%02x",aOwner,aName,aVisible,aOrder));
 	iOrder = (TUint8)aOrder;
 	SetOwner(aOwner);
 	TInt r=KErrNone;
@@ -654,7 +654,7 @@
 // Enter and return with system unlocked.
 TInt DCondVar::Create(DObject* aOwner, const TDesC* aName, TBool aVisible)
 	{
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DCondVar::Create owner %O, name %lS, visible=%d",aOwner,aName,aVisible));
+	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("DCondVar::Create owner %O, name %S, visible=%d",aOwner,aName,aVisible));
 	SetOwner(aOwner);
 	TInt r=KErrNone;
 	if (aName && aName->Length())
@@ -1080,12 +1080,12 @@
 		{
 		Kern::KUDesGet(n,*aName);
 		pN=&n;
+		__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::CondVarCreate %S", pN));
 		}
 	else if (aType==EOwnerThread)
 		pO=TheCurrentThread;
 	else
 		pO=TheCurrentThread->iOwningProcess;
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Exec::CondVarCreate %lS", aName));
 	NKern::ThreadEnterCS();
 	TInt r=KErrNoMemory;
 	DCondVar* pV = new DCondVar;
--- a/kernel/eka/kernel/smonitor.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/smonitor.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -322,7 +322,7 @@
 		}
 	PrintLine(buf);
 	Printf("Default priority %d WaitLink Priority %d\r\n",pT->iDefaultPriority,pT->iWaitLink.iPriority);
-	Printf("ExitInfo %d,%d,%lS\r\n",pT->iExitType,pT->iExitReason,&pT->iExitCategory);
+	Printf("ExitInfo %d,%d,%S\r\n",pT->iExitType,pT->iExitReason,&pT->iExitCategory);
 	Printf("Flags %08x, Handles %08x\r\n",pT->iFlags,&pT->iHandles);
 	Printf("Supervisor stack base %08x size %x\r\n", pT->iSupervisorStack, pT->iSupervisorStackSize);
 	Printf("User stack base %08x size %x\r\n", pT->iUserStackRunAddress, pT->iUserStackSize);
@@ -493,7 +493,7 @@
  
 void Monitor::DumpProcessData(DProcess* pP)
 	{
-	Printf("ExitInfo %d,%d,%lS\r\n",pP->iExitType,pP->iExitReason,&pP->iExitCategory);
+	Printf("ExitInfo %d,%d,%S\r\n",pP->iExitType,pP->iExitReason,&pP->iExitCategory);
 	Printf("Flags %08x, Handles %08x, Attributes %08x\r\n",pP->iFlags,&pP->iHandles,pP->iAttributes);
 	Printf("DataBssChunk %08x, CodeSeg %08x\r\n",pP->iDataBssStackChunk,pP->iCodeSeg);
 	Printf("DllLock %08x, Process Lock %08x SID %08x\r\n",pP->iDllLock,pP->iProcessLock,pP->iS.iSecureId);
--- a/kernel/eka/kernel/sprocess.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/sprocess.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -324,7 +324,7 @@
 
 	iGeneration = NextGeneration(aName, iUids.iUid[2]);
 
-	__KTRACE_OPT(KTHREAD,Kern::Printf("DProcess::Rename %O to %lS",this,&aName));
+	__KTRACE_OPT(KTHREAD,Kern::Printf("DProcess::Rename %O to %S",this,&aName));
 	TInt r = SetName(&aName);
 #ifdef BTRACE_THREAD_IDENTIFICATION
 	Name(n);
@@ -530,7 +530,7 @@
 // Kill a process. Enter and return with system unlocked and calling thread in critical section.
 //
 	{
-	__KTRACE_OPT(KPROC,Kern::Printf("Process %O Die: %d %d %lS",this,aType,aReason,&aCategory));
+	__KTRACE_OPT(KPROC,Kern::Printf("Process %O Die: %d %d %S",this,aType,aReason,&aCategory));
 
 	TInt r=WaitProcessLock();
 	if (r!=KErrNone)
@@ -612,7 +612,7 @@
 TInt DProcess::NewThread(DThread*& aThread, SThreadCreateInfo& anInfo, TInt* aHandle, TOwnerType aType)
 	{
 	__KTRACE_OPT(KTHREAD,Kern::Printf("NewThread proc %O, func %08x ptr %08x",this,anInfo.iFunction,anInfo.iPtr));
-	__KTRACE_OPT(KTHREAD,Kern::Printf("type %d name %lS pri %d",anInfo.iType,&anInfo.iName,anInfo.iInitialThreadPriority));
+	__KTRACE_OPT(KTHREAD,Kern::Printf("type %d name %S pri %d",anInfo.iType,&anInfo.iName,anInfo.iInitialThreadPriority));
 	if (aHandle)
 		*aHandle=0;
 	TInt r=GetNewThread(aThread,anInfo);
--- a/kernel/eka/kernel/sthread.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/sthread.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -699,7 +699,7 @@
 #ifdef KPANIC
 	if (iExitType==EExitPanic)
 		{
-		__KTRACE_OPT2(KPANIC,KSCHED,Kern::Printf("Thread %O Panic %lS %d",this,&iExitCategory,iExitReason));
+		__KTRACE_OPT2(KPANIC,KSCHED,Kern::Printf("Thread %O Panic %S %d",this,&iExitCategory,iExitReason));
 		}
 	else if (iExitType==EExitTerminate)
 		{
@@ -830,7 +830,7 @@
 void DThread::Die(TExitType aType, TInt aReason, const TDesC& aCategory)
 	{
 	CHECK_PRECONDITIONS(MASK_SYSTEM_LOCKED,"DThread::Die");				
-	__KTRACE_OPT(KTHREAD,Kern::Printf("Thread %O Die: %d,%d,%lS",this,aType,aReason,&aCategory));
+	__KTRACE_OPT(KTHREAD,Kern::Printf("Thread %O Die: %d,%d,%S",this,aType,aReason,&aCategory));
 	SetExitInfo(aType,aReason,aCategory);
 
 	// If necessary, decrement count of running user threads in this process.  We get here if the
@@ -923,7 +923,7 @@
 
 TInt DThread::Create(SThreadCreateInfo& aInfo)
 	{
-	__KTRACE_OPT(KTHREAD,Kern::Printf("DThread::Create %lS owner %O size %03x", &aInfo.iName,
+	__KTRACE_OPT(KTHREAD,Kern::Printf("DThread::Create %S owner %O size %03x", &aInfo.iName,
 																iOwningProcess, aInfo.iTotalSize));
 
 	if (aInfo.iTotalSize < (TInt)sizeof(SThreadCreateInfo))
@@ -1268,7 +1268,7 @@
 	TInt r=K::Containers[EThread]->CheckUniqueFullName(this,aName);
 	if (r==KErrNone)
 		{
-		__KTRACE_OPT(KTHREAD,Kern::Printf("DThread::Rename %O to %lS",this,&aName));
+		__KTRACE_OPT(KTHREAD,Kern::Printf("DThread::Rename %O to %S",this,&aName));
 		r=SetName(&aName);
 #ifdef BTRACE_THREAD_IDENTIFICATION
 		Name(n);
--- a/kernel/eka/kernel/sutils.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/kernel/sutils.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1580,7 +1580,7 @@
 
 TInt DThread::OpenObject(TOwnerType aType, const TDesC& aName, TInt& aHandle, DObject*& anObj, TInt aObjType)
 	{
-	__KTRACE_OPT(KEXEC,Kern::Printf("DThread::OpenObject %lS",&aName));
+	__KTRACE_OPT(KEXEC,Kern::Printf("DThread::OpenObject %S",&aName));
 	anObj=NULL;
 	TInt r=Kern::ValidateFullName(aName);
 	if (r!=KErrNone)
@@ -2373,7 +2373,7 @@
 EXPORT_C TInt Kern::SemaphoreCreate(DSemaphore*& aSem, const TDesC& aName, TInt aInitialCount)
 	{
 	CHECK_PRECONDITIONS(MASK_THREAD_CRITICAL,"Kern::SemaphoreCreate");				
-	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Kern::SemaphoreCreate %lS init %d", &aName, aInitialCount));
+	__KTRACE_OPT(KSEMAPHORE,Kern::Printf("Kern::SemaphoreCreate %S init %d", &aName, aInitialCount));
 	TInt r = KErrNoMemory;
 	DSemaphore* pS = new DSemaphore;
 	if (pS)
--- a/kernel/eka/klib/bma.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/klib/bma.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -762,6 +762,49 @@
 	}
 
 
+/**	Allocates a specific range of bit positions.
+	
+	The specified range must lie within the total range for this allocator but it is
+	not necessary that all the positions are currently free.
+
+	@param	aStart	First position to allocate.
+	@param	aLength	Number of consecutive positions to allocate, must be >0.
+	@return The number of previously free positions that were allocated.
+ */
+EXPORT_C TUint TBitMapAllocator::SelectiveAlloc(TInt aStart, TInt aLength)
+	{
+	__ASSERT_ALWAYS(TUint(aStart) < TUint(iSize), TBMA_FAULT());
+	__ASSERT_ALWAYS(TUint(aStart + aLength) >= TUint(aStart), TBMA_FAULT());
+	__ASSERT_ALWAYS(TUint(aStart + aLength) <= TUint(iSize), TBMA_FAULT());
+	TInt wix = aStart >> 5;
+	TInt sbit = aStart & 31;
+	TUint32* pW = iMap + wix;
+	iAvail -= aLength;	// update free count assuming no positions already allocated
+	TInt ebit = sbit + aLength;
+	if (ebit < 32)
+		{
+		TUint32 b = ((0xffffffffu >> aLength) >> sbit) | ~(0xffffffffu >> sbit);
+		TUint32 w = *pW;
+		*pW = w & b;	// mark all positions allocated
+		TUint allocated = __e32_bit_count_32(~w & ~b);
+		iAvail += allocated;	// increase free count by number of positions already allocated
+		return aLength - allocated;
+		}
+	TUint32 b = ~(0xffffffffu >> sbit);
+	while (ebit > 0)
+		{
+		TUint32 w = *pW;
+		*pW++ = w & b;		// mark all positions allocated
+		TUint allocated = __e32_bit_count_32(~w & ~b);
+		iAvail += allocated;	// increase free count by number of positions already allocated
+		aLength -= allocated;
+		ebit -= 32;
+		b = (ebit >= 32)? 0 : 0xffffffff >> ebit;
+		}
+	return aLength;
+	}
+
+
 /** Copies a range from another allocator, mark remainder as occupied.
 
 	Values of bit positions from aFirst to aFirst+aLen-1 inclusive in allocator
--- a/kernel/eka/memmodel/emul/win32/mcodeseg.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/emul/win32/mcodeseg.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -66,8 +66,8 @@
 	Kern::Printf("iAccessCount = %d", a.iAccessCount);
 	Kern::Printf("iEntryPtVeneer = %08x", a.iEntryPtVeneer);
 	Kern::Printf("iFileEntryPoint = %08x", a.iFileEntryPoint);
-	Kern::Printf("iFileName = %lS", a.iFileName);
-	Kern::Printf("iRootName = %lS", &a.iRootName);
+	Kern::Printf("iFileName = %S", a.iFileName);
+	Kern::Printf("iRootName = %S", &a.iRootName);
 	Kern::Printf("iExtOffset = %d", a.iExtOffset);
 	Kern::Printf("iModuleVersion = %08x", a.iModuleVersion);
 	Kern::Printf("iUids = %08x %08x %08x", uid[0], uid[1], uid[2]);
@@ -1111,7 +1111,7 @@
 // in order to make them appear to be in z:\system\libs
 void P::NormalizeExecutableFileName(TDes& a)
 	{
-	__KTRACE_OPT(KDLL, Kern::Printf("NormalizeExecutableFileName %lS", &a));
+	__KTRACE_OPT(KDLL, Kern::Printf("NormalizeExecutableFileName %S", &a));
 	if (a.Length()<3 || a[1]!=':' || a[2]!='\\')
 		{
 		// don't have a drive so assume in 'ROM'
@@ -1120,7 +1120,7 @@
 		if (initial.Length()==0 || initial[0]!='\\')
 			a.Append('\\');
 		a+=initial;
-		__KTRACE_OPT(KDLL, Kern::Printf("NormalizeExecutableFileName -> %lS", &a));
+		__KTRACE_OPT(KDLL, Kern::Printf("NormalizeExecutableFileName -> %S", &a));
 		}
 	}
 
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mdefrag.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mdefrag.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -124,7 +124,8 @@
 
 TInt M::MovePage(TPhysAddr aOld, TPhysAddr& aNew, TUint aBlockZoneId, TBool aBlockRest)
 	{
-	TInt r;
+	// Returns this when page is not paged or managed or free but is a real RAM page.
+	TInt r = KErrNotSupported;
 
 	// get memory object corresponding to the page...
 	DMemoryObject* memory = 0;
@@ -136,30 +137,76 @@
 			{// The page is paged so let the pager handle it.
 			return ThePager.DiscardPage(pi, aBlockZoneId, aBlockRest);
 			}
-		if (pi->Type()==SPageInfo::EManaged)
-			memory = pi->Owner();
-		}
-	MmuLock::Unlock();
-
-	// Note, whilst we hold the RamAllocLock the page can't change it's use
-	// and we can safely assume that it still belongs to the memory object
-	// at a fixed page index.
-	// Also, as memory objects can't be destroyed whilst they still own pages
-	// we can safely access this object without taking an explicit referernce,
-	// i.e. we don't need to Open() the memory object.
-	if (!pi)
-		{// page info for aOld not found so aOld is not a RAM page...
-		r = KErrArgument;
-		}
-	else if(!memory)
-		{
-		// page does not have a memory manager, so we can't move it...
-		r = KErrNotSupported;
+		switch (pi->Type())
+			{
+			case SPageInfo::EManaged:
+				memory = pi->Owner();
+				// Note, whilst we hold the RamAllocLock the page can't change it's use
+				// and we can safely assume that it still belongs to the memory object
+				// at a fixed page index.
+				// Also, as memory objects can't be destroyed whilst they still own pages
+				// we can safely access this object without taking an explicit reference,
+				// i.e. we don't need to Open() the memory object.
+				MmuLock::Unlock();
+				// move page...
+				r = memory->iManager->MovePage(memory, pi, aNew, aBlockZoneId, aBlockRest);
+				break;
+			case SPageInfo::EUnused:
+				r = KErrNotFound;	// This page is free so nothing to do.
+				// Fall through..
+			default:
+				MmuLock::Unlock();
+			}
 		}
 	else
-		{
-		// move page...
-		r = memory->iManager->MovePage(memory, pi, aNew, aBlockZoneId, aBlockRest);
+		{// page info for aOld not found so aOld is not a RAM page...
+		MmuLock::Unlock();
+		r = KErrArgument;
 		}
 	return r;
 	}
+
+
+TInt M::MoveAndAllocPage(TPhysAddr aAddr, TZonePageType aPageType)
+	{
+	// Returns this when page is not paged or managed or free but is a real RAM page.
+	TInt r = KErrNotSupported;
+
+	// get memory object corresponding to the page...
+	DMemoryObject* memory = 0;
+	MmuLock::Lock();
+	SPageInfo* pi = SPageInfo::SafeFromPhysAddr(aAddr & ~KPageMask);
+	if(pi)
+		{
+		if (pi->PagedState() != SPageInfo::EUnpaged)
+			{// The page is paged so let the pager handle it.
+			return ThePager.DiscardAndAllocPage(pi, aPageType);
+			}
+		switch (pi->Type())
+			{
+			case SPageInfo::EManaged:
+				memory = pi->Owner();
+				// Note, whilst we hold the RamAllocLock the page can't change it's use
+				// and we can safely assume that it still belongs to the memory object
+				// at a fixed page index.
+				// Also, as memory objects can't be destroyed whilst they still own pages
+				// we can safely access this object without taking an explicit referernce,
+				// i.e. we don't need to Open() the memory object.
+				MmuLock::Unlock();
+				// move page...
+				r = memory->iManager->MoveAndAllocPage(memory, pi, aPageType);
+				break;
+			case SPageInfo::EUnused:
+				r = KErrNone;	// This page is free so nothing to do.
+				// Fall through..
+			default:
+				MmuLock::Unlock();
+			}
+		}
+	else
+		{// page info for aAddr not found so aAddr is not a RAM page...
+		MmuLock::Unlock();
+		r = KErrArgument;
+		}
+	return r;
+	}
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -134,6 +134,13 @@
 	return KErrNotSupported;
 	}
 
+
+TInt DMemoryManager::MoveAndAllocPage(DMemoryObject*, SPageInfo*, TZonePageType)
+	{
+	return KErrNotSupported;
+	}
+
+
 TZonePageType DMemoryManager::PageType()
 	{// This should not be invoked on memory managers that do not use the methods
 	// AllocPages() and FreePages().
@@ -721,6 +728,7 @@
 public:
 	// from DMemoryManager...
 	virtual TInt MovePage(DMemoryObject* aMemory, SPageInfo* aOldPageInfo, TPhysAddr& aNewPage, TUint aBlockZoneId, TBool aBlockRest);
+	virtual TInt MoveAndAllocPage(DMemoryObject* aMemory, SPageInfo* aPageInfo, TZonePageType aPageType);
 	virtual TInt HandleFault(	DMemoryObject* aMemory, TUint aIndex, DMemoryMapping* aMapping, 
 								TUint aMapInstanceCount, TUint aAccessPermissions);
 	virtual TZonePageType PageType();
@@ -887,6 +895,18 @@
 	}
 
 
+TInt DMovableMemoryManager::MoveAndAllocPage(DMemoryObject* aMemory, SPageInfo* aPageInfo, TZonePageType aPageType)
+	{
+	TPhysAddr newPage;
+	TInt r = MovePage(aMemory, aPageInfo, newPage, KRamZoneInvalidId, EFalse);
+	if (r == KErrNone)
+		{
+		TheMmu.MarkPageAllocated(aPageInfo->PhysAddr(), aPageType);
+		}
+	return r;
+	}
+
+
 TInt DMovableMemoryManager::HandleFault(DMemoryObject* aMemory, TUint aIndex, DMemoryMapping* aMapping, 
 										TUint aMapInstanceCount, TUint aAccessPermissions)
 	{
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mmanager.h	Fri Jun 11 15:02:23 2010 +0300
@@ -359,11 +359,37 @@
 	virtual void Unpin(DMemoryObject* aMemory, DMemoryMappingBase* aMapping, TPinArgs& aPinArgs) =0;
 
 	/**
-	@todo
+	Attempt to move the page specified to a new physical location.  The new physical
+	location for the page to be moved to is allocated by this method.  However,
+	aBlockZoneId and aBlockRest can be used to control which RAM zone the new
+	location is in.
+
+	@param aMemory		The memory object that owns the page.
+	@param aOldPageInfo	The page info for the physical page to move.
+	@param aNewPage 	On success this will hold the physical address of the new 
+						location for the page.
+	@param aBlockZoneId The ID of a RAM zone not to allocate the new page into.
+	@param aBlockRest 	When set to ETrue the search for a new page will stop if it 
+						ever needs to look at aBlockZoneId.
+	@return KErrNone on success, KErrInUse if the page couldn't be moved, 
+			or KErrNoMemory if it wasn't possible to allocate a new page.
 	*/
 	virtual TInt MovePage(DMemoryObject* aMemory, SPageInfo* aOldPageInfo, TPhysAddr& aNewPage, TUint aBlockZoneId, TBool aBlockRest);
 
 	/**
+	Move the page specified to a new physical location and mark the page as 
+	allocated as type aPageType.
+	
+	@param aMemory		The memory object that owns the page.
+	@param aPageInfo	The page info for the physical page to move.
+	@param aPageType	The type of the page to allocate into the orignal physical 
+						location of the page to move.
+	@return KErrNone on success, KErrInUse if the page couldn't be moved, 
+			or KErrNoMemory if it wasn't possible to allocate a new page.
+	*/
+	virtual TInt MoveAndAllocPage(DMemoryObject* aMemory, SPageInfo* aPageInfo, TZonePageType aPageType);
+
+	/**
 	Return the TZonePageType of the pages that the memory manager can allocate and free.
 	*/
 	virtual TZonePageType PageType();
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mmu.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mmu.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -622,7 +622,7 @@
 	__KTRACE_OPT(KMMU,Kern::Printf("Mmu::ZoneAllocPhysicalRam(?,%d,%d,?,%d)", aZoneIdCount, aBytes, aPhysAddr, aAlign));
 	__NK_ASSERT_DEBUG(RamAllocLock::IsHeld());
 
-	TInt r = iRamPageAllocator->ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aBytes, aPhysAddr, EPageFixed, aAlign);
+	TInt r = iRamPageAllocator->ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aBytes, aPhysAddr, aAlign);
 	if(r!=KErrNone)
 		iRamAllocFailed = ETrue;
 	else
@@ -871,6 +871,22 @@
 	}
 
 
+/**
+Mark a page as being allocated to a particular page type.
+
+NOTE - This page should not be used until PagesAllocated() has been invoked on it.
+
+@param aPhysAddr		The physical address of the page to mark as allocated.
+@param aZonePageType	The type of the page to mark as allocated.
+*/
+void Mmu::MarkPageAllocated(TPhysAddr aPhysAddr, TZonePageType aZonePageType)
+	{
+	__KTRACE_OPT(KMMU,Kern::Printf("Mmu::MarkPageAllocated(0x%x, %d)", aPhysAddr, aZonePageType));
+	__NK_ASSERT_DEBUG(RamAllocLock::IsHeld());
+	iRamPageAllocator->MarkPageAllocated(aPhysAddr, aZonePageType);
+	}
+
+
 void Mmu::FreeRam(TPhysAddr* aPages, TUint aCount, TZonePageType aZonePageType)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("Mmu::FreeRam(?,%d)",aCount));
@@ -890,20 +906,31 @@
 		SPageInfo* pi = SPageInfo::FromPhysAddr(pagePhys);
 		PageFreed(pi);
 
-		// If this is an old page of a page being moved that was previously pinned
-		// then make sure it is freed as discardable otherwise despite DPager::DonatePages()
-		// having marked it as discardable it would be freed as movable.
-		__NK_ASSERT_DEBUG(pi->PagedState() != SPageInfo::EPagedPinnedMoved || aCount == 1);
-		if (pi->PagedState() == SPageInfo::EPagedPinnedMoved)
-			aZonePageType = EPageDiscard;
-
-		if(ThePager.PageFreed(pi)==KErrNone)
-			--aCount; // pager has dealt with this page, so one less for us
-		else
+		switch (ThePager.PageFreed(pi))
 			{
-			// All paged pages should have been dealt with by the pager above.
-			__NK_ASSERT_DEBUG(pi->PagedState() == SPageInfo::EUnpaged);
-			*pagesOut++ = pagePhys; // store page address for freeing later
+			case KErrNone: 
+				--aCount; // pager has dealt with this page, so one less for us
+				break;
+			case KErrCompletion:
+				// This was a pager controlled page but it is no longer required.
+				__NK_ASSERT_DEBUG(aZonePageType == EPageMovable || aZonePageType == EPageDiscard);
+				__NK_ASSERT_DEBUG(pi->PagedState() == SPageInfo::EUnpaged);
+				if (aZonePageType == EPageMovable)
+					{// This page was donated to the pager so have to free it here
+					// as aZonePageType is incorrect for this page but aPages may 
+					// contain a mixture of movable and discardable pages.
+					MmuLock::Unlock();
+					iRamPageAllocator->FreeRamPages(&pagePhys, 1, EPageDiscard);
+					aCount--; // We've freed this page here so one less to free later
+					flash = 0;	// reset flash count as we released the mmulock.
+					MmuLock::Lock();
+					break;
+					}
+				// fall through..
+			default:
+				// Free this page..
+				__NK_ASSERT_DEBUG(pi->PagedState() == SPageInfo::EUnpaged);
+				*pagesOut++ = pagePhys; // store page address for freeing later
 			}
 		}
 	MmuLock::Unlock();
@@ -922,21 +949,15 @@
 		__KTRACE_OPT(KMMU,Kern::Printf("Mmu::AllocContiguousRam returns simulated OOM %d",KErrNoMemory));
 		return KErrNoMemory;
 		}
-	// Only the page sets EAllocNoPagerReclaim and it shouldn't allocate contiguous ram.
+	// Only the pager sets EAllocNoPagerReclaim and it shouldn't allocate contiguous ram.
 	__NK_ASSERT_DEBUG(!(aFlags&EAllocNoPagerReclaim));
 #endif
-	TInt r = iRamPageAllocator->AllocContiguousRam(aCount, aPhysAddr, EPageFixed, aAlign+KPageShift);
-	if(r==KErrNoMemory && aCount > KMaxFreeableContiguousPages)
-		{
-		// flush paging cache and retry...
-		ThePager.FlushAll();
-		r = iRamPageAllocator->AllocContiguousRam(aCount, aPhysAddr, EPageFixed, aAlign+KPageShift);
-		}
+	TInt r = iRamPageAllocator->AllocContiguousRam(aCount, aPhysAddr, aAlign+KPageShift);
 	if(r!=KErrNone)
 		iRamAllocFailed = ETrue;
 	else
 		PagesAllocated((TPhysAddr*)(aPhysAddr|1), aCount, aFlags);
-	__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguouseRam returns %d and aPhysAddr=0x%08x",r,aPhysAddr));
+	__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam returns %d and aPhysAddr=0x%08x",r,aPhysAddr));
 	return r;
 	}
 
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mmu.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mmu.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1962,6 +1962,7 @@
 
 	TInt AllocRam(	TPhysAddr* aPages, TUint aCount, TRamAllocFlags aFlags, TZonePageType aZonePageType, 
 					TUint aBlockZoneId=KRamZoneInvalidId, TBool aBlockRest=EFalse);
+	void MarkPageAllocated(TPhysAddr aPhysAddr, TZonePageType aZonePageType);
 	void FreeRam(TPhysAddr* aPages, TUint aCount, TZonePageType aZonePageType);
 	TInt AllocContiguousRam(TPhysAddr& aPhysAddr, TUint aCount, TUint aAlign, TRamAllocFlags aFlags);
 	void FreeContiguousRam(TPhysAddr aPhysAddr, TUint aCount);
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
@@ -30,8 +30,8 @@
 
 const TInt KThreadPriority = 25;
 
-// The length of time the paging device is idle before we decide to use it for cleaning dirty
-// pages, in milliseconds.
+/// The length of time the paging device is idle before we decide to use it for cleaning dirty
+/// pages, in milliseconds.
 const TInt KIdleDelayInMillis = 2;
 
 class DPageCleaner
@@ -63,13 +63,13 @@
 
 	// All state below is accessed with the MmuLock held.
 
-	// Whether the paging device is currently idle.
+	/// Whether the paging device is currently idle.
 	TBool iPagingDeviceIdle;
 
-	// Whether the paging device has been idle for longer than the wait period.
+	/// Whether the paging device has been idle for longer than the wait period.
 	TBool iIdleForAWhile;
 	
-	// Whether the page cleaner is currently running.
+	/// Whether the page cleaner is currently running.
 	TBool iCleaningInProgress;	
 	};
 
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mpagecleaner.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mpager.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mpager.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -307,6 +307,7 @@
 
 TInt DPager::PageFreed(SPageInfo* aPageInfo)
 	{
+	__NK_ASSERT_DEBUG(RamAllocLock::IsHeld());
 	__NK_ASSERT_DEBUG(MmuLock::IsHeld());
 	__NK_ASSERT_DEBUG(CheckLists());
 
@@ -351,7 +352,7 @@
 		// This page was pinned when it was moved but it has not been returned 
 		// to the free pool yet so make sure it is...
 		aPageInfo->SetPagedState(SPageInfo::EUnpaged);	// Must be unpaged before returned to free pool.
-		return KErrNotFound;
+		return KErrCompletion;
 
 	default:
 		__NK_ASSERT_DEBUG(0);
@@ -365,6 +366,14 @@
 		SetClean(*aPageInfo);
 		}
 
+	if (iNumberOfFreePages > 0)
+		{// The paging cache is not at the minimum size so safe to let the 
+		// ram allocator free this page.
+		iNumberOfFreePages--;
+		aPageInfo->SetPagedState(SPageInfo::EUnpaged);
+		return KErrCompletion;
+		}
+	// Need to hold onto this page as have reached the page cache limit.
 	// add as oldest page...
 	aPageInfo->SetPagedState(SPageInfo::EPagedOldestClean);
 	iOldestCleanList.Add(&aPageInfo->iLink);
@@ -413,8 +422,8 @@
 #ifdef _DEBUG
 		if (!IsPageTableUnpagedRemoveAllowed(aPageInfo))
 			__NK_ASSERT_DEBUG(0);
+#endif
 		break;
-#endif
 	default:
 		__NK_ASSERT_DEBUG(0);
 		return;
@@ -803,6 +812,20 @@
 	}
 
 
+TInt DPager::DiscardAndAllocPage(SPageInfo* aPageInfo, TZonePageType aPageType)
+	{
+	TInt r = DiscardPage(aPageInfo, KRamZoneInvalidId, EFalse);
+	if (r == KErrNone)
+		{
+		TheMmu.MarkPageAllocated(aPageInfo->PhysAddr(), aPageType);
+		}
+	// Flash the ram alloc lock as we may have had to write a page out to swap.
+	RamAllocLock::Unlock();
+	RamAllocLock::Lock();
+	return r;
+	}
+
+
 static TBool DiscardCanStealPage(SPageInfo* aOldPageInfo, TBool aBlockRest)
 	{
  	// If the page is pinned or if the page is dirty and a general defrag is being performed then
@@ -1002,6 +1025,9 @@
 	__NK_ASSERT_DEBUG(iNumberOfFreePages>0);
 	--iNumberOfFreePages;
 
+	// The page must be unpaged, otherwise it wasn't successfully removed 
+	// from the live list.
+	__NK_ASSERT_DEBUG(aPageInfo.PagedState() == SPageInfo::EUnpaged);
 	MmuLock::Unlock();
 
 	TPhysAddr pagePhys = aPageInfo.PhysAddr();
@@ -2068,6 +2094,7 @@
 	}
 
 
+// WARNING THIS METHOD MAY HOLD THE RAM ALLOC LOCK FOR EXCESSIVE PERIODS.  DON'T USE THIS IN ANY PRODUCTION CODE.
 void DPager::FlushAll()
 	{
 	NKern::ThreadEnterCS();
@@ -2108,7 +2135,9 @@
 					}
 				++pi;
 				if(((TUint)pi&(0xf<<KPageInfoShift))==0)
+					{
 					MmuLock::Flash(); // every 16 page infos
+					}
 				}
 			while(pi<piEnd);
 			}
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mpager.h	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mpager.h	Fri Jun 11 15:02:23 2010 +0300
@@ -353,6 +353,15 @@
 	*/
 	TInt DiscardPage(SPageInfo* aOldPageInfo, TUint aBlockZoneId, TBool aBlockRest);
 
+	/**
+	Attempt to discard the specified page and then allocate a page of type aPageType
+	in its place.
+	
+	@param aPageInfo	The page info of the page to discard.
+	@param aPageType 	The new page type to allocate into aPageInfo's physical address.
+	*/
+	TInt DiscardAndAllocPage(SPageInfo* aPageInfo, TZonePageType aPageType);
+
 
 	/**
 	Update any live list links to replace the old page with the new page.
--- a/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/flexible/mmu/mptalloc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -54,10 +54,6 @@
 uses memory from #ThePager which will reclaim paged memory if necessary.
 Providing the live list always has #DPager::iMinYoungPages, this guarantees that
 handling page faults can never fail by running out of memory.
-
-TODO: In really pathological situations page table allocation can fail due to
-being out of virtual address space to map the table, this needs to be prevented
-from happening when handling demand paging faults.
 */
 
 
--- a/kernel/eka/memmodel/epoc/mmubase/mmubase.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/mmubase/mmubase.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -483,7 +483,7 @@
 TInt MmuBase::AllocPhysicalRam(TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("Mmu::AllocPhysicalRam() size=%x align=%d",aSize,aAlign));
-	TInt r=AllocContiguousRam(aSize, aPhysAddr, EPageFixed, aAlign);
+	TInt r=AllocContiguousRam(aSize, aPhysAddr, aAlign);
 	if (r!=KErrNone)
 		{
 		iAllocFailed=ETrue;
@@ -516,7 +516,7 @@
 TInt MmuBase::ZoneAllocPhysicalRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("Mmu::ZoneAllocPhysicalRam() size=0x%x align=%d", aSize, aAlign));
-	TInt r = ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aSize, aPhysAddr, EPageFixed, aAlign);
+	TInt r = ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aSize, aPhysAddr, aAlign);
 	if (r!=KErrNone)
 		{
 		iAllocFailed=ETrue;
@@ -725,20 +725,19 @@
 	}
 
 
-TInt MmuBase::AllocContiguousRam(TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aPageType, TInt aAlign, TUint aBlockedZoneId, TBool aBlockRest)
+TInt MmuBase::AllocContiguousRam(TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 #ifdef _DEBUG
 	if(K::CheckForSimulatedAllocFail())
 		return KErrNoMemory;
 #endif
-	__NK_ASSERT_DEBUG(aPageType == EPageFixed);
 	TUint contigPages = (aSize + KPageSize - 1) >> KPageShift;
-	TInt r = iRamPageAllocator->AllocContiguousRam(contigPages, aPhysAddr, aPageType, aAlign, aBlockedZoneId, aBlockRest);
+	TInt r = iRamPageAllocator->AllocContiguousRam(contigPages, aPhysAddr, aAlign);
 	if (r == KErrNoMemory && contigPages > KMaxFreeableContiguousPages)
 		{// Allocation failed but as this is a large allocation flush the RAM cache 
 		// and reattempt the allocation as large allocation wouldn't discard pages.
 		iRamCache->FlushAll();
-		r = iRamPageAllocator->AllocContiguousRam(contigPages, aPhysAddr, aPageType, aAlign, aBlockedZoneId, aBlockRest);
+		r = iRamPageAllocator->AllocContiguousRam(contigPages, aPhysAddr, aAlign);
 		}
 	return r;
 	}
@@ -750,16 +749,15 @@
 @param aZoneIdCount	The number of IDs listed in aZoneIdList
 @param aSize		The number of bytes to allocate
 @param aPhysAddr 	Will receive the physical base address of the allocated RAM
-@param aPageType 	The type of the pages being allocated
 @param aAlign 		The log base 2 alginment required
 */
-TInt MmuBase::ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aPageType, TInt aAlign)
+TInt MmuBase::ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 #ifdef _DEBUG
 	if(K::CheckForSimulatedAllocFail())
 		return KErrNoMemory;
 #endif
-	return iRamPageAllocator->ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aSize, aPhysAddr, aPageType, aAlign);
+	return iRamPageAllocator->ZoneAllocContiguousRam(aZoneIdList, aZoneIdCount, aSize, aPhysAddr, aAlign);
 	}
 
 SPageInfo* SPageInfo::SafeFromPhysAddr(TPhysAddr aAddress)
--- a/kernel/eka/memmodel/epoc/mmubase/ramalloc.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/mmubase/ramalloc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -354,13 +354,13 @@
 					aZone->iAllocPages[EPageFixed],	aZone->iAllocPages[EPageMovable],aZone->iAllocPages[EPageDiscard]));
 		Panic(EZonesCountErr);
 		}
-	__ASSERT_DEBUG(free == (TUint32)aZone->iBma[KBmaAllPages]->iAvail, Panic(EAllocRamPagesInconsistent));
 	__KTRACE_OPT(KMMU2,Kern::Printf("ZoneFreePages - aCount %x free %x, alloc %x",aCount,free,alloc));
 	__KTRACE_OPT(KMMU2,Kern::Printf("Alloc Unk %x Fx %x Mv %x Dis %x",aZone->iAllocPages[EPageUnknown], 
 					aZone->iAllocPages[EPageFixed],	aZone->iAllocPages[EPageMovable],aZone->iAllocPages[EPageDiscard]));
 
-	if (iAllowBmaVerify)
+	if (!iContiguousReserved)
 		{
+		__ASSERT_DEBUG(free == (TUint32)aZone->iBma[KBmaAllPages]->iAvail, Panic(EAllocRamPagesInconsistent));
 		TBitMapAllocator& bmaType = *(aZone->iBma[(aType != EPageUnknown)? aType : EPageFixed]);
 		TUint allocPages;
 		if (aType == EPageFixed || aType == EPageUnknown)
@@ -495,13 +495,13 @@
 					aZone->iAllocPages[EPageFixed],	aZone->iAllocPages[EPageMovable],aZone->iAllocPages[EPageDiscard]));
 		Panic(EZonesCountErr);
 		}
-	__ASSERT_DEBUG(free == (TUint32)aZone->iBma[KBmaAllPages]->iAvail, Panic(EAllocRamPagesInconsistent));
 	__KTRACE_OPT(KMMU2,Kern::Printf("ZoneFreePages - aCount %x free %x, alloc %x",aCount,free,alloc));
 	__KTRACE_OPT(KMMU2,Kern::Printf("Alloc Unk %x Fx %x Mv %x Dis %x",aZone->iAllocPages[EPageUnknown], 
 					aZone->iAllocPages[EPageFixed],	aZone->iAllocPages[EPageMovable],aZone->iAllocPages[EPageDiscard]));
 
-	if (iAllowBmaVerify)
+	if (!iContiguousReserved)
 		{
+		__ASSERT_DEBUG(free == (TUint32)aZone->iBma[KBmaAllPages]->iAvail, Panic(EAllocRamPagesInconsistent));
 		TBitMapAllocator& bmaType = *(aZone->iBma[(aType != EPageUnknown)? aType : EPageFixed]);
 		TUint allocPages;
 		if (aType == EPageFixed || aType == EPageUnknown)
@@ -968,7 +968,7 @@
 	// Temporarily fill preference list so SetPhysicalRamState can succeed
 #ifdef _DEBUG
 	// Block bma verificaitons as bma and alloc counts aren't consistent yet.
-	iAllowBmaVerify = EFalse;
+	iContiguousReserved = 1;
 #endif
 	const SZone* const lastZone = iZones + iNumZones;
 	zone = iZones;
@@ -984,7 +984,7 @@
 		}
 #ifdef _DEBUG
 	// Only now is it safe to enable bma verifications
-	iAllowBmaVerify = ETrue;
+	iContiguousReserved = 0;
 #endif
 
 	///////////////////////////////////////////////////////////////////////////
@@ -1135,6 +1135,7 @@
 		}
 	}
 
+
 TInt DRamAllocator::MarkPageAllocated(TPhysAddr aAddr, TZonePageType aType)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("DRamAllocator::MarkPageAllocated %08x",aAddr));
@@ -1160,7 +1161,12 @@
 		return KErrAlreadyExists;			// page is already allocated
 		}
 	bmaAll.Alloc(n,1);
-	bmaType.Alloc(n,1);
+	if (bmaType.NotAllocated(n,1))
+		bmaType.Alloc(n,1);
+#ifdef _DEBUG
+	else // Allow this page to already be reserved in bmaType as AllocContiguousRam() may have done this.
+		__NK_ASSERT_DEBUG(aType == EPageFixed);
+#endif
 	--iTotalFreeRamPages;
 	ZoneAllocPages(z, 1, aType);
 	__KTRACE_OPT(KMMU,Kern::Printf("Total free RAM pages now = %d",iTotalFreeRamPages));
@@ -1171,6 +1177,7 @@
 	return KErrNone;
 	}
 
+
 TInt DRamAllocator::FreeRamPage(TPhysAddr aAddr, TZonePageType aType)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("FreeRamPage %08x",aAddr));
@@ -1201,17 +1208,27 @@
 	__KTRACE_OPT(KMMU2,Kern::Printf("Zone index %d page index %04x",z-iZones,n));
 	TBitMapAllocator& bmaAll = *(z->iBma[KBmaAllPages]);
 	TBitMapAllocator& bmaType = *(z->iBma[aType]);
-	bmaAll.Free(n);
+
 	bmaType.Free(n);
-	++iTotalFreeRamPages;
-	ZoneFreePages(z, 1, aType);
-
+	if (iContiguousReserved && aType != EPageFixed && z->iBma[EPageFixed]->NotFree(n, 1))
+		{// This page has been reserved by AllocContiguous() so don't free it
+		// but allocate it as fixed.
+		ZoneFreePages(z, 1, aType);
+		ZoneAllocPages(z, 1, EPageFixed);
+		}
+	else
+		{
+		bmaAll.Free(n);
+		++iTotalFreeRamPages;
+		ZoneFreePages(z, 1, aType);	
+		}
 #ifdef BTRACE_RAM_ALLOCATOR
 	BTrace8(BTrace::ERamAllocator, BTrace::ERamAllocFreePage, aType, aAddr);
 #endif
 	return KErrNone;
 	}
 
+
 void DRamAllocator::FreeRamPages(TPhysAddr* aPageList, TInt aNumPages, TZonePageType aType)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("FreeRamPages count=%08x",aNumPages));
@@ -1259,11 +1276,37 @@
 			pa += KPageSize;
 			}
 		__KTRACE_OPT(KMMU2,Kern::Printf("%d consecutive pages, zp_rem=%x, %d remaining pages",n,zp_rem,aNumPages));
-		bmaAll.Free(ix,n);
 		TBitMapAllocator& bmaType = *(z->iBma[aType]);
 		bmaType.Free(ix,n);
-		iTotalFreeRamPages += n;
-		ZoneFreePages(z, n, aType);
+
+		if (iContiguousReserved && aType != EPageFixed)
+			{// See if a page has been reserved by AllocContiguous() in this range.
+			TUint pagesFreed = 0;
+			TUint allocStart = ix;
+			TUint freeOffset = ix;
+			TUint endOffset = ix + n - 1;
+			while (freeOffset <= endOffset)
+				{
+				TUint runLength =  NextAllocatedRun(z, allocStart, endOffset, EPageFixed);
+				if (allocStart > freeOffset)
+					{
+					TUint freed = allocStart - freeOffset;
+					bmaAll.Free(freeOffset, freed);
+					pagesFreed += freed;
+					}
+				allocStart += runLength;
+				freeOffset = allocStart;
+				}
+			iTotalFreeRamPages += pagesFreed;
+			ZoneFreePages(z, n, aType);
+			ZoneAllocPages(z, n - pagesFreed, EPageFixed);
+			}
+		else
+			{
+			bmaAll.Free(ix,n);
+			iTotalFreeRamPages += n;
+			ZoneFreePages(z, n, aType);
+			}
 #ifdef BTRACE_RAM_ALLOCATOR
 		BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocFreePages, aType, n, first_pa);
 #endif
@@ -1273,6 +1316,7 @@
 #endif
 	}
 
+
 /**
 	Attempt to clear upto the required amount of discardable or movable pages
 	from the RAM zone.
@@ -1464,7 +1508,7 @@
 			{// Allocating as part of a general defragmentation and
 			// can't allocate without using a RAM zone less preferable than
 			// the current least prefeable RAM zone with movable and/or 
-			//discardable.
+			// discardable.
 			__NK_ASSERT_DEBUG(numMissing);
 			goto exit;
 			}
@@ -1679,29 +1723,173 @@
 	return r;
 	}
 
+
+#if !defined(__MEMMODEL_MULTIPLE__) && !defined(__MEMMODEL_MOVING__)
+void DRamAllocator::BlockContiguousRegion(TPhysAddr aAddrBase, TUint aNumPages)
+	{
+	// Shouldn't be asked to block zero pages, addrEndPage would be wrong if we did.
+	__NK_ASSERT_DEBUG(aNumPages);
+	TPhysAddr addr = aAddrBase;
+	TPhysAddr addrEndPage = aAddrBase + ((aNumPages - 1) << KPageShift);
+	TInt tmpOffset;
+	SZone* endZone = GetZoneAndOffset(addrEndPage, tmpOffset);
+	SZone* tmpZone;
+	do
+		{
+		tmpZone = GetZoneAndOffset(addr, tmpOffset);
+		__NK_ASSERT_DEBUG(tmpZone != NULL);
+		TUint runLength = 	(addrEndPage < tmpZone->iPhysEnd)? 
+							((addrEndPage - addr) >> KPageShift) + 1: 
+							tmpZone->iPhysPages - tmpOffset;
+		TUint reserved = tmpZone->iBma[KBmaAllPages]->SelectiveAlloc(tmpOffset, runLength);
+		if (reserved)
+			{
+#ifdef _DEBUG
+			TUint runEnd = tmpOffset + runLength;
+			TUint free = 0;
+			for (TUint i = tmpOffset; i < runEnd; i++)
+				if (tmpZone->iBma[EPageMovable]->NotAllocated(i,1) && tmpZone->iBma[EPageDiscard]->NotAllocated(i,1))
+					free++;
+			__NK_ASSERT_DEBUG(free == reserved);
+#endif
+			ZoneAllocPages(tmpZone, reserved, EPageFixed);
+			iTotalFreeRamPages -= reserved;
+			}
+		tmpZone->iBma[EPageFixed]->Alloc(tmpOffset, runLength);
+		addr = tmpZone->iPhysEnd + 1;
+		}
+	while (tmpZone != endZone);
+	}
+
+
+FORCE_INLINE void DRamAllocator::UnblockSetAllocRuns(	TUint& aOffset1, TUint& aOffset2, 
+														TUint aRunLength1, TUint aRunLength2, 
+														TUint& aAllocLength, TUint& aAllocStart)
+	{
+	aAllocStart = aOffset1;
+	aAllocLength = aRunLength1;
+	aOffset1 += aAllocLength;
+	if  (aOffset1 == aOffset2)
+		{
+		aAllocLength += aRunLength2;
+		aOffset2 += aRunLength2;
+		aOffset1 = aOffset2;
+		}
+	} 	
+
+
+void DRamAllocator::UnblockContiguousRegion(TPhysAddr aAddrBase, TUint aNumPages)
+	{
+	// Shouldn't be asked to unblock zero pages, addrEndPage would be wrong if we did.
+	__NK_ASSERT_DEBUG(aNumPages);
+	TPhysAddr addr = aAddrBase;
+	TPhysAddr addrEndPage = aAddrBase + ((aNumPages - 1) << KPageShift);
+	TInt tmpOffset;
+	SZone* endZone = GetZoneAndOffset(addrEndPage, tmpOffset);
+	SZone* tmpZone;
+	do
+		{
+		tmpZone = GetZoneAndOffset(addr, tmpOffset);
+		__NK_ASSERT_DEBUG(tmpZone != NULL);
+		TUint runLength = 	(addrEndPage < tmpZone->iPhysEnd)? 
+							((addrEndPage - addr) >> KPageShift) + 1: 
+							tmpZone->iPhysPages - tmpOffset;
+		TUint unreserved = 0;
+		TUint runEnd = tmpOffset + runLength - 1;
+		TUint freeOffset = tmpOffset;
+		TUint discardOffset = freeOffset;
+		TUint movableOffset = freeOffset;
+		__KTRACE_OPT(KMMU2, Kern::Printf("freeOff %d, runEnd %d", freeOffset, runEnd));
+		while (freeOffset <= runEnd)
+			{
+			TUint discardRun;
+			TUint movableRun;
+			discardRun = NextAllocatedRun(tmpZone, discardOffset, runEnd, EPageDiscard);
+			movableRun = NextAllocatedRun(tmpZone, movableOffset, runEnd, EPageMovable);
+			TUint allocLength;
+			TUint allocStart;
+			__KTRACE_OPT(KMMU2, Kern::Printf("disOff %d len %d movOff %d len %d", discardOffset, discardRun, movableOffset, movableRun));
+			if (discardOffset < movableOffset)
+				UnblockSetAllocRuns(discardOffset, movableOffset, discardRun, movableRun, allocLength, allocStart);
+			else
+				UnblockSetAllocRuns(movableOffset, discardOffset, movableRun, discardRun, allocLength, allocStart);
+
+			if (allocStart > freeOffset)
+				{
+				unreserved += allocStart - freeOffset;
+				tmpZone->iBma[KBmaAllPages]->Free(freeOffset, allocStart - freeOffset);
+				__NK_ASSERT_DEBUG(	!tmpZone->iBma[EPageMovable]->NotFree(freeOffset, allocStart - freeOffset) && 
+									!tmpZone->iBma[EPageDiscard]->NotFree(freeOffset, allocStart - freeOffset));
+				}
+			__KTRACE_OPT(KMMU2, Kern::Printf("disOff %d len %d movOff %d len %d start %d len %d", discardOffset, discardRun, movableOffset, movableRun, allocStart, allocLength));
+			freeOffset = allocStart + allocLength;
+			__KTRACE_OPT(KMMU2, Kern::Printf("freeOff %d", freeOffset));
+			}
+		tmpZone->iBma[EPageFixed]->Free(tmpOffset, runLength);
+		ZoneFreePages(tmpZone, unreserved, EPageFixed);
+		iTotalFreeRamPages += unreserved;
+		addr = tmpZone->iPhysEnd + 1;
+		}
+	while (tmpZone != endZone);
+	}
+
+
+TBool DRamAllocator::ClearContiguousRegion(TPhysAddr aAddrBase, TPhysAddr aZoneBase, TUint aNumPages, TInt& aOffset)
+	{
+	TPhysAddr addr = aAddrBase;
+	TPhysAddr addrEnd = aAddrBase + (aNumPages << KPageShift);
+	TInt contigOffset = 0;
+	SZone* contigZone = GetZoneAndOffset(addr, contigOffset);
+	for (; addr != addrEnd; addr += KPageSize, contigOffset++)
+		{
+		if (contigZone->iPhysEnd < addr)
+			{
+			contigZone = GetZoneAndOffset(addr, contigOffset);
+			__NK_ASSERT_DEBUG(contigZone != NULL);
+			}
+
+		__NK_ASSERT_DEBUG(contigZone != NULL);
+		__NK_ASSERT_DEBUG(contigZone->iBma[EPageFixed]->NotFree(contigOffset, 1));
+		__NK_ASSERT_DEBUG(SPageInfo::SafeFromPhysAddr(addr) != NULL);
+
+		// WARNING - This may flash the ram alloc mutex.
+		TInt exRet = M::MoveAndAllocPage(addr, EPageFixed);
+		if (exRet != KErrNone)
+			{// This page couldn't be moved or discarded so 
+			// restart the search the page after this one.
+			__KTRACE_OPT(KMMU2, Kern::Printf("ContigMov fail contigOffset 0x%x exRet %d", contigOffset, exRet));
+			aOffset = (addr < aZoneBase)? 0 : contigOffset + 1;
+			break;
+			}
+		}
+	return addr == addrEnd;
+	}
+
+
 /**
 Search through the zones for the requested contiguous RAM, first in preference 
 order then, if that fails, in address order.
 
+No support for non-fixed pages as this will discard and move pages if required.
+
 @param aNumPages The number of contiguous pages to find
 @param aPhysAddr Will contain the base address of any contiguous run if found
-@param aType The page type of the memory to be allocated
 @param aAlign Alignment specified as the alignment shift
-@param aBlockedZoneId The ID of a zone that can't be allocated into, by default this has no effect
-@param aBlockRest Set to ETrue to stop allocation as soon as aBlockedZoneId is reached 
 in preference ordering.  EFalse otherwise.
 
 @return KErrNone on success, KErrNoMemory otherwise
 */	
-TInt DRamAllocator::AllocContiguousRam(TUint aNumPages, TPhysAddr& aPhysAddr, TZonePageType aType, TInt aAlign, TUint aBlockedZoneId, TBool aBlockRest)
+TInt DRamAllocator::AllocContiguousRam(TUint aNumPages, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam size %08x align %d",aNumPages,aAlign));
 
 	M::RamAllocIsLocked();
 
-	// No support for non-fixed pages as this will discard and move 
-	// pages if required.
-	__NK_ASSERT_DEBUG(aType == EPageFixed);
+	if ((TUint)aNumPages > iTotalFreeRamPages + M::NumberOfFreeDpPages())
+		{// Not enough free space and not enough freeable pages.
+		return KErrNoMemory;
+		}
+
 	TInt alignWrtPage = Max(aAlign - KPageShift, 0);
 	TUint32 alignmask = (1u << alignWrtPage) - 1;
 
@@ -1716,7 +1904,124 @@
 	TInt offset = 0;
 	iZoneTmpAddrIndex = -1;
 	iZoneTmpPrefLink = iZonePrefList.First();
-	while (NextAllocZone(zone, searchState, aType, aBlockedZoneId, aBlockRest))
+	while (NextAllocZone(zone, searchState, EPageFixed, KRamZoneInvalidId, EFalse))
+		{
+		// Be sure to start from scratch if zone not contiguous with previous zone
+		if (prevZone && (zone->iPhysBase == 0 || (zone->iPhysBase - 1) != prevZone->iPhysEnd))
+			{
+			carryAll = 0;
+			carryImmov = 0;
+			}
+		prevZone = zone;
+		TBitMapAllocator& bmaAll = *(zone->iBma[KBmaAllPages]);
+		base = TInt(zone->iPhysBase >> KPageShift);
+		TInt runLength;
+		__KTRACE_OPT(KMMU,Kern::Printf("AllocAligned: base=%08x carryAll=%08x offset=%08x", base, carryAll, offset));
+		offset = bmaAll.AllocAligned(aNumPages, alignWrtPage, base, EFalse, carryAll, runLength);
+		__KTRACE_OPT(KMMU,Kern::Printf("AllocAligned: offset=%08x", offset));
+
+		if (offset >= 0)
+			{
+			// Have found enough contiguous pages so return address of physical page
+			// at the start of the region
+			aPhysAddr = TPhysAddr((base + offset - carryAll + alignmask) & ~alignmask) << KPageShift;
+			MarkPagesAllocated(aPhysAddr, aNumPages, EPageFixed);
+
+			__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam returns %08x",aPhysAddr));
+#ifdef BTRACE_RAM_ALLOCATOR
+			BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, EPageFixed, aNumPages, aPhysAddr);
+#endif
+			return KErrNone;
+			}
+		// No run found when looking in just the free pages so see if this
+		// RAM zone could be used if pages where moved or discarded.
+		TBitMapAllocator& bmaImmov = *(zone->iBma[EPageFixed]);
+		offset = 0;	// Clear so searches whole of fixed BMA on the first pass.
+		do
+			{
+			__KTRACE_OPT(KMMU,Kern::Printf("AllocAligned: base=%08x carryImmov=%08x offset=%08x", base, carryImmov, offset));
+			offset = bmaImmov.AllocAligned(aNumPages, alignWrtPage, base, EFalse, carryImmov, runLength, offset);
+			__KTRACE_OPT(KMMU,Kern::Printf("AllocAligned: offset=%08x", offset));
+			if (offset >= 0)
+				{// Have found a run in immovable page bma so attempt to clear
+				// it for the allocation.
+				TPhysAddr addrBase = TPhysAddr((base + offset - carryImmov + alignmask) & ~alignmask) << KPageShift;
+				__KTRACE_OPT(KMMU2, Kern::Printf(">AllocContig fix run 0x%08x - 0x%08x 0x%x", addrBase, addrBase + (aNumPages << KPageShift), TheCurrentThread));
+				
+				// Block the contiguous region from being allocated.
+				iContiguousReserved++;
+				BlockContiguousRegion(addrBase, aNumPages);
+				if (ClearContiguousRegion(addrBase, zone->iPhysBase, aNumPages, offset))
+					{// Cleared all the required pages.
+					// Return address of physical page at the start of the region.
+					iContiguousReserved--;
+					aPhysAddr = addrBase;
+					__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam returns %08x",aPhysAddr));
+#ifdef BTRACE_RAM_ALLOCATOR
+					BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, EPageFixed, aNumPages, aPhysAddr);
+#endif
+					__KTRACE_OPT(KMMU2, Kern::Printf("<AllocContig suc run 0x%08x - 0x%08x 0x%x", addrBase, addrBase + (aNumPages << KPageShift), TheCurrentThread));
+					return KErrNone;
+					}
+				else
+					{
+					// Unblock the contiguous region.
+					UnblockContiguousRegion(addrBase, aNumPages);
+					iContiguousReserved--;
+					__KTRACE_OPT(KMMU2, Kern::Printf("ContigMov fail offset 0x%x carryImmov %x", 
+														offset, carryImmov));
+					// Can't rely on RAM zone preference ordering being
+					// the same so clear carrys and restart search from
+					// within the current RAM zone or skip onto the next 
+					// one if at the end of this one.
+					carryImmov = 0;
+					carryAll = 0;
+					__KTRACE_OPT(KMMU2, Kern::Printf("<AllocContigfail run 0x%08x - 0x%08x 0x%x", addrBase, addrBase + (aNumPages << KPageShift), TheCurrentThread));
+					}
+				}
+			}
+		// Keep searching immovable page bma of the current RAM zone until 
+		// gone past end of RAM zone or no run can be found.
+		while (offset >= 0 && (TUint)offset < zone->iPhysPages);
+		}
+	return KErrNoMemory;
+	}
+
+#else
+
+/**
+Search through the zones for the requested contiguous RAM, first in preference 
+order then, if that fails, in address order.
+
+No support for non-fixed pages as this will discard and move pages if required.
+
+@param aNumPages The number of contiguous pages to find
+@param aPhysAddr Will contain the base address of any contiguous run if found
+@param aAlign Alignment specified as the alignment shift
+
+@return KErrNone on success, KErrNoMemory otherwise
+*/	
+TInt DRamAllocator::AllocContiguousRam(TUint aNumPages, TPhysAddr& aPhysAddr, TInt aAlign)
+	{
+	__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam size %08x align %d",aNumPages,aAlign));
+
+	M::RamAllocIsLocked();
+
+	TInt alignWrtPage = Max(aAlign - KPageShift, 0);
+	TUint32 alignmask = (1u << alignWrtPage) - 1;
+
+	// Attempt to find enough pages searching in preference order first then
+	// in address order
+	TZoneSearchState searchState = EZoneSearchPref;
+	SZone* zone;
+	SZone* prevZone = NULL;
+	TInt carryAll = 0;		// Carry for all pages bma, clear to start new run.
+	TInt carryImmov = 0;	// Carry for immovable pages bma, clear to start new run.
+	TInt base = 0;
+	TInt offset = 0;
+	iZoneTmpAddrIndex = -1;
+	iZoneTmpPrefLink = iZonePrefList.First();
+	while (NextAllocZone(zone, searchState, EPageFixed, KRamZoneInvalidId, EFalse))
 		{
 		// Be sure to start from scratch if zone not contiguous with previous zone
 		if (prevZone && (zone->iPhysBase == 0 || (zone->iPhysBase - 1) != prevZone->iPhysEnd))
@@ -1736,11 +2041,11 @@
 			{// Have found enough contiguous pages so return address of physical page
 			 // at the start of the region
 			aPhysAddr = TPhysAddr((base + offset - carryAll + alignmask) & ~alignmask) << KPageShift;
-			MarkPagesAllocated(aPhysAddr, aNumPages, aType);
+			MarkPagesAllocated(aPhysAddr, aNumPages, EPageFixed);
 
 			__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam returns %08x",aPhysAddr));
 #ifdef BTRACE_RAM_ALLOCATOR
-			BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, aType, aNumPages, aPhysAddr);
+			BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, EPageFixed, aNumPages, aPhysAddr);
 #endif
 			return KErrNone;
 			}
@@ -1788,12 +2093,11 @@
 							contigZone = GetZoneAndOffset(addr, contigOffset);
 							__NK_ASSERT_DEBUG(contigZone != NULL);
 							}
-#ifdef _DEBUG			// This page shouldn't be allocated as fixed, only movable or discardable.
+						// This page shouldn't be allocated as fixed, only movable or discardable.
 						__NK_ASSERT_DEBUG(contigZone != NULL);
 						__NK_ASSERT_DEBUG(contigZone->iBma[EPageFixed]->NotAllocated(contigOffset, 1));
-						SPageInfo* pageInfo = SPageInfo::SafeFromPhysAddr(addr);
-						__NK_ASSERT_DEBUG(pageInfo != NULL);
-#endif
+						__NK_ASSERT_DEBUG(SPageInfo::SafeFromPhysAddr(addr) != NULL);
+
 						TPhysAddr newAddr;
 						TInt moveRet = M::MovePage(addr, newAddr, contigZone->iId, EFalse);
 						if (moveRet != KErrNone && moveRet != KErrNotFound)
@@ -1827,11 +2131,11 @@
 						{// Cleared all the required pages so allocate them.
 						// Return address of physical page at the start of the region.
 						aPhysAddr = addrBase;
-						MarkPagesAllocated(aPhysAddr, aNumPages, aType);
+						MarkPagesAllocated(aPhysAddr, aNumPages, EPageFixed);
 
 						__KTRACE_OPT(KMMU,Kern::Printf("AllocContiguousRam returns %08x",aPhysAddr));
 #ifdef BTRACE_RAM_ALLOCATOR
-						BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, aType, aNumPages, aPhysAddr);
+						BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocContiguousRam, EPageFixed, aNumPages, aPhysAddr);
 #endif
 						return KErrNone;
 						}
@@ -1844,6 +2148,7 @@
 		}
 	return KErrNoMemory;
 	}
+#endif // !defined(__MEMODEL_MULTIPLE__) || !defined(__MEMODEL_MOVING__)
 
 
 /**
@@ -1858,19 +2163,17 @@
 @param aZoneIdCount	The number of the IDs listed by aZoneIdList.
 @param aSize 		The number of contiguous bytes to find
 @param aPhysAddr 	Will contain the base address of the contiguous run if found
-@param aType 		The page type of the memory to be allocated
 @param aAlign 		Alignment specified as the alignment shift
 
 @return KErrNone on success, KErrNoMemory if allocation couldn't succeed or 
 the RAM zone has the KRamZoneFlagNoAlloc flag set.  KErrArgument if a zone of
 aZoneIdList exists or if aSize is larger than the size of the zone.
 */	
-TInt DRamAllocator::ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TZonePageType aType, TInt aAlign)
+TInt DRamAllocator::ZoneAllocContiguousRam(TUint* aZoneIdList, TUint aZoneIdCount, TInt aSize, TPhysAddr& aPhysAddr, TInt aAlign)
 	{
 	__KTRACE_OPT(KMMU,Kern::Printf("ZoneAllocContiguousRam zones 0x%x size 0x%08x align %d",aZoneIdCount, aSize, aAlign));
 
 	M::RamAllocIsLocked();
-	__NK_ASSERT_DEBUG(aType == EPageFixed);
 
 
 	TUint numPages = (aSize + KPageSize - 1) >> KPageShift;
@@ -1930,11 +2233,11 @@
 	// Have found enough contiguous pages so mark the pages allocated and 
 	// return address of physical page at the start of the region.
 	aPhysAddr = TPhysAddr((base + offset - carry + alignmask) & ~alignmask) << KPageShift;
-	MarkPagesAllocated(aPhysAddr, numPages, aType);
+	MarkPagesAllocated(aPhysAddr, numPages, EPageFixed);
 
 	__KTRACE_OPT(KMMU,Kern::Printf("ZoneAllocContiguousRam returns %08x",aPhysAddr));
 #ifdef BTRACE_RAM_ALLOCATOR
-	BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocZoneContiguousRam, aType, numPages, aPhysAddr);
+	BTrace12(BTrace::ERamAllocator, BTrace::ERamAllocZoneContiguousRam, EPageFixed, numPages, aPhysAddr);
 #endif
 	return KErrNone;
 	}
@@ -2106,34 +2409,34 @@
 	// Makes things simpler for bma selection.
 	__NK_ASSERT_DEBUG(aType != EPageUnknown);
 
-	if (aOffset >= aZone->iPhysPages)
+	TUint zoneEndOffset = aZone->iPhysPages - 1;
+	if (aOffset > zoneEndOffset)
 		{// Starting point is outside the zone
 		return KErrArgument;
 		}
 
-	TUint offset = aOffset;
-	TUint endOffset = aZone->iPhysPages;
-	TUint endOffsetAligned = endOffset & KWordAlignMask;
+	TUint wordIndex = aOffset >> 5;
+	TUint endWordIndex = zoneEndOffset >> 5;
 
 	// Select the BMA to search, 
 	TUint bmaIndex = (aType == EPageTypes)? KBmaAllPages : aType;
-	TUint32* map = &(aZone->iBma[bmaIndex]->iMap[offset >> 5]);
-	TUint32 bits = *map++;
+	TUint32* map = &(aZone->iBma[bmaIndex]->iMap[wordIndex]);
+	TUint32* mapEnd = &(aZone->iBma[bmaIndex]->iMap[endWordIndex]);
+	TUint32 bits = *map;
 
 	// Set bits for pages before 'offset' (i.e. ones we want to ignore)...
-	bits |= ~(KMaxTUint32 >> (offset & ~KWordAlignMask));
+	bits |= ~(KMaxTUint32 >> (aOffset & ~KWordAlignMask));
 
 	// Find the first bit map word from aOffset in aZone with allocated pages
-	while (bits == KMaxTUint32 && offset < endOffsetAligned)
+	while (bits == KMaxTUint32 && map < mapEnd)
 		{
-		bits = *map++;
-		offset = (offset + 32) & KWordAlignMask;
+		bits = *++map;
 		}
 
-	if (offset >= endOffsetAligned && endOffset != endOffsetAligned)
+	if (map == mapEnd)
 		{// Have reached the last bit mask word so set the bits that are
 		//  outside of the zone so that they are ignored.
-		bits |= KMaxTUint32 >> (endOffset - endOffsetAligned);
+		bits |= (KMaxTUint32 >> (zoneEndOffset & ~KWordAlignMask)) >> 1;
 		}
 
 	if (bits == KMaxTUint32)
@@ -2143,25 +2446,104 @@
 
 	// Now we have bits with allocated pages in it so determine the exact 
 	// offset of the next allocated page
-	TUint32 mask = 0x80000000 >> (offset & ~KWordAlignMask);
-	while (bits & mask)
-		{
-		mask >>= 1;
-		offset++;
-		}
-
-	if (offset >= endOffset)
-		{// Reached the end of the zone without finding an allocated page after aOffset
-		return KErrNotFound;
-		}
-
-	// Should definitely have found an allocated page within aZone's pages
-	__NK_ASSERT_DEBUG(mask != 0 && !(bits & mask) && offset < aZone->iPhysPages);
-
-	aOffset = offset;
+	TInt msOne = __e32_find_ms1_32(~bits);
+	__NK_ASSERT_DEBUG(msOne >= 0);	// Must have at least one allocated page in the word.
+	TUint msOneOffset = 31 - msOne;
+	aOffset = ((map - aZone->iBma[bmaIndex]->iMap) << 5) + msOneOffset;
 	return KErrNone;
 	}
 
+
+/**
+Get the next run of pages in this zone that are allocated after aOffset.
+
+@param aZone	The zone to find the next allocated page in.
+@param aOffset	On entry this is the offset from which the next allocated
+				page in the zone should be found, on return it will be the offset 
+				of the next allocated page.
+@param aEndOffset The last offset within this RAM zone to check for allocated runs.
+@return The length of any run found, KErrNotFound if no more pages in
+the zone after aOffset are allocated, KErrArgument if aOffset is outside the zone.
+*/
+TInt DRamAllocator::NextAllocatedRun(SZone* aZone, TUint& aOffset, TUint aEndOffset, TZonePageType aType) const
+	{
+	const TUint KWordAlignMask = KMaxTUint32 << 5;
+
+	M::RamAllocIsLocked();
+
+	__NK_ASSERT_DEBUG(aZone - iZones < (TInt)iNumZones);
+	// Makes things simpler for bma selection.
+	__NK_ASSERT_DEBUG(aType != EPageUnknown);
+
+	if (aOffset > aEndOffset)
+		{// UnblockContiguous() has already searched the whole range for this page type.
+		return 0;
+		}
+
+	TUint wordIndex = aOffset >> 5;
+	TUint endWordIndex = aEndOffset >> 5;
+
+	// Select the BMA to search, 
+	TUint bmaIndex = (aType == EPageTypes)? KBmaAllPages : aType;
+	TUint32* map = &(aZone->iBma[bmaIndex]->iMap[wordIndex]);
+	TUint32* mapEnd = &(aZone->iBma[bmaIndex]->iMap[endWordIndex]);
+	TUint32 bits = *map;
+
+	// Set bits for pages before 'offset' (i.e. ones we want to ignore)...
+	bits |= ~(KMaxTUint32 >> (aOffset & ~KWordAlignMask));
+
+	// Find the first bit map word from aOffset in aZone with allocated pages
+	while (bits == KMaxTUint32 && map < mapEnd)
+		{
+		bits = *++map;
+		}
+
+	if (map == mapEnd)
+		{// Have reached the last bit mask word so set the bits that are
+		//  outside of the range so that they are ignored.
+		bits |= (KMaxTUint32 >> (aEndOffset & ~KWordAlignMask)) >> 1;
+		}
+
+	if (bits == KMaxTUint32)
+		{// No allocated pages found in the range.
+		aOffset = aEndOffset + 1;
+		return 0;
+		}
+
+	// Now we have bits with allocated pages in it so determine the exact 
+	// offset of the next allocated page
+	TInt msOne = __e32_find_ms1_32(~bits);
+	__NK_ASSERT_DEBUG(msOne >= 0);	// Must have at least one allocated page in the word.
+	TUint msOneOffset = 31 - msOne;
+	aOffset = ((map - aZone->iBma[bmaIndex]->iMap) << 5) + msOneOffset;
+	TUint32* runWord = map;
+
+	if (map < mapEnd && __e32_bit_count_32(~bits) == msOne + 1)
+		{// The whole of the region in this word is allocated.
+		// Find the next word which isn't completely allocated within the range.
+		do
+			{
+			bits = *++map;
+			}
+		while (!bits && map < mapEnd);
+		}
+
+	// Clear any bits before the run so can get next free from __e32_find_msl_32().
+	if (runWord == map)
+		bits &= KMaxTUint32 >> (aOffset & ~KWordAlignMask);
+	TInt msFree = __e32_find_ms1_32(bits);
+	__NK_ASSERT_DEBUG(msFree >= 0 || map == mapEnd);
+	TUint msFreeOffset = (msFree >= 0)? 31 - msFree : 32;
+	TUint endIndex = map - aZone->iBma[bmaIndex]->iMap;
+	TUint runEnd = (endIndex << 5) + msFreeOffset;
+	if (runEnd > aEndOffset + 1)	// Ensure we don't go past the range.
+		runEnd = aEndOffset + 1;
+	__NK_ASSERT_DEBUG(runEnd > aOffset);
+
+	return runEnd - aOffset;
+	}
+
+
 /**
 See if any of the least preferable RAM zones can be emptied.  If they can then 
 initialise the allocator for a general defragmentation operation.
--- a/kernel/eka/memmodel/epoc/moving/mchunk.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/moving/mchunk.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -467,7 +467,8 @@
 		{
 		// Allocate a block of contiguous RAM from the free pool
 		TInt numPages=(endOffset-offset)>>m.iPageShift;
-		r=m.AllocContiguousRam(numPages<<m.iPageShift, nextPage, GetPageType(), 0);
+		__NK_ASSERT_DEBUG(EPageFixed == GetPageType());
+		r=m.AllocContiguousRam(numPages<<m.iPageShift, nextPage, 0);
 		if (r!=KErrNone)
 			return r;
 		if(clearRam)
--- a/kernel/eka/memmodel/epoc/multiple/arm/xmmu.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/multiple/arm/xmmu.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1617,7 +1617,7 @@
 	if (aNumPages>1)
 		{
 		TInt align=aSeparateGlobal ? KPageDirectoryShift : KPageDirectoryShift-1;
-		r=AllocContiguousRam(aNumPages<<KPageShift, aPhysAddr, EPageFixed, align);
+		r=AllocContiguousRam(aNumPages<<KPageShift, aPhysAddr, align);
 		}
 	else
 		r=AllocRamPages(&aPhysAddr,1, EPageFixed);
--- a/kernel/eka/memmodel/epoc/multiple/mchunk.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/memmodel/epoc/multiple/mchunk.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -417,7 +417,8 @@
 		{
 		// Allocate a block of contiguous RAM from the free pool
 		TInt numPages=(endOffset-offset)>>m.iPageShift;
-		r=m.AllocContiguousRam(numPages<<m.iPageShift, nextPage, GetPageType(), 0);
+		__NK_ASSERT_DEBUG(EPageFixed == GetPageType());
+		r=m.AllocContiguousRam(numPages<<m.iPageShift, nextPage, 0);
 		if (r!=KErrNone)
 			return r;
 		if(clearRam)
--- a/kernel/eka/release.txt	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/release.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -1,3 +1,122 @@
+Version 2.00.3085
+=================
+(Made by vfebvre 18/05/2010)
+
+1.	gayarama
+	1.	ou1cimx1#382130 DEV HCR settings to be used by PRM and its clients
+
+2.	mipetzol
+	1.	MINOR_CHANGE Updated comments in dma_v2.h
+
+
+Version 2.00.3084
+=================
+(Made by vfebvre 17/05/2010)
+
+1.	indrasin
+	1.	MINOR_CHANGE: TITANIUM (SIROCCO MIGRATION): submitting build.config.xml for sirocco migration to identify components to be build
+
+2.	shubmurt
+	1.	DEF144569 t_datapaging passes when data paging is not enabled
+		t_datapaging should fail if data paging is not reported in a ROM that is meant to be be data paged
+	2.	ou1cimx1#361046 T_WSD* test set fails to compile / run when built with RVCT4.0 compiler
+
+
+Version 2.00.3083
+=================
+(Made by vfebvre 13/05/2010)
+
+1.	famustaf
+	1.	ou1cimx1#380321 Build on Linux - Incorrect slash in #include in sf_sys.cpp
+
+2.	cnotton
+	1.	ou1cimx1#380725 Public headers in bt are including platform headers
+
+
+Version 2.00.3082
+=================
+(Made by vfebvre 12/05/2010)
+
+1.	mipetzol
+	1.	MINOR_CHANGE Update to DMAv2 Porting Guide
+
+2.	lanerobe
+	1.	ou1cimx1#378811 Change kernel use of %lS to %S
+	2.	ou1cimx1#378808 MCL Stop ExecHandler accessing user descriptors directly
+
+3.	migubarr
+	1.	ou1cimx1#377322 New T_FILECACHE test failures (t_filecache.cpp:356)
+
+4.	hengrant
+	1.	ou1cimx1#370931 Memory card gets locked by itself MCL
+
+
+Version 2.00.3081
+=================
+(Made by vfebvre 11/05/2010)
+
+1.	jimhofe
+	1.	ou1cimx1#367892 Changing MedSD3c PolicyId from 2 to 1461
+
+2.	martai
+	1.	PDEF145025 Support rapu variant specific e32tests 
+
+3.	kmetherm
+	1.	PR457093 RVCT 4 compatible software codebase (SSS)
+
+
+Version 2.00.3080
+=================
+(Made by vfebvre 10/05/2010)
+
+1.	necliffo
+	1.	ou1cimx1#378256 eMMC reliable Write can increase wear of eMMC devices
+
+2.	jessiezh
+	1.	MINOR_CHANGE Re-enable T_SOUND2 test
+	2.	ou1cimx1#367177 E32TEST T_DOMAIN test failure investigation
+
+3.	gcochran
+	1.	ou1cimx1#367939 MCL: Undefined Symbol error with the header "e32math.h"
+
+
+Version 2.00.3079
+=================
+(Made by vfebvre 07/05/2010)
+
+1.	mipetzol
+	1.	MINOR_CHANGE: Updated comment in dma_v1.h
+	2.	MINOR_CHANGE: Updated comment in dma_v2.h
+
+
+Version 2.00.3078
+=================
+(Made by vfebvre 05/05/2010)
+
+1.	cnotton
+	1.	ou1cimx1#345137 idlehelper_lib & Power DLL don't build for ARM4SMP (kernelhwsrv)
+
+2.	jimmzhou
+	1.	ou1cimx1#366912 [kernelmcl][[Internal]t_usbapi test is not ready to run on production phone environment Vasco/hw79
+
+3.	ricoles
+	1.	PDEF144020 SMP known test failures
+
+4.	y153liu
+	1.	ou1cimx1#355904 MCL_Music playback is not correct after resuming the playback from the USB headset AD-83 after long pause
+
+
+Version 2.00.3077
+=================
+(Made by vfebvre 04/05/2010)
+
+1.	martai
+	1.	ou1cimx1#337920 WDP:Potential system impact of flushing the entire page cache is unacceptable
+
+2.	shubmurt
+	1.	PDEF145383 E32TEST T_DATAPAGING occasionally reports KERN-EXEC 17 on SMPDATAPAGE configs
+
+
 Version 2.00.3076
 =================
 (Made by vfebvre 30/04/2010)
--- a/kernel/eka/rombuild/base.iby	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/rombuild/base.iby	Fri Jun 11 15:02:23 2010 +0300
@@ -92,7 +92,6 @@
 
 secondary=ABI_DIR\DEBUG_DIR\efile.exe                       \sys\bin\efile.exe  FIXED HEAPMAX(0x40000)
 file=ABI_DIR\DEBUG_DIR\efsrv.dll                            \sys\bin\EFSrv.dll
-device[VARID]=KERNEL_DIR\DEBUG_DIR\d_ftrace.ldd             \sys\bin\d_ftrace.ldd
 
 #ifdef WITH_EXFAT
 file=ABI_DIR\DEBUG_DIR\exfat.fsy                            sys\bin\exfat.fsy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kernel/eka/rombuild/not_data_paged.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,1 @@
+#Check if the rom is meant to be datapaged
\ No newline at end of file
--- a/kernel/eka/rombuild/user.iby	Thu May 27 14:17:14 2010 +0300
+++ b/kernel/eka/rombuild/user.iby	Fri Jun 11 15:02:23 2010 +0300
@@ -174,6 +174,10 @@
 #endif
 #endif // PAGED_DATA
 
+#if !defined(PAGED_DATA)
+data=##BASEPATH##kernelhwsrv\kernel\eka\rombuild\not_data_paged.txt  Test\not_data_paged.txt unpaged paging_unmovable
+#endif //#if !defined(PAGED_DATA)
+
 // Test constant patching works by setting KHeapMinCellSize to zero, which is the default anyway
 patchdata ekern.exe @ KHeapMinCellSize 0
 patchdata euser.dll @ KHeapMinCellSize 0
--- a/kernelhwsrv_info/doc_pub/kernelhwsrv_doc_pub.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernelhwsrv_info/doc_pub/kernelhwsrv_doc_pub.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Kernel and Hardware Services Documentation"
 
 component	kernelhwsrv_doc_pub
--- a/kernelhwsrv_info/kernelhwsrv_metadata/kernelhwsrv_metadata.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kernelhwsrv_info/kernelhwsrv_metadata/kernelhwsrv_metadata.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,19 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-
 component           kernelhwsrv_metadata
 source   \sf\os\kernelhwsrv\kernelhwsrv_info\kernelhwsrv_metadata 
 source   \sf\os\kernelhwsrv\package_definition.xml
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/benchmark/bm_rapu_pdd.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,262 @@
+// Copyright (c) 2002-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:
+//
+/*
+Change History:
+VERSION     : 2     26-01-2010     Ruixing Yang
+REASON      : 
+REFERENCE   : 
+DESCRIPTION : The timer resolution is modified for better interrupt latency calculation
+
+Change History:
+VERSION     : 1     25-01-2010     Ruixing Yang
+REASON      : 
+REFERENCE   : 
+DESCRIPTION : Initial implementation of BM_SUITE PDD for Rapu platform
+
+*/
+
+
+#include <kernel/kernel.h>
+#include <internal/rap_hw.h>
+#include <internal/rap.h>
+#include "k32bm.h"
+
+
+
+
+	
+
+class DBMRapuDevice : public DPhysicalDevice
+	{
+public:
+	DBMRapuDevice();
+	virtual TInt Install();
+	virtual void GetCaps(TDes8& aDes) const;
+	virtual TInt Create(DBase*& aChannel, TInt aUnit, const TDesC8* anInfo, const TVersion& aVer);
+	virtual TInt Validate(TInt aUnit, const TDesC8* anInfo, const TVersion& aVer);
+	};
+
+class DBMRapuChannel : public DBMPChannel
+	{
+public:
+	DBMRapuChannel();
+	~DBMRapuChannel();
+	virtual TBMTicks TimerPeriod();
+	virtual TBMTicks TimerStamp();
+	virtual TBMNs TimerTicksToNs(TBMTicks);
+	virtual TBMTicks TimerNsToTicks(TBMNs);
+	virtual TInt BindInterrupt(MBMIsr*);
+	virtual TInt BindInterrupt(MBMInterruptLatencyIsr*);
+	virtual void RequestInterrupt();
+	virtual void CancelInterrupt();
+
+private:
+	
+	static const TBMTicks	KBMRapuPeriod = (((TBMTicks) 1) << 32);
+	// Ticks at 1000Hz, input clock to timer @ 32.768 MHz.
+	static const TInt KHighResTimerFrequency = 32768000;   // 32.768 MHz
+	
+	static const TBMNs		KBMRapuNsPerTick = (1000*1000*1000) / KHighResTimerFrequency;	
+	static const TInt KRTC_Freq = 32768;
+	static const TInt KRTC_Ratio = 1172;
+	
+
+		
+	static void Isr(TAny*);
+	
+	MBMIsr*								iIsr;
+	MBMInterruptLatencyIsr*		iInterruptLatencyIsr;	
+	TUint									iTmpStartCount;
+	TUint									iTmpLongCount;	
+	NTimer								iTimer;
+	volatile TUint				iStartCount;
+	volatile TUint				iRunCount;
+	volatile TUint				iCancelCount;
+	};
+	
+	RTC001_STR& RTC001 = *reinterpret_cast<RTC001_STR*>(KRapRegRTC001);
+	GPT003_STR& GPT003 = *reinterpret_cast<GPT003_STR*>(KRapRegGPT003A0);
+	
+	
+DECLARE_STANDARD_PDD()
+//
+// Create a new device
+//
+	{
+	__ASSERT_CRITICAL;
+	return new DBMRapuDevice;
+	}
+	
+DBMRapuDevice::DBMRapuDevice()
+//
+// Constructor
+//
+	{
+	
+	iVersion = TVersion(1,0,1);
+	}
+	
+TInt DBMRapuDevice::Install()
+//
+// Install the device driver.
+//
+	{
+		
+	TInt r = SetName(&KBMPdName);
+	return r;
+	}
+	
+void DBMRapuDevice::GetCaps(TDes8& aDes) const
+//
+// Return the Comm capabilities.
+//
+	{
+	
+	}
+	
+TInt DBMRapuDevice::Create(DBase*& aChannel, TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& /*aVer*/)
+//
+// Create a channel on the device.
+//
+	{
+		
+	__ASSERT_CRITICAL;
+	aChannel = new DBMRapuChannel;
+	return aChannel?KErrNone:KErrNoMemory;
+	}
+
+TInt DBMRapuDevice::Validate(TInt /*aUnit*/, const TDesC8* /*anInfo*/, const TVersion& aVer)
+	{
+		
+	if (!Kern::QueryVersionSupported(iVersion,aVer))
+		{
+		return KErrNotSupported;
+		}
+	return KErrNone;
+	}
+	
+DBMRapuChannel::DBMRapuChannel()
+	: iTimer(&Isr, this)
+	{
+	iTmpStartCount = 0;
+	iTmpLongCount = 0;
+	}
+	
+DBMRapuChannel::~DBMRapuChannel()
+	{
+	//Kern::Printf(("DBMRapuChannel::~DBMRapuChannel()"));	
+	CancelInterrupt();
+	}
+
+TBMTicks DBMRapuChannel::TimerPeriod()
+	{
+		//Kern::Printf(("DBMRapuChannel::TimerPeriod()"));
+	return KBMRapuPeriod;
+	}
+
+TBMTicks DBMRapuChannel::TimerStamp()
+	{
+	//Kern::Printf(("DBMRapuChannel::TimerStamp(), iTimerCount = %u"), RPTimer1::Timer().iTimerCount);	
+	TUint tmpTimeStamp;
+	RTC001.TRIGGER = 0;	
+	tmpTimeStamp = RTC001.LONGCOUNT;
+	tmpTimeStamp *= KRTC_Ratio;
+	tmpTimeStamp += RTC001.SHORTCOUNT;		
+	return tmpTimeStamp;	
+	}	
+
+
+TBMNs DBMRapuChannel::TimerTicksToNs(TBMTicks ticks)
+	{
+	//Kern::Printf(("DBMRapuChannel::TimerTIcksToNs(), iNsPerTick = %u"), (TBMTicks)iNsPerTick);
+	return ticks * KBMRapuNsPerTick;
+	}
+
+TBMTicks DBMRapuChannel::TimerNsToTicks(TBMNs ns)
+	{
+	//Kern::Printf(("DBMRapuChannel::TimerNsToTicks()"));
+	return ns / KBMRapuNsPerTick;	
+	}
+	
+void DBMRapuChannel::Isr(TAny* ptr)
+	{
+	//Kern::Printf(("DBMRapuChannel::Isr()"));
+	// Read RTC001	
+	RTC001.TRIGGER = 0;
+	TUint x = RTC001.LONGCOUNT;
+	x *= KRTC_Ratio;
+	x += RTC001.SHORTCOUNT;
+	TUint wasteTime = 1000000/KBMRapuNsPerTick; //NTimer's resolution is 1 ms = 1000000 ns	
+			
+	DBMRapuChannel* mCh = (DBMRapuChannel*) ptr;
+	BM_ASSERT(mCh->iIsr || mCh->iInterruptLatencyIsr);
+	if (mCh->iIsr)
+		{				
+		mCh->iIsr->Isr( x);	
+		}
+	else
+		{				
+		TUint y = (TUint)( x - mCh->iTmpLongCount - wasteTime);
+		//Kern::Printf(("DBMRapuChannel::Isr(), latency = %u"), y);	
+		mCh->iInterruptLatencyIsr->InterruptLatencyIsr(y);
+		}
+	__e32_atomic_add_ord32(&mCh->iRunCount, 1);
+	}	
+
+TInt DBMRapuChannel::BindInterrupt(MBMIsr* aIsr)
+	{
+	//Kern::Printf(("DBMRapuChannel::BindInterrupt(MBMIsr* aIsr)"));
+	BM_ASSERT(!iIsr);
+	BM_ASSERT(!iInterruptLatencyIsr);
+	iIsr = aIsr;
+	return KErrNone;
+	}
+
+TInt DBMRapuChannel::BindInterrupt(MBMInterruptLatencyIsr* aIsr)
+	{
+	//Kern::Printf(("DBMRapuChannel::BindInterrupt(MBMInterruptLatencyIsr* aIsr)"));
+	BM_ASSERT(!iIsr);
+	BM_ASSERT(!iInterruptLatencyIsr);
+	iInterruptLatencyIsr = aIsr;
+	return KErrNone;
+	}
+
+
+void DBMRapuChannel::RequestInterrupt()
+	{
+	//Kern::Printf(("DBMRapuChannel::RequestInterrupt()"));	
+	BM_ASSERT(iIsr || iInterruptLatencyIsr);		
+	// Read RTC001
+	RTC001.TRIGGER = 0;	
+	iTmpLongCount = RTC001.LONGCOUNT;
+	iTmpLongCount *= KRTC_Ratio;
+	iTmpLongCount += RTC001.SHORTCOUNT;					
+	if (iTimer.OneShot(1)==KErrNone)
+		__e32_atomic_add_ord32(&iStartCount, 1);
+	
+	}
+
+void DBMRapuChannel::CancelInterrupt()
+	{
+	iTmpStartCount = 0;
+	//Kern::Printf(("DBMRapuChannel::CancelInterrupt()"));		
+	if (iTimer.Cancel())
+		__e32_atomic_add_ord32(&iCancelCount, 1);
+	while (iStartCount != iCancelCount + iRunCount)
+		{}
+	}
+	
+	
+		
\ No newline at end of file
--- a/kerneltest/e32test/buffer/t_char.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/buffer/t_char.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
@@ -370,9 +370,9 @@
 	}
 
 
-//
+//////////////////////////////////////////////
 // Test Fold, Fold(TChar::EFoldAccents), Collate, LowerCase, UpperCase
-//
+////////////////////////////////////////////
 template<class TCharType>
 GLDEF_C void TestTChar<TCharType>::Test4(TCharTypes CharType)
 	{
--- a/kerneltest/e32test/buffer/t_tbma.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/buffer/t_tbma.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -682,6 +682,62 @@
 	delete pA;
 	}
 
+
+void TestSelectiveAlloc(TInt aSize)
+	{
+	test.Printf(_L("TestSelectiveAlloc %d\n"),aSize);
+	TBitMapAllocator* pA=TBitMapAllocator::New(aSize, ETrue);
+	test(pA!=NULL);
+	test(pA->Avail()==aSize);
+	// Allocate whole free bma
+	test_Equal(aSize, pA->SelectiveAlloc(0, aSize));
+	test_Equal(0,pA->Avail());
+	// Allocate whole full bma
+	test_Equal(0, pA->SelectiveAlloc(0, aSize));
+	test_Equal(0,pA->Avail());
+	TInt i;
+	TInt j;
+	TInt l;
+	for (i=2; i<8; ++i)
+		{
+		for (l=1; l<=aSize; ++l)
+			{
+			new (pA) TBitMapAllocator(aSize, ETrue);
+			for (j=0; j<aSize; j+=i)
+				pA->Alloc(j,1);
+			TInt orig=pA->Avail();
+			test_Equal(aSize-(aSize+i-1)/i, orig);
+			TUint newAllocs = pA->SelectiveAlloc(0,l);
+			TInt allocated = orig - pA->Avail();
+			test_Equal(allocated, newAllocs);
+			test_Equal(l - (l+i-1)/i, allocated);
+			Check(*pA);
+			}
+		}
+	for (i=0; i<=Min(32,aSize-1); ++i)
+		{
+		for (l=1; l<=aSize-i; ++l)
+			{
+			for (j=1; j<=aSize; ++j)
+				{
+				new (pA) TBitMapAllocator(aSize, ETrue);
+				pA->Alloc(i,l);
+				test_Equal(aSize-l, pA->Avail());
+				TUint newAllocs = pA->SelectiveAlloc(0,j);
+				TUint allocated = j - Max(0,Min(i+l,j)-i);
+				test_Equal(allocated, newAllocs);
+				test_Equal(pA->Avail(), aSize-l-allocated);
+				test(!pA->NotAllocated(0,j));
+				if (j>=i && j<i+l)
+					test(!pA->NotAllocated(0,j+1));
+				Check(*pA);
+				}
+			}
+		}
+	delete pA;
+	}
+
+
 TBitMapAllocator* DoSetupBMA(TInt aSize, VA_LIST aList)
 	{
 	TBitMapAllocator* pA=TBitMapAllocator::New(aSize, EFalse);
@@ -1246,6 +1302,11 @@
 	TestSelectiveFree(128);
 	TestSelectiveFree(149);
 
+	TestSelectiveAlloc(3);
+	TestSelectiveAlloc(31);
+	TestSelectiveAlloc(128);
+	TestSelectiveAlloc(149);
+
 	TestAllocConsecutive();
 
 	TestChain();
--- a/kerneltest/e32test/buffer/t_tbma.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/buffer/t_tbma.h	Fri Jun 11 15:02:23 2010 +0300
@@ -39,6 +39,7 @@
 	IMPORT_C void Free(TInt aPos);
 	IMPORT_C void Alloc(TInt aStart, TInt aLength);
 	IMPORT_C void Free(TInt aStart, TInt aLength);
+	IMPORT_C TUint SelectiveAlloc(TInt aStart, TInt aLength);
 	IMPORT_C void SelectiveFree(TInt aStart, TInt aLength);
 	IMPORT_C TBool NotFree(TInt aStart, TInt aLength) const;
 	IMPORT_C TBool NotAllocated(TInt aStart, TInt aLength) const;
--- a/kerneltest/e32test/cppexceptions/second_excp.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/cppexceptions/second_excp.h	Fri Jun 11 15:02:23 2010 +0300
@@ -41,7 +41,11 @@
 
 class MyFourthException : public VB1 , public VB2 {
 public:
+#if defined(__ARMCC__) && __ARMCC_VERSION >= 400000
+  EXPORT_C MyFourthException(int x) { iVal = x; iVal2=x+2;};
+#else
   MyFourthException(int x) { iVal = x; iVal2=x+2;};
+#endif
   int iVal2;
 };
 
--- a/kerneltest/e32test/defrag/t_ramdefrag.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/defrag/t_ramdefrag.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -33,6 +33,7 @@
 #include <e32math.h>
 #include <hal.h>
 #include "testdefs.h"
+#include "..\mmu\mmudetect.h"
 
 
 #include <dptest.h>
@@ -128,6 +129,7 @@
 LOCAL_D TInt* gCandList1;											// Array of zones that have the same preference and the same
 LOCAL_D TInt* gCandList2;											// amount of free pages
 const TInt KInvalidCandIndex = -1;
+LOCAL_D TUint gMemModel;
 
 //
 // GetDrive
@@ -489,6 +491,8 @@
 									currentCacheSize >> gPageShift));
 		}
 
+	// Get the memory model of the kernel that this test is running on.
+	gMemModel = MemModelType();
 	return KErrNone;
 	}
 
@@ -1536,7 +1540,7 @@
 		}
 
 	if (totalMorePrefInUse > requiredMovDis)
-		{// There enough allocatable pages in the RAM zones below the currently 
+		{// There are enough allocatable pages in the RAM zones below the currently 
 		// least preferable RAM in use.
 		test.Printf(_L("Memory is spread out totalMorePref 0x%x required 0x%x\n"), totalMorePrefInUse, requiredMovDis);
 		if (verifySpread)
@@ -9439,6 +9443,14 @@
 
 	test.Next(_L("Test5: Filling the FS Cache and allocating more than 16 contiguous fixed pages"));	
 	TestStart();
+
+	if (gMemModel >= EMemModelTypeFlexible)
+		{// The flexible memory model won't flush the whole paging cache for 
+		// contiguous allocations >16 pages so skip the next test.
+		test.Printf(_L("This memory model won't flush the cache - Skipping...\n"));
+		goto SkipTest5;
+		}
+
 	// TestEnd() will have reduced any cache pages to minimum so just get current 
 	// count of discardable pages.
 	GetAllPageInfo();
--- a/kerneltest/e32test/demandpaging/t_datapaging.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/demandpaging/t_datapaging.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -38,7 +38,7 @@
 #include <e32msgqueue.h>
 #include <e32atomics.h>
 #include <e32math.h>
-
+#include <f32file.h>
 #include "t_dpcmn.h"
 #include "../mmu/mmudetect.h"
 #include "../mmu/d_memorytest.h"
@@ -236,7 +236,7 @@
 		CLOSE_AND_WAIT(thread);
 		}
 	CLOSE_AND_WAIT(gChunk);
-	User::After(1000000);
+	UserSvr::HalFunction(EHalGroupKernel, EKernelHalSupervisorBarrier, 0, 0);
 	__KHEAP_MARKEND;
 	}
 
@@ -783,6 +783,9 @@
 	test_KErrNone(timeoutStatus.Int());
 	
 	CLOSE_AND_WAIT(gChunk);
+	
+	UserSvr::HalFunction(EHalGroupKernel, EKernelHalSupervisorBarrier, 0, 0);
+	
 	__KHEAP_MARKEND;
 	}
 
@@ -1199,6 +1202,17 @@
 	test.Title();
 	test_KErrNone(GetGlobalPolicies());
 
+	_LIT(KFileName,"Z:\\Test\\not_data_paged.txt");
+	RFs fs;
+	RFile file;
+	TInt error;
+	test(KErrNone == fs.Connect());
+	error = file.Open(fs, KFileName, EFileRead);
+	TBool isFilePresent = (error == KErrNone);
+	file.Close();
+	fs.Close();
+	test(gDataPagingSupported == !isFilePresent);
+
 	test.Start(_L("Test HAL APIs"));
 	TestHal();
 
--- a/kerneltest/e32test/device/t_usbapi.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/device/t_usbapi.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1849,6 +1849,29 @@
 	{
 	test.Start(_L("Test Endpoint Stall Status"));
 
+#ifdef BSW_USB_DRC
+	// The MACRO comes from ncp adaptation to indicate that otg is built in.
+	// Newly added code for defect ou1cimx1#267421. When otg is built in and the device is not 
+	// in peripheral role, the ncp adaptation will return a dummy endpoint for the stall operation.
+	// The solution is to check if the device is in peripheral mode, if not, skip the stall
+	// operation. A problem is now we can't find a good solution to check the current role of the device.
+	// For the test environement, it's ok to use the USB state to confirm and from the test result,
+	// it works fine. Later when we find accurate method, we will change the confirmation logic.
+	TInt ret = KErrNone;
+
+	TUsbcDeviceState devstate = EUsbcDeviceStateUndefined;
+	ret = gPort.DeviceStatus(devstate);
+	test(ret == KErrNone);
+
+	if( EUsbcDeviceStateUndefined==devstate )
+		{
+		test.Printf( _L("Device not connected, state EUsbcDeviceStateUndefined.\n")  );
+		test.Printf( _L("Skipping endpoint stall status tests.\n") );
+		test.End();
+		return;
+		}
+#endif
+
 	if (!SupportsEndpointStall())
 		{
 		test.Printf(_L("*** Not supported - skipping endpoint stall status tests\n"));
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/digitiser/digi.auto.bat	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,19 @@
+rem
+rem Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+rem All rights reserved.
+rem This component and the accompanying materials are made available
+rem under the terms of the License "Eclipse Public License v1.0"
+rem which accompanies this distribution, and is available
+rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+rem
+rem Initial Contributors:
+rem Nokia Corporation - initial contribution.
+rem
+rem Contributors:
+rem
+rem Description:
+rem
+
+t_userdigitisertest
+t_userdigitisernocap
+t_ldddigitisertest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/digitiser/digitiser.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,44 @@
+// 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:
+// Digitiser Driver Tests
+// Convienence INF file to build just Digitiser tests "bldmake -f digitiser.inf bldfiles"
+// Test MMPs also part of the offical ../group/bld.inf e32test component.
+//
+
+/**
+@file
+
+@SYMPurpose Kernel and User library test code
+*/
+
+PRJ_PLATFORMS
+
+BASEDEFAULT
+
+PRJ_TESTEXPORTS
+
+digitiser_tests.iby			/epoc32/rom/include/digitiser_tests.iby
+tshell_digitisertests.oby	../../../kernel/eka/rombuild/tshell_digitisertests.oby
+
+digi.auto.bat				/epoc32/rom/include/digi.auto.bat
+
+PRJ_TESTMMPFILES
+
+..\group\d_ldddigitisertest			support
+
+#ifndef SMP
+..\group\t_userdigitisertest
+..\group\t_userdigitisernocaps
+..\group\t_ldddigitisertest
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/digitiser/digitiser_tests.iby	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,27 @@
+// 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:
+// Digitiser Driver Test Application
+//
+
+#ifndef __DIGITISER_TEST_IBY__
+#define __DIGITISER_TEST_IBY__
+
+device[VARID]=\Epoc32\Release\##KMAIN##\##BUILD##\d_ldddigitisertest.ldd	\sys\bin\d_ldddigitisertest.ldd
+file=\Epoc32\Release\##MAIN##\##BUILD##\t_ldddigitisertest.exe				\sys\bin\t_ldddigitisertest.exe
+file=\Epoc32\Release\##MAIN##\##BUILD##\t_userdigitisertest.exe				\sys\bin\t_userdigitisertest.exe
+file=\Epoc32\Release\##MAIN##\##BUILD##\t_userdigitisernocaps.exe			\sys\bin\t_userdigitisernocaps.exe
+
+data=\epoc32\rom\include\digi.auto.bat										\digi.auot.bat
+
+#endif // __DIGITISER_TEST_IBY__
--- a/kerneltest/e32test/digitiser/t_traweventdigitiser.cpp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-// Copyright (c) 2008-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:
-// e32test\digitiser\t_traweventdigitiser.cpp
-// Overview:
-// Test the TRawEvent APIS and events associated with the Digitiser and also verify the BTRACEs (manually)
-// API Information:
-// UserSvr
-// Details:
-// - Test the following 6  Events types 
-// 1.	EPointerMove
-// 2.	EPointer3DInRange,
-// 3.	EPointer3DOutOfRange,
-// 4.	EPointer3DTilt,
-// 5.	EPointer3DRotation,
-// 6.	EPointer3DTiltAndMove,
-// Platforms/Drives/Compatibility:
-// All.
-// Assumptions/Requirement/Pre-requisites: 
-// Failures and causes:
-// 
-//
-
-#include <e32test.h>
-#include <e32svr.h>
-#include <e32cmn.h>
-#include <e32cmn_private.h>
-
-LOCAL_D RTest test(_L("t_TRawEventDigitiser"));
-
-class TestTRawDigitiserEvent
-	{
-public:
-	TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 iTip);
-	void TestEvents();	
-private:	
-	TRawEvent::TType iType;
-	TInt iX;
-    TInt iY;
-	TInt iZ;
-	TInt iScanCode;
-	TInt iPhi;
-	TInt iTheta;
-	TInt iAlpha;
-	TUint8 iPointerNumber;
-	TUint8 iTip;
-	TRawEvent iDigitiser3DEvent;
-	};
-
-
-TestTRawDigitiserEvent::TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 aTip):iType(aType),iX(aX),iY(aY),iZ(aZ),iScanCode(aScanCode),iPhi(aPhi),iTheta(aTheta),iAlpha(aAlpha),iPointerNumber(aPointerNumber),iTip(aTip)
-	{}
-
-
-void TestTRawDigitiserEvent::TestEvents()
-	{
-	
-	test(iDigitiser3DEvent.Type()==0);
-	iDigitiser3DEvent.Set(iType);
-	test(iDigitiser3DEvent.Type()==iType);
-	iDigitiser3DEvent.SetPointerNumber(iPointerNumber);
-	test(iPointerNumber == iDigitiser3DEvent.PointerNumber());
-	iDigitiser3DEvent.Set(iType,iScanCode);
-	//Set the Type temporarily to get through the assertion 
-	iDigitiser3DEvent.Set(TRawEvent::EKeyDown);
-    test(iScanCode==iDigitiser3DEvent.ScanCode());
-	iDigitiser3DEvent.Set(iType,iX,iY);
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointerMove);
-	test(TPoint(iX,iY)==iDigitiser3DEvent.Pos());
-	iDigitiser3DEvent.Set(iType,iX,iY,iZ);
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointerMove);
-	test(TPoint3D(iX,iY,iZ)==iDigitiser3DEvent.Pos3D());
-	iDigitiser3DEvent.SetTip(iTip);
-	test(TBool(iTip) == iDigitiser3DEvent.IsTip());
-	iDigitiser3DEvent.SetTilt(iType,iPhi,iTheta);
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTilt);
-	TAngle3D rawEventAnge3D=iDigitiser3DEvent.Tilt();
-	test((rawEventAnge3D.iPhi==iPhi) && (rawEventAnge3D.iTheta==iTheta)) ;
-	
-
-	iDigitiser3DEvent.SetRotation(iType,iAlpha);
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointer3DRotation);
-	test(iAlpha == iDigitiser3DEvent.Rotation());
-	iDigitiser3DEvent.Set(iType,iX+1,iY+1,iZ+1,iPhi+1,iTheta+1,iAlpha+1);
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove);
-	test(TPoint3D(iX+1,iY+1,iZ+1)==iDigitiser3DEvent.Pos3D());
-    rawEventAnge3D=iDigitiser3DEvent.Tilt();
-	test((rawEventAnge3D.iPhi==iPhi+1) &&(rawEventAnge3D.iTheta==iTheta+1));	
-	test((iAlpha+1) == iDigitiser3DEvent.Rotation());   
-	iDigitiser3DEvent.Set(iType,iX+2,iY+2,iZ+2,static_cast<TUint8>(iPointerNumber+1));
-	//Set the Type temporarily to get through the assertion
-	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove);
-  	test(TPoint3D(iX+2,iY+2,iZ+2)==iDigitiser3DEvent.Pos3D());
-	test((iPointerNumber+1) == iDigitiser3DEvent.PointerNumber());
-
-	UserSvr::AddEvent(iDigitiser3DEvent);
-	}
-
-
-GLDEF_C TInt E32Main()
-//
-//
-    {
-
- 	test.Title();
-	test.Start(_L("Testing Digitiser Events"));
-	
-    TestTRawDigitiserEvent digitiserEvent1(TRawEvent::EPointerMove, -890,-123, -823,455,2563,156,62,3,1);
-	TestTRawDigitiserEvent digitiserEvent2(TRawEvent::EPointer3DInRange, 23,45,23,1,2,6,4,2,1);
-	TestTRawDigitiserEvent digitiserEvent3(TRawEvent::EPointer3DOutOfRange, 23,45,23,1,2,6,4,2,0);
-	TestTRawDigitiserEvent digitiserEvent4(TRawEvent::EPointer3DTilt, 23,45,23,1,2,6,4,2,1);
-	TestTRawDigitiserEvent digitiserEvent5(TRawEvent::EPointer3DRotation, 23,45,23,1,2,6,4,2,1);
-	TestTRawDigitiserEvent digitiserEvent6(TRawEvent::EPointer3DTiltAndMove, 23,45,23,1,2,6,4,2,0);
-
-    digitiserEvent1.TestEvents();
-	digitiserEvent2.TestEvents();
-	digitiserEvent3.TestEvents();
-	digitiserEvent4.TestEvents();
-	digitiserEvent5.TestEvents();
-	digitiserEvent6.TestEvents();    
-	test.Printf(_L("T_TRAWEVENTDIGITISER: TEST Successfully Completed\n"));
-	test.End();
-	test.Close();
-
-    return KErrNone;
-
-    }
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/digitiser/t_userdigitisertest.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,267 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// e32test\digitiser\t_userdigitisertest.cpp
+// Overview:
+// Test the TRawEvent APIS and events associated with the Digitiser and also verify the BTRACEs (manually)
+// Test HAL digitiser orientation attribute
+// API Information:
+// UserSvr
+// Details:
+// - Test the following 6  Events types 
+// 1.	EPointerMove
+// 2.	EPointer3DInRange,
+// 3.	EPointer3DOutOfRange,
+// 4.	EPointer3DTilt,
+// 5.	EPointer3DRotation,
+// 6.	EPointer3DTiltAndMove,
+// Platforms/Drives/Compatibility:
+// All.
+// Assumptions/Requirement/Pre-requisites: 
+// Failures and causes:
+// 
+//
+
+#define __E32TEST_EXTENSION__
+#include <e32test.h>
+#include <e32svr.h>
+#include <e32cmn.h>
+#include <e32cmn_private.h>
+#include <hal.h>
+
+#ifndef E32TEST_NOCAPS
+LOCAL_D RTest test(_L("T_UserDigitiserTest"));
+#else
+LOCAL_D RTest test(_L("T_UserDigitiserNoCaps"));
+#endif
+
+class TestTRawDigitiserEvent
+	{
+public:
+	TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 iTip);
+	void TestEvents();	
+private:	
+	TRawEvent::TType iType;
+	TInt iX;
+    TInt iY;
+	TInt iZ;
+	TInt iScanCode;
+	TInt iPhi;
+	TInt iTheta;
+	TInt iAlpha;
+	TUint8 iPointerNumber;
+	TUint8 iTip;
+	TRawEvent iDigitiser3DEvent;
+	};
+
+
+TestTRawDigitiserEvent::TestTRawDigitiserEvent(TRawEvent::TType aType,TInt aX,TInt aY,TInt aZ,TInt aScanCode,TInt aPhi,TInt aTheta,TInt aAlpha,TUint8 aPointerNumber,TUint8 aTip):iType(aType),iX(aX),iY(aY),iZ(aZ),iScanCode(aScanCode),iPhi(aPhi),iTheta(aTheta),iAlpha(aAlpha),iPointerNumber(aPointerNumber),iTip(aTip)
+	{}
+
+
+void TestTRawDigitiserEvent::TestEvents()
+	{
+	static TInt count = 0;
+	count++;
+	test.Printf(_L("TestTRawDigitiserEvent test case %2d\n"), count);
+	
+	test(iDigitiser3DEvent.Type()==0);
+	iDigitiser3DEvent.Set(iType);
+	test(iDigitiser3DEvent.Type()==iType);
+	iDigitiser3DEvent.SetPointerNumber(iPointerNumber);
+	test(iPointerNumber == iDigitiser3DEvent.PointerNumber());
+	iDigitiser3DEvent.Set(iType,iScanCode);
+	//Set the Type temporarily to get through the assertion 
+	iDigitiser3DEvent.Set(TRawEvent::EKeyDown);
+    test(iScanCode==iDigitiser3DEvent.ScanCode());
+	iDigitiser3DEvent.Set(iType,iX,iY);
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointerMove);
+	test(TPoint(iX,iY)==iDigitiser3DEvent.Pos());
+	iDigitiser3DEvent.Set(iType,iX,iY,iZ);
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointerMove);
+	test(TPoint3D(iX,iY,iZ)==iDigitiser3DEvent.Pos3D());
+	iDigitiser3DEvent.SetTip(iTip);
+	test(TBool(iTip) == iDigitiser3DEvent.IsTip());
+	iDigitiser3DEvent.SetTilt(iType,iPhi,iTheta);
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTilt);
+	TAngle3D rawEventAnge3D=iDigitiser3DEvent.Tilt();
+	test((rawEventAnge3D.iPhi==iPhi) && (rawEventAnge3D.iTheta==iTheta)) ;
+	
+
+	iDigitiser3DEvent.SetRotation(iType,iAlpha);
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointer3DRotation);
+	test(iAlpha == iDigitiser3DEvent.Rotation());
+	iDigitiser3DEvent.Set(iType,iX+1,iY+1,iZ+1,iPhi+1,iTheta+1,iAlpha+1);
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove);
+	test(TPoint3D(iX+1,iY+1,iZ+1)==iDigitiser3DEvent.Pos3D());
+    rawEventAnge3D=iDigitiser3DEvent.Tilt();
+	test((rawEventAnge3D.iPhi==iPhi+1) &&(rawEventAnge3D.iTheta==iTheta+1));	
+	test((iAlpha+1) == iDigitiser3DEvent.Rotation());   
+	iDigitiser3DEvent.Set(iType,iX+2,iY+2,iZ+2,static_cast<TUint8>(iPointerNumber+1));
+	//Set the Type temporarily to get through the assertion
+	iDigitiser3DEvent.Set(TRawEvent::EPointer3DTiltAndMove);
+  	test(TPoint3D(iX+2,iY+2,iZ+2)==iDigitiser3DEvent.Pos3D());
+	test((iPointerNumber+1) == iDigitiser3DEvent.PointerNumber());
+
+	UserSvr::AddEvent(iDigitiser3DEvent);
+	}
+	
+	
+struct HalAttribute_TestCase
+	{
+	HALData::TAttribute iAttr;
+	TInt				iValueIn;
+	TInt				iSetRC;		// Set to KMaxTInt to skip set test case
+	TInt				iGetRC;		// Set to KMaxTInt to skip get test case
+
+	};
+	
+static HalAttribute_TestCase gHalAttributeTests[] =
+	{
+#ifndef E32TEST_NOCAPS
+	// Normal all pass tests
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_000,		KErrNone, KErrNone},
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_090,		KErrNone, KErrNone},	
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_180,		KErrNone, KErrNone},
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_270,		KErrNone, KErrNone},
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default,	KErrNone, KErrNone},
+				
+	// Negative tests
+	{ HALData::EDigitiserOrientation, -1,		KErrArgument, KMaxTInt},
+	{ HALData::EDigitiserOrientation, 100,		KErrArgument, KMaxTInt},
+		
+#else
+	// Platsec tests for no capabilities executable.
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default,		KMaxTInt, KErrNone},			 // Get, No caps needed
+	{ HALData::EDigitiserOrientation, HALData::EDigitiserOrientation_default,		KErrPermissionDenied, KMaxTInt}, // Set WDD cap needed
+#endif
+	};
+	
+static TInt gNumHalAttributeTests = sizeof(gHalAttributeTests)/sizeof(HalAttribute_TestCase);
+
+void DoTestDigitiserHalAttributes()
+	{
+	__UHEAP_MARK;
+#ifndef E32TEST_NOCAPS
+	test.Start(_L("DoTestDigitiserHalAttributes tests"));
+#else
+	test.Start(_L("DoTestDigitiserHalAttributes NO CAPS tests"));
+	
+	// Skip No Caps testing for WDD caps when enforcement is not enabled on the
+	// platform i.e. when a emulator epoc.ini is missing.
+	if (!PlatSec::IsCapabilityEnforced(ECapabilityWriteDeviceData))
+		{
+		test.Printf(_L("Platform security enforcement off, skipping\n"));
+		test.End();
+		__UHEAP_MARKEND;
+		return;
+		}
+#endif
+
+	TInt i = 0;
+	TInt origValue = -1;
+	TInt r = HAL::Get(HALData::EDigitiserOrientation, origValue);
+	if (r == KErrNotSupported)
+		{
+		test.Printf(_L("Platform doesn't support EDigitiserOrientation, skipping\n"));
+		test.End();
+		__UHEAP_MARKEND;
+		return;
+		}
+	test_KErrNone(r);
+	
+	// Attribute supported on platform, proceed with test.
+	TInt value = -1;
+	for (i=0; i < gNumHalAttributeTests; i++)
+		{
+		test.Printf(_L("DoTestDigitiserHalAttributes - step/row %2d\n"), i+1);
+		
+		if (gHalAttributeTests[i].iSetRC != KMaxTInt) // Skip set test?
+			{
+			r = HAL::Set(gHalAttributeTests[i].iAttr,  gHalAttributeTests[i].iValueIn);
+			test_Equal( gHalAttributeTests[i].iSetRC, r);	
+			}
+			
+		if (gHalAttributeTests[i].iGetRC != KMaxTInt) // Skip get test?
+			{
+			r = HAL::Get(gHalAttributeTests[i].iAttr,  value);
+			test_Equal(gHalAttributeTests[i].iGetRC, r);
+			test_Equal(gHalAttributeTests[i].iValueIn, value);
+			}
+		}
+		
+#ifndef E32TEST_NOCAPS
+	// Return system state back to before the test
+	r = HAL::Set(HALData::EDigitiserOrientation, origValue);
+	test_KErrNone(r);
+#endif
+		
+	test.Printf(_L("DoTestDigitiserHalAttributes - complete\n"));
+	test.End();
+	__UHEAP_MARKEND;
+	}
+
+#ifndef E32TEST_NOCAPS
+void DoTestRawDigitiserEvent()
+	{
+	__UHEAP_MARK;
+	test.Start(_L("DoTestRawDigitiserEvent tests"));
+
+    TestTRawDigitiserEvent digitiserEvent1(TRawEvent::EPointerMove, -890,-123, -823,455,2563,156,62,3,1);
+	TestTRawDigitiserEvent digitiserEvent2(TRawEvent::EPointer3DInRange, 23,45,23,1,2,6,4,2,1);
+	TestTRawDigitiserEvent digitiserEvent3(TRawEvent::EPointer3DOutOfRange, 23,45,23,1,2,6,4,2,0);
+	TestTRawDigitiserEvent digitiserEvent4(TRawEvent::EPointer3DTilt, 23,45,23,1,2,6,4,2,1);
+	TestTRawDigitiserEvent digitiserEvent5(TRawEvent::EPointer3DRotation, 23,45,23,1,2,6,4,2,1);
+	TestTRawDigitiserEvent digitiserEvent6(TRawEvent::EPointer3DTiltAndMove, 23,45,23,1,2,6,4,2,0);
+
+    digitiserEvent1.TestEvents();
+	digitiserEvent2.TestEvents();
+	digitiserEvent3.TestEvents();
+	digitiserEvent4.TestEvents();
+	digitiserEvent5.TestEvents();
+	digitiserEvent6.TestEvents();    
+	
+	test.End();
+	__UHEAP_MARKEND;
+	}
+#endif
+
+
+GLDEF_C TInt E32Main()
+//
+//
+    {
+	__UHEAP_MARK;
+	
+ 	test.Title();
+	test.Start(_L("User-side Digitiser Testing Events/HAL"));
+	
+	DoTestDigitiserHalAttributes();
+	
+#ifndef E32TEST_NOCAPS
+	DoTestRawDigitiserEvent();
+#endif
+
+	test.Printf(_L("\n"));
+	test.End();
+	test.Close();
+
+	__UHEAP_MARKEND;
+    return KErrNone;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/digitiser/tshell_digitisertests.oby	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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:
+*
+*/
+
+#define BASE_ROM
+#include <rom\##VARIANT##\header.iby>
+
+
+files=
+
+#include <rom\##VARIANT##\kernel.iby>
+#include "user.iby"
+#include <rom\hal\hal.iby>
+#include <rom\f32\f32.iby>
+
+#include <rom\include\digitiser_tests.iby>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/eabi/d_second_excp2_40u.def	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	_Z8thrower2i @ 1 NONAME
+	_Z8thrower3i @ 2 NONAME
+	_Z8thrower4i @ 3 NONAME
+	_Z8thrower5i @ 4 NONAME
+	_ZN14UncaughtTesterC1ERi @ 5 NONAME
+	_ZN14UncaughtTesterC2ERi @ 6 NONAME
+	_ZN14UncaughtTesterD1Ev @ 7 NONAME
+	_ZN14UncaughtTesterD2Ev @ 8 NONAME
+	_ZN17MyFourthExceptionC1Ei @ 9 NONAME
+	_ZN17MyFourthExceptionC2Ei @ 10 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/eabi/d_second_excp_40u.def	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,12 @@
+EXPORTS
+	_Z8thrower2i @ 1 NONAME
+	_Z8thrower3i @ 2 NONAME
+	_Z8thrower4i @ 3 NONAME
+	_Z8thrower5i @ 4 NONAME
+	_ZN14UncaughtTesterC1ERi @ 5 NONAME
+	_ZN14UncaughtTesterC2ERi @ 6 NONAME
+	_ZN14UncaughtTesterD1Ev @ 7 NONAME
+	_ZN14UncaughtTesterD2Ev @ 8 NONAME
+	_ZN17MyFourthExceptionC1Ei @ 9 NONAME
+	_ZN17MyFourthExceptionC2Ei @ 10 NONAME
+
--- a/kerneltest/e32test/group/base_e32test.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/base_e32test.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "E32 Tests"
 
 component	base_e32test
--- a/kerneltest/e32test/group/bld.inf	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/bld.inf	Fri Jun 11 15:02:23 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"
@@ -387,7 +387,8 @@
 t_newldd
 t_lddpowerseqtest
 t_ldddigitisertest
-t_traweventdigitiser
+t_userdigitisertest
+t_userdigitisernocaps
 t_persistrestart	manual
 halsettings	support
 
@@ -496,11 +497,13 @@
 ../ethernet/pump/etherpump  manual
 ../ethernet/macset/macset   manual
 
-// /e32test/heap tests
+// /E32TEST/HEAP tests
+t_fail
+
 #ifdef EPOC32
-t_hcomp			support
+t_hcomp     support
 #endif
-t_fail
+
 t_heap
 t_heap2
 t_heapdb
--- a/kerneltest/e32test/group/bm_pdd.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/bm_pdd.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -68,6 +68,10 @@
 source			bm_ne1_pdd.cpp
 #endif
 
+#if defined(NCP_COMMON_RAPU_FAMILY)
+SYMBIAN_BASE_SYSTEMINCLUDE(assp/rapu)
+source			bm_rapu_pdd.cpp
+#endif
 start wins
 win32_library	kernel32.lib
 end
--- a/kerneltest/e32test/group/d_cache.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/d_cache.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -15,7 +15,9 @@
 // 
 //
 
-#include            <../variant.mmh>
+#include		<variant_test.mmh>
+
+
 #include            "kernel/kern_ext.mmh"
 
 target              VariantTarget(d_cache,ldd)
--- a/kerneltest/e32test/group/d_kerncorestats.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/d_kerncorestats.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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".
 //
--- a/kerneltest/e32test/group/d_second_excp.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/d_second_excp.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -40,5 +40,10 @@
 capability		all
 vendorid		0x70000001
 
+#if defined ARMCC_4_0
+deffile		d_second_excp_40.def
+#else
+deffile		d_second_excp.def
+#endif
 
 SMPSAFE
--- a/kerneltest/e32test/group/d_second_excp2.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/d_second_excp2.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -28,6 +28,10 @@
 capability		all
 vendorid		0x70000001
 
-
+#if defined ARMCC_4_0
+deffile		d_second_excp2_40.def
+#else
+deffile		d_second_excp2.def
+#endif
 
 SMPSAFE
--- a/kerneltest/e32test/group/t_datapaging.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/t_datapaging.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -20,7 +20,7 @@
 sourcepath		../demandpaging
 source			t_datapaging.cpp ../mmu/paging_info.cpp
 source			t_dpcmn.cpp
-library			euser.lib hal.lib dptest.lib
+library			euser.lib hal.lib dptest.lib efsrv.lib 
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 capability		all
 vendorid		0x70000001
--- a/kerneltest/e32test/group/t_kerncorestats.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/t_kerncorestats.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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".
 //
--- a/kerneltest/e32test/group/t_ramall.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/t_ramall.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -19,7 +19,7 @@
 targettype		exe
 sourcepath		../mmu
 source			t_ramall.cpp
-library			euser.lib
+library			euser.lib  dptest.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 
 
--- a/kerneltest/e32test/group/t_smpsoakspin.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/t_smpsoakspin.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,20 +1,7 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
-
+// e32test\group\t_smpsoakspin.mmp
+//
+// Copyright (c) 2005 Symbian Ltd. All rights reserved.
+//
 
 target			t_smpsoakspin.exe        
 targettype		exe
--- a/kerneltest/e32test/group/t_suser.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/group/t_suser.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -19,7 +19,7 @@
 targettype		exe
 sourcepath		../secure
 source			t_suser.cpp
-library			euser.lib
+library			euser.lib hal.lib
 OS_LAYER_SYSTEMINCLUDE_SYMBIAN
 ROMTARGET
 RAMTARGET 	    \sys\bin\	//
--- a/kerneltest/e32test/group/t_traweventdigitiser.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* 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:
-*
-*/
-
-TARGET         t_traweventdigitiser.exe        
-TARGETTYPE     EXE
-SOURCEPATH	../digitiser
-SOURCE         t_traweventdigitiser.cpp
-LIBRARY        euser.lib
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-
-capability		all
-
-VENDORID 0x70000001
-
-SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/group/t_userdigitisernocaps.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,36 @@
+/*
+* 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:
+*
+*/
+
+TARGET		t_userdigitisernocaps.exe
+TARGETTYPE	EXE
+
+CAPABILITY	None
+MACRO		E32TEST_NOCAPS
+
+VENDORID	0x70000001
+SMPSAFE
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+SOURCEPATH	../digitiser
+SOURCE		t_userdigitisertest.cpp
+
+LIBRARY		euser.lib
+LIBRARY		hal.lib
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/group/t_userdigitisertest.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,34 @@
+/*
+* Copyright (c) 2009-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:
+*
+*/
+
+TARGET		t_userdigitisertest.exe
+TARGETTYPE	EXE
+
+CAPABILITY	SwEvent WriteDeviceData
+VENDORID	0x70000001
+SMPSAFE
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+SOURCEPATH	../digitiser
+SOURCE		t_userdigitisertest.cpp
+
+LIBRARY		euser.lib
+LIBRARY		hal.lib
+
+
+
--- a/kerneltest/e32test/hcr/d_hcrut_psl.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/hcr/d_hcrut_psl.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -127,7 +127,7 @@
 #if !defined(__WINS__) && !defined(__X86__)
     
     // Note to future implementor:
-	// #include <kernel\kernboot.h>
+	// #include <kernel/kernboot.h>
 	// First check to see if SMRIB was created during boot time. 
     // If SSuperPageBase::iSmrData == KSuperPageAddressFieldUndefined (i.e. -1) 
 	// it does not exist, return KErrNotSupported, SMR not support by base port
--- a/kerneltest/e32test/locl/t_lat1.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/locl/t_lat1.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// under the terms of the License "Eclipse Public License v1.0"
 // which accompanies this distribution, and is available
 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
 //
--- a/kerneltest/e32test/mediaext/d_nfe.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/mediaext/d_nfe.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -21,7 +21,7 @@
 #include "nfe.h"
 
 #if defined(_DEBUG)
-	#define TRACE_ENABLED
+//	#define TRACE_ENABLED
 #else
 #endif
 
@@ -782,7 +782,6 @@
 			break;
 
 		case DLocalDrive::EWrite:
-			WriteEncryptionStatusToBootSector(di, EFalse);	// a write to the drive clears the finalised state
 			r=HandleWrite(aReq);
 			break;
 
@@ -1471,8 +1470,7 @@
 	if (!aDi.IsUDADrive())
 		return KErrNone;
 
-	if (aDi.iDriveFinalised == aFinalised)
-		return KErrNone;
+	aDi.iDriveFinalised = aFinalised;
 
 	TNfeDiskStatus status = aDi.Status();
 
--- a/kerneltest/e32test/misc/d_testkerncorestats.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/misc/d_testkerncorestats.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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".
 //
--- a/kerneltest/e32test/misc/d_testkerncorestats.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/misc/d_testkerncorestats.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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".
 //
--- a/kerneltest/e32test/misc/inflate.c	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/misc/inflate.c	Fri Jun 11 15:02:23 2010 +0300
@@ -1,19 +1,3 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*
-*/
 /* inflate.c -- Not copyrighted 1992 by Mark Adler
    version c10p1, 10 January 1993 */
 
--- a/kerneltest/e32test/misc/t_kerncorestats.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/misc/t_kerncorestats.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,7 +1,7 @@
 // Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
+// 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".
 //
--- a/kerneltest/e32test/mmu/t_cachechunk.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/mmu/t_cachechunk.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -98,7 +98,7 @@
 TInt PageSize;
 TInt NoFreeRam;
 RTimer Timer;
-
+TBool gFmm;
 
 
 void FillPage(TUint aOffset)
@@ -308,18 +308,44 @@
 	test_KErrNone(r);
 
 	test.Next(_L("Check Decommit on unlocked pages"));
+	// Get orignal page cache size
+	TUint minCache = 0;
+	TUint maxCache = 0;
+	TUint oldCache = 0;
+	TUint newCache = 0;
+	if (gFmm)
+		{
+		r = DPTest::CacheSize(minCache, maxCache, oldCache);
+		test_KErrNone(r);
+		}
 	r = TestChunk.Unlock(aOffset,PageSize*4);
 	test_KErrNone(r);
+
+	TUint spareCache = maxCache - oldCache;
+	if (gFmm && spareCache)
+		{// Cache wasn't at maximum so should have grown when unlocked pages were added.
+		r = DPTest::CacheSize(minCache, maxCache, newCache);
+		test_KErrNone(r);
+		TUint extraCache = (spareCache > (TUint)PageSize*4)? PageSize*4 : spareCache;
+		test_Equal(oldCache + extraCache, newCache);
+		}
 	test(FreeRam() >= NoFreeRam+PageSize*4);
 	r=TestChunk.Decommit(aOffset, PageSize*4);
 	test_KErrNone(r);
 	freeRam = FreeRam();
 	test_Compare(freeRam, >=, NoFreeRam+PageSize*4);
 	test_Equal(origChunkSize - PageSize*4, TestChunk.Size());
+
+	if (gFmm)
+		{// Cache should have shrunk after pages were decommited.
+		r = DPTest::CacheSize(minCache, maxCache, newCache);
+		test_KErrNone(r);
+		test_Equal(oldCache, newCache);
+		}
 	// Restore chunk back to original state
 	r = TestChunk.Commit(aOffset, PageSize*4);
 	test_KErrNone(r);
-	test(FreeRam() == NoFreeRam);
+	test_Equal(NoFreeRam, FreeRam());
 
 	test.Next(_L("Check Decommit on unlocked and reclaimed pages"));
 	r = TestChunk.Unlock(aOffset,PageSize*4);
@@ -351,6 +377,44 @@
 	test(freeRam==NoFreeRam);
 	test_Equal(origChunkSize, TestChunk.Size());
 
+	test.Next(_L("Check Decommit on a mixture of locked and unlocked pages"));
+	// Get orignal page cache size
+	if (gFmm)
+		{
+		r = DPTest::CacheSize(minCache, maxCache, oldCache);
+		test_KErrNone(r);
+		}
+	r = TestChunk.Unlock(aOffset,PageSize);
+	test_KErrNone(r);
+	r = TestChunk.Unlock(aOffset + PageSize*2, PageSize);
+	test_KErrNone(r);
+
+	spareCache = maxCache - oldCache;
+	if (gFmm && spareCache)
+		{// Cache wasn't at maximum so should have grown when unlocked pages were added.
+		r = DPTest::CacheSize(minCache, maxCache, newCache);
+		test_KErrNone(r);
+		TUint extraCache = (spareCache > (TUint)PageSize*2)? PageSize*2 : spareCache;
+		test_Equal(oldCache + extraCache, newCache);
+		}
+	test(FreeRam() >= NoFreeRam+PageSize*2);
+	r=TestChunk.Decommit(aOffset, PageSize*4);
+	test_KErrNone(r);
+	freeRam = FreeRam();
+	test_Compare(freeRam, >=, NoFreeRam+PageSize*4);
+	test_Equal(origChunkSize - PageSize*4, TestChunk.Size());
+
+	if (gFmm)
+		{// Cache should have shrunk after pages were decommited.
+		r = DPTest::CacheSize(minCache, maxCache, newCache);
+		test_KErrNone(r);
+		test_Equal(oldCache, newCache);
+		}
+	// Restore chunk back to original state
+	r = TestChunk.Commit(aOffset, PageSize*4);
+	test_KErrNone(r);
+	test_Equal(NoFreeRam, FreeRam());
+
 	test.End();
 	}
 
@@ -450,6 +514,10 @@
 		test.Printf(_L("This test requires an MMU\n"));
 		return KErrNone;
 		}
+	// See if were running on the Flexible Memory Model or newer.
+  	TUint32 memModelAttrib = (TUint32)UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemModelInfo, NULL, NULL);	
+	gFmm = (memModelAttrib & EMemModelTypeMask) >= EMemModelTypeFlexible;
+
 	test.Start(_L("Initialise test"));
 	test.Next(_L("Load gobbler LDD"));
 	TInt r = User::LoadLogicalDevice(KGobblerLddFileName);
--- a/kerneltest/e32test/mmu/t_ramall.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/mmu/t_ramall.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -20,6 +20,7 @@
 #include <e32test.h>
 #include <e32uid.h>
 #include <e32hal.h>
+#include <dptest.h>
 #include "d_shadow.h"
 #include "mmudetect.h"
 #include "freeram.h"
@@ -32,6 +33,18 @@
 TInt PageShift;
 RShadow Shadow;
 TInt InitFreeRam;
+RChunk Chunk;
+TUint ChunkCommitEnd;
+RThread TouchThread;
+TRequestStatus TouchStatus;
+TBool TouchDataStop;
+RThread FragThread;
+TRequestStatus FragStatus;
+TBool FragThreadStop;
+TBool ManualTest;
+TBool CacheSizeAdjustable;
+TUint OrigMinCacheSize;
+TUint OrigMaxCacheSize;
 
 TInt AllocPhysicalRam(TUint32& aAddr, TInt aSize, TInt aAlign)
 	{
@@ -118,6 +131,334 @@
 	
 	}
 
+
+struct SPhysAllocData
+	{
+	TUint iSize;
+	TUint iAlign;
+	TBool iCheckMaxAllocs;
+	TBool iCheckFreeRam;
+	};
+
+
+TInt FillPhysicalRam(TAny* aArgs)
+	{
+	SPhysAllocData& allocData = *((SPhysAllocData*)aArgs);
+	TUint maxAllocs = FreeRam() / allocData.iSize;
+	TUint32* physAddrs = new TUint32[maxAllocs + 1];
+	if (!physAddrs)
+		return KErrNoMemory;
+	TUint32* pa = physAddrs;
+	TUint32 alignMask = (1 << allocData.iAlign) - 1;
+	TUint initialFreeRam = FreeRam();
+	TInt r = KErrNone;
+	TUint allocations = 0;
+	for(; allocations <= maxAllocs; ++allocations)
+		{
+		TUint freeRam = FreeRam();			
+		r = AllocPhysicalRam(*pa, allocData.iSize, allocData.iAlign);
+		if (r != KErrNone)
+			break;
+		if (*pa++ & alignMask)
+			{
+			r = KErrGeneral;
+			RDebug::Printf("Error alignment phys addr 0x%08x", *(pa - 1));
+			break;
+			}
+		if (allocData.iCheckFreeRam && freeRam - allocData.iSize != (TUint)FreeRam())
+			{
+			r = KErrGeneral;
+			RDebug::Printf("Error in free ram 0x%08x orig 0x%08x", FreeRam(), freeRam);
+			break;
+			}
+		}
+
+	TUint32* physEnd = pa;
+	TBool failFrees = EFalse;
+	for (pa = physAddrs; pa < physEnd; pa++)
+		{
+		if (FreePhysicalRam(*pa, allocData.iSize) != KErrNone)
+			failFrees = ETrue;
+		}
+	if (failFrees)
+		r = KErrNotFound;
+	if (allocData.iCheckMaxAllocs && allocations > maxAllocs)
+		{
+		r = KErrOverflow;
+		RDebug::Printf("Error able to allocate too many pages");
+		}
+	if (allocData.iCheckFreeRam && initialFreeRam != (TUint)FreeRam())
+		{
+		r = KErrGeneral;
+		RDebug::Printf("Error in free ram 0x%08x initial 0x%08x", FreeRam(), initialFreeRam);
+		}
+	delete[] physAddrs;
+	if (r != KErrNone && r != KErrNoMemory)
+		return r;
+	TUint possibleAllocs = initialFreeRam / allocData.iSize;
+	if (allocData.iCheckMaxAllocs && possibleAllocs != allocations)
+		{
+		RDebug::Printf("Error in number of allocations possibleAllocs %d allocations %d", possibleAllocs, allocations);
+		return KErrGeneral;
+		}
+	return allocations;
+	}
+
+
+void TestMultipleContiguousAllocations(TUint aNumThreads, TUint aSize, TUint aAlign)
+	{
+	test.Printf(_L("TestMultiContig threads %d size 0x%x, align %d\n"), aNumThreads, aSize, aAlign);
+	SPhysAllocData allocData;
+	allocData.iSize = aSize;
+	allocData.iAlign = aAlign;
+	allocData.iCheckMaxAllocs = EFalse;
+	allocData.iCheckFreeRam = EFalse;
+	// Start several threads all contiguous allocating memory.
+	RThread* threads = new RThread[aNumThreads];
+	TRequestStatus* status = new TRequestStatus[aNumThreads];
+	TUint i = 0;
+	for (; i < aNumThreads; i++)
+		{// Need enough heap to store addr of every possible allocation + 1.
+		TUint requiredHeapMax = Max(PageSize, ((InitFreeRam / aSize) / sizeof(TUint32)) + sizeof(TUint32));
+		TInt r = threads[i].Create(KNullDesC, FillPhysicalRam, KDefaultStackSize, PageSize, requiredHeapMax, (TAny*)&allocData);
+		test_KErrNone(r);
+		threads[i].Logon(status[i]);
+		}
+	for (i = 0; i < aNumThreads; i++)
+		{
+		threads[i].Resume();
+		}
+	for (i = 0; i < aNumThreads; i++)
+		{
+		User::WaitForRequest(status[i]);
+		test_Equal(EExitKill, threads[i].ExitType());
+		TInt exitReason = threads[i].ExitReason();
+		test_Value(exitReason, exitReason >= 0 || exitReason == KErrNoMemory);
+		threads[i].Close();
+		}
+	delete[] status;
+	delete[] threads;
+	}
+
+struct STouchData
+	{
+	TUint iSize;
+	TUint iFrequency;
+	}TouchData;
+
+
+TInt TouchMemory(TAny*)
+	{
+	while (!TouchDataStop)
+		{
+		TUint8* p = Chunk.Base();
+		TUint8* pEnd = p + ChunkCommitEnd;
+		TUint8* fragPEnd = p + TouchData.iFrequency;
+		for (TUint8* fragP = p + TouchData.iSize; fragPEnd < pEnd;)
+			{
+			TUint8* data = fragP;
+			for (; data < fragPEnd; data += PageSize)
+				{
+				*data = (TUint8)(data - fragP);
+				}
+			for (data = fragP; data < fragPEnd; data += PageSize)
+				{
+				if (*data != (TUint8)(data - fragP))
+					{
+					RDebug::Printf("Error unexpected data 0x%x read from 0x%08x", *data, data);
+					return KErrGeneral;
+					}
+				}
+			fragP = fragPEnd + TouchData.iSize;
+			fragPEnd += TouchData.iFrequency;
+			}
+		}
+	return KErrNone;
+	}
+
+struct SFragData
+	{
+	TUint iSize;
+	TUint iFrequency;
+	TUint iDiscard;
+	TBool iFragThread;
+	}FragData;
+
+void FragmentMemoryFunc()
+	{
+	ChunkCommitEnd = 0;
+	TInt r;
+	while(KErrNone == (r = Chunk.Commit(ChunkCommitEnd,PageSize)) && !FragThreadStop)
+		{
+		ChunkCommitEnd += PageSize;
+		}
+	if (FragThreadStop)
+		return;
+	test_Equal(KErrNoMemory, r);
+	TUint freeBlocks = 0;
+	for (	TUint offset = 0; 
+			(offset + FragData.iSize) < ChunkCommitEnd; 
+			offset += FragData.iFrequency, freeBlocks++)
+		{
+		test_KErrNone(Chunk.Decommit(offset, FragData.iSize));
+		}
+	if (!FragData.iFragThread)
+		test_Equal(FreeRam(), freeBlocks * FragData.iSize);
+
+	if (FragData.iDiscard && CacheSizeAdjustable && !FragThreadStop)
+		{
+		TUint minCacheSize = FreeRam();
+		TUint maxCacheSize = minCacheSize;
+		TUint currentCacheSize;
+		test_KErrNone(DPTest::CacheSize(OrigMinCacheSize, OrigMaxCacheSize, currentCacheSize));
+		test_KErrNone(DPTest::SetCacheSize(minCacheSize, maxCacheSize));
+		test_KErrNone(DPTest::SetCacheSize(OrigMinCacheSize, maxCacheSize));
+		}
+	}
+
+
+void UnfragmentMemoryFunc()
+	{
+	if (FragData.iDiscard && CacheSizeAdjustable)
+		test_KErrNone(DPTest::SetCacheSize(OrigMinCacheSize, OrigMaxCacheSize));
+	Chunk.Decommit(0, Chunk.MaxSize());
+	}
+
+
+TInt FragmentMemoryThreadFunc(TAny*)
+	{
+	while (!FragThreadStop)
+		{
+		FragmentMemoryFunc();
+		UnfragmentMemoryFunc();
+		}
+	return KErrNone;
+	}
+
+
+void FragmentMemory(TUint aSize, TUint aFrequency, TBool aDiscard, TBool aTouchMemory, TBool aFragThread)
+	{
+	test_Value(aTouchMemory, !aTouchMemory || !aFragThread);
+	test_Value(aSize, aSize < aFrequency);
+	FragData.iSize = aSize;
+	FragData.iFrequency = aFrequency;
+	FragData.iDiscard = aDiscard;
+	FragData.iFragThread = aFragThread;
+
+	TChunkCreateInfo chunkInfo;
+	chunkInfo.SetDisconnected(0, 0, FreeRam());
+	chunkInfo.SetPaging(TChunkCreateInfo::EUnpaged);
+	test_KErrNone(Chunk.Create(chunkInfo));
+
+	if (aFragThread)
+		{
+		TInt r = FragThread.Create(KNullDesC, FragmentMemoryThreadFunc, KDefaultStackSize, PageSize, PageSize, NULL);
+		test_KErrNone(r);
+		FragThread.Logon(FragStatus);
+		FragThreadStop = EFalse;
+		FragThread.Resume();
+		}
+	else
+		{
+		FragmentMemoryFunc();
+		}
+	if (aTouchMemory && !ManualTest)
+		{
+		TouchData.iSize = aSize;
+		TouchData.iFrequency = aFrequency;
+		TInt r = TouchThread.Create(KNullDesC, TouchMemory, KDefaultStackSize, PageSize, PageSize, NULL);
+		test_KErrNone(r);
+		TouchThread.Logon(TouchStatus);
+		TouchDataStop = EFalse;
+		TouchThread.Resume();
+		}
+	}
+
+
+void UnfragmentMemory(TBool aDiscard, TBool aTouchMemory, TBool aFragThread)
+	{
+	test_Value(aTouchMemory, !aTouchMemory || !aFragThread);
+	if (aTouchMemory && !ManualTest)
+		{
+		TouchDataStop = ETrue;
+		User::WaitForRequest(TouchStatus);
+		test_Equal(EExitKill, TouchThread.ExitType());
+		test_KErrNone(TouchThread.ExitReason());
+		CLOSE_AND_WAIT(TouchThread);
+		}
+	if (aFragThread)
+		{
+		FragThreadStop = ETrue;
+		User::WaitForRequest(FragStatus);
+		test_Equal(EExitKill, FragThread.ExitType());
+		test_KErrNone(FragThread.ExitReason());
+		CLOSE_AND_WAIT(FragThread);
+		}
+	else
+		UnfragmentMemoryFunc();
+	CLOSE_AND_WAIT(Chunk);
+	}
+
+
+void TestFillPhysicalRam(TUint aFragSize, TUint aFragFreq, TUint aAllocSize, TUint aAllocAlign, TBool aDiscard, TBool aTouchMemory)
+	{
+	test.Printf(_L("TestFillPhysicalRam aFragSize 0x%x aFragFreq 0x%x aAllocSize 0x%x aAllocAlign %d dis %d touch %d\n"),
+				aFragSize, aFragFreq, aAllocSize, aAllocAlign, aDiscard, aTouchMemory);
+	FragmentMemory(aFragSize, aFragFreq, aDiscard, aTouchMemory, EFalse);
+	SPhysAllocData allocData;
+	// Only check free all ram could be allocated in manual tests as fixed pages may be fragmented.
+	allocData.iCheckMaxAllocs = (ManualTest && !aTouchMemory && !aAllocAlign)? ETrue : EFalse;
+	allocData.iCheckFreeRam = ETrue;
+	allocData.iSize = aAllocSize;
+	allocData.iAlign = aAllocAlign;
+	FillPhysicalRam(&allocData);
+	UnfragmentMemory(aDiscard, aTouchMemory, EFalse);
+	}
+
+
+void TestFragmentedAllocation()
+	{
+	// Test every other page free.
+	TestFillPhysicalRam(PageSize, PageSize * 2, PageSize, 0, EFalse, EFalse);
+	if (ManualTest)
+		{
+		TestFillPhysicalRam(PageSize, PageSize * 2, PageSize * 2, 0, EFalse, EFalse);
+		TestFillPhysicalRam(PageSize, PageSize * 2, PageSize, 0, EFalse, ETrue);
+		}
+	TestFillPhysicalRam(PageSize, PageSize * 2, PageSize * 2, 0, EFalse, ETrue);
+	// Test every 2 pages free.
+	TestFillPhysicalRam(PageSize * 2, PageSize * 4, PageSize * 8, 0, EFalse, EFalse);
+	if (ManualTest)
+		TestFillPhysicalRam(PageSize * 2, PageSize * 4, PageSize * 8, 0, EFalse, ETrue);
+	// Test 10 pages free then 20 pages allocated, allocate 256 pages (1MB in most cases).
+	if (ManualTest)
+		TestFillPhysicalRam(PageSize * 10, PageSize * 30, PageSize * 256, 0, EFalse, EFalse);
+	TestFillPhysicalRam(PageSize * 10, PageSize * 30, PageSize * 256, 0, EFalse, ETrue);
+
+	if (CacheSizeAdjustable)
+		{// It is possible to adjust the cache size so test phyiscally contiguous 
+		// allocations discard and move pages when required.
+		test.Next(_L("TestFragmentedAllocations with discardable data no true free memory"));
+		// Test every other page free.
+		TestFillPhysicalRam(PageSize, PageSize * 2, PageSize, 0, ETrue, EFalse);
+		if (ManualTest)
+			{
+			TestFillPhysicalRam(PageSize, PageSize * 2, PageSize, 0, ETrue, ETrue);
+			TestFillPhysicalRam(PageSize, PageSize * 2, PageSize * 2, 0, ETrue, EFalse);
+			}
+		TestFillPhysicalRam(PageSize, PageSize * 2, PageSize * 2, 0, ETrue, ETrue);
+		// Test every 2 pages free.
+		TestFillPhysicalRam(PageSize * 2, PageSize * 4, PageSize * 8, 0, ETrue, EFalse);
+		if (ManualTest)
+			TestFillPhysicalRam(PageSize * 2, PageSize * 4, PageSize * 8, 0, ETrue, ETrue);
+		// Test 10 pages free then 20 pages allocated, allocate 256 pages (1MB in most cases).
+		if (ManualTest)
+			TestFillPhysicalRam(PageSize * 10, PageSize * 30, PageSize * 256, 0, ETrue, EFalse);
+		TestFillPhysicalRam(PageSize * 10, PageSize * 30, PageSize * 256, 0, ETrue, ETrue);
+		}
+	}
+
+
 GLDEF_C TInt E32Main()
 //
 // Test RAM allocation
@@ -135,6 +476,28 @@
 	PageShift=-1;
 	for (; psz; psz>>=1, ++PageShift);
 
+	TUint currentCacheSize;
+	CacheSizeAdjustable = DPTest::CacheSize(OrigMinCacheSize, OrigMaxCacheSize, currentCacheSize) == KErrNone;
+
+	TUint memodel = UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemModelInfo, NULL, NULL) & EMemModelTypeMask;
+
+	TInt cmdLineLen = User::CommandLineLength();
+	if(cmdLineLen)
+		{
+		_LIT(KManual, "manual");
+		RBuf cmdLine;
+		test_KErrNone(cmdLine.Create(cmdLineLen));
+		User::CommandLine(cmdLine);
+		cmdLine.LowerCase();
+		ManualTest = cmdLine.Find(KManual) != KErrNotFound;
+		}
+
+	// Turn off lazy dll unloading so the free ram checking isn't affected.
+	RLoader l;
+	test(l.Connect()==KErrNone);
+	test(l.CancelLazyDllUnload()==KErrNone);
+	l.Close();
+
 	InitFreeRam=FreeRam();
 	test.Printf(_L("Free RAM=%08x, Page size=%x, Page shift=%d\n"),InitFreeRam,PageSize,PageShift);
 
@@ -148,8 +511,54 @@
 	test.Next(_L("TestClaimPhys"));
 	TestClaimPhys();
 
+	if (memodel >= EMemModelTypeFlexible)
+		{
+		test.Next(_L("TestFragmentedAllocation"));
+		TestFragmentedAllocation();
+
+		test.Next(_L("TestMultipleContiguousAllocations"));
+		TestMultipleContiguousAllocations(20, PageSize * 16, 0);
+		TestMultipleContiguousAllocations(20, PageSize * 16, PageShift + 1);
+		TestMultipleContiguousAllocations(20, PageSize * 128, PageShift + 2);
+
+		FragmentMemory(PageSize, PageSize * 2, EFalse, EFalse, EFalse);
+		TestMultipleContiguousAllocations(20, PageSize * 128, PageShift + 2);
+		UnfragmentMemory(EFalse, EFalse, EFalse);
+
+		test.Next(_L("TestMultipleContiguousAllocations while accessing memory"));
+		FragmentMemory(PageSize, PageSize * 2, EFalse, ETrue, EFalse);
+		TestMultipleContiguousAllocations(20, PageSize * 128, PageShift + 2);
+		UnfragmentMemory(EFalse, ETrue, EFalse);
+		FragmentMemory(PageSize, PageSize * 2, ETrue, ETrue, EFalse);
+		TestMultipleContiguousAllocations(50, PageSize * 256, PageShift + 5);
+		UnfragmentMemory(ETrue, ETrue, EFalse);
+		FragmentMemory(PageSize * 16, PageSize * 32, ETrue, ETrue, EFalse);
+		TestMultipleContiguousAllocations(10, PageSize * 512, PageShift + 8);
+		UnfragmentMemory(ETrue, ETrue, EFalse);
+		FragmentMemory(PageSize * 32, PageSize * 64, ETrue, ETrue, EFalse);
+		TestMultipleContiguousAllocations(10, PageSize * 1024, PageShift + 10);
+		UnfragmentMemory(ETrue, ETrue, EFalse);
+
+		test.Next(_L("TestMultipleContiguousAllocations with repeated movable and discardable allocations"));
+		FragmentMemory(PageSize, PageSize * 2, EFalse, EFalse, ETrue);
+		TestMultipleContiguousAllocations(20, PageSize * 2, PageShift);
+		UnfragmentMemory(EFalse, EFalse, ETrue);
+		FragmentMemory(PageSize, PageSize * 2, EFalse, EFalse, ETrue);
+		TestMultipleContiguousAllocations(20, PageSize * 128, PageShift + 2);
+		UnfragmentMemory(EFalse, EFalse, ETrue);
+		FragmentMemory(PageSize, PageSize * 2, ETrue, EFalse, ETrue);
+		TestMultipleContiguousAllocations(50, PageSize * 256, PageShift + 5);
+		UnfragmentMemory(ETrue, EFalse, ETrue);
+		FragmentMemory(PageSize * 16, PageSize * 32, ETrue, EFalse, ETrue);
+		TestMultipleContiguousAllocations(20, PageSize * 512, PageShift + 8);
+		UnfragmentMemory(ETrue, EFalse, ETrue);
+		FragmentMemory(PageSize * 32, PageSize * 64, ETrue, EFalse, ETrue);
+		TestMultipleContiguousAllocations(20, PageSize * 1024, PageShift + 10);
+		UnfragmentMemory(ETrue, EFalse, ETrue);
+		}
+
 	Shadow.Close();
+	test.Printf(_L("Free RAM=%08x at end of test\n"),FreeRam());
 	test.End();
 	return(KErrNone);
     }
-
--- a/kerneltest/e32test/mmu/t_wsd_tst.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/mmu/t_wsd_tst.h	Fri Jun 11 15:02:23 2010 +0300
@@ -47,7 +47,7 @@
 // Exports of DLL1
 #ifdef	T_WSD_DL1
 #else
-IMPORT_D TInt32 ExportedData;
+IMPORT_D extern TInt32 ExportedData;
 IMPORT_C TInt CheckExportedDataAddress(void *aDataAddr);
 #endif	// T_WSD_DL1
 
@@ -65,10 +65,10 @@
 #ifdef	T_WSD_DL3
 #else
 IMPORT_C void** GetAddressOfData(TInt& aSize, void*& aCodeAddr, void*& aDataAddr);
-IMPORT_D TInt32 TestDataSize;
-IMPORT_D void* WritableTestData[1 /* refer TestDataSize */];
-IMPORT_D const void* const* PointerToStaticData;
-IMPORT_D void** PointerToWritableData;
+IMPORT_D extern TInt32 TestDataSize;
+IMPORT_D extern void* WritableTestData[1 /* refer TestDataSize */];
+IMPORT_D extern const void* const* PointerToStaticData;
+IMPORT_D extern void** PointerToWritableData;
 #endif	// T_WSD_DL3
 
 #endif	// __T_WSD_TST_H__
--- a/kerneltest/e32test/multimedia/t_sound2.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/multimedia/t_sound2.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -2379,10 +2379,6 @@
 	Test.Title();
 
 	Test.Start(_L("Load"));
-	// --- TEMPORARILY DISABLING T_SOUND2
-	Test.Printf(_L("T_SOUND2 DISABLED UNTIL DEF144934 IS FIXED\n"));
-	CHECK(0);
-	// --- TEMPORARILY DISABLING T_SOUND2
 	if (Load()==KErrNotFound)
 		{
 		Test.Printf(_L("Shared chunk sound driver not supported - test skipped\r\n"));
--- a/kerneltest/e32test/power/t_domain.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/power/t_domain.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -2050,7 +2050,6 @@
 	TInt r = manager.Connect(KDmHierarchyIdTest);
 	test (r == KErrNone);
 	manager.RequestDomainTransition(KDmIdRoot, EStartupCriticalStatic, ETraverseDefault, status);
-	test(status.Int() == KRequestPending);
 	User::WaitForRequest(status);
 	test(status.Int() == KErrNone);
 	manager.Close();
--- a/kerneltest/e32test/prime/t_semutx.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/prime/t_semutx.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -38,7 +38,10 @@
 // 
 //
 
+#define __E32TEST_EXTENSION__
 #include <e32test.h>
+#include <u32std.h>
+#include <e32svr.h>
 
 const TInt KMaxBufferSize=10;
 const TInt KMaxArraySize=10;
@@ -221,7 +224,7 @@
 void StartWaitSemThread(RThread& aT, SWaitSem& aW, TThreadPriority aP=EPriorityLess)
 	{
 	TInt r = aT.Create(KNullDesC, &WaitSemThread, 0x1000, 0x1000, 0x1000, &aW);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	aT.SetPriority(aP);
 	aT.Resume();
 	}
@@ -231,9 +234,9 @@
 	TRequestStatus s;
 	aT.Logon(s);
 	User::WaitForRequest(s);
-	test(aT.ExitType()==EExitKill);
-	test(aT.ExitReason()==aResult);
-	test(s.Int()==aResult);
+	test_Equal(EExitKill, aT.ExitType());
+	test_Equal(aResult, aT.ExitReason());
+	test_Equal(aResult, s.Int());
 	CLOSE_AND_WAIT(aT);
 	}
 
@@ -251,7 +254,7 @@
 	TTime final;
 	TInt elapsed=0;
 	TInt r = ws.iSem.CreateLocal(0);
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	RThread().SetPriority(EPriorityAbsoluteVeryLow);
 	TInt threadcount=0;
@@ -259,7 +262,7 @@
 	while (elapsed<1000000)
 		{
 		r = t.Create(KNullDesC, &DummyThread, 0x1000, NULL, NULL);
-		test(r==KErrNone);
+		test_KErrNone(r);
 		t.SetPriority(EPriorityMore);
 		t.Resume();
 		t.Close();
@@ -307,7 +310,7 @@
 	User::After(200000);
 	t.Resume();
 	WaitForWaitSemThread(t, KErrTimedOut);
-	test(ws.iSem.Wait(1)==KErrNone);
+	test_KErrNone(ws.iSem.Wait(1));
 
 	ws.iTimeout=100000;
 	StartWaitSemThread(t, ws, EPriorityMore);
@@ -316,7 +319,7 @@
 	User::After(50000);
 	t.Resume();
 	WaitForWaitSemThread(t, KErrNone);
-	test(ws.iSem.Wait(1)==KErrTimedOut);
+	test_Equal(KErrTimedOut, ws.iSem.Wait(1));
 
 	RThread t2;
 	ws.iTimeout=100000;
@@ -324,12 +327,12 @@
 	StartWaitSemThread(t2, ws, EPriorityMore);
 	t.Suspend();
 	ws.iSem.Signal();
-	test(t2.ExitType()==EExitKill);
-	test(t.ExitType()==EExitPending);
+	test_Equal(EExitKill, t2.ExitType());
+	test_Equal(EExitPending, t.ExitType());
 	t.Resume();
 	WaitForWaitSemThread(t, KErrTimedOut);
 	WaitForWaitSemThread(t2, KErrNone);
-	test(ws.iSem.Wait(1)==KErrTimedOut);
+	test_Equal(KErrTimedOut, ws.iSem.Wait(1));
 
 	ws.iTimeout=1000000;
 	initial.HomeTime();
@@ -376,11 +379,11 @@
 	initial.HomeTime();
 	StartWaitSemThread(t, ws, EPriorityMore);
 	StartWaitSemThread(t2, ws, EPriorityMuchMore);
-	test(t.ExitType()==EExitPending);
-	test(t2.ExitType()==EExitPending);
+	test_Equal(EExitPending, t.ExitType());
+	test_Equal(EExitPending, t2.ExitType());
 	ws.iSem.Close();
-	test(t.ExitType()==EExitKill);
-	test(t2.ExitType()==EExitKill);
+	test_Equal(EExitKill, t.ExitType());
+	test_Equal(EExitKill, t2.ExitType());
 	WaitForWaitSemThread(t2, KErrGeneral);
 	WaitForWaitSemThread(t, KErrGeneral);
 	final.HomeTime();
@@ -414,23 +417,23 @@
 	test.Next(_L("Producer/Consumer scenario"));
 	// Test Rsemaphore with the producer/consumer scenario	RThread thread1, thread2;
 	TRequestStatus stat1, stat2;
-	test(mutex.CreateLocal()==KErrNone);
-	test(slotAvailable.CreateLocal(KMaxBufferSize)==KErrNone);
-	test(itemAvailable.CreateLocal(0)==KErrNone);
-	test(thread1.Create(_L("Thread1"),Producer,KDefaultStackSize,0x200,0x200,NULL)==KErrNone);
-	test(thread2.Create(_L("Thread2"),Consumer,KDefaultStackSize,0x200,0x200,NULL)==KErrNone);
+	test_KErrNone(mutex.CreateLocal());
+	test_KErrNone(slotAvailable.CreateLocal(KMaxBufferSize));
+	test_KErrNone(itemAvailable.CreateLocal(0));
+	test_KErrNone(thread1.Create(_L("Thread1"),Producer,KDefaultStackSize,0x200,0x200,NULL));
+	test_KErrNone(thread2.Create(_L("Thread2"),Consumer,KDefaultStackSize,0x200,0x200,NULL));
 	thread1.Logon(stat1);
 	thread2.Logon(stat2);
-	test(stat1==KRequestPending);
-	test(stat2==KRequestPending);
+	test_Equal(KRequestPending, stat1.Int());
+	test_Equal(KRequestPending, stat2.Int());
 	thread1.Resume(); 
 	thread2.Resume();
 	User::WaitForRequest(stat1);
 	User::WaitForRequest(stat2);
-	test(stat1==KErrNone);
-	test(stat2==KErrNone);
+	test_KErrNone(stat1.Int());
+	test_KErrNone(stat2.Int());
 	for(TInt jj=0;jj<KNumProducerItems;jj++)
-		test(consumerArray[jj]==jj);		
+		test_Equal(jj, consumerArray[jj]);		
 	
 	test.Next(_L("Close"));
 	mutex.Close();
@@ -443,7 +446,7 @@
 	{
 	RMutex m;
 	test.Start(_L("Create"));
-	test(m.CreateLocal()==KErrNone);
+	test_KErrNone(m.CreateLocal());
 
 	// Test RMutex::IsHeld()
 	test.Next(_L("IsHeld ?"));
@@ -463,7 +466,7 @@
 void TestMutex()
 	{
 	test.Start(_L("Create"));
-	test(mutex.CreateLocal()==KErrNone);
+	test_KErrNone(mutex.CreateLocal());
 	
 	test.Next(_L("Threads writing to arrays test"));
 //
@@ -477,19 +480,19 @@
 //
 	arrayIndex=0;
 	RThread thread1,thread2;	
-	test(thread1.Create(_L("Thread1"),MutexThreadEntryPoint1,KDefaultStackSize,0x2000,0x2000,NULL)==KErrNone);
-	test(thread2.Create(_L("Thread2"),MutexThreadEntryPoint2,KDefaultStackSize,0x2000,0x2000,NULL)==KErrNone);			 
+	test_KErrNone(thread1.Create(_L("Thread1"),MutexThreadEntryPoint1,KDefaultStackSize,0x2000,0x2000,NULL));
+	test_KErrNone(thread2.Create(_L("Thread2"),MutexThreadEntryPoint2,KDefaultStackSize,0x2000,0x2000,NULL));			 
 	TRequestStatus stat1,stat2;
 	thread1.Logon(stat1);
 	thread2.Logon(stat2);
-	test(stat1==KRequestPending);
-	test(stat2==KRequestPending);
+	test_Equal(KRequestPending, stat1.Int());
+	test_Equal(KRequestPending, stat2.Int());
 	thread1.Resume(); 
 	thread2.Resume();
 	User::WaitForRequest(stat1);
 	User::WaitForRequest(stat2);
-	test(stat1==KErrNone);
-	test(stat2==KErrNone); 
+	test_KErrNone(stat1.Int());
+	test_KErrNone(stat2.Int()); 
 	TInt thread1ActualCount=0; 
 	TInt thread2ActualCount=0;
 	TInt ii=0;
@@ -502,10 +505,10 @@
 		ii++;
 		}
 	test.Printf(_L("T1 %d T1ACT %d T2 %d T2ACT %d"),thread1Count,thread1ActualCount,thread2Count,thread2ActualCount);
-	test(thread1ActualCount==thread1Count);
-	test(thread2ActualCount==thread2Count);
-	test(thread1Count==thread2Count);
-	test(thread1Count==(KMaxArraySize>>1));
+	test_Equal(thread1Count, thread1ActualCount);
+	test_Equal(thread2Count, thread2ActualCount);
+	test_Equal(thread2Count, thread1Count);
+	test_Equal((KMaxArraySize>>1), thread1Count);
 	
 	test.Next(_L("Close"));
 	CLOSE_AND_WAIT(thread1);
@@ -521,7 +524,7 @@
 	{
 	
 	test.Start(_L("Create"));
-	test(criticalSn.CreateLocal()==KErrNone);
+	test_KErrNone(criticalSn.CreateLocal());
 
 /***************** TO DO ***********************
 
@@ -551,19 +554,19 @@
 //
 	arrayIndex=0;
 	RThread thread1,thread2;	
-	test(thread1.Create(_L("Thread1"),CriticalSnThreadEntryPoint1,KDefaultStackSize,0x2000,0x2000,NULL)==KErrNone);
-	test(thread2.Create(_L("Thread2"),CriticalSnThreadEntryPoint2,KDefaultStackSize,0x2000,0x2000,NULL)==KErrNone);			 
+	test_KErrNone(thread1.Create(_L("Thread1"),CriticalSnThreadEntryPoint1,KDefaultStackSize,0x2000,0x2000,NULL));
+	test_KErrNone(thread2.Create(_L("Thread2"),CriticalSnThreadEntryPoint2,KDefaultStackSize,0x2000,0x2000,NULL));			 
 	TRequestStatus stat1,stat2;
 	thread1.Logon(stat1);
 	thread2.Logon(stat2);
-	test(stat1==KRequestPending);
-	test(stat2==KRequestPending);
+	test_Equal(KRequestPending, stat1.Int());
+	test_Equal(KRequestPending, stat2.Int());
 	thread1.Resume(); 
 	thread2.Resume();
 	User::WaitForRequest(stat1);
 	User::WaitForRequest(stat2);
-	test(stat1==KErrNone);
-	test(stat2==KErrNone); 
+	test_KErrNone(stat1.Int());
+	test_KErrNone(stat2.Int()); 
 	TInt thread1ActualCount=0; 
 	TInt thread2ActualCount=0;
 	TInt ii=0;
@@ -575,10 +578,10 @@
 			thread2ActualCount++;
 		ii++;
 		}
-	test(thread1ActualCount==thread1Count);
-	test(thread2ActualCount==thread2Count);
-	test(thread1Count==thread2Count);
-	test(thread1Count==(KMaxArraySize>>1));
+	test_Equal(thread1Count, thread1ActualCount);
+	test_Equal(thread2Count, thread2ActualCount);
+	test_Equal(thread2Count, thread1Count);
+	test_Equal((KMaxArraySize>>1), thread1Count);
 
 	test.Next(_L("Close"));
 	CLOSE_AND_WAIT(thread1);
@@ -590,6 +593,16 @@
 
 GLDEF_C TInt E32Main()
 	{	
+	TInt cpus = UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, 0, 0);
+	if (cpus != 1)
+		{
+		test(cpus>1);
+		// This test will require compatibility mode (and probably other changes)
+		// to work on SMP - it depends on explicit scheduling order.
+		test.Printf(_L("T_SEMUTX skipped, does not work on SMP\n"));
+		return KErrNone;
+		}	
+	
 
 	test.Title();
  	__UHEAP_MARK;
--- a/kerneltest/e32test/prime/t_semutx2.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/prime/t_semutx2.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -37,7 +37,10 @@
 // 
 //
 
+#define __E32TEST_EXTENSION__
 #include <e32test.h>
+#include <u32std.h>
+#include <e32svr.h>
 
 RMutex M1;
 RMutex M2;
@@ -62,8 +65,8 @@
 //#define MCOUNT(m,c)	test((m).Count() ==(c))
 // mutex count value is not visible for user any more
 #define MCOUNT(m,c) (void)(1)
-#define IDCHECK(x) test(GetNextId()==(x))
-#define NUMCHECK(x)	test(NumIdsPending()==(x))
+#define IDCHECK(x) test_Equal((x), GetNextId())
+#define NUMCHECK(x)	test_Equal((x), NumIdsPending())
 
 #define id0		id[0]
 #define id1		id[1]
@@ -153,38 +156,38 @@
 	TInt count=0;
 	TRequestStatus s;
 	TInt r=t.Create(_L("Test0"),Test0Thread,0x1000,NULL,&count);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.Logon(s);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	User::After(10000);		// make sure we have a full timeslice
 	t.Resume();
 
-	test(count==0);			// t shouldn't have run yet
+	test_Equal(0, count);			// t shouldn't have run yet
 	RThread().SetPriority(EPriorityMuchMore);	// shouldn't reschedule (priority unchanged)
-	test(count==0);
+	test_Equal(0, count);
 	RThread().SetPriority(EPriorityMore);	// shouldn't reschedule (priority decreasing, but not enough)
-	test(count==0);
+	test_Equal(0, count);
 	RThread().SetPriority(EPriorityMuchMore);	// shouldn't reschedule (priority increasing)
-	test(count==0);
+	test_Equal(0, count);
 	RThread().SetPriority(EPriorityNormal);	// should reschedule (we go behind t)
-	test(count==1);
+	test_Equal(1, count);
 	RThread().SetPriority(EPriorityLess);	// should reschedule (priority decreasing to below t)
-	test(count==2);
+	test_Equal(2, count);
 	t.SetPriority(EPriorityMuchMore);		// shouldn't reschedule (round-robin, timeslice not expired)
-	test(count==2);
+	test_Equal(2, count);
 	t.SetPriority(EPriorityNormal);			// shouldn't reschedule (t's priority decreasing)
-	test(count==2);
+	test_Equal(2, count);
 	t.SetPriority(EPriorityNormal);			// shouldn't reschedule (t's priority unchanged)
-	test(count==2);
+	test_Equal(2, count);
 	BusyWait(100000);		// use up our timeslice
 	t.SetPriority(EPriorityMuchMore);		// should reschedule (round-robin, timeslice expired)
-	test(count==3);
-	test(s==KRequestPending);
-	test(t.ExitType()==EExitPending);
+	test_Equal(3, count);
+	test_Equal(KRequestPending, s.Int());
+	test_Equal(EExitPending, t.ExitType());
 	t.SetPriority(EPriorityRealTime);		// should reschedule (t increases above current)
-	test(count==4);
-	test(s==KErrNone);						// t should have exited
-	test(t.ExitType()==EExitKill);
+	test_Equal(4, count);
+	test_KErrNone(s.Int());						// t should have exited
+	test_Equal(EExitKill, t.ExitType());
 	User::WaitForRequest(s);
 	RThread().SetPriority(EPriorityMuchMore);
 	t.Close();
@@ -201,11 +204,11 @@
 	{
 	test.Start(_L("Test signalling from wrong thread"));
 	TInt r=M1.CreateLocal();
-	test(r==KErrNone);
+	test_KErrNone(r);
 	M1.Wait();
 	RThread t;
 	r=t.Create(_L("Test1"),Test1Thread,0x1000,NULL,NULL);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	TRequestStatus s;
 	t.Logon(s);
 	t.Resume();
@@ -213,9 +216,9 @@
 	User::SetJustInTime(EFalse);
 	User::WaitForRequest(s);
 	User::SetJustInTime(jit);
-	test(s==EAccessDenied);
-	test(t.ExitType()==EExitPanic);
-	test(t.ExitReason()==EAccessDenied);
+	test_Equal(EAccessDenied, s.Int());
+	test_Equal(EExitPanic, t.ExitType());
+	test_Equal(EAccessDenied, t.ExitReason());
 	test(t.ExitCategory()==_L("KERN-EXEC"));
 	t.Close();
 	M1.Close();
@@ -273,13 +276,13 @@
 
 	test.Next(_L("Create mutex"));
 	TInt r=M1.CreateLocal();
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	test.Next(_L("Create low priority thread"));
 	TInt lowcount=0;
 	RThread low;
 	r=low.Create(_L("low"),LowThread,0x1000,NULL,&lowcount);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	low.SetPriority(EPriorityMuchLess);
 	test(Exists(_L("low")));
 
@@ -287,42 +290,42 @@
 	TInt medcount=0;
 	RThread med;
 	r=med.Create(_L("med"),MedThread,0x1000,NULL,&medcount);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	med.SetPriority(EPriorityNormal);
 	test(Exists(_L("med")));
 
 	test.Next(_L("Start low priority thread"));
 	low.Resume();
 	User::AfterHighRes(KTestDelay/10);
-	test(lowcount==1);
+	test_Equal(1, lowcount);
 //	MCOUNT(M1,0);
 
 	test.Next(_L("Start medium priority thread"));
 	med.Resume();
 	User::AfterHighRes(KTestDelay/10);
-	test(medcount==1);
+	test_Equal(1, medcount);
 	Kick(med);
 	User::AfterHighRes(KTestDelay/10);
-	test(medcount==2);
+	test_Equal(2, medcount);
 	Kick(med);
 
 	M1.Wait();
-	test(lowcount==1);
-	test(medcount==2);
+	test_Equal(1, lowcount);
+	test_Equal(2, medcount);
 	test.Next(_L("Wait, check medium runs"));
 	User::AfterHighRes(KTestDelay/10);
-	test(medcount==3);
+	test_Equal(3, medcount);
 	M1.Signal();
 
 	test.Next(_L("Create mutex 2"));
 	r=M2.CreateLocal();
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	test.Next(_L("Create high priority thread"));
 	TInt highcount=0;
 	RThread high;
 	r=high.Create(_L("high"),HighThread,0x1000,NULL,&highcount);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	high.SetPriority(EPriorityMore);
 	test(Exists(_L("high")));
 
@@ -336,15 +339,15 @@
 	User::AfterHighRes(KTestDelay/10);
 //	MCOUNT(M2,0);
 //	MCOUNT(M1,-1);
-	test(highcount==1);
+	test_Equal(1, highcount);
 
 	M2.Wait();
-	test(lowcount==2);
-	test(medcount==3);
-	test(highcount==2);
+	test_Equal(2, lowcount);
+	test_Equal(3, medcount);
+	test_Equal(2, highcount);
 	test.Next(_L("Wait, check medium runs"));
 	User::AfterHighRes(KTestDelay/10);
-	test(medcount==4);
+	test_Equal(4, medcount);
 	M2.Signal();
 
 	test.Next(_L("Kill threads"));
@@ -401,7 +404,7 @@
 	TBuf<4> b;
 	b.Num(n);
 	TInt r=t.Create(b,ThreadFunction,0x1000,NULL,aPtr);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.Resume();
 	TUint id=t.Id();
 	test.Printf(_L("id=%d\n"),id);
@@ -516,7 +519,7 @@
 	Count=0;
 	test.Next(_L("Create mutex"));
 	TInt r=M1.CreateLocal();
-	test(r==KErrNone);
+	test_KErrNone(r);
 	MCOUNT(M1,1);
 	MutexWait();
 	MCOUNT(M1,0);
@@ -624,7 +627,7 @@
 	User::After(50000);		// let threads claim mutex
 	MutexWait();
 	MCOUNT(M1,0);			// check no threads waiting
-	test(t[2].ExitType()==EExitKill);	// check t2 has exited
+	test_Equal(EExitKill, t[2].ExitType());	// check t2 has exited
 	t[2].Close();
 	test(!Exists(2));
 	IDCHECK(id2);			// check they ran in order t2,t3,t4,t5,t1
@@ -942,12 +945,12 @@
 		{
 		if (i==3 || i==6 || i==7)
 			{
-			test(t[i].ExitType()==EExitPending);
+			test_Equal(EExitPending, t[i].ExitType());
 			}
 		else
 			{
-			test(t[i].ExitType()==EExitPanic);
-			test(t[i].ExitReason()==EBadHandle);
+			test_Equal(EExitPanic, t[i].ExitType());
+			test_Equal(EBadHandle, t[i].ExitReason());
 			test(t[i].ExitCategory()==_L("KERN-EXEC"));
 			t[i].Close();
 			test(!Exists(i));
@@ -963,8 +966,8 @@
 		{
 		if (i==3 || i==6 || i==7)
 			{
-			test(t[i].ExitType()==EExitPanic);
-			test(t[i].ExitReason()==EBadHandle);
+			test_Equal(EExitPanic, t[i].ExitType());
+			test_Equal(EBadHandle, t[i].ExitReason());
 			test(t[i].ExitCategory()==_L("KERN-EXEC"));
 			t[i].Close();
 			test(!Exists(i));
@@ -1008,11 +1011,11 @@
 	test.Start(_L("Test mutex speed"));
 	TInt count=0;
 	TInt r=M1.CreateLocal();
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	RThread t;
 	r=t.Create(_L("Speed"),MutexSpeed,0x1000,NULL,&count);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.SetPriority(EPriorityRealTime);
 	t.Resume();
 	User::AfterHighRes(1000000);
@@ -1023,7 +1026,7 @@
 
 	TInt count2=0;
 	r=t.Create(_L("Speed2"),MutexSpeed2,0x1000,NULL,&count2);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.SetPriority(EPriorityRealTime);
 	t.Resume();
 	User::AfterHighRes(1000000);
@@ -1074,7 +1077,7 @@
 	TBuf<4> b;
 	b.Num(n);
 	TInt r=t.Create(b,SemThreadFunction,0x1000,NULL,aPtr);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.Resume();
 	TUint id=t.Id();
 	return id;
@@ -1147,7 +1150,7 @@
 	Count=0;
 	test.Next(_L("Create semaphore"));
 	TInt r=S.CreateLocal(2);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	MCOUNT(S,2);
 	SemWait();
 	MCOUNT(S,1);
@@ -1312,20 +1315,20 @@
 		{
 		if (i==3 || i==7 || i==10)
 			{
-			test(t[i].ExitType()==EExitPending);
+			test_Equal(EExitPending, t[i].ExitType());
 			}
 		else if (i!=5)
 			{
-			test(t[i].ExitType()==EExitPanic);
-			test(t[i].ExitReason()==EBadHandle);
+			test_Equal(EExitPanic, t[i].ExitType());
+			test_Equal(EBadHandle, t[i].ExitReason());
 			test(t[i].ExitCategory()==_L("KERN-EXEC"));
 			t[i].Close();
 			test(!Exists(i));
 			}
 		else
 			{
-			test(t[i].ExitType()==EExitKill);
-			test(t[i].ExitReason()==0);
+			test_Equal(EExitKill, t[i].ExitType());
+			test_Equal(0, t[i].ExitReason());
 			t[i].Close();
 			test(!Exists(i));
 			}
@@ -1340,8 +1343,8 @@
 		{
 		if (i==3 || i==7 || i==10)
 			{
-			test(t[i].ExitType()==EExitPanic);
-			test(t[i].ExitReason()==EBadHandle);
+			test_Equal(EExitPanic, t[i].ExitType());
+			test_Equal(EBadHandle, t[i].ExitReason());
 			test(t[i].ExitCategory()==_L("KERN-EXEC"));
 			t[i].Close();
 			test(!Exists(i));
@@ -1371,11 +1374,11 @@
 	test.Start(_L("Test semaphore speed"));
 	TInt count=0;
 	TInt r=S.CreateLocal(1);
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	RThread t;
 	r=t.Create(_L("SemSpeed"),SemSpeed,0x1000,NULL,&count);
-	test(r==KErrNone);
+	test_KErrNone(r);
 	t.SetPriority(EPriorityRealTime);
 	t.Resume();
 	User::AfterHighRes(1000000);
@@ -1391,12 +1394,22 @@
 
 GLDEF_C TInt E32Main()
 	{
+	TInt cpus = UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, 0, 0);
+	if (cpus != 1)
+		{
+		test(cpus>1);
+		// This test will require compatibility mode (and probably other changes)
+		// to work on SMP - it depends on explicit scheduling order.
+		test.Printf(_L("T_SEMUTX2 skipped, does not work on SMP\n"));
+		return KErrNone;
+		}	
+	
 	test.Title();
 
 	test.Start(_L("Test mutexes and semaphores"));
 	RThread().SetPriority(EPriorityMuchMore);
 	TInt r=Main.Duplicate(RThread());
-	test(r==KErrNone);
+	test_KErrNone(r);
 
 	Test0();
 	Test1();
--- a/kerneltest/e32test/prime/t_timer.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/prime/t_timer.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -606,7 +606,7 @@
 #if !(defined(__EPOC32__) && defined(__X86__))
 	TInt muid = 0;
 	HAL::Get(HAL::EMachineUid, muid);
-	if(muid!=HAL::EMachineUid_Lubbock && muid!=HAL::EMachineUid_NE1_TB && muid!=HAL::EMachineUid_STE8500)
+	if(muid==HAL::EMachineUid_OmapH2 || muid==HAL::EMachineUid_OmapH4 || muid==HAL::EMachineUid_OmapH6)
 		{
 		test.Next(_L("Test sequential locks fail over on/off"));
 		RTimer tat;
--- a/kerneltest/e32test/realtime/d_latncy.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/realtime/d_latncy.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -87,6 +87,9 @@
 #elif defined(__NE1_TB__)
 const TInt KTickPeriodMs=1;
 const TInt KTicksPerMillisecond=66667;
+#elif defined(__MRAP__)
+const TInt KTickPeriodMs=1;
+const TInt KTicksPerMillisecond=1000;
 #endif
 
 #ifdef _DEBUG
--- a/kerneltest/e32test/resourceman/t_rescontrolcli.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/resourceman/t_rescontrolcli.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -28,6 +28,9 @@
 #include <e32def_private.h>
 #include "d_rescontrolcli.h"
 
+#include <drivers/resourcecontrol_clientsettings.h>
+#include <drivers/resourcecontrol_settings.h>
+
 #define MAX_STATIC_RESOURCE_NUM 24 //Maximum number of static resources in simulated PSL
 #define MAX_STATIC_DEPENDENCY_RESOURCE_NUM 7 //Maximum number of static dependency resources in simulated PSL
 #define DEPENDENCY_RESOURCE_BIT_MASK 0x00010000
@@ -4237,10 +4240,87 @@
 	Clients.Close();
 	}
 
+void TestClientSettings(TInt aClientToken, TUint aExpectedBase)
+	{
+	TUint clientBase = ElementId_ClientSettingBase(aClientToken);
+	test(clientBase == aExpectedBase);
+
+	HCR::TElementId Id;
+
+	Id = ElementId_ClientName(aClientToken);
+	test(Id == aExpectedBase);
+
+	Id = ElementId_ClientPropertyFlag(aClientToken);
+	test(Id == (aExpectedBase + 1));
+
+	Id = ElementId_ClientPreallocation(aClientToken);
+	test(Id == (aExpectedBase + 2));
+
+	TInt firstResource = 0;
+	Id = ElementId_ClientStaticResource(aClientToken, firstResource);
+	test(Id == (aExpectedBase + 3));
+	
+	TInt thirdResource = 2;
+	Id = ElementId_ClientStaticResource(aClientToken, thirdResource);
+	test(Id == (aExpectedBase + 5));
+	}
+	
+void TestDynamicResourceSettings(TInt aDynamicResource,  TUint aExpectedBase)
+	{
+	TUint dynamicResourceBase = ElementId_DynamicResourceBase(aDynamicResource);
+	test(dynamicResourceBase == aExpectedBase);
+	
+	HCR::TElementId Id;	
+	
+	Id = ElementId_DynamicResourceName(aDynamicResource);
+	test(Id == aExpectedBase);
+
+	Id = ElementId_DynamicResourcePropertyFlag(aDynamicResource);
+	test(Id == (aExpectedBase + 1));
+
+	Id = ElementId_DynamicResourceMaxLevel(aDynamicResource);
+	test(Id == (aExpectedBase + 2));
+	
+	Id = ElementId_DynamicResourceMinLevel(aDynamicResource);
+	test(Id == (aExpectedBase + 3));
+
+	Id = ElementId_DynamicResourceDefaultLevel(aDynamicResource);
+	test(Id == (aExpectedBase + 4));
+
+	Id = ElementId_DynamicResourceDependencyMask1(aDynamicResource);
+	test(Id == (aExpectedBase + 5));
+
+	Id = ElementId_DynamicResourceDependencyMask2(aDynamicResource);
+	test(Id == (aExpectedBase + 6));
+
+	Id = ElementId_DynamicResourceDependencyMask3(aDynamicResource);
+	test(Id == (aExpectedBase + 7));
+	}
+	
+void TestClientHCRSettingMacros()
+	{
+	TInt clientToken = 2; // Random token number
+	TUint expectedBase = 80; // refer resourcecontrol_clientsettings.h for calculations
+	TestClientSettings(clientToken, expectedBase);
+	
+	clientToken = 0;
+	expectedBase = 16; // refer resourcecontrol_clientsettings.h for calculations
+	TestClientSettings(clientToken, expectedBase);
+
+	// Dynamic Resource settings
+	TUint dynamicResource = 3; // Random token number
+	expectedBase = 131168; // refer resourcecontrol_clientsettings.h for calculations
+	TestDynamicResourceSettings(dynamicResource, expectedBase);
+	
+	test.Printf(_L("Testing HCR client setting Macro's for Resource Manager successful \n"));
+	}
+	
 GLDEF_C TInt E32Main()
 	{
 	test.Title();
 	test.Start(_L("Testing Resource Manager...\n"));
+	test.Printf(_L("Testing HCR client setting Macro's for Resource Manager \n"));
+	TestClientHCRSettingMacros();
 	//
 	test.Printf(_L("TEST SKIPPED UNTIL FIX FOR DEF145087 IS AVAILABLE TO PREVENT CRASHING\n"));
 	test(0);
--- a/kerneltest/e32test/secure/t_suser.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/secure/t_suser.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -42,6 +42,8 @@
 #include <e32test.h>
 #include <e32svr.h>
 #include <nkern/nk_trace.h>
+#include <e32hal.h>
+#include <hal.h>
 
 LOCAL_D RTest test(_L("T_SUSER"));
 
@@ -946,21 +948,26 @@
 	test(logonStatus==KErrPermissionDenied);
 	CLOSE_AND_WAIT(process);
 
-	test.Next(_L("Calling UserSvr::AddEvent(ESwitchOff) with ECapabilityPowerMgmt & ECapabilitySwEvent"));
-	TRequestStatus absstatus;
-	RTimer abstimer;
-	TInt r = abstimer.CreateLocal();
-	test (r == KErrNone);
-	SetAbsoluteTimeout(abstimer, 5000000, absstatus); // 5 sec
-	process.Create((1u<<ECapabilitySwEvent)|(1u<<ECapabilityPowerMgmt),ETestProcessAddEventESwitchOff);
-	process.Logon(logonStatus);
-	process.Resume();
-	User::WaitForRequest(absstatus);
-	abstimer.Close();
-	User::WaitForRequest(logonStatus);
-	test(process.ExitType()==EExitKill);
-	test(logonStatus==KErrNone);
-	CLOSE_AND_WAIT(process);
+	TInt muid = 0;
+	HAL::Get(HAL::EMachineUid, muid);
+	if(muid==HAL::EMachineUid_OmapH2 || muid==HAL::EMachineUid_OmapH4 || muid==HAL::EMachineUid_OmapH6 || muid==HAL::EMachineUid_NE1_TB || muid==HAL::EMachineUid_X86PC || muid==HAL::EMachineUid_Win32Emulator)
+		{
+		test.Next(_L("Calling UserSvr::AddEvent(ESwitchOff) with ECapabilityPowerMgmt & ECapabilitySwEvent"));
+		TRequestStatus absstatus;
+		RTimer abstimer;
+		TInt r = abstimer.CreateLocal();
+		test (r == KErrNone);
+		SetAbsoluteTimeout(abstimer, 5000000, absstatus); // 5 sec
+		process.Create((1u<<ECapabilitySwEvent)|(1u<<ECapabilityPowerMgmt),ETestProcessAddEventESwitchOff);
+		process.Logon(logonStatus);
+		process.Resume();
+		User::WaitForRequest(absstatus);
+		abstimer.Close();
+		User::WaitForRequest(logonStatus);
+		test(process.ExitType()==EExitKill);
+		test(logonStatus==KErrNone);
+		CLOSE_AND_WAIT(process);
+		}
 
 	test.End();
 	}
--- a/kerneltest/e32test/smr/d_smr.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/smr/d_smr.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -19,7 +19,7 @@
 
 #include "d_trace.h"
 
-#include <memmodel\epoc\platform.h>
+#include <memmodel/epoc/platform.h>
 #include <bootdefs.h>
 #include <kernel/kernboot.h>
 #include <kernel/kern_priv.h>
--- a/kerneltest/e32test/system/d_mstim.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/system/d_mstim.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -41,6 +41,8 @@
 #include <rvemuboard.h>
 #elif defined(__NE1_TB__)
 #include <upd35001_timer.h>
+#elif defined(__MRAP__)
+#include <rap.h>
 #endif
 #include "d_mstim.h"
 #include "../misc/prbs.h"
@@ -93,6 +95,11 @@
 inline TCounter TIMER()
 	{ return NETimer::Timer(5).iTimerCount; }
 #endif
+#ifdef __MRAP__
+inline TCounter TIMER()
+	{ TRap::SetRegister32(1, KRapRegRTC001_TRIGGER);
+	return  TRap::Register32(KRapRegRTC001_LONGCOUNT); }
+#endif
 #if defined(__EPOC32__) && defined(__CPU_X86)
 TCounter TIMER();
 void SetUpTimerChannel2();
@@ -137,6 +144,10 @@
 inline TDelta TimeDelta(TCounter initial, TCounter final)
 	{ return final - initial; }
 #endif
+#if defined(__MRAP__)
+inline TDelta TimeDelta(TCounter initial, TCounter final)
+	{ return final-initial; }				// RAP RTC timer counts up
+#endif
 #ifdef __WINS__
 inline TDelta TimeDelta(TCounter initial, TCounter final)
 	{ return final-initial; }		// counts up
@@ -197,6 +208,15 @@
 	x /= TInt64(f);
 	return (TInt)x;
 #endif
+#if defined(__MRAP__)
+    // RTC runs with 32.768 kHz -> one tick is 
+    const TUint KRTCClockHz = 32768;
+    Int64 ticks(aTicks);
+    ticks*=(1000000);
+	ticks+=KRTCClockHz/2;		// 32.768 kHz tick
+	ticks/=KRTCClockHz;
+	return (TInt)ticks;
+#endif
 #if defined(__EPOC32__) && defined(__CPU_X86)
 	TInt x = aTicks;
 	TInt y = x;
--- a/kerneltest/e32test/system/d_tick.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/system/d_tick.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -37,6 +37,8 @@
 #include <rvemuboard.h>
 #elif defined(__NE1_TB__)
 #include <upd35001_timer.h>
+#elif defined(__MRAP__)
+#include <rap.h>
 #endif
 #include <kernel/kern_priv.h>
 #include "d_tick.h"
@@ -78,6 +80,11 @@
 inline TCounter TIMER()
 	{ return NETimer::Timer(2).iTimerCount; }
 #endif
+#ifdef __MRAP__
+inline TCounter TIMER()
+	{ TRap::SetRegister32(1, KRapRegRTC001_TRIGGER);
+	return  TRap::Register32(KRapRegRTC001_LONGCOUNT); }
+#endif
 #if defined(__EPOC32__) && defined(__CPU_X86)
 TCounter TIMER();
 void SetUpTimerChannel2();
@@ -90,6 +97,12 @@
 	return c.QuadPart;
 	}
 #endif
+#if defined(__MRAP__)
+inline TDelta TimeDelta(TCounter initial, TCounter final)
+	{ return final-initial; }				// RAP RTC timer counts up
+inline TInt LongTimeDelta(TCounter initial, TCounter final, TUint, TUint)
+	{ return final-initial; }				// RAP RTC timer counts up
+#endif
 
 #if defined(__MISA__) || defined(__MCOT__)
 inline TDelta TimeDelta(TCounter initial, TCounter final)
@@ -211,6 +224,15 @@
 	x /= TUint64(f);
 	return (TUint)x;
 #endif
+#if defined(__MRAP__)
+    // RTC runs with 32.768 kHz -> one tick is 
+    const TUint KRTCClockHz = 32768;
+    Int64 ticks(aTicks);
+    ticks*=(1000000);
+	ticks+=KRTCClockHz/2;		// 32.768 kHz tick
+	ticks/=KRTCClockHz;
+	return (TInt)ticks;
+#endif
 #if defined(__MAWD__) || defined(__MEIG__)
 	return aTicks*500;					// 2kHz tick
 #endif
@@ -589,6 +611,9 @@
 #if defined(__NE1_TB__)
 	// nothing to do since we use fast counter
 #endif
+#if defined(__MRAP__)
+	// nothing to do here RTC runs with 32.768 kHz
+#endif
 #ifdef __MAWD__
 	// Set up timer 1 as free running 2kHz clock
 	TWind::SetBuzzerControl(0);		// disable buzzer
--- a/kerneltest/e32test/system/t_condvar.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/system/t_condvar.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -56,6 +56,7 @@
 #include <e32ldr.h>
 #include <e32def.h>
 #include <e32def_private.h>
+#include <u32std.h>
 
 RTest test(_L("T_CONDVAR"));
 RMutex M1;
@@ -527,6 +528,16 @@
 
 TInt E32Main()
 	{
+	TInt cpus = UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, 0, 0);
+	if (cpus != 1)
+		{
+		test(cpus>1);
+		// This test will require compatibility mode (and probably other changes)
+		// to work on SMP - it depends on explicit scheduling order.
+		test.Printf(_L("T_CONDVAR skipped, does not work on SMP\n"));
+		return KErrNone;
+		}	
+	
 	__KHEAP_MARK;
 	__UHEAP_MARK;
 
--- a/kerneltest/e32test/timestamp/d_timestamp.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,21 +1,23 @@
 /*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* 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: 
+* Description:
 *
 */
 
-
 #include <kern_priv.h>
 #include <kernel.h>
 #include "d_timestamp.h"
--- a/kerneltest/e32test/timestamp/d_timestamp.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,22 +1,24 @@
 /*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* 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: 
+* Description:
 *
 */
 
 
-
 #ifndef __TIMESTAMPTEST_H__
 #define __TIMESTAMPTEST_H__
 
--- a/kerneltest/e32test/timestamp/d_timestamp_dev.h	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/timestamp/d_timestamp_dev.h	Fri Jun 11 15:02:23 2010 +0300
@@ -1,21 +1,23 @@
 /*
 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+* 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: 
+* Description:
 *
 */
 
-
 #ifndef __D_TIMERSTAMP_DEV_H__
 #define __D_TIMERSTAMP_DEV_H__
 
--- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritelargefile.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/bmwritemanyfiles.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createfilesanddirs.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32test/usb/t_usb_win/scripts/massstorage/createlargefile.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/e32utils/group/base_e32utils.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32utils/group/base_e32utils.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "E32 Utilities"
 
 component	base_e32utils
--- a/kerneltest/e32utils/group/bld.inf	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/e32utils/group/bld.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -45,7 +45,6 @@
 ../demandpaging/dptestcons.oby 				/epoc32/rom/include/dptestcons.oby
 
 PRJ_TESTEXPORTS
-../trace/btracevw.pl /epoc32/tools/btracevw.pl
 
 PRJ_TESTMMPFILES
 #if defined(TOOLS2)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/hcrdat.pm	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,378 @@
+#!perl -w
+#
+# 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:
+#
+use strict;
+
+#use Math::BigInt;
+
+#
+# Perl module to create and maintain feature manager data files.
+# You can either set up the information programmatically or else load up
+# information from a pre-existing feature data file and then modify it. You
+# can also save the information to a file (in feature manager dataset format).
+#
+# This class maintains header information plus two arrays, one containing
+# feature flag information and the other containing default supported range
+# information. Those are themselves objects and have their own accessor
+# methods.
+#
+
+package HCRdat;
+
+use HCRrec;
+
+
+#
+# n e w
+#
+# Create a new HCRdat object. For example 'my $hd = HCRdat->new("filea");
+#
+sub new
+{
+	my $arg = shift;
+	my $fn = shift;
+	my $class = ref($arg) || $arg;
+	my $self = {
+			        fingerprint => "HCRf",  # 4 bytes wide.
+					fileversion => 1,       # 2 bytes.
+					fileflags => 0x0001,  # 2 bytes.
+					numrecords => 0,      # 4 bytes. 
+					lsdoffset => 0,       # 4 bytes. 
+					lsdsize => 0,         # 4 bytes.
+				    packprefix => "V",    # Changed with endian-ness.
+					                      # Used to create binary strings.
+
+					settingrecords => [],  # Array of objects
+					lsd => [],             # Array of bytes
+	           };
+    bless $self, $class;
+	return $self;
+}
+
+
+# Print to STDOUT the header information we have.
+sub ShowHeader
+{
+	my $self = shift;
+	return undef unless(ref($self));
+
+	# Get header information..
+	my $typefield = $self->TypeField();
+	my $fileversion = $self->FileVersion();
+	my $fileflags = $self->FileFlags();
+	my $numrecords = $self->NumRecords();
+	my $lsdoffset = $self->LsdOffset();
+	my $lsdsize = $self->LsdSize();
+	
+	# Display it in English.
+	print "  FINGERPRINTF: '$typefield'\n";
+	print "  FILEVERSION: '$fileversion'\n";
+	print "  FILEFLAGS: '$fileflags'\n";
+	print "  NUMRECORDS: '$numrecords'\n";
+	print "  LSDOFFSET: '$lsdoffset'\n";
+    print "  LSDSIZE: '$lsdsize'\n";
+
+	return(0);
+}
+
+# Get/Set the endian-ness we want. Changes the 'packprefix' member which is
+# used in the creation of binary data.
+sub Endian
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	return $self->{endian} unless(defined($arg));
+	if($arg =~ m/(LE|BE)/i)
+	{
+		my $endian = uc($1);
+		$self->{endian} = $endian;
+		# Used by 'pack' to generate binary strings.
+		$self->{packprefix} = "V" if($endian eq "LE");
+		$self->{packprefix} = "N" if($endian eq "BE");
+	}
+	return $self->{endian};
+}
+
+# This is the fingerprint.
+sub TypeField
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	$self->{fingerprint} = $arg if(defined($arg));
+	return $self->{fingerprint};
+}
+
+sub FileVersion
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	# Should we be testing for a numeric value?
+	$self->{fileversion} = $arg if(defined($arg));
+	return $self->{fileversion};
+}
+
+sub FileFlags
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	$self->{fileflags} = $arg if(defined($arg));
+	return $self->{fileflags};
+}
+
+# How many feature flag objects have we got?
+sub NumRecords
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	$self->{numrecords} += $arg if(defined($arg));
+	return $self->{numrecords};
+}
+
+
+sub LsdOffset
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	$self->{lsdoffset} = $arg if(defined($arg));
+	return $self->{lsdoffset};
+}
+
+sub LsdSize
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	$self->{lsdsize} = $arg if(defined($arg));
+	return $self->{lsdsize};
+}
+
+# Create a binary string containing the header information for the
+# feature manager data file based on the various fields in this object.
+sub CreateBinaryHeader
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $hdrstring;
+
+	# Get the letter for packing information with 'pack' into a binary form.
+	my $pack16 = lc($self->{packprefix});
+	my $pack32 = uc($self->{packprefix});
+	
+	# Get header information..
+	my $typefield = $self->TypeField();
+	my $fileversion = $self->FileVersion();
+	my $fileflags = $self->FileFlags();
+	my $numrecords = $self->NumRecords();
+	my $lsdoffset = $self->LsdOffset();
+	my $lsdsize = $self->LsdSize();
+
+	# Write the 'type' field out. This is 'feat'. Would this be different on
+	# big-endian systems?
+	$hdrstring = $typefield;
+
+	# Now the file version number. A 16-bit value.. Will this cause trouble
+	# if the shifted value is signed?
+	$hdrstring .= pack($pack16 . "1", $fileversion);
+
+	# Now the file flags. Another 16-bit value..
+	$hdrstring .= pack($pack16 . "1", $fileflags);
+
+	# Now the number of listed features - a 32-bit value.
+	$hdrstring .= pack($pack32 . "1", $numrecords);
+
+	# Now the number of listed features - a 32-bit value.
+	$hdrstring .= pack($pack32 . "1", $lsdoffset);
+
+	# Now the number of listed features - a 32-bit value.
+	$hdrstring .= pack($pack32 . "1", $lsdsize);
+
+	# Now the 3 reserved words
+	$hdrstring .= pack($pack32 . "3", (0, 0, 0));
+
+	return $hdrstring;
+}
+
+sub CreateImageHdr
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	#my $partid = shift;
+	#return -1 unless(defined($partid));
+
+	# Add fingerprint, 1st reserved word and format version
+	my $imghdr = pack "V4", (0x5F524348, 0x54524150, 0x00000000, 0x00000001);
+	# Add space for image size, timestamp, 2nd reserved word
+	$imghdr .= pack "V3", (0x00000000, time, 0x00000000);
+	# Add space for payload checksum, HCR Payload constants: UID and 0x0 flags
+    $imghdr .= pack "V3", (0x00000000, 0x10286AB8, 0x00000000);
+    #Reserved space
+    $imghdr .= pack "x216", (0x00000000);
+ 
+    return $imghdr;
+}
+
+sub WriteToImage
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $imgfile = shift;
+	return -1 unless(defined($imgfile));
+	my $datfile = shift;
+	return -1 unless(defined($datfile));
+	#my $partid = shift;
+	#return -1 unless(defined($partid));
+	my $rc = 0;
+	
+    open IMGFILE, "> $imgfile" or die "Couldn't open file '$imgfile' for writing.\n";
+	binmode IMGFILE;
+   
+ 	syswrite(IMGFILE, $self->CreateImageHdr(), 256);	
+ 	
+    open DATFILE, "$datfile" or die "Couldn't open file '$datfile' for reading.\n";
+	binmode DATFILE;
+	# print FILE $self->BinaryContent();
+	
+    #my $wordsum = 0x1200000000;
+    #my $wordsum = Math::BigInt->new("0x0220100123");
+    #printf("test: %x\n", $wordsum->external();
+
+	my $imgsize = 256;
+	my $word;
+	printf("-reading image:\n")  if ($mhd::otrace);
+	while (sysread (DATFILE, $word, 4)) {
+	    #printf ("%08x ",$word)  if ($mhd::otrace);
+        my $iword = unpack("V" , $word);
+	    printf ("%08x ",$iword)  if ($mhd::otrace);
+        $rc = syswrite (IMGFILE, $word, 4);
+        die "error: ($rc) failed to write datfile word into imgfile.\n" if ($rc != 4);
+	    #$wordsum->badd($iword);
+        $imgsize += 4;
+	    print "\n" if (($mhd::otrace) && ($imgsize%16==0));
+        }
+    print "\n" if ($mhd::otrace);
+    # ordsum: 0x". $wordsum ."\n" if ($mhd::otrace);
+	my $checksum = 0x12345678;
+	close DATFILE;
+	
+	printf("-image size: %d, checksum: 0x%08x", $imgsize, $checksum) if ($mhd::otrace);
+	
+	$rc = sysseek(IMGFILE, 16, 0);
+	die "error: ($rc) failed to seek in image to write header.\n" if ($rc != 16);
+
+	# Write out the image size	
+	my $imginfo1 = pack "V1", ($imgsize);
+	$rc = syswrite(IMGFILE, $imginfo1, 4);
+	die "error: ($rc) failed to write image size/checksum to image header.\n" if ($rc != 4);
+
+	$rc = sysseek(IMGFILE, 28, 0);
+	die "error: ($rc) failed to seek in image to write header.\n" if ($rc != 28);
+	
+	# Write out the image checksum 
+	my $imginfo2 = pack "V1", ($checksum);
+	$rc = syswrite(IMGFILE, $imginfo2, 4);
+	die "error: ($rc) failed to write image size/checksum to image header.\n" if ($rc != 4);
+  
+	close IMGFILE; 	
+	
+    return 0;
+}
+
+# Writes the binary file specified as an argument with the content of this
+# and contained feature flag and dsr objects.
+sub WriteToFile
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $file = shift;
+	return undef unless(defined($file));
+    open FILE, "> $file" or die "Couldn't open file '$file' for writing.\n";
+	binmode FILE;
+	print FILE $self->BinaryContent();
+	
+	close FILE;
+	return 0;
+}
+
+
+# Create the binary equivalent of the internal data and return it as a
+# string.
+sub BinaryContent
+{
+	my $self = shift;
+	return undef unless(ref($self));
+
+    # Get the feature flag entries.. This is an array reference.
+	# For each one append the binary representation of the information
+	# contained.
+	my $records = "";
+    my $lsd = "";
+   	my $ffs_ref = $self->SettingRecords();
+	my $ff;
+
+    my $count = 0;
+	foreach $ff (@$ffs_ref)
+	{
+	    $count++;
+	    printf("-encoding record: %04d (0x%08x:%04d)\n", $count, $ff->CUID(), $ff->EID());
+		$records .= $ff->GetRecHdrBinary(length ($lsd));
+	    my $stype = $ff->Type();
+    	if (($stype & 0xffff0000) && ($ff->Length() > 0)) {
+		    $lsd .= $ff->GetRecLsdBinary();
+            }
+	}
+
+    $self->LsdOffset(32+length ($records));     # header size 32
+    $self->LsdSize(length ($lsd));
+    
+	my $header = $self->CreateBinaryHeader();
+
+	return $header . $records . $lsd;
+}
+
+# Return a reference to the 'feature flags' array.
+sub SettingRecords
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	return $self->{settingrecords};
+}
+
+# Add a Feature Flag object. Perhaps there should be code to check if we
+# already know about this feature flag. (i.e check the uid against the ones
+# we have).
+sub AddSettingRecord
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	die "panic: method 'AddSettingRecord' requires a 'HCRrec' object as argument.\n"
+   	    unless(ref($arg) eq  "HCRrec");
+   	
+	push @{$self->SettingRecords()}, $arg;
+	$self->NumRecords(1);
+	
+    return 0;
+}
+
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/hcrmd.bat	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,19 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of the License "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
+
+@echo off
+
+@perl -S -I%EPOCROOT%epoc32/tools/hcr %EPOCROOT%epoc32/tools/hcr/makehcrdat.pl %*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/hcrrec.pm	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,437 @@
+#!perl -w
+#
+# 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:
+#
+use strict;
+
+#
+# A simple class to manage feature flags for a feature set data file.
+#
+package HCRrec;
+
+my %typemap = (
+    Int32 =>       0x00000001,
+    Int16 =>       0x00000002,    
+    Int8 =>        0x00000004,
+    Bool =>        0x00000008,    
+    UInt32 =>      0x00000010,
+    UInt16 =>      0x00000020,    
+    UInt8 =>       0x00000040,
+    LinAddr =>     0x00000100,
+    BinData =>     0x00010000,
+    Text8 =>       0x00020000,    
+	ArrayInt32 =>  0x00040000,
+	ArrayUInt32 => 0x00080000,
+    Int64 =>       0x01000000,
+    UInt64 =>      0x02000000,    
+);
+my %maptype = reverse %typemap;
+my %lsdtype2packmap = (
+    0x00010000 => "C",
+    0x00020000 => "a",    
+    0x01000000 => "C",
+    0x02000000 => "C",    
+);
+
+# Create a feature flag object.
+sub new
+{
+	my $arg = shift;
+	my $class = ref($arg) || $arg;
+
+	my $self = {
+			     cuid => 0,              # 4 bytes
+			     eid => 0,               # 4 bytes
+			     type => 0,              # 4 bytes
+			     flagword => 0x0000,     # 2 bytes 
+                 valueset => 0,
+                           
+			     intvalue => 0,           # 4 bytes
+			     strvalue => "",          # array of chars
+			     binvalue => [],          # array of bytes
+			     arrvalue => [],		  # array of 4 byte integers
+			     
+   				 endian => "LE",
+			   };
+ 
+	bless $self, $class;
+	return $self;
+}
+
+sub Endian
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $arg = shift;
+	return $self->{endian} unless(defined($arg) and $arg =~ m/(^BE$|^LE$)/i);
+	$self->{endian} = lc($1);
+	return $self->{endian};
+}
+
+# Return a twelve byte string 'feature flag' information.
+sub GetRecHdrBinary
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	
+	my $lsd_size = shift;
+	
+	my $stype = $self->Type(); 
+	my @hdrarr = ( $self->CUID(), $self->EID(), $stype, $self->Flags(),
+                $self->SizeInBytes() );
+    
+	# Decide whether we want big or little endian output.
+	# According to the documentation, 'V', 'N' are GUARANTEED to be 32-bit.
+	my $packstring;
+	if($self->Endian() eq "BE") {
+	    $packstring = "N3n2N";
+        }
+    else {
+        $packstring = "V3v2V"; # Little endian.
+        }
+        
+    #
+    # Could add range checks here for 8-bit and 16-bit types.
+    # However would stop negative test cases from being generated.
+    # Do it later.
+    #
+    
+    if ($stype & 0xffff) {
+        print "Writing integer\n" if ($mhd::otrace);
+        push @hdrarr, $self->IntValue();
+        }
+    
+    if ($stype & 0xffff0000) {
+        if ($self->Length() > 0) {
+            print "Writing offset: " . $lsd_size . "\n" if ($mhd::otrace);
+            push @hdrarr, $lsd_size;
+            }
+        else {
+            print "Writing null offset: 0\n" if ($mhd::otrace);
+            push @hdrarr, 0;            
+            }
+        }
+
+	my $hdr_string = pack $packstring, @hdrarr;
+	
+	return $hdr_string;
+}
+
+# Return a twelve byte string 'feature flag' information.
+# Assumes Little Endian output!
+sub GetRecLsdBinary
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	
+    my $value = "";
+    my $valuelen = $self->Length();
+    my $vallen = $valuelen;
+    #print "vallen before:" . $vallen . "\n";
+    $vallen = ($valuelen+3)&0xfffc if ($valuelen%4) ;
+    #print "vallen after:" . $vallen . "\n";
+	my $valtype = $self->{type};
+
+    # String
+    if ($valtype & 0x00020000) {
+	    my $packstr = $lsdtype2packmap{$valtype} . $vallen;
+	    printf ("packstr:%s\n", $packstr) if($mhd::otrace);
+        printf ("strvalue:%s\n", $self->{strvalue}) if($mhd::otrace);
+        $value = pack $packstr,  $self->{strvalue} ;
+        }
+    # Binary Data
+    elsif ($valtype & 0x00010000) {
+        for (my $c=0;  $c < $valuelen; $c++) {
+            my $byte = $self->{binvalue}[$c];
+            $value .= pack $lsdtype2packmap{$valtype}, $byte;
+            $vallen--;     
+        }
+        while ($vallen > 0) {
+            $value .= pack "C", ( 0x00 );
+            $vallen--;
+            }
+    }
+    # 64bit quantity
+    elsif ($valtype & 0x03000000) {
+        die "error: 64 bit integer missing hex binvalues\n" if (! exists $self->{binvalue}[7]);
+        $value  = pack $lsdtype2packmap{$valtype}, $self->{binvalue}[0];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[1];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[2];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[3];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[4];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[5];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[6];
+        $value  .= pack $lsdtype2packmap{$valtype}, $self->{binvalue}[7];
+        }
+    # array of 32bit quantity
+    elsif ($valtype & 0x000C0000) {
+        for (my $c=0;  $c < $valuelen; $c++) {
+            my $int = $self->{arrvalue}[$c];
+            $value .= pack "V", $int;
+            $vallen--;     
+            }
+	}    
+    else {
+        die "panic: proramming error!!";
+    }
+    
+	return $value;
+	}
+
+# A single 32-bit number.
+sub CUID
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $uid = shift;
+	return $self->{cuid} unless(defined($uid));
+	my $uidv = hex($uid);
+	$self->{cuid} = $uidv;
+	return $uidv;
+}
+
+# A single 32-bit number.
+sub EID
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $id = shift;
+	return $self->{eid} unless(defined($id));
+	my $idv = int($id);
+	$self->{eid} = $idv;
+	return $idv;
+}
+
+sub Type
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $type = shift;
+	return $self->{type} unless(defined($type));
+	my $enum = $typemap{$type};
+	#print "--->Defined\n" if (defined $enum);
+	#print "--->NOT Defined\n" if (! defined $enum);
+	die "error: unknown setting type found in input file\n" if (! defined $enum);
+   	$self->{type} = $enum;
+	return $enum;
+}
+
+sub TypeName
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	return "Undefined Type" if (! exists $maptype{$self->{type}});
+	return $maptype{$self->{type}};
+}
+
+sub Flags
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $flags = shift;
+	return $self->{flagword} unless(defined($flags));
+	my $vf = hex($flags);
+	$self->{flagword} = $vf;
+	return $vf;
+}
+
+sub Length
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $len = shift;
+	die "panic: Length() does not take an argument!\n" if (defined($len));
+	
+	my $length = 0;
+	if ($self->{type} & 0x00020000) {
+        $length = length ($self->{strvalue});
+        }
+    elsif ($self->{type} & 0x03010000) {
+	    my $array_ref = $self->{binvalue};
+	    my @array = @$array_ref;
+	    $length = $#array+1;
+	    }
+    elsif ($self->{type} & 0x000C0000) {
+	    my $array_ref = $self->{arrvalue};
+	    my @array = @$array_ref;
+	    $length = $#array+1;
+	    #printf ("arrval length %d %d\n",  length ($self->{arrval}), $length);
+	    }
+	else {
+	    $length = 0;
+        }
+	return $length;	
+}
+
+sub SizeInBytes
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $len = shift;
+	die "panic: Length() does not take an argument!\n" if (defined($len));
+	
+	my $size = 0;
+	if ($self->{type} & 0x00020000) {
+        $size = length ($self->{strvalue});
+        }
+    elsif ($self->{type} & 0x03010000) {
+	    my $array_ref = $self->{binvalue};
+	    my @array = @$array_ref;
+	    $size = $#array+1;
+	    }
+    elsif ($self->{type} & 0x000C0000) {
+	    my $array_ref = $self->{arrvalue};
+	    my @array = @$array_ref;
+	    $size = ($#array+1)*4;
+	    #printf ("arrval length %d %d\n",  length ($self->{arrval}), $length);
+	    }
+	else {
+	    $size = 0;
+        }
+	return $size;	
+}
+
+sub IsValid
+{
+	my $self = shift;
+	return undef unless(ref($self));
+
+    if (($self->{cuid} == 0) || ($self->{eid} == 0) ||
+        ($self->{type} == 0) || ($self->{flagword} != 0) ||
+        ($self->IsValueSet() == 0)) {
+        return 0;
+        }    
+    
+    #Record valid if we reach here
+    return 1;    
+}
+
+sub IsValueSet
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	return $self->{valueset};
+}
+
+sub MarkValueSet
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	$self->{valueset} = 1;
+}
+
+sub IntValue
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $value = shift;
+	if (defined($value)) {
+        my $int = int($value);
+        $self->{intvalue} = $int;
+        $self->MarkValueSet();
+        }
+	return $self->{intvalue};
+}
+
+sub HexValue
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $value = shift;
+	return $self->{intvalue} unless(defined($value));
+	my $int = hex($value);
+	$self->{intvalue} = $int;
+	$self->MarkValueSet();
+    return $int;
+}
+
+sub StrValue
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $value = shift;
+	return $self->{strvalue} unless(defined($value));
+	#printf ("strlen before %d\n", length ($self->{strvalue}));	
+    $self->{strvalue} .= $value;
+	#printf ("strlen after %d\n",  length ($self->{strvalue}));
+	$self->MarkValueSet();
+    return $value;
+}
+
+sub ArrValue
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $value = shift;
+
+	return $self->{arrvalue} unless(defined($value));
+
+    my $int = int($value);
+	my $index = $self->Length();
+
+	$self->{arrvalue}[$index] = $int; # Increments the array size as well as appending item
+	$index*=4; 
+
+	printf ("warning: array value larger than HCR maximum (512 bytes): %d\n", $index) if ($index > 512);    
+	$self->MarkValueSet();
+
+    return $self->{arrvalue};
+}
+
+sub BinValue
+{
+	my $self = shift;
+	return undef unless(ref($self));
+	my $value = shift;
+	
+	return $self->{binvalue} unless(defined($value));
+
+    my @hwords = split(/\s/,$value);
+    shift @hwords if ($hwords[0] eq "");
+    my $hwordslen = scalar(@hwords);  
+
+    #printf("(len:%d)(0:%04x 1:%04x last:%04x)\n", $hwordslen, hex($hwords[0]), hex($hwords[1]), hex($hwords[$hwordslen-1])) if ($mhd::trace);
+    
+    my $index = $self->Length();
+	#printf ("binlen before %d\n", $index);
+         
+    #print "Index: " . $index . "\n";
+    foreach my $word (@hwords) {
+        if (length ($word) == 2) {
+	        $self->{binvalue}[$index] = hex($word);
+            }
+        else {
+            die "error: hexadecimal value '$word' too short/large for 8-bit integer\n";
+            }
+
+
+	   #$self->{binvalue}[$index] = $mint;
+	   #printf("%d: %04x\n", $count, $self->{binvalue}[$count]);
+       $index++;	  
+	   }
+	  
+
+	#printf ("binlen after %d\n", $index);
+            
+    printf ("warning: binary value larger than HCR maximum (512 bytes): %d\n", $index) if ($index > 512);
+    $self->MarkValueSet();            
+	return $self->{binvalue};
+}
+
+
+# ###########################################################################
+
+1;
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/hcrscripts.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,31 @@
+// Copyright (c) 2008-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:
+// Hardware Configuration Respoitory Scripts and Utils
+// Convienence inf file, to build:  bldmake -f hcrscripts.inf bldfiles
+// Scripts not part of the offical OS build, hence these are unsupported.
+// Available for developer adhoc-testing only until offical HCR tools available.
+//
+
+/**
+@file
+Hardware Configuration Repository Scripts
+*/
+
+PRJ_EXPORTS
+
+./hcrmd.bat								/epoc32/tools/hcrmd.bat
+./hcrdat.pm								/epoc32/tools/hcr/hcrdat.pm
+./hcrrec.pm								/epoc32/tools/hcr/hcrrec.pm	
+./makehcrdat.pl							/epoc32/tools/hcr/makehcrdat.pl
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/makehcrdat.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,219 @@
+#!perl -w
+#
+# 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:
+# This simple script makes a binary HCR data file from a text input file
+#
+use strict;
+
+use HCRdat;
+use HCRrec;
+
+package mhd;
+
+#
+# Find out what file the user is interested in..
+# Make sure it's specified and exists.
+#
+$mhd::trace = 0;
+$mhd::otrace = 0;
+
+if (@ARGV < 2 || @ARGV > 4) {
+    die "\nUsage: hcrmd.bat <source_textfile> <dest_datfile> [-i]\n";
+    }
+
+my $textfile = shift @ARGV;
+my $datfile  = shift @ARGV;
+
+my $do_create_image = 0;
+my $opt_i = shift @ARGV;
+#my $partid = 0x10000005;
+if (defined($opt_i)) {
+    $do_create_image = 1 if ($opt_i eq "-i");
+    die "error: unknown command option\n" if ($opt_i ne "-i");
+    #my $i_no = shift @ARGV;
+    #$partid = hex($i_no) if (defined($i_no)); 
+    #printf("partitionid: 0x%x\n", $partid)
+    }
+
+
+print "\n    HCR Binary Data File Generator, version v0.1\n";
+print "    Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.\n\n";
+print "-input: $textfile\n" if($mhd::trace);
+print "-output: $datfile\n" if($mhd::trace);
+
+die "error: Specifed source_textfile not found!" unless(-f $textfile);
+#die "error: Specified dest_binfile '$datfile' already exists!" if(-e $datfile);
+
+printf "\nReading input file... $textfile\n";
+
+printf "-opening text file\n" if($mhd::trace);
+my $tfh;
+open($tfh, "<$textfile");
+
+printf "-started conversion...\n"  if($mhd::trace);
+my $datobj = HCRdat->new();
+my $inrec = 0;
+my $ln = 0;
+my $recobj;
+
+while (<$tfh>)
+    {
+    $ln++;
+    if ($_ =~ '^\s*#') {
+        printf "-comment\n" if($mhd::trace);
+        }
+    elsif ($_ =~ '^@') {
+        die "error: Syntax error line $ln: New record started before previous one is closed" if($inrec > 0);
+        printf "-start\n" if($mhd::trace);
+        $inrec = 1;
+        $recobj = HCRrec->new();
+        }
+    elsif ($_ =~ '^\.') {
+        die "error: Syntax error line $ln: Record closed before a new record has been opened" if($inrec == 0); 
+        printf "-end\n" if($mhd::trace);
+        if ($recobj->IsValid()) {
+            $datobj->AddSettingRecord($recobj);
+            }
+        else {
+            die "error: Record after record " . $datobj->NumRecords() . " completed but not valid, missing or has =0  fields?\n";
+            }
+        $inrec = 0;
+        }
+    elsif ($_ =~ '^\s*$') {
+        printf "-blank\n" if($mhd::trace);
+        }
+    elsif ($_ =~ '^\s*cuid:\s') {
+        print "--cuid " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'cuid:' line incorrectly formed" if (scalar(@hwords) != 2); 
+
+        $recobj->CUID($hwords[1]);
+        printf("=0x%08x\n", $recobj->CUID()) if($mhd::trace);
+        }
+    elsif ($_ =~ '^\s*eid:\s') {
+        print "--eid " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'eid:' line incorrectly formed" if (scalar(@hwords) != 2); 
+
+        $recobj->EID($hwords[1]);
+        print "=".($recobj->EID())."\n" if($mhd::trace);  
+        }
+    elsif ($_ =~ '^\s*type:\s') {
+        print "--type " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'type:' line incorrectly formed" if (scalar(@hwords) != 2); 
+        
+        $recobj->Type($hwords[1]); 
+        printf("=0x%08x (%s)\n", $recobj->Type(), $recobj->TypeName()) if($mhd::trace);
+        }
+    elsif ($_ =~ '^\s*flags:\s') {
+        print "--flags " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'flags:' line incorrectly formed" if (scalar(@hwords) != 2);
+        
+        $recobj->Flags($hwords[1]);
+        printf ("=0x%x\n", $recobj->Flags()) if($mhd::trace);  
+        printf ("warning: flag length value greater than 2-bytes\n") if ($recobj->Flags() > 0xffff);
+        }
+    elsif ($_ =~ '^\s*intval:\s') {
+        print "--intval " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'intval:' line incorrectly formed" if (scalar(@hwords) != 2); 
+
+        $recobj->IntValue($hwords[1]);
+        printf("=%d (0x%x)\n", $recobj->IntValue(), $recobj->IntValue()) if($mhd::trace);  
+        }
+    elsif ($_ =~ '^\s*hexval:\s') {
+        print "--hexval " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'hexval:' line incorrectly formed" if (scalar(@hwords) != 2); 
+
+        $recobj->HexValue($hwords[1]);
+        printf("=%d (0x%x)\n", $recobj->IntValue(), $recobj->IntValue()) if($mhd::trace);  
+        }
+    elsif ($_ =~ '^\s*arrval:\s') {
+        print "--arrval " if($mhd::trace);
+        my @hwords = split(/\s+/,$_);
+        die "error: 'arrval:' line incorrectly formed" if (scalar(@hwords) != 2); 
+        
+		print  $hwords[1]."\n" if ($mhd::trace);
+        $recobj->ArrValue($hwords[1]);  
+        }
+    elsif ($_ =~ '^\s*strval:\s') {
+        print "--strval " if($mhd::trace);
+        my @hwords = split(/\"/,$_);
+        die "error: 'strval:' line incorrectly formed" if (scalar(@hwords) != 3); 
+
+        my $strval_size = $recobj->Length();
+        $recobj->StrValue($hwords[1]);
+        
+        printf("=\"%s\"\n", substr($recobj->StrValue(), $strval_size)) if($mhd::trace);  
+        }
+    elsif ($_ =~ '^\s*binval:\s') {
+        print "--binval " if($mhd::trace);
+        my @hwords = split(/:/,$_);
+        die "error: 'binval:' line incorrectly formed" if (scalar(@hwords) < 2); 
+
+        my $binval_size = $recobj->Length();
+        $recobj->BinValue($hwords[1]);
+        
+        my $binval_ref = $recobj->BinValue();
+        my @binval = @$binval_ref;
+        
+        printf("(%d) =", $#binval+1) if($mhd::trace);
+        my $uint16 = $binval_size;
+        for (; $uint16 < @binval; $uint16++) {
+            printf("%02x ", $binval[$uint16]) if($mhd::trace);
+            } 
+
+        print "\n" if($mhd::trace);
+        }
+    elsif ($_ =~ '') {
+        }
+    else {
+        die "error: unknown line type '$_'" 
+#        print $_  if($mhd::trace);
+        }
+    }
+
+close $tfh;
+
+printf "\nGenerating output file... $datfile\n";
+
+printf "-creating binary data file\n"  if($mhd::otrace);
+if ($datobj->WriteToFile($datfile.".tmp") != 0) {
+    die "error: failed to write to dest_binfile";
+    }
+    
+printf "-renaming file to temp file to $datfile\n"  if($mhd::otrace);
+rename ($datfile.".tmp", $datfile);
+
+printf "-file header written:\n"  if($mhd::otrace);
+$datobj->ShowHeader() if($mhd::otrace);
+
+if ($do_create_image) {
+    my $imgfile = $datfile . ".img";
+    print "\nGenerating partition image... ".  $imgfile . "\n";
+
+    if ($datobj->WriteToImage($imgfile, $datfile) != 0) {
+        die "error: failed to write to image file $imgfile";
+        }
+    }
+
+print "\nDone.\n";
+exit 0;
+
+
+
Binary file kerneltest/e32utils/hcrscripts/test/array_hcrfile.dat has changed
Binary file kerneltest/e32utils/hcrscripts/test/array_hcrfile.dat.img has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/test/array_test.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,54 @@
+#------------------------------------------------------------------------------
+# Large Array Settings Test file for use with the 'hcrmd' tool.
+#
+
+#------------------------------------------------------------------------------
+# Signed Integer array 32-bit tests
+#
+@
+cuid: 0xee000001
+eid:  121
+type: ArrayInt32
+flags: 0x0000
+arrval: 2147483647
+arrval: 2147483647
+.
+@
+cuid: 0xee000001
+eid:  122
+type: ArrayInt32
+flags: 0x0000
+arrval: 1
+.
+@
+cuid: 0xee000001
+eid:  123
+type: ArrayInt32
+flags: 0x0000
+arrval: -2147483648
+arrval: -2147483648
+arrval: -2147483648
+.
+
+
+#------------------------------------------------------------------------------
+# Unsigned Integer array 32-bit tests
+#
+@
+cuid: 0xee000004
+eid:  131
+type: ArrayUInt32
+flags: 0x0000
+arrval: 4294967295
+arrval: 4294967295
+arrval: 4294967295
+arrval: 4294967295
+.
+
+@
+cuid: 0xee000004
+eid:  132
+type: ArrayUInt32
+flags: 0x0000
+arrval: 0
+.
Binary file kerneltest/e32utils/hcrscripts/test/integer_hcrfile.dat has changed
Binary file kerneltest/e32utils/hcrscripts/test/integer_hcrfile.dat.img has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/test/integer_test.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,205 @@
+#------------------------------------------------------------------------------
+# Integer Setting Test file for use with the 'hcrmd' tool.
+#
+
+#------------------------------------------------------------------------------
+# Signed Integer 32-bit tests
+#
+@
+cuid: 0xff000001
+eid:  1
+type: Int32
+flags: 0x0000
+intval: 2147483647
+.
+@
+cuid: 0xff000001
+eid:  2
+type: Int32
+flags: 0x0000
+intval: 0
+.
+@
+cuid: 0xff000001
+eid:  3
+type: Int32
+flags: 0x0000
+intval: -2147483648
+.
+
+#------------------------------------------------------------------------------
+# Signed Integer 16-bit tests
+#
+@
+cuid: 0xff000002
+eid:  11
+type: Int16
+flags: 0x0000
+intval: 32767
+.
+@
+cuid: 0xff000002
+eid:  12
+type: Int16
+flags: 0x0000
+intval: 0
+.
+@
+cuid: 0xff000002
+eid:  13
+type: Int16
+flags: 0x0000
+intval: -32768
+.
+
+#------------------------------------------------------------------------------
+# Signed Integer 8-bit tests
+#
+@
+cuid: 0xff000003
+eid:  21
+type: Int8
+flags: 0x0000
+intval: 127
+.
+
+@
+cuid: 0xff000003
+eid:  22
+type: Int8
+flags: 0x0000
+intval: 0
+.
+@
+cuid: 0xff000003
+eid:  23
+type: Int8
+flags: 0x0000
+intval: -128
+.
+
+#------------------------------------------------------------------------------
+# Unsigned Integer tests
+#
+@
+cuid: 0xff000004
+eid:  31
+type: UInt32
+flags: 0x0000
+intval: 4294967295
+.
+@
+cuid: 0xff000004
+eid:  32
+type: UInt16
+flags: 0x0000
+intval: 65535
+.
+@
+cuid: 0xff000004
+eid:  33
+type: UInt8
+flags: 0x0000
+intval: 255
+.
+
+#------------------------------------------------------------------------------
+# Boolean tests
+#
+@
+cuid: 0xff000005
+eid:  41
+type: Bool
+flags: 0x0000
+intval: 1
+.
+@
+cuid: 0xff000005
+eid:  42
+type: Bool
+flags: 0x0000
+intval: 0
+.
+
+
+#------------------------------------------------------------------------------
+# Linear Addrress tests
+#
+@
+cuid: 0xff000006
+eid:  51
+type: LinAddr
+flags: 0x0000
+hexval: 0x80000000
+.
+@
+cuid: 0xff000006
+eid:  52
+type: LinAddr
+flags: 0x0000
+hexval: 0x01008004
+.
+@
+cuid: 0xff000006
+eid:  53
+type: LinAddr
+flags: 0x0000
+hexval: 0x00000000
+.
+
+
+#------------------------------------------------------------------------------
+# Synatx tests
+#
+
+# Tool should cope with these
+@
+cuid: 0xffff0001
+eid:  101
+type: Int32
+intval: 1889025
+.
+@
+cuid: 0xffff0002
+eid:  102
+type: Int32
+intval: 5889025
+.
+
+# Missing fields - Tool should abort for these records
+# 
+#@
+#cuid: 0xffff0003
+#eid:  103
+#type: Int32
+#.
+#@
+#cuid: 0xffff0004
+#eid:  104
+#.
+#@
+#cuid: 0xffff0005
+#.
+#@
+#.
+
+# Incorrect Types - Tool should abort for these records
+# 
+#@
+#cuid: 0xffff0006
+#eid:  106
+#type: int32
+#intval: 1889025
+#.
+#@
+#cuid: 0xffff0007
+#eid:  107
+#type: Int
+#intval: 1889025
+#.
+#@
+#cuid: 0xffff0008
+#eid:  108
+#type: Int32ab
+#intval: 1889025
+#.
Binary file kerneltest/e32utils/hcrscripts/test/large_hcrfile.dat has changed
Binary file kerneltest/e32utils/hcrscripts/test/large_hcrfile.dat.img has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/hcrscripts/test/large_test.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,378 @@
+#------------------------------------------------------------------------------
+# Large Settings Test file for use with the 'hcrmd' tool.
+#
+
+#------------------------------------------------------------------------------
+# BinData tests
+#
+
+@
+cuid: 0x000000ff
+eid:  13
+type: BinData
+flags: 000000
+binval: 0E
+.
+@
+cuid: 0x000000ff
+eid:  23
+type: BinData
+flags: 000000
+binval: 0E 1F 
+.
+@
+cuid: 0x000000ff
+eid:  33
+type: BinData
+flags: 000000
+binval: 0E 1F BA
+.
+@
+cuid: 0x000000ff
+eid:  43
+type: BinData
+flags: 000000
+binval: 0E 1F BA 11
+.
+@
+cuid: 0x000000ff
+eid:  53
+type: BinData
+flags: 000000
+binval: 0E 1F BA 11 1F
+.
+@
+cuid: 0x000000ff
+eid:  63
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 
+.
+@
+cuid: 0x000000ff
+eid:  64
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 2E
+.
+@
+cuid: 0x000000ff
+eid:  73
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 2E AA
+.
+@
+cuid: 0x000000ff
+eid:  83
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 2E AA DD
+.
+@
+cuid: 0x000000ff
+eid:  93
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+.
+
+@
+cuid: 0x000000ff
+eid:  103
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+.
+
+@
+cuid: 0x000000ff
+eid:  113
+type: BinData
+flags: 000000
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 
+binval: 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 
+binval: 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 0F
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  
+binval: 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 
+binval: 69 73 20 70 72 6F 67 72 61 6D 11 11 22 22 00 FF
+binval: FF FF BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68
+binval: 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  
+.
+
+#------------------------------------------------------------------------------
+# Text8 tests
+#
+
+# Length field tests
+#
+@
+cuid: 0x11223301
+eid:  1
+type: Text8
+flags: 0x0000
+strval: "Hello World!!"   
+.
+@
+cuid: 0x11223302
+eid:  2
+type: Text8
+flags: 0x0000
+strval: "Hell"   
+.
+@
+cuid: 0x11223303
+eid:  3
+type: Text8
+flags: 0x0000
+strval: "Hello World!!    "   
+.
+
+# strval field tests
+#
+@
+cuid: 0x11223304
+eid:  1
+type: Text8
+flags: 0x0000
+strval: ""   
+.
+@
+cuid: 0x11223305
+eid:  5
+type: Text8
+flags: 0x0000
+strval: "012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab"
+.
+
+@
+cuid: 0x11223306
+eid:  6
+type: Text8
+flags: 0x0000
+strval: "012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab"
+strval: "012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789bc"
+strval: "012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789cd"
+strval: "012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789ab012345678901234567890123456789de" 
+.
+
+
+# strval field and padding tests
+#
+@
+cuid: 0x11223311
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "A"   
+.
+@
+cuid: 0x11223312
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "We"  
+. 
+@
+cuid: 0x11223313
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "Car"   
+.
+@
+cuid: 0x11223314
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "Cake"   
+.
+@
+cuid: 0x11223315
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---A"
+.
+@
+cuid: 0x11223316
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---We"  
+. 
+@
+cuid: 0x11223317
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---Car"   
+.
+@
+cuid: 0x11223318
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---Cake"   
+.
+@
+cuid: 0x11223319
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---A"
+.
+@
+cuid: 0x1122331a 
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---We"  
+. 
+@
+cuid: 0x1122331b
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---Car"   
+.
+@
+cuid: 0x1122331c
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---Cake"   
+.
+@
+cuid: 0x1122331d
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---3---A"
+.
+@
+cuid: 0x1122331e
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---3---We"  
+. 
+@
+cuid: 0x1122331f
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---3---Car"   
+.
+@
+cuid: 0x11223320
+eid:  128
+type: Text8
+flags: 0x0000
+strval: "1---2---3---Cake"   
+.
+
+
+#------------------------------------------------------------------------------
+# UInt64 & Int64 tests
+#
+
+@
+cuid: 0x55667711
+eid:  91
+type: Int64
+flags: 0x0000
+binval: 00 00 00 00 00 00 00 80
+.
+@
+cuid: 0x55667711
+eid:  92
+type: Int64
+flags: 0x0000
+binval: 00 00 00 00 00 00 00 00
+.
+#@
+#cuid: 0x55667711
+#eid:  192
+#type: Int64
+#flags: 0x0000
+#binval: 00
+#.
+@
+cuid: 0x55667711
+eid:  93
+type: Int64
+flags: 0x0000
+binval: ff ff ff ff ff ff ff 7f 
+.
+@
+cuid: 0x55667711
+eid:  94
+type: UInt64
+flags: 0x0000
+binval: ff ff ff ff ff ff ff ff
+.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/cephes.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#ifndef _CEPHES_H_
+#define _CEPHES_H_
+
+double cephes_igamc(double a, double x);
+double cephes_igam(double a, double x);
+double cephes_lgam(double x);
+double cephes_p1evl(double x, double *coef, int N);
+double cephes_polevl(double x, double *coef, int N);
+double cephes_erf(double x);
+double cephes_erfc(double x);
+double cephes_normal(double x);
+
+#endif /*  _CEPHES_H_  */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/config.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,65 @@
+/*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#ifndef _CONFIG_H_
+#define	_CONFIG_H_
+
+//#define	WINDOWS32
+//#define	PROTOTYPES
+//#define	LITTLE_ENDIAN
+//#define	LOWHI
+
+/*
+ * AUTO DEFINES (DON'T TOUCH!)
+ */
+
+#ifndef	CSTRTD
+typedef char *CSTRTD;
+#endif
+#ifndef	BSTRTD
+typedef unsigned char *BSTRTD;
+#endif
+
+#ifndef	BYTE
+typedef unsigned char BYTE;
+#endif
+#ifndef	UINT
+typedef unsigned int UINT;
+#endif
+#ifndef	USHORT
+typedef unsigned short USHORT;
+#endif
+#ifndef	ULONG
+typedef unsigned long ULONG;
+#endif
+#ifndef	DIGIT
+typedef USHORT DIGIT;	/* 16-bit word */
+#endif
+#ifndef	DBLWORD
+typedef ULONG DBLWORD;  /* 32-bit word */
+#endif
+
+#ifndef	WORD64
+typedef ULONG WORD64[2];  /* 64-bit word */
+#endif
+
+#endif /* _CONFIG_H_ */
+
+#if defined(__cplusplus)
+}
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/decls.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,52 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#ifndef _DECLS_H_
+#define _DECLS_H_ 
+
+#include "../include/defs.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                   G L O B A L   D A T A  S T R U C T U R E S 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+BitSequence	*epsilon;				// BIT STREAM
+TP			tp;						// TEST PARAMETER STRUCTURE
+FILE		*stats[NUMOFTESTS+1];	// FILE OUTPUT STREAM
+FILE		*results[NUMOFTESTS+1];	// FILE OUTPUT STREAM
+FILE		*freqfp;				// FILE OUTPUT STREAM
+FILE		*summary;				// FILE OUTPUT STREAM
+int			testVector[NUMOFTESTS+1];
+
+char	generatorDir[NUMOFGENERATORS][20] = { "AlgorithmTesting", "LCG", "QCG1", "QCG2","CCG", "XOR",
+			"MODEXP", "BBS", "MS", "G-SHA1", "HASH_DRBG" };
+				
+char	testNames[NUMOFTESTS+1][32] = { " ", "Frequency", "BlockFrequency", "CumulativeSums", "Runs", "LongestRun", "Rank",
+			"FFT", "NonOverlappingTemplate", "OverlappingTemplate", "Universal", "ApproximateEntropy", "RandomExcursions",
+			"RandomExcursionsVariant", "Serial", "LinearComplexity" };
+
+#endif // _DECLS_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/defs.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,92 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                       D E B U G G I N G  A I D E S
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef _DEFS_H_
+#define _DEFS_H_
+
+#include "config.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                              M A C R O S
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#define MAX(x,y)             ((x) <  (y)  ? (y)  : (x))
+#define MIN(x,y)             ((x) >  (y)  ? (y)  : (x))
+#define isNonPositive(x)     ((x) <= 0.e0 ?   1  : 0)
+#define isPositive(x)        ((x) >  0.e0 ?   1 : 0)
+#define isNegative(x)        ((x) <  0.e0 ?   1 : 0)
+#define isGreaterThanOne(x)  ((x) >  1.e0 ?   1 : 0)
+#define isZero(x)            ((x) == 0.e0 ?   1 : 0)
+#define isOne(x)             ((x) == 1.e0 ?   1 : 0)
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
+                         G L O B A L  C O N S T A N T S
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#define ALPHA							0.01	/* SIGNIFICANCE LEVEL */
+#define MAXNUMOFTEMPLATES				148		/* APERIODIC TEMPLATES: 148=>temp_length=9 */
+#define NUMOFTESTS						15		/* MAX TESTS DEFINED  */
+#define NUMOFGENERATORS					11		/* MAX PRNGs */
+#define MAXFILESPERMITTEDFORPARTITION	148
+#define	TEST_FREQUENCY					1
+#define	TEST_BLOCK_FREQUENCY			2
+#define	TEST_CUSUM						3
+#define	TEST_RUNS						4
+#define	TEST_LONGEST_RUN				5
+#define	TEST_RANK						6
+#define	TEST_FFT						7
+#define	TEST_NONPERIODIC				8
+#define	TEST_OVERLAPPING				9
+#define	TEST_UNIVERSAL					10
+#define	TEST_APEN						11
+#define	TEST_RND_EXCURSION				12
+#define	TEST_RND_EXCURSION_VAR			13
+#define	TEST_SERIAL						14
+#define	TEST_LINEARCOMPLEXITY			15
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                   G L O B A L   D A T A  S T R U C T U R E S
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+typedef unsigned char	BitSequence;
+
+typedef struct _testParameters {
+	int		n;
+	int		blockFrequencyBlockLength;
+	int		nonOverlappingTemplateBlockLength;
+	int		overlappingTemplateBlockLength;
+	int		serialBlockLength;
+	int		linearComplexitySequenceLength;
+	int		approximateEntropyBlockLength;
+	int		numOfBitStreams;
+} TP;
+
+#endif // _DEFS_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/externs.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,48 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#ifndef _EXTERNS_H_
+#define _EXTERNS_H_
+
+#include "../include/defs.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                   G L O B A L   D A T A  S T R U C T U R E S 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+extern BitSequence	*epsilon;				// BIT STREAM
+extern TP			tp;						// TEST PARAMETER STRUCTURE
+extern FILE			*stats[NUMOFTESTS+1];	// FILE OUTPUT STREAM
+extern FILE			*results[NUMOFTESTS+1];	// FILE OUTPUT STREAM
+extern FILE			*freqfp;				// FILE OUTPUT STREAM
+extern FILE			*summary;				// FILE OUTPUT STREAM
+extern int			testVector[NUMOFTESTS+1];
+
+extern char	generatorDir[NUMOFGENERATORS][20];
+extern char	testNames[NUMOFTESTS+1][32];
+
+#endif // _EXTERNS_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/generators.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#ifndef _GENERATORS_H_
+#define _GENERATORS_H_
+//#include	"../include/sha.h"
+
+void	lcg();
+double	lcg_rand(int, double, double*, int);
+void	quadRes1();
+void	quadRes2();
+void	cubicRes();
+void	exclusiveOR();
+void	modExp();
+void	bbs();
+void	micali_schnorr();
+void	SHA1();
+void    HASH_DRBG();
+
+/* The circular shifts. */
+#define CS1(x) ((((ULONG)x)<<1)|(((ULONG)x)>>31))
+#define CS5(x)  ((((ULONG)x)<<5)|(((ULONG)x)>>27))
+#define CS30(x)  ((((ULONG)x)<<30)|(((ULONG)x)>>2))
+
+/* K constants */
+
+#define K0  0x5a827999L
+#define K1  0x6ed9eba1L
+#define K2  0x8f1bbcdcL
+#define K3  0xca62c1d6L
+
+#define f1(x,y,z)   ( (x & (y ^ z)) ^ z )
+
+#define f3(x,y,z)   ( (x & ( y ^ z )) ^ (z & y) )
+
+#define f2(x,y,z)   ( x ^ y ^ z )                           /* Rounds 20-39 */
+
+#define  expand(x)  Wbuff[x%16] = CS1(Wbuff[(x - 3)%16 ] ^ Wbuff[(x - 8)%16 ] ^ Wbuff[(x - 14)%16] ^ Wbuff[x%16])
+
+#define sub1Round1(count)      { \
+	 temp = CS5(A) + f1(B, C, D) + E + Wbuff[count] + K0; \
+	 E = D; \
+	 D = C; \
+	 C = CS30( B ); \
+	 B = A; \
+	 A = temp; \
+	 } \
+
+#define sub2Round1(count)   \
+	 { \
+	 expand(count); \
+	 temp = CS5(A) + f1(B, C, D) + E + Wbuff[count%16] + K0; \
+	 E = D; \
+	 D = C; \
+	 C = CS30( B ); \
+	 B = A; \
+	 A = temp; \
+	} \
+
+#define Round2(count)     \
+	 { \
+	 expand(count); \
+	 temp = CS5( A ) + f2( B, C, D ) + E + Wbuff[count%16] + K1;  \
+	 E = D; \
+	 D = C; \
+	 C = CS30( B ); \
+	 B = A; \
+	 A = temp;  \
+	 } \
+
+#define Round3(count)    \
+	 { \
+	 expand(count); \
+	 temp = CS5( A ) + f3( B, C, D ) + E + Wbuff[count%16] + K2; \
+	 E = D; \
+	 D = C; \
+	 C = CS30( B ); \
+	 B = A; \
+	 A = temp; \
+	 }
+
+#define Round4(count)    \
+	 { \
+	 expand(count); \
+	 temp = CS5( A ) + f2( B, C, D ) + E + Wbuff[count%16] + K3; \
+	 E = D; \
+	 D = C; \
+	 C = CS30( B ); \
+	 B = A; \
+	 A = temp; \
+	 }
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/genutils.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#ifndef _GENUTILS_H_
+#define _GENUTILS_H_
+
+#include "openc.h"
+#include "config.h"
+
+typedef struct _MP_struct {
+	int		size;	/*  in bytes  */
+	int		bitlen;	/*  in bits, duh  */
+	BYTE	*val;
+	} MP;
+
+#define	FREE(A)	if ( (A) ) { free((A)); (A) = NULL; }
+#define	ASCII2BIN(ch)	( (((ch) >= '0') && ((ch) <= '9')) ? ((ch) - '0') : (((ch) >= 'A') && ((ch) <= 'F')) ? ((ch) - 'A' + 10) : ((ch) - 'a' + 10) )
+
+#ifndef EXPWD
+#define	EXPWD		((DBLWORD)1<<NUMLEN)
+#endif
+
+#define	sniff_bit(ptr,mask)		(*(ptr) & mask)
+
+/*
+ * Function Declarations
+ */
+int		greater(BYTE *x, BYTE *y, int l);
+int		less(BYTE *x, BYTE *y, int l);
+BYTE	bshl(BYTE *x, int l);
+void	bshr(BYTE *x, int l);
+int		Mult(BYTE *A, BYTE *B, int LB, BYTE *C, int LC);
+void	ModSqr(BYTE *A, BYTE *B, int LB, BYTE *M, int LM);
+void	ModMult(BYTE *A, BYTE *B, int LB, BYTE *C, int LC, BYTE *M, int LM);
+void	smult(BYTE *A, BYTE b, BYTE *C, int L);
+void	Square(BYTE *A, BYTE *B, int L);
+void	ModExp(BYTE *A, BYTE *B, int LB, BYTE *C, int LC, BYTE *M, int LM);
+int		DivMod(BYTE *x, int lenx, BYTE *n, int lenn, BYTE *quot, BYTE *rem);
+void	Mod(BYTE *x, int lenx, BYTE *n, int lenn);
+void	Div(BYTE *x, int lenx, BYTE *n, int lenn);
+void	sub(BYTE *A, int LA, BYTE *B, int LB);
+int		negate(BYTE *A, int L);
+BYTE	add(BYTE *A, int LA, BYTE *B, int LB);
+void	prettyprintBstr(char *S, BYTE *A, int L);
+void	byteReverse(ULONG *buffer, int byteCount);
+void	ahtopb (char *ascii_hex, BYTE *p_binary, int bin_len);
+
+#endif  /* _GENUTILS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/matrix.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,43 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+       R A N K  A L G O R I T H M  F U N C T I O N  P R O T O T Y P E S 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef _MATRIX_H_
+#define _MATRIX_H_
+
+int				computeRank(int M, int Q, BitSequence **matrix);
+void			perform_elementary_row_operations(int flag, int i, int M, int Q, BitSequence **A);
+int				find_unit_element_and_swap(int flag, int i, int M, int Q, BitSequence **A);
+int				swap_rows(int i, int index, int Q, BitSequence **A);
+int				determine_rank(int m, int M, int Q, BitSequence **A);
+BitSequence**	create_matrix(int M, int Q);
+void			display_matrix(int M, int Q, BitSequence **m);
+void			def_matrix(int M, int Q, BitSequence **m,int k);
+void			delete_matrix(int M, BitSequence **matrix);
+
+#endif // _MATRIX_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/stat_fncs.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,51 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+     S T A T I S T I C A L  T E S T  F U N C T I O N  P R O T O T Y P E S 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#ifndef _STAT_FNCS_H_
+#define _STAT_FNCS_H_
+
+void	Frequency(int n);
+void	BlockFrequency(int M, int n);
+void	CumulativeSums(int n);
+void	Runs(int n);
+void	LongestRunOfOnes(int n);
+void	Rank(int n);
+void	DiscreteFourierTransform(int n);
+void	NonOverlappingTemplateMatchings(int m, int n);
+void	OverlappingTemplateMatchings(int m, int n);
+void	Universal(int n);
+void	ApproximateEntropy(int m, int n);
+void	RandomExcursions(int n);
+void	RandomExcursionsVariant(int n);
+void	LinearComplexity(int M, int n);
+void	Serial(int m, int n);
+
+#endif // _STAT_FNCS_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/utilities.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+              U T I L I T Y  F U N C T I O N  P R O T O T Y P E S 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+#ifndef _UTILITIES_H_
+#define _UTILITIES_H_
+
+int		displayGeneratorOptions();
+int		generatorOptions(char** streamFile);
+void	chooseTests();
+void	fixParameters();
+void	fileBasedBitStreams(char *streamFile);
+void	readBinaryDigitsInASCIIFormat(FILE *fp, char *streamFile);
+void	readHexDigitsInBinaryFormat(FILE *fp);
+int		convertToBits(const BYTE *x, int xBitLength, int bitsNeeded, int *num_0s, int *num_1s, int *bitsRead);
+void	openOutputStreams(int option);
+void    InitializeNISTSuiteL(int option);
+void    ReleaseResources();
+void	invokeTestSuite(int option, char *streamFile);
+void	nist_test_suite();
+void    GetNextTemplateItem(BitSequence aBitSequence[]);
+
+
+extern CConsoleBase*    gConsole;
+extern TBuf8<KMaxFileName>       gLogFilePath;
+
+extern TInt gTemplateIndex;
+
+const TInt KMaxBit = 32;
+
+
+
+// inline functions
+inline void ResetTemplateIndex()
+    {
+    gTemplateIndex = 1;
+    }
+
+
+#endif // _UTILITIES_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/include/utils/openc.h	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,86 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*/
+
+
+#ifndef _OPENC_H_
+#define _OPENC_H_
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32cons.h>            // Console
+#include <f32file.h>
+
+#include <e32math.h>
+
+extern RFs gFileSession;
+
+// Math functions
+double log(double);
+double exp(double);
+double fabs(double);
+double floor(double);
+double sqrt(double);
+double erf(double);
+double erfc(double);
+
+double pow(double, double);
+
+// Math trigonometric functions
+double sin(double);
+double cos(double);
+
+
+// data types
+typedef RFile FILE;
+#define EOF (-1)
+typedef TUint32     u_int32_t;
+typedef TInt32      int32_t;
+
+#define SEEK_SET    0   /* set file offset to offset */
+#define SEEK_CUR    1   /* set file offset to current plus offset */
+#define SEEK_END    2   /* set file offset to EOF plus offset */
+
+
+// stdio functions
+int     printf(const char * __restrict, ...);
+int     scanf(const char * __restrict, ...);
+int     sprintf(char * __restrict, const char * __restrict, ...);
+int     puts ( const char * str );
+int     putchar ( int character );
+char*   strcpy(char* aDest, const char* aSrc);
+
+FILE    *fopen(const char * __restrict, const char * __restrict);
+int     fclose(FILE *);
+int     fprintf(FILE * __restrict, const char * __restrict, ...);
+int     fscanf(FILE * __restrict, const char * __restrict, ...);
+TUint32  fread(void * __restrict, TUint32, TUint32, FILE * __restrict);
+int     fseek(FILE *, long, int);
+
+int     fflush(FILE *);
+
+// stdlib functions
+void*   calloc(TUint32, TUint32);
+void    free(void *);
+
+void    qsort (void* base, TUint32 nmemb, TUint32 size, int (*compar)(const void*, const void*));
+
+void    exit (int status);
+
+// Other utility functions
+void ReadStringFromConsole(TDes& aString);
+TInt ReadIntL(TInt& aValue);
+
+#endif /* _OPENC_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/approximateEntropy.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/cephes.h"  
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                A P P R O X I M A T E  E N T R O P Y   T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+ApproximateEntropy(int m, int n)
+{
+	int				i, j, k, r, blockSize, seqLength, powLen, index;
+	double			sum, numOfBlocks, ApEn[2], apen, chi_squared, p_value;
+	unsigned int	*P;
+	
+	fprintf(stats[TEST_APEN], "\t\t\tAPPROXIMATE ENTROPY TEST\n");
+	fprintf(stats[TEST_APEN], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_APEN], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_APEN], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_APEN], "\t\t(a) m (block length)    = %d\n", m);
+
+	seqLength = n;
+	r = 0;
+	
+	for ( blockSize=m; blockSize<=m+1; blockSize++ ) {
+		if ( blockSize == 0 ) {
+			ApEn[0] = 0.00;
+			r++;
+		}
+		else {
+			numOfBlocks = (double)seqLength;
+			powLen = (int)pow(2, blockSize+1)-1;
+			if ( (P = (unsigned int*)calloc(powLen,sizeof(unsigned int)))== NULL ) {
+				fprintf(stats[TEST_APEN], "ApEn:  Insufficient memory available.\n");
+				return;
+			}
+			for ( i=1; i<powLen-1; i++ )
+				P[i] = 0;
+			for ( i=0; i<numOfBlocks; i++ ) { /* COMPUTE FREQUENCY */
+				k = 1;
+				for ( j=0; j<blockSize; j++ ) {
+					k <<= 1;
+					if ( (int)epsilon[(i+j) % seqLength] == 1 )
+						k++;
+				}
+				P[k-1]++;
+			}
+			/* DISPLAY FREQUENCY */
+			sum = 0.0;
+			index = (int)pow(2, blockSize)-1;
+			for ( i=0; i<(int)pow(2, blockSize); i++ ) {
+				if ( P[index] > 0 )
+					sum += P[index]*log(P[index]/numOfBlocks);
+				index++;
+			}
+			sum /= numOfBlocks;
+			ApEn[r] = sum;
+			r++;
+			free(P);
+		}
+	}
+	apen = ApEn[0] - ApEn[1];
+	
+	chi_squared = 2.0*seqLength*(log(2) - apen);
+	p_value = cephes_igamc(pow(2, m-1), chi_squared/2.0);
+	
+	fprintf(stats[TEST_APEN], "\t\t(b) n (sequence length) = %d\n", seqLength);
+	fprintf(stats[TEST_APEN], "\t\t(c) Chi^2               = %f\n", chi_squared);
+	fprintf(stats[TEST_APEN], "\t\t(d) Phi(m)	       = %f\n", ApEn[0]);
+	fprintf(stats[TEST_APEN], "\t\t(e) Phi(m+1)	       = %f\n", ApEn[1]);
+	fprintf(stats[TEST_APEN], "\t\t(f) ApEn                = %f\n", apen);
+	fprintf(stats[TEST_APEN], "\t\t(g) Log(2)              = %f\n", log(2.0));
+	fprintf(stats[TEST_APEN], "\t\t--------------------------------------------\n");
+
+	if ( m > (int)(log(seqLength)/log(2)-5) ) {
+		fprintf(stats[TEST_APEN], "\t\tNote: The blockSize = %d exceeds recommended value of %d\n", m,
+			MAX(1, (int)(log(seqLength)/log(2)-5)));
+		fprintf(stats[TEST_APEN], "\t\tResults are inaccurate!\n");
+		fprintf(stats[TEST_APEN], "\t\t--------------------------------------------\n");
+	}
+	
+	fprintf(stats[TEST_APEN], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_APEN], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/assess.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,419 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*/
+
+
+/* --------------------------------------------------------------------------
+   Title       :  The NIST Statistical Test Suite
+
+   Date        :  December 1999
+
+   Programmer  :  Juan Soto
+
+   Summary     :  For use in the evaluation of the randomness of bitstreams
+                  produced by cryptographic random number generators.
+
+   Package     :  Version 1.0
+
+   Copyright   :  (c) 1999 by the National Institute Of Standards & Technology
+
+   History     :  Version 1.0 by J. Soto, October 1999
+                  Revised by J. Soto, November 1999
+                  Revised by Larry Bassham, March 2008
+
+   Keywords    :  Pseudorandom Number Generator (PRNG), Randomness, Statistical 
+                  Tests, Complementary Error functions, Incomplete Gamma 
+                  Function, Random Walks, Rank, Fast Fourier Transform, 
+                  Template, Cryptographically Secure PRNG (CSPRNG),
+                  Approximate Entropy (ApEn), Secure Hash Algorithm (SHA-1), 
+                  Blum-Blum-Shub (BBS) CSPRNG, Micali-Schnorr (MS) CSPRNG, 
+
+   Source      :  David Banks, Elaine Barker, James Dray, Allen Heckert, 
+                  Stefan Leigh, Mark Levenson, James Nechvatal, Andrew Rukhin, 
+                  Miles Smid, Juan Soto, Mark Vangel, and San Vo.
+
+   Technical
+   Assistance  :  Larry Bassham, Ron Boisvert, James Filliben, Daniel Lozier,
+                  and Bert Rust.
+
+   Warning     :  Portability Issues.
+
+   Limitation  :  Amount of memory allocated for workspace.
+
+   Restrictions:  Permission to use, copy, and modify this software without 
+                  fee is hereby granted, provided that this entire notice is 
+                  included in all copies of any software which is or includes
+                  a copy or modification of this software and in all copies 
+                  of the supporting documentation for such software.
+   -------------------------------------------------------------------------- */
+//system include
+#include <e32base.h>
+#include <e32std.h>
+#include <e32cons.h>
+
+// user include
+#include "openc.h"
+#include "../include/decls.h"
+#include "../include/cephes.h"  
+#include "../include/utilities.h"
+#include "../include/generators.h"
+
+typedef int (*CompareFnType)(const void*, const void*);
+
+void	partitionResultFile(int numOfFiles, int numOfSequences, int option, int testNameID);
+void	postProcessResults(int option);
+int		cmp(const double *a, const double *b);
+int		computeMetrics(char *s, int test);
+
+int
+StartNISTTest()
+{
+	int		i;
+	int		option = 10;			/* TEMPLATE LENGTH/STREAM LENGTH/GENERATOR*/
+	char	*streamFile = NULL;	/* STREAM FILENAME     */
+	
+
+	tp.n = 1000000; // length of the individual bit stream(s) to be processed
+	tp.blockFrequencyBlockLength = 128;
+	tp.nonOverlappingTemplateBlockLength = 9;
+	tp.overlappingTemplateBlockLength = 9;
+	tp.approximateEntropyBlockLength = 10;
+	tp.serialBlockLength = 16;
+	tp.linearComplexitySequenceLength = 500;
+	tp.numOfBitStreams = 100;
+	chooseTests();
+	fixParameters();
+	openOutputStreams(option);
+	invokeTestSuite(option, streamFile);
+	fclose(freqfp);
+	for( i=1; i<=NUMOFTESTS; i++ ) {
+		if ( stats[i] != NULL )
+			fclose(stats[i]);
+		if ( results[i] != NULL )
+			fclose(results[i]);
+	}
+	if ( (testVector[0] == 1) || (testVector[TEST_CUSUM] == 1) ) 
+		partitionResultFile(2, tp.numOfBitStreams, option, TEST_CUSUM);
+	if ( (testVector[0] == 1) || (testVector[TEST_NONPERIODIC] == 1) ) 
+		partitionResultFile(MAXNUMOFTEMPLATES, tp.numOfBitStreams, option, TEST_NONPERIODIC);
+	if ( (testVector[0] == 1) || (testVector[TEST_RND_EXCURSION] == 1) )
+		partitionResultFile(8, tp.numOfBitStreams, option, TEST_RND_EXCURSION);
+	if ( (testVector[0] == 1) || (testVector[TEST_RND_EXCURSION_VAR] == 1) )
+		partitionResultFile(18, tp.numOfBitStreams, option, TEST_RND_EXCURSION_VAR);
+	if ( (testVector[0] == 1) || (testVector[TEST_SERIAL] == 1) )
+		partitionResultFile(2, tp.numOfBitStreams, option, TEST_SERIAL);
+	fprintf(summary, "------------------------------------------------------------------------------\n");
+	fprintf(summary, "RESULTS FOR THE UNIFORMITY OF P-VALUES AND THE PROPORTION OF PASSING SEQUENCES\n");
+	fprintf(summary, "------------------------------------------------------------------------------\n");
+	fprintf(summary, " C1  C2  C3  C4  C5  C6  C7  C8  C9 C10  P-VALUE  PROPORTION  STATISTICAL TEST\n");
+	fprintf(summary, "------------------------------------------------------------------------------\n");
+	postProcessResults(option);
+	fclose(summary);
+
+	return 1;
+    }
+
+void
+partitionResultFile(int numOfFiles, int numOfSequences, int option, int testNameID)
+{ 
+	int		i, k, m, j, start, end, num, numread;
+	float	c;
+	FILE	**fp = (FILE **)calloc(numOfFiles+1, sizeof(FILE *));
+	int		*results = (int *)calloc(numOfFiles, sizeof(int *));
+	char	*s[MAXFILESPERMITTEDFORPARTITION];
+	char	resultsDir[200];
+	
+	for ( i=0; i<MAXFILESPERMITTEDFORPARTITION; i++ )
+		s[i] = (char*)calloc(200, sizeof(char));
+	
+	sprintf(resultsDir, "%s\\experiments\\%s\\%s\\results", gLogFilePath.PtrZ(), generatorDir[option], testNames[testNameID]);
+	
+	if ( (fp[numOfFiles] = fopen(resultsDir, "r")) == NULL ) {
+		printf("%s", resultsDir);
+		printf(" -- file not found. Exiting program.\n");
+		exit(-1);
+	}
+	
+	for ( i=0; i<numOfFiles; i++ ) 
+	    {
+		sprintf(s[i], "%s\\experiments\\%s\\%s\\data%d", gLogFilePath.PtrZ(), generatorDir[option], testNames[testNameID], i+1);
+        }
+	numread = 0;
+	m = numOfFiles/20;
+	if ( (numOfFiles%20) != 0 )
+		m++;
+	for ( i=0; i<numOfFiles; i++ ) {
+		if ( (fp[i] = fopen(s[i], "w")) == NULL ) {
+			printf("%s", s[i]);
+			printf(" -- file not found. Exiting program.\n");
+			exit(-1);
+		}
+		fclose(fp[i]);
+	}
+	for ( num=0; num<numOfSequences; num++ ) {
+		for ( k=0; k<m; k++ ) { 			/* FOR EACH BATCH */
+			
+			start = k*20;		/* BOUNDARY SEGMENTS */
+			end   = k*20+19;
+			if ( k == (m-1) )
+				end = numOfFiles-1;
+			
+			for ( i=start; i<=end; i++ ) {		/* OPEN FILE */
+				if ( (fp[i] = fopen(s[i], "a")) == NULL ) {
+					printf("%s", s[i]);
+					printf(" -- file not found. Exiting program.\n");
+					exit(-1);
+				}
+			}
+			
+			for ( j=start; j<=end; j++ ) {		/* POPULATE FILE */
+				fscanf(fp[numOfFiles], "%f", &c);
+				fprintf(fp[j], "%f\n", c);
+				numread++;
+			}
+
+			for ( i=start; i<=end; i++ )		/* CLOSE FILE */
+				fclose(fp[i]);
+		}
+	}
+	fclose(fp[numOfFiles]);
+	for ( i=0; i<MAXFILESPERMITTEDFORPARTITION; i++ )
+		free(s[i]);
+	
+	free(fp);
+	free(results);
+	return;
+}
+
+int
+cmp(const double *a, const double *b)
+{
+	if ( *a < *b )
+		return -1;
+	if ( *a == *b )
+		return 0;
+	return 1;
+}
+
+void
+postProcessResults(int option)
+{
+	int    i, k;
+	int    randomExcursionSampleSize = 0;
+	int    generalSampleSize = 0;
+	int		case1, case2, numOfFiles = 2;
+	double	passRate;
+	char	s[200];
+	
+	for ( i=1; i<=NUMOFTESTS; i++ ) {		// FOR EACH TEST
+		if ( testVector[i] ) {
+			// SPECIAL CASES -- HANDLING MULTIPLE FILES FOR A SINGLE TEST
+			if ( ((i == TEST_CUSUM) && testVector[TEST_CUSUM] ) ||
+				 ((i == TEST_NONPERIODIC) && testVector[TEST_NONPERIODIC] ) ||
+				 ((i == TEST_RND_EXCURSION) && testVector[TEST_RND_EXCURSION]) ||
+				 ((i == TEST_RND_EXCURSION_VAR) && testVector[TEST_RND_EXCURSION_VAR]) || 
+				 ((i == TEST_SERIAL) && testVector[TEST_SERIAL]) ) {
+				
+				if ( (i == TEST_NONPERIODIC) && testVector[TEST_NONPERIODIC] )  
+					numOfFiles = MAXNUMOFTEMPLATES;
+				else if ( (i == TEST_RND_EXCURSION) && testVector[TEST_RND_EXCURSION] ) 
+					numOfFiles = 8;
+				else if ( (i == TEST_RND_EXCURSION_VAR) && testVector[TEST_RND_EXCURSION_VAR] ) 
+					numOfFiles = 18;
+				else
+					numOfFiles = 2;
+				for ( k=0; k<numOfFiles; k++ ) {
+					if ( k < 10 )
+						sprintf(s, "%s\\experiments\\%s\\%s\\data%1d", gLogFilePath.PtrZ(), generatorDir[option], testNames[i], k+1);
+					else if ( k < 100 )
+						sprintf(s, "%s\\experiments\\%s\\%s\\data%2d", gLogFilePath.PtrZ(), generatorDir[option], testNames[i], k+1);
+					else
+						sprintf(s, "%s\\experiments\\%s\\%s\\data%3d", gLogFilePath.PtrZ(), generatorDir[option], testNames[i], k+1);
+					if ( (i == TEST_RND_EXCURSION) || (i == TEST_RND_EXCURSION_VAR) ) 
+						randomExcursionSampleSize = computeMetrics(s,i);
+					else
+						generalSampleSize = computeMetrics(s,i);
+				}
+			}
+			else {
+				sprintf(s, "%s\\experiments\\%s\\%s\\results", gLogFilePath.PtrZ(), generatorDir[option], testNames[i]);
+				generalSampleSize = computeMetrics(s,i);
+			}
+		}
+	}
+
+	fprintf(summary, "\n\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");
+	case1 = 0;
+	case2 = 0;
+	if ( testVector[TEST_RND_EXCURSION] || testVector[TEST_RND_EXCURSION_VAR] ) 
+		case2 = 1;
+	for ( i=1; i<=NUMOFTESTS; i++ ) {
+		if ( testVector[i] && (i != TEST_RND_EXCURSION) && (i != TEST_RND_EXCURSION_VAR) ) {
+			case1 = 1;
+			break;
+		}
+	}
+	if ( case1 ) {
+		if ( generalSampleSize == 0 ) {
+			fprintf(summary, "The minimum pass rate for each statistical test with the exception of the\n");
+			fprintf(summary, "random excursion (variant) test is undefined.\n\n");
+		}
+		else {
+			passRate = 0.99-3.0*sqrt(0.01*(1.0-ALPHA)/(double)generalSampleSize);
+			fprintf(summary, "The minimum pass rate for each statistical test with the exception of the\n");
+			fprintf(summary, "random excursion (variant) test is approximately = %f for a\n", generalSampleSize ? passRate : 0.0);
+			fprintf(summary, "sample size = %d binary sequences.\n\n", generalSampleSize);
+		}
+	}
+	if ( case2 ) {
+		if ( randomExcursionSampleSize == 0 )
+			fprintf(summary, "The minimum pass rate for the random excursion (variant) test is undefined.\n\n");
+		else {
+			passRate = 0.99-3.0*sqrt(0.01*(1.0-ALPHA)/(double)randomExcursionSampleSize);
+			fprintf(summary, "The minimum pass rate for the random excursion (variant) test\n");
+			fprintf(summary, "is approximately %f for a sample size = %d binary sequences.\n\n", passRate, randomExcursionSampleSize);
+		}
+	}
+	fprintf(summary, "For further guidelines construct a probability table using the MAPLE program\n");
+	fprintf(summary, "provided in the addendum section of the documentation.\n");
+	fprintf(summary, "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n");
+}
+
+int
+computeMetrics(char *s, int test)
+{
+	int		j, pos, count, sampleSize, expCount;
+	int		freqPerBin[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+	double	*A = NULL;
+	double  *T = NULL;
+	double  chi2, proportion, uniformity;
+	float	c;
+	FILE	*fp = NULL;
+
+	if ( (fp = fopen(s, "r")) == NULL ) {
+		printf("%s",s);
+		printf(" -- file not found. Exiting program.\n");
+		exit(-1);
+	}
+	
+	/* Compute Metric 1: Proportion of Passing Sequences */
+	
+	count = 0; 		
+	sampleSize = tp.numOfBitStreams;
+	
+	if ( (test == TEST_RND_EXCURSION) || (test == TEST_RND_EXCURSION_VAR) ) { /* Special Case: Random Excursion Tests */
+		if ( (T = (double *)calloc(tp.numOfBitStreams, sizeof(double))) == NULL ) {
+			printf("Final Analysis Report aborted due to insufficient workspace\n");
+			// Perform cleanup before returning
+			fclose(fp);
+			return 0;
+		}
+		for ( j=0; j<sampleSize; j++ ) {
+			fscanf(fp, "%f", &c);
+			if ( c > 0.000000 )
+				T[count++] = c;
+		}
+
+		if ( (A = (double *)calloc(count, sizeof(double))) == NULL ) {
+			printf("Final Analysis Report aborted due to insufficient workspace\n");
+            // Perform cleanup before returning
+            fclose(fp);
+            free(T);
+			return 0;
+		}
+
+		for ( j=0; j<count; j++ )
+			A[j] = T[j];
+		
+		sampleSize = count;
+		count = 0;
+		for ( j=0; j<sampleSize; j++ )
+			if ( A[j] < ALPHA )
+				count++;
+		free(T);
+		T = NULL;
+	}
+	else {
+		if ( (A = (double *)calloc(sampleSize, sizeof(double))) == NULL ) {
+			printf("Final Analysis Report aborted due to insufficient workspace\n");
+            // Perform cleanup before returning
+            fclose(fp);
+			return 0;
+		}
+		for ( j=0; j<sampleSize; j++ ) {
+			fscanf(fp, "%f", &c);
+			if ( c < ALPHA )
+				count++;
+			A[j] = c;
+		}
+	}
+	if ( sampleSize == 0 )
+		proportion = 0.0;
+	else
+		proportion = 1.0-(double)count/sampleSize;
+
+	/* Compute Metric 2: Histogram */
+
+	qsort((void *)A, sampleSize, sizeof(double), (CompareFnType)cmp);
+	
+	for ( j=0; j<sampleSize; j++ ) {
+		pos = (int)floor(A[j]*10);
+		if ( pos == 10 )
+			pos--;
+		freqPerBin[pos]++;
+	}
+	chi2 = 0.0;
+	expCount = sampleSize/10;
+	for ( j=0; j<10; j++ )
+		chi2 += pow(freqPerBin[j]-expCount, 2)/expCount;
+	uniformity = cephes_igamc(9.0/2.0, chi2/2.0);
+
+	for ( j=0; j<10; j++ )			/* DISPLAY RESULTS */
+		fprintf(summary, "%3d ", freqPerBin[j]);
+
+	if ( expCount == 0 )
+		fprintf(summary, "    ----    ");
+	else if ( uniformity < 0.0001 )
+		fprintf(summary, " %8.6f * ", uniformity);
+	else
+		fprintf(summary, " %8.6f   ", uniformity);
+
+	if ( sampleSize == 0 )
+		fprintf(summary, " ----     %s\n", testNames[test]);
+	else if ( proportion < 0.96 )
+		fprintf(summary, "%6.4f *  %s\n", proportion, testNames[test]);
+	else
+		fprintf(summary, "%6.4f    %s\n", proportion, testNames[test]);
+
+	fclose(fp);
+	free(A);
+	
+	return sampleSize;
+}
+
+/*
+Gobal Entry Function
+*/
+GLDEF_C TInt E32Main()
+    {
+    __UHEAP_MARK;
+    TInt ret = StartNISTTest();
+    __UHEAP_MARKEND;
+    
+    return ret;
+    }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/blockFrequency.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                    B L O C K  F R E Q U E N C Y  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+BlockFrequency(int M, int n)
+{
+	int		i, j, N, blockSum;
+	double	p_value, sum, pi, v, chi_squared;
+	
+	N = n/M; 		/* # OF SUBSTRING BLOCKS      */
+	sum = 0.0;
+	
+	for ( i=0; i<N; i++ ) {
+		blockSum = 0;
+		for ( j=0; j<M; j++ )
+			blockSum += epsilon[j+i*M];
+		pi = (double)blockSum/(double)M;
+		v = pi - 0.5;
+		sum += v*v;
+	}
+	chi_squared = 4.0 * M * sum;
+	p_value = cephes_igamc(N/2.0, chi_squared/2.0);
+
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t\tBLOCK FREQUENCY TEST\n");
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t(a) Chi^2           = %f\n", chi_squared);
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t(b) # of substrings = %d\n", N);
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t(c) block length    = %d\n", M);
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t(d) Note: %d bits were discarded.\n", n % M);
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "\t\t---------------------------------------------\n");
+
+	fprintf(stats[TEST_BLOCK_FREQUENCY], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_BLOCK_FREQUENCY], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/cephes.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,357 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+
+
+#include "openc.h"
+#include "../include/cephes.h"
+
+static const double	rel_error = 1E-12;
+
+double MACHEP = 1.11022302462515654042E-16;		// 2**-53
+double MAXLOG = 7.09782712893383996732224E2;	// log(MAXNUM)
+double MAXNUM = 1.7976931348623158E308;			// 2**1024*(1-MACHEP)
+double PI     = 3.14159265358979323846;			// pi, duh!
+
+static double big = 4.503599627370496e15;
+static double biginv =  2.22044604925031308085e-16;
+
+int sgngam = 0;
+
+double
+cephes_igamc(double a, double x)
+{
+	double ans, ax, c, yc, r, t, y, z;
+	double pk, pkm1, pkm2, qk, qkm1, qkm2;
+
+	if ( (x <= 0) || ( a <= 0) )
+		return( 1.0 );
+
+	if ( (x < 1.0) || (x < a) )
+		return( 1.e0 - cephes_igam(a,x) );
+
+	ax = a * log(x) - x - cephes_lgam(a);
+
+	if ( ax < -MAXLOG ) {
+		printf("igamc: UNDERFLOW\n");
+		return 0.0;
+	}
+	ax = exp(ax);
+
+	/* continued fraction */
+	y = 1.0 - a;
+	z = x + y + 1.0;
+	c = 0.0;
+	pkm2 = 1.0;
+	qkm2 = x;
+	pkm1 = x + 1.0;
+	qkm1 = z * x;
+	ans = pkm1/qkm1;
+
+	do {
+		c += 1.0;
+		y += 1.0;
+		z += 2.0;
+		yc = y * c;
+		pk = pkm1 * z  -  pkm2 * yc;
+		qk = qkm1 * z  -  qkm2 * yc;
+		if ( qk != 0 ) {
+			r = pk/qk;
+			t = fabs( (ans - r)/r );
+			ans = r;
+		}
+		else
+			t = 1.0;
+		pkm2 = pkm1;
+		pkm1 = pk;
+		qkm2 = qkm1;
+		qkm1 = qk;
+		if ( fabs(pk) > big ) {
+			pkm2 *= biginv;
+			pkm1 *= biginv;
+			qkm2 *= biginv;
+			qkm1 *= biginv;
+		}
+	} while ( t > MACHEP );
+
+	return ans*ax;
+}
+
+double
+cephes_igam(double a, double x)
+{
+	double ans, ax, c, r;
+
+	if ( (x <= 0) || ( a <= 0) )
+		return 0.0;
+
+	if ( (x > 1.0) && (x > a ) )
+		return 1.e0 - cephes_igamc(a,x);
+
+	/* Compute  x**a * exp(-x) / gamma(a)  */
+	ax = a * log(x) - x - cephes_lgam(a);
+	if ( ax < -MAXLOG ) {
+		printf("igam: UNDERFLOW\n");
+		return 0.0;
+	}
+	ax = exp(ax);
+
+	/* power series */
+	r = a;
+	c = 1.0;
+	ans = 1.0;
+
+	do {
+		r += 1.0;
+		c *= x/r;
+		ans += c;
+	} while ( c/ans > MACHEP );
+
+	return ans * ax/a;
+}
+
+
+/* A[]: Stirling's formula expansion of log gamma
+ * B[], C[]: log gamma function between 2 and 3
+ */
+static unsigned short A[] = {
+	0x6661,0x2733,0x9850,0x3f4a,
+	0xe943,0xb580,0x7fbd,0xbf43,
+	0x5ebb,0x20dc,0x019f,0x3f4a,
+	0xa5a1,0x16b0,0xc16c,0xbf66,
+	0x554b,0x5555,0x5555,0x3fb5
+};
+static unsigned short B[] = {
+	0x6761,0x8ff3,0x8901,0xc095,
+	0xb93e,0x355b,0xf234,0xc0e2,
+	0x89e5,0xf890,0x3d73,0xc114,
+	0xdb51,0xf994,0xbc82,0xc131,
+	0xf20b,0x0219,0x4589,0xc13a,
+	0x055e,0x5418,0x0c67,0xc12a
+};
+static unsigned short C[] = {
+	/*0x0000,0x0000,0x0000,0x3ff0,*/
+	0x12b2,0x1cf3,0xfd0d,0xc075,
+	0xd757,0x7b89,0xaa0d,0xc0d0,
+	0x4c9b,0xb974,0xeb84,0xc10a,
+	0x0043,0x7195,0x6286,0xc131,
+	0xf34c,0x892f,0x5255,0xc143,
+	0xe14a,0x6a11,0xce4b,0xc13e
+};
+
+#define MAXLGM 2.556348e305
+
+
+/* Logarithm of gamma function */
+double
+cephes_lgam(double x)
+{
+	double	p, q, u, w, z;
+	int		i;
+
+	sgngam = 1;
+
+	if ( x < -34.0 ) {
+		q = -x;
+		w = cephes_lgam(q); /* note this modifies sgngam! */
+		p = floor(q);
+		if ( p == q ) {
+lgsing:
+			goto loverf;
+		}
+		i = (int)p;
+		if ( (i & 1) == 0 )
+			sgngam = -1;
+		else
+			sgngam = 1;
+		z = q - p;
+		if ( z > 0.5 ) {
+			p += 1.0;
+			z = p - q;
+		}
+		z = q * sin( PI * z );
+		if ( z == 0.0 )
+			goto lgsing;
+		/*      z = log(PI) - log( z ) - w;*/
+		z = log(PI) - log( z ) - w;
+		return z;
+	}
+
+	if ( x < 13.0 ) {
+		z = 1.0;
+		p = 0.0;
+		u = x;
+		while ( u >= 3.0 ) {
+			p -= 1.0;
+			u = x + p;
+			z *= u;
+		}
+		while ( u < 2.0 ) {
+			if ( u == 0.0 )
+				goto lgsing;
+			z /= u;
+			p += 1.0;
+			u = x + p;
+		}
+		if ( z < 0.0 ) {
+			sgngam = -1;
+			z = -z;
+		}
+		else
+			sgngam = 1;
+		if ( u == 2.0 )
+			return( log(z) );
+		p -= 2.0;
+		x = x + p;
+		p = x * cephes_polevl( x, (double *)B, 5 ) / cephes_p1evl( x, (double *)C, 6);
+
+		return log(z) + p;
+	}
+
+	if ( x > MAXLGM ) {
+loverf:
+		printf("lgam: OVERFLOW\n");
+
+		return sgngam * MAXNUM;
+	}
+
+	q = ( x - 0.5 ) * log(x) - x + log( sqrt( 2*PI ) );
+	if ( x > 1.0e8 )
+		return q;
+
+	p = 1.0/(x*x);
+	if ( x >= 1000.0 )
+		q += ((   7.9365079365079365079365e-4 * p
+		        - 2.7777777777777777777778e-3) *p
+				+ 0.0833333333333333333333) / x;
+	else
+		q += cephes_polevl( p, (double *)A, 4 ) / x;
+
+	return q;
+}
+
+double
+cephes_polevl(double x, double *coef, int N)
+{
+	double	ans;
+	int		i;
+	double	*p;
+
+	p = coef;
+	ans = *p++;
+	i = N;
+
+	do
+		ans = ans * x  +  *p++;
+	while ( --i );
+
+	return ans;
+}
+
+double
+cephes_p1evl(double x, double *coef, int N)
+{
+	double	ans;
+	double	*p;
+	int		i;
+
+	p = coef;
+	ans = x + *p++;
+	i = N-1;
+
+	do
+		ans = ans * x  + *p++;
+	while ( --i );
+
+	return ans;
+}
+
+double
+cephes_erf(double x)
+{
+	static const double two_sqrtpi = 1.128379167095512574;
+	double	sum = x, term = x, xsqr = x * x;
+	int		j = 1;
+
+	if ( fabs(x) > 2.2 )
+		return 1.0 - cephes_erfc(x);
+
+	do {
+		term *= xsqr/j;
+		sum -= term/(2*j+1);
+		j++;
+		term *= xsqr/j;
+		sum += term/(2*j+1);
+		j++;
+	} while ( fabs(term)/sum > rel_error );
+
+	return two_sqrtpi*sum;
+}
+
+double
+cephes_erfc(double x)
+{
+	static const double one_sqrtpi = 0.564189583547756287;
+	double	a = 1, b = x, c = x, d = x*x + 0.5;
+	double	q1, q2 = b/d, n = 1.0, t;
+
+	if ( fabs(x) < 2.2 )
+		return 1.0 - cephes_erf(x);
+	if ( x < 0 )
+		return 2.0 - cephes_erfc(-x);
+
+	do {
+		t = a*n + b*x;
+		a = b;
+		b = t;
+		t = c*n + d*x;
+		c = d;
+		d = t;
+		n += 0.5;
+		q1 = q2;
+		q2 = b/d;
+	} while ( fabs(q1-q2)/q2 > rel_error );
+
+	return one_sqrtpi*exp(-x*x)*q2;
+}
+
+
+double
+cephes_normal(double x)
+{
+	double arg, result, sqrt2=1.414213562373095048801688724209698078569672;
+
+	if (x > 0) {
+		arg = x/sqrt2;
+		result = 0.5 * ( 1 + erf(arg) );
+	}
+	else {
+		arg = -x/sqrt2;
+		result = 0.5 * ( 1 - erf(arg) );
+	}
+
+	return( result);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/cusum.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,109 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+		    C U M U L A T I V E  S U M S  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+CumulativeSums(int n)
+{
+	int	   S, sup, inf;
+	int    z = 0;
+	int    zrev = 0;
+	int    k;
+	double	sum1, sum2, p_value;
+
+	S = 0;
+	sup = 0;
+	inf = 0;
+	for ( k=0; k<n; k++ ) {
+		epsilon[k] ? S++ : S--;
+		if ( S > sup )
+			sup++;
+		if ( S < inf )
+			inf--;
+		z = (sup > -inf) ? sup : -inf;
+		zrev = (sup-S > S-inf) ? sup-S : S-inf;
+	}
+	
+	// forward
+	sum1 = 0.0;
+	for ( k=(-n/z+1)/4; k<=(n/z-1)/4; k++ ) {
+		sum1 += cephes_normal(((4*k+1)*z)/sqrt(n));
+		sum1 -= cephes_normal(((4*k-1)*z)/sqrt(n));
+	}
+	sum2 = 0.0;
+	for ( k=(-n/z-3)/4; k<=(n/z-1)/4; k++ ) {
+		sum2 += cephes_normal(((4*k+3)*z)/sqrt(n));
+		sum2 -= cephes_normal(((4*k+1)*z)/sqrt(n));
+	}
+
+	p_value = 1.0 - sum1 + sum2;
+	
+	fprintf(stats[TEST_CUSUM], "\t\t      CUMULATIVE SUMS (FORWARD) TEST\n");
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_CUSUM], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_CUSUM], "\t\t(a) The maximum partial sum = %d\n", z);
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+
+	if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+		fprintf(stats[TEST_CUSUM], "\t\tWARNING:  P_VALUE IS OUT OF RANGE\n");
+
+	fprintf(stats[TEST_CUSUM], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_CUSUM], "%f\n", p_value);
+		
+	// backwards
+	sum1 = 0.0;
+	for ( k=(-n/zrev+1)/4; k<=(n/zrev-1)/4; k++ ) {
+		sum1 += cephes_normal(((4*k+1)*zrev)/sqrt(n));
+		sum1 -= cephes_normal(((4*k-1)*zrev)/sqrt(n));
+	}
+	sum2 = 0.0;
+	for ( k=(-n/zrev-3)/4; k<=(n/zrev-1)/4; k++ ) {
+		sum2 += cephes_normal(((4*k+3)*zrev)/sqrt(n));
+		sum2 -= cephes_normal(((4*k+1)*zrev)/sqrt(n));
+	}
+	p_value = 1.0 - sum1 + sum2;
+
+	fprintf(stats[TEST_CUSUM], "\t\t      CUMULATIVE SUMS (REVERSE) TEST\n");
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_CUSUM], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_CUSUM], "\t\t(a) The maximum partial sum = %d\n", zrev);
+	fprintf(stats[TEST_CUSUM], "\t\t-------------------------------------------\n");
+
+	if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+		fprintf(stats[TEST_CUSUM], "\t\tWARNING:  P_VALUE IS OUT OF RANGE\n");
+
+	fprintf(stats[TEST_CUSUM], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_CUSUM], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/dfft.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,1399 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original of this file was released into the public domain, see below for details
+*/
+
+
+/* Notes from RFB: 
+
+   Looks like the user-level routines are:
+
+   Real FFT
+
+   void __ogg_fdrffti(int n, double *wsave, int *ifac)
+   void __ogg_fdrfftf(int n,double *r,double *wsave,int *ifac)
+   void __ogg_fdrfftb(int n, double *r, double *wsave, int *ifac)
+
+     __ogg_fdrffti == initialization
+     __ogg_fdrfftf == forward transform
+     __ogg_fdrfftb == backward transform
+
+     Parameters are
+     n == length of sequence
+     r == sequence to be transformed (input)
+       == transformed sequence (output)
+     wsave == work array of length 2n (allocated by caller)
+     ifac == work array of length 15 (allocated by caller)
+
+   Cosine quarter-wave FFT
+
+   void __ogg_fdcosqi(int n, double *wsave, int *ifac)
+   void __ogg_fdcosqf(int n,double *x,double *wsave,int *ifac)
+   void __ogg_fdcosqb(int n,double *x,double *wsave,int *ifac)
+*/
+
+/********************************************************************
+ *                                                                  *
+ * THIS FILE IS PART OF THE OggSQUISH SOFTWARE CODEC SOURCE CODE.   *
+ *                                                                  *
+ ********************************************************************
+
+  file: fft.c
+  function: Fast discrete Fourier and cosine transforms and inverses
+  author: Monty <xiphmont@mit.edu>
+  modifications by: Monty
+  last modification date: Jul 1 1996
+
+ ********************************************************************/
+
+/* These Fourier routines were originally based on the Fourier
+   routines of the same names from the NETLIB bihar and fftpack
+   fortran libraries developed by Paul N. Swarztrauber at the National
+   Center for Atmospheric Research in Boulder, CO USA.  They have been
+   reimplemented in C and optimized in a few ways for OggSquish. */
+
+/* As the original fortran libraries are public domain, the C Fourier
+   routines in this file are hereby released to the public domain as
+   well.  The C routines here produce output exactly equivalent to the
+   original fortran routines.  Of particular interest are the facts
+   that (like the original fortran), these routines can work on
+   arbitrary length vectors that need not be powers of two in
+   length. */
+
+#include "openc.h"
+#define STIN static
+
+static void drfti1(int n, double *wa, int *ifac){
+  static int ntryh[4] = { 4,2,3,5 };
+  static double tpi = 6.28318530717958647692528676655900577;
+  double arg,argh,argld,fi;
+  int ntry=0,i,j=-1;
+  int k1, l1, l2, ib;
+  int ld, ii, ip, is, nq, nr;
+  int ido, ipm, nfm1;
+  int nl=n;
+  int nf=0;
+
+ L101:
+  j++;
+  if (j < 4)
+    ntry=ntryh[j];
+  else
+    ntry+=2;
+
+ L104:
+  nq=nl/ntry;
+  nr=nl-ntry*nq;
+  if (nr!=0) goto L101;
+
+  nf++;
+  ifac[nf+1]=ntry;
+  nl=nq;
+  if(ntry!=2)goto L107;
+  if(nf==1)goto L107;
+
+  for (i=1;i<nf;i++){
+    ib=nf-i+1;
+    ifac[ib+1]=ifac[ib];
+  }
+  ifac[2] = 2;
+
+ L107:
+  if(nl!=1)goto L104;
+  ifac[0]=n;
+  ifac[1]=nf;
+  argh=tpi/n;
+  is=0;
+  nfm1=nf-1;
+  l1=1;
+
+  if(nfm1==0)return;
+
+  for (k1=0;k1<nfm1;k1++){
+    ip=ifac[k1+2];
+    ld=0;
+    l2=l1*ip;
+    ido=n/l2;
+    ipm=ip-1;
+
+    for (j=0;j<ipm;j++){
+      ld+=l1;
+      i=is;
+      argld=(double)ld*argh;
+      fi=0.;
+      for (ii=2;ii<ido;ii+=2){
+	fi+=1.;
+	arg=fi*argld;
+	wa[i++]=cos(arg);
+	wa[i++]=sin(arg);
+      }
+      is+=ido;
+    }
+    l1=l2;
+  }
+}
+
+void __ogg_fdrffti(int n, double *wsave, int *ifac){
+
+  if (n == 1) return;
+  drfti1(n, wsave+n, ifac);
+}
+
+void __ogg_fdcosqi(int n, double *wsave, int *ifac){
+  static double pih = 1.57079632679489661923132169163975;
+  static int k;
+  static double fk, dt;
+
+  dt=pih/n;
+  fk=0.;
+  for(k=0;k<n;k++){
+    fk+=1.;
+    wsave[k] = cos(fk*dt);
+  }
+
+  __ogg_fdrffti(n, wsave+n,ifac);
+}
+
+STIN void dradf2(int ido,int l1,double *cc,double *ch,double *wa1){
+  int i,k;
+  double ti2,tr2;
+  int t0,t1,t2,t3,t4,t5,t6;
+  
+  t1=0;
+  t0=(t2=l1*ido);
+  t3=ido<<1;
+  for(k=0;k<l1;k++){
+    ch[t1<<1]=cc[t1]+cc[t2];
+    ch[(t1<<1)+t3-1]=cc[t1]-cc[t2];
+    t1+=ido;
+    t2+=ido;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  t2=t0;
+  for(k=0;k<l1;k++){
+    t3=t2;
+    t4=(t1<<1)+(ido<<1);
+    t5=t1;
+    t6=t1+t1;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4-=2;
+      t5+=2;
+      t6+=2;
+      tr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
+      ti2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
+      ch[t6]=cc[t5]+ti2;
+      ch[t4]=ti2-cc[t5];
+      ch[t6-1]=cc[t5-1]+tr2;
+      ch[t4-1]=cc[t5-1]-tr2;
+    }
+    t1+=ido;
+    t2+=ido;
+  }
+
+  if(ido%2==1)return;
+
+ L105:
+  t3=(t2=(t1=ido)-1);
+  t2+=t0;
+  for(k=0;k<l1;k++){
+    ch[t1]=-cc[t2];
+    ch[t1-1]=cc[t3];
+    t1+=ido<<1;
+    t2+=ido;
+    t3+=ido;
+  }
+}
+
+STIN void dradf4(int ido,int l1,double *cc,double *ch,double *wa1,
+	    double *wa2,double *wa3){
+  static double hsqt2 = .70710678118654752440084436210485;
+  int i,k,t0,t1,t2,t3,t4,t5,t6;
+  double ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+  t0=l1*ido;
+  
+  t1=t0;
+  t4=t1<<1;
+  t2=t1+(t1<<1);
+  t3=0;
+
+  for(k=0;k<l1;k++){
+    tr1=cc[t1]+cc[t2];
+    tr2=cc[t3]+cc[t4];
+    ch[t5=t3<<2]=tr1+tr2;
+    ch[(ido<<2)+t5-1]=tr2-tr1;
+    ch[(t5+=(ido<<1))-1]=cc[t3]-cc[t4];
+    ch[t5]=cc[t2]-cc[t1];
+
+    t1+=ido;
+    t2+=ido;
+    t3+=ido;
+    t4+=ido;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  for(k=0;k<l1;k++){
+    t2=t1;
+    t4=t1<<2;
+    t5=(t6=ido<<1)+t4;
+    for(i=2;i<ido;i+=2){
+      t3=(t2+=2);
+      t4+=2;
+      t5-=2;
+
+      t3+=t0;
+      cr2=wa1[i-2]*cc[t3-1]+wa1[i-1]*cc[t3];
+      ci2=wa1[i-2]*cc[t3]-wa1[i-1]*cc[t3-1];
+      t3+=t0;
+      cr3=wa2[i-2]*cc[t3-1]+wa2[i-1]*cc[t3];
+      ci3=wa2[i-2]*cc[t3]-wa2[i-1]*cc[t3-1];
+      t3+=t0;
+      cr4=wa3[i-2]*cc[t3-1]+wa3[i-1]*cc[t3];
+      ci4=wa3[i-2]*cc[t3]-wa3[i-1]*cc[t3-1];
+
+      tr1=cr2+cr4;
+      tr4=cr4-cr2;
+      ti1=ci2+ci4;
+      ti4=ci2-ci4;
+      ti2=cc[t2]+ci3;
+      ti3=cc[t2]-ci3;
+      tr2=cc[t2-1]+cr3;
+      tr3=cc[t2-1]-cr3;
+
+      
+      ch[t4-1]=tr1+tr2;
+      ch[t4]=ti1+ti2;
+
+      ch[t5-1]=tr3-ti4;
+      ch[t5]=tr4-ti3;
+
+      ch[t4+t6-1]=ti4+tr3;
+      ch[t4+t6]=tr4+ti3;
+
+      ch[t5+t6-1]=tr2-tr1;
+      ch[t5+t6]=ti1-ti2;
+    }
+    t1+=ido;
+  }
+  if(ido%2==1)return;
+
+ L105:
+  
+  t2=(t1=t0+ido-1)+(t0<<1);
+  t3=ido<<2;
+  t4=ido;
+  t5=ido<<1;
+  t6=ido;
+
+  for(k=0;k<l1;k++){
+    ti1=-hsqt2*(cc[t1]+cc[t2]);
+    tr1=hsqt2*(cc[t1]-cc[t2]);
+    ch[t4-1]=tr1+cc[t6-1];
+    ch[t4+t5-1]=cc[t6-1]-tr1;
+    ch[t4]=ti1-cc[t1+t0];
+    ch[t4+t5]=ti1+cc[t1+t0];
+    t1+=ido;
+    t2+=ido;
+    t4+=t3;
+    t6+=ido;
+  }
+}
+
+STIN void dradfg(int ido,int ip,int l1,int idl1,double *cc,double *c1,
+			  double *c2,double *ch,double *ch2,double *wa){
+
+  static double tpi=6.28318530717958647692528676655900577;
+  int idij,ipph,i,j,k,l,ic,ik,is;
+  int t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+  double dc2,ai1,ai2,ar1,ar2,ds2;
+  int nbd;
+  double dcp,arg,dsp,ar1h,ar2h;
+  int idp2,ipp2;
+  
+  arg=tpi/(double)ip;
+  dcp=cos(arg);
+  dsp=sin(arg);
+  ipph=(ip+1)>>1;
+  ipp2=ip;
+  idp2=ido;
+  nbd=(ido-1)>>1;
+  t0=l1*ido;
+  t10=ip*ido;
+
+  if(ido==1)goto L119;
+  for(ik=0;ik<idl1;ik++)ch2[ik]=c2[ik];
+
+  t1=0;
+  for(j=1;j<ip;j++){
+    t1+=t0;
+    t2=t1;
+    for(k=0;k<l1;k++){
+      ch[t2]=c1[t2];
+      t2+=ido;
+    }
+  }
+
+  is=-ido;
+  t1=0;
+  if(nbd>l1){
+    for(j=1;j<ip;j++){
+      t1+=t0;
+      is+=ido;
+      t2= -ido+t1;
+      for(k=0;k<l1;k++){
+	idij=is-1;
+	t2+=ido;
+	t3=t2;
+	for(i=2;i<ido;i+=2){
+	  idij+=2;
+	  t3+=2;
+	  ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
+	  ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
+	}
+      }
+    }
+  }else{
+
+    for(j=1;j<ip;j++){
+      is+=ido;
+      idij=is-1;
+      t1+=t0;
+      t2=t1;
+      for(i=2;i<ido;i+=2){
+	idij+=2;
+	t2+=2;
+	t3=t2;
+	for(k=0;k<l1;k++){
+	  ch[t3-1]=wa[idij-1]*c1[t3-1]+wa[idij]*c1[t3];
+	  ch[t3]=wa[idij-1]*c1[t3]-wa[idij]*c1[t3-1];
+	  t3+=ido;
+	}
+      }
+    }
+  }
+
+  t1=0;
+  t2=ipp2*t0;
+  if(nbd<l1){
+    for(j=1;j<ipph;j++){
+      t1+=t0;
+      t2-=t0;
+      t3=t1;
+      t4=t2;
+      for(i=2;i<ido;i+=2){
+	t3+=2;
+	t4+=2;
+	t5=t3-ido;
+	t6=t4-ido;
+	for(k=0;k<l1;k++){
+	  t5+=ido;
+	  t6+=ido;
+	  c1[t5-1]=ch[t5-1]+ch[t6-1];
+	  c1[t6-1]=ch[t5]-ch[t6];
+	  c1[t5]=ch[t5]+ch[t6];
+	  c1[t6]=ch[t6-1]-ch[t5-1];
+	}
+      }
+    }
+  }else{
+    for(j=1;j<ipph;j++){
+      t1+=t0;
+      t2-=t0;
+      t3=t1;
+      t4=t2;
+      for(k=0;k<l1;k++){
+	t5=t3;
+	t6=t4;
+	for(i=2;i<ido;i+=2){
+	  t5+=2;
+	  t6+=2;
+	  c1[t5-1]=ch[t5-1]+ch[t6-1];
+	  c1[t6-1]=ch[t5]-ch[t6];
+	  c1[t5]=ch[t5]+ch[t6];
+	  c1[t6]=ch[t6-1]-ch[t5-1];
+	}
+	t3+=ido;
+	t4+=ido;
+      }
+    }
+  }
+
+L119:
+  for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
+
+  t1=0;
+  t2=ipp2*idl1;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1-ido;
+    t4=t2-ido;
+    for(k=0;k<l1;k++){
+      t3+=ido;
+      t4+=ido;
+      c1[t3]=ch[t3]+ch[t4];
+      c1[t4]=ch[t4]-ch[t3];
+    }
+  }
+
+  ar1=1.;
+  ai1=0.;
+  t1=0;
+  t2=ipp2*idl1;
+  t3=(ip-1)*idl1;
+  for(l=1;l<ipph;l++){
+    t1+=idl1;
+    t2-=idl1;
+    ar1h=dcp*ar1-dsp*ai1;
+    ai1=dcp*ai1+dsp*ar1;
+    ar1=ar1h;
+    t4=t1;
+    t5=t2;
+    t6=t3;
+    t7=idl1;
+
+    for(ik=0;ik<idl1;ik++){
+      ch2[t4++]=c2[ik]+ar1*c2[t7++];
+      ch2[t5++]=ai1*c2[t6++];
+    }
+
+    dc2=ar1;
+    ds2=ai1;
+    ar2=ar1;
+    ai2=ai1;
+
+    t4=idl1;
+    t5=(ipp2-1)*idl1;
+    for(j=2;j<ipph;j++){
+      t4+=idl1;
+      t5-=idl1;
+
+      ar2h=dc2*ar2-ds2*ai2;
+      ai2=dc2*ai2+ds2*ar2;
+      ar2=ar2h;
+
+      t6=t1;
+      t7=t2;
+      t8=t4;
+      t9=t5;
+      for(ik=0;ik<idl1;ik++){
+	ch2[t6++]+=ar2*c2[t8++];
+	ch2[t7++]+=ai2*c2[t9++];
+      }
+    }
+  }
+
+  t1=0;
+  for(j=1;j<ipph;j++){
+    t1+=idl1;
+    t2=t1;
+    for(ik=0;ik<idl1;ik++)ch2[ik]+=c2[t2++];
+  }
+
+  if(ido<l1)goto L132;
+
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t4=t2;
+    for(i=0;i<ido;i++)cc[t4++]=ch[t3++];
+    t1+=ido;
+    t2+=t10;
+  }
+
+  goto L135;
+
+ L132:
+  for(i=0;i<ido;i++){
+    t1=i;
+    t2=i;
+    for(k=0;k<l1;k++){
+      cc[t2]=ch[t1];
+      t1+=ido;
+      t2+=t10;
+    }
+  }
+
+ L135:
+  t1=0;
+  t2=ido<<1;
+  t3=0;
+  t4=ipp2*t0;
+  for(j=1;j<ipph;j++){
+
+    t1+=t2;
+    t3+=t0;
+    t4-=t0;
+
+    t5=t1;
+    t6=t3;
+    t7=t4;
+
+    for(k=0;k<l1;k++){
+      cc[t5-1]=ch[t6];
+      cc[t5]=ch[t7];
+      t5+=t10;
+      t6+=ido;
+      t7+=ido;
+    }
+  }
+
+  if(ido==1)return;
+  if(nbd<l1)goto L141;
+
+  t1=-ido;
+  t3=0;
+  t4=0;
+  t5=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t2;
+    t3+=t2;
+    t4+=t0;
+    t5-=t0;
+    t6=t1;
+    t7=t3;
+    t8=t4;
+    t9=t5;
+    for(k=0;k<l1;k++){
+      for(i=2;i<ido;i+=2){
+	ic=idp2-i;
+	cc[i+t7-1]=ch[i+t8-1]+ch[i+t9-1];
+	cc[ic+t6-1]=ch[i+t8-1]-ch[i+t9-1];
+	cc[i+t7]=ch[i+t8]+ch[i+t9];
+	cc[ic+t6]=ch[i+t9]-ch[i+t8];
+      }
+      t6+=t10;
+      t7+=t10;
+      t8+=ido;
+      t9+=ido;
+    }
+  }
+  return;
+
+ L141:
+
+  t1=-ido;
+  t3=0;
+  t4=0;
+  t5=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t2;
+    t3+=t2;
+    t4+=t0;
+    t5-=t0;
+    for(i=2;i<ido;i+=2){
+      t6=idp2+t1-i;
+      t7=i+t3;
+      t8=i+t4;
+      t9=i+t5;
+      for(k=0;k<l1;k++){
+	cc[t7-1]=ch[t8-1]+ch[t9-1];
+	cc[t6-1]=ch[t8-1]-ch[t9-1];
+	cc[t7]=ch[t8]+ch[t9];
+	cc[t6]=ch[t9]-ch[t8];
+	t6+=t10;
+	t7+=t10;
+	t8+=ido;
+	t9+=ido;
+      }
+    }
+  }
+}
+
+STIN void drftf1(int n,double *c,double *ch,double *wa,int *ifac){
+  int i,k1,l1,l2;
+  int na,kh,nf;
+  int ip,iw,ido,idl1,ix2,ix3;
+
+  nf=ifac[1];
+  na=1;
+  l2=n;
+  iw=n;
+
+  for(k1=0;k1<nf;k1++){
+    kh=nf-k1;
+    ip=ifac[kh+1];
+    l1=l2/ip;
+    ido=n/l2;
+    idl1=ido*l1;
+    iw-=(ip-1)*ido;
+    na=1-na;
+
+    if(ip!=4)goto L102;
+
+    ix2=iw+ido;
+    ix3=ix2+ido;
+    if(na!=0)
+      dradf4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    else
+      dradf4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    goto L110;
+
+ L102:
+    if(ip!=2)goto L104;
+    if(na!=0)goto L103;
+
+    dradf2(ido,l1,c,ch,wa+iw-1);
+    goto L110;
+
+  L103:
+    dradf2(ido,l1,ch,c,wa+iw-1);
+    goto L110;
+
+  L104:
+    if(ido==1)na=1-na;
+    if(na!=0)goto L109;
+
+    dradfg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
+    na=1;
+    goto L110;
+
+  L109:
+    dradfg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
+    na=0;
+
+  L110:
+    l2=l1;
+  }
+
+  if(na==1)return;
+
+  for(i=0;i<n;i++)c[i]=ch[i];
+}
+
+void __ogg_fdrfftf(int n,double *r,double *wsave,int *ifac){
+  if(n==1)return;
+  drftf1(n,r,wsave,wsave+n,ifac);
+}
+
+STIN void dcsqf1(int n,double *x,double *w,double *xh,int *ifac){
+  int modn,i,k,kc;
+  int np2,ns2;
+  double xim1;
+
+  ns2=(n+1)>>1;
+  np2=n;
+
+  kc=np2;
+  for(k=1;k<ns2;k++){
+    kc--;
+    xh[k]=x[k]+x[kc];
+    xh[kc]=x[k]-x[kc];
+  }
+
+  modn=n%2;
+  if(modn==0)xh[ns2]=x[ns2]+x[ns2];
+
+  for(k=1;k<ns2;k++){
+    kc=np2-k;
+    x[k]=w[k-1]*xh[kc]+w[kc-1]*xh[k];
+    x[kc]=w[k-1]*xh[k]-w[kc-1]*xh[kc];
+  }
+
+  if(modn==0)x[ns2]=w[ns2-1]*xh[ns2];
+
+  __ogg_fdrfftf(n,x,xh,ifac);
+
+  for(i=2;i<n;i+=2){
+    xim1=x[i-1]-x[i];
+    x[i]=x[i-1]+x[i];
+    x[i-1]=xim1;
+  }
+}
+
+void __ogg_fdcosqf(int n,double *x,double *wsave,int *ifac){
+    static double sqrt2=1.4142135623730950488016887242097;
+    double tsqx;
+
+  switch(n){
+  case 0:case 1:
+    return;
+  case 2:
+    tsqx=sqrt2*x[1];
+    x[1]=x[0]-tsqx;
+    x[0]+=tsqx;
+    return;
+  default:
+    dcsqf1(n,x,wsave,wsave+n,ifac);
+    return;
+  }
+}
+
+STIN void dradb2(int ido,int l1,double *cc,double *ch,double *wa1){
+  int i,k,t0,t1,t2,t3,t4,t5,t6;
+  double ti2,tr2;
+
+  t0=l1*ido;
+  
+  t1=0;
+  t2=0;
+  t3=(ido<<1)-1;
+  for(k=0;k<l1;k++){
+    ch[t1]=cc[t2]+cc[t3+t2];
+    ch[t1+t0]=cc[t2]-cc[t3+t2];
+    t2=(t1+=ido)<<1;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t5=(t4=t2)+(ido<<1);
+    t6=t0+t1;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t5-=2;
+      t6+=2;
+      ch[t3-1]=cc[t4-1]+cc[t5-1];
+      tr2=cc[t4-1]-cc[t5-1];
+      ch[t3]=cc[t4]-cc[t5];
+      ti2=cc[t4]+cc[t5];
+      ch[t6-1]=wa1[i-2]*tr2-wa1[i-1]*ti2;
+      ch[t6]=wa1[i-2]*ti2+wa1[i-1]*tr2;
+    }
+    t2=(t1+=ido)<<1;
+  }
+
+  if(ido%2==1)return;
+
+L105:
+  t1=ido-1;
+  t2=ido-1;
+  for(k=0;k<l1;k++){
+    ch[t1]=cc[t2]+cc[t2];
+    ch[t1+t0]=-(cc[t2+1]+cc[t2+1]);
+    t1+=ido;
+    t2+=ido<<1;
+  }
+}
+
+STIN void dradb3(int ido,int l1,double *cc,double *ch,double *wa1,
+			  double *wa2){
+  static double taur = -.5;
+  static double taui = .86602540378443864676372317075293618;
+  int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
+  double ci2,ci3,di2,di3,cr2,cr3,dr2,dr3,ti2,tr2;
+  t0=l1*ido;
+
+  t1=0;
+  t2=t0<<1;
+  t3=ido<<1;
+  t4=ido+(ido<<1);
+  t5=0;
+  for(k=0;k<l1;k++){
+    tr2=cc[t3-1]+cc[t3-1];
+    cr2=cc[t5]+(taur*tr2);
+    ch[t1]=cc[t5]+tr2;
+    ci3=taui*(cc[t3]+cc[t3]);
+    ch[t1+t0]=cr2-ci3;
+    ch[t1+t2]=cr2+ci3;
+    t1+=ido;
+    t3+=t4;
+    t5+=t4;
+  }
+
+  if(ido==1)return;
+
+  t1=0;
+  t3=ido<<1;
+  for(k=0;k<l1;k++){
+    t7=t1+(t1<<1);
+    t6=(t5=t7+t3);
+    t8=t1;
+    t10=(t9=t1+t0)+t0;
+
+    for(i=2;i<ido;i+=2){
+      t5+=2;
+      t6-=2;
+      t7+=2;
+      t8+=2;
+      t9+=2;
+      t10+=2;
+      tr2=cc[t5-1]+cc[t6-1];
+      cr2=cc[t7-1]+(taur*tr2);
+      ch[t8-1]=cc[t7-1]+tr2;
+      ti2=cc[t5]-cc[t6];
+      ci2=cc[t7]+(taur*ti2);
+      ch[t8]=cc[t7]+ti2;
+      cr3=taui*(cc[t5-1]-cc[t6-1]);
+      ci3=taui*(cc[t5]+cc[t6]);
+      dr2=cr2-ci3;
+      dr3=cr2+ci3;
+      di2=ci2+cr3;
+      di3=ci2-cr3;
+      ch[t9-1]=wa1[i-2]*dr2-wa1[i-1]*di2;
+      ch[t9]=wa1[i-2]*di2+wa1[i-1]*dr2;
+      ch[t10-1]=wa2[i-2]*dr3-wa2[i-1]*di3;
+      ch[t10]=wa2[i-2]*di3+wa2[i-1]*dr3;
+    }
+    t1+=ido;
+  }
+}
+
+STIN void dradb4(int ido,int l1,double *cc,double *ch,double *wa1,
+			  double *wa2,double *wa3){
+  static double sqrt2=1.4142135623730950488016887242097;
+  int i,k,t0,t1,t2,t3,t4,t5,t6,t7,t8;
+  double ci2,ci3,ci4,cr2,cr3,cr4,ti1,ti2,ti3,ti4,tr1,tr2,tr3,tr4;
+  t0=l1*ido;
+  
+  t1=0;
+  t2=ido<<2;
+  t3=0;
+  t6=ido<<1;
+  for(k=0;k<l1;k++){
+    t4=t3+t6;
+    t5=t1;
+    tr3=cc[t4-1]+cc[t4-1];
+    tr4=cc[t4]+cc[t4]; 
+    tr1=cc[t3]-cc[(t4+=t6)-1];
+    tr2=cc[t3]+cc[t4-1];
+    ch[t5]=tr2+tr3;
+    ch[t5+=t0]=tr1-tr4;
+    ch[t5+=t0]=tr2-tr3;
+    ch[t5+=t0]=tr1+tr4;
+    t1+=ido;
+    t3+=t2;
+  }
+
+  if(ido<2)return;
+  if(ido==2)goto L105;
+
+  t1=0;
+  for(k=0;k<l1;k++){
+    t5=(t4=(t3=(t2=t1<<2)+t6))+t6;
+    t7=t1;
+    for(i=2;i<ido;i+=2){
+      t2+=2;
+      t3+=2;
+      t4-=2;
+      t5-=2;
+      t7+=2;
+      ti1=cc[t2]+cc[t5];
+      ti2=cc[t2]-cc[t5];
+      ti3=cc[t3]-cc[t4];
+      tr4=cc[t3]+cc[t4];
+      tr1=cc[t2-1]-cc[t5-1];
+      tr2=cc[t2-1]+cc[t5-1];
+      ti4=cc[t3-1]-cc[t4-1];
+      tr3=cc[t3-1]+cc[t4-1];
+      ch[t7-1]=tr2+tr3;
+      cr3=tr2-tr3;
+      ch[t7]=ti2+ti3;
+      ci3=ti2-ti3;
+      cr2=tr1-tr4;
+      cr4=tr1+tr4;
+      ci2=ti1+ti4;
+      ci4=ti1-ti4;
+
+      ch[(t8=t7+t0)-1]=wa1[i-2]*cr2-wa1[i-1]*ci2;
+      ch[t8]=wa1[i-2]*ci2+wa1[i-1]*cr2;
+      ch[(t8+=t0)-1]=wa2[i-2]*cr3-wa2[i-1]*ci3;
+      ch[t8]=wa2[i-2]*ci3+wa2[i-1]*cr3;
+      ch[(t8+=t0)-1]=wa3[i-2]*cr4-wa3[i-1]*ci4;
+      ch[t8]=wa3[i-2]*ci4+wa3[i-1]*cr4;
+    }
+    t1+=ido;
+  }
+
+  if(ido%2 == 1)return;
+
+ L105:
+
+  t1=ido;
+  t2=ido<<2;
+  t3=ido-1;
+  t4=ido+(ido<<1);
+  for(k=0;k<l1;k++){
+    t5=t3;
+    ti1=cc[t1]+cc[t4];
+    ti2=cc[t4]-cc[t1];
+    tr1=cc[t1-1]-cc[t4-1];
+    tr2=cc[t1-1]+cc[t4-1];
+    ch[t5]=tr2+tr2;
+    ch[t5+=t0]=sqrt2*(tr1-ti1);
+    ch[t5+=t0]=ti2+ti2;
+    ch[t5+=t0]=-sqrt2*(tr1+ti1);
+
+    t3+=ido;
+    t1+=t2;
+    t4+=t2;
+  }
+}
+
+STIN void dradbg(int ido,int ip,int l1,int idl1,double *cc,double *c1,
+	    double *c2,double *ch,double *ch2,double *wa){
+  static double tpi=6.28318530717958647692528676655900577;
+  int idij,ipph,i,j,k,l,ik,is,t0,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
+      t11,t12;
+  double dc2,ai1,ai2,ar1,ar2,ds2;
+  int nbd;
+  double dcp,arg,dsp,ar1h,ar2h;
+  int ipp2;
+
+  t10=ip*ido;
+  t0=l1*ido;
+  arg=tpi/(double)ip;
+  dcp=cos(arg);
+  dsp=sin(arg);
+  nbd=(ido-1)>>1;
+  ipp2=ip;
+  ipph=(ip+1)>>1;
+  if(ido<l1)goto L103;
+  
+  t1=0;
+  t2=0;
+  for(k=0;k<l1;k++){
+    t3=t1;
+    t4=t2;
+    for(i=0;i<ido;i++){
+      ch[t3]=cc[t4];
+      t3++;
+      t4++;
+    }
+    t1+=ido;
+    t2+=t10;
+  }
+  goto L106;
+
+ L103:
+  t1=0;
+  for(i=0;i<ido;i++){
+    t2=t1;
+    t3=t1;
+    for(k=0;k<l1;k++){
+      ch[t2]=cc[t3];
+      t2+=ido;
+      t3+=t10;
+    }
+    t1++;
+  }
+
+ L106:
+  t1=0;
+  t2=ipp2*t0;
+  t7=(t5=ido<<1);
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    t6=t5;
+    for(k=0;k<l1;k++){
+      ch[t3]=cc[t6-1]+cc[t6-1];
+      ch[t4]=cc[t6]+cc[t6];
+      t3+=ido;
+      t4+=ido;
+      t6+=t10;
+    }
+    t5+=t7;
+  }
+
+  if (ido == 1)goto L116;
+  if(nbd<l1)goto L112;
+
+  t1=0;
+  t2=ipp2*t0;
+  t7=0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+
+    t7+=(ido<<1);
+    t8=t7;
+    for(k=0;k<l1;k++){
+      t5=t3;
+      t6=t4;
+      t9=t8;
+      t11=t8;
+      for(i=2;i<ido;i+=2){
+	t5+=2;
+	t6+=2;
+	t9+=2;
+	t11-=2;
+	ch[t5-1]=cc[t9-1]+cc[t11-1];
+	ch[t6-1]=cc[t9-1]-cc[t11-1];
+	ch[t5]=cc[t9]-cc[t11];
+	ch[t6]=cc[t9]+cc[t11];
+      }
+      t3+=ido;
+      t4+=ido;
+      t8+=t10;
+    }
+  }
+  goto L116;
+
+ L112:
+  t1=0;
+  t2=ipp2*t0;
+  t7=0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    t7+=(ido<<1);
+    t8=t7;
+    t9=t7;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t8+=2;
+      t9-=2;
+      t5=t3;
+      t6=t4;
+      t11=t8;
+      t12=t9;
+      for(k=0;k<l1;k++){
+	ch[t5-1]=cc[t11-1]+cc[t12-1];
+	ch[t6-1]=cc[t11-1]-cc[t12-1];
+	ch[t5]=cc[t11]-cc[t12];
+	ch[t6]=cc[t11]+cc[t12];
+	t5+=ido;
+	t6+=ido;
+	t11+=t10;
+	t12+=t10;
+      }
+    }
+  }
+
+L116:
+  ar1=1.;
+  ai1=0.;
+  t1=0;
+  t9=(t2=ipp2*idl1);
+  t3=(ip-1)*idl1;
+  for(l=1;l<ipph;l++){
+    t1+=idl1;
+    t2-=idl1;
+
+    ar1h=dcp*ar1-dsp*ai1;
+    ai1=dcp*ai1+dsp*ar1;
+    ar1=ar1h;
+    t4=t1;
+    t5=t2;
+    t6=0;
+    t7=idl1;
+    t8=t3;
+    for(ik=0;ik<idl1;ik++){
+      c2[t4++]=ch2[t6++]+ar1*ch2[t7++];
+      c2[t5++]=ai1*ch2[t8++];
+    }
+    dc2=ar1;
+    ds2=ai1;
+    ar2=ar1;
+    ai2=ai1;
+
+    t6=idl1;
+    t7=t9-idl1;
+    for(j=2;j<ipph;j++){
+      t6+=idl1;
+      t7-=idl1;
+      ar2h=dc2*ar2-ds2*ai2;
+      ai2=dc2*ai2+ds2*ar2;
+      ar2=ar2h;
+      t4=t1;
+      t5=t2;
+      t11=t6;
+      t12=t7;
+      for(ik=0;ik<idl1;ik++){
+	c2[t4++]+=ar2*ch2[t11++];
+	c2[t5++]+=ai2*ch2[t12++];
+      }
+    }
+  }
+
+  t1=0;
+  for(j=1;j<ipph;j++){
+    t1+=idl1;
+    t2=t1;
+    for(ik=0;ik<idl1;ik++)ch2[ik]+=ch2[t2++];
+  }
+
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(k=0;k<l1;k++){
+      ch[t3]=c1[t3]-c1[t4];
+      ch[t4]=c1[t3]+c1[t4];
+      t3+=ido;
+      t4+=ido;
+    }
+  }
+
+  if(ido==1)goto L132;
+  if(nbd<l1)goto L128;
+
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(k=0;k<l1;k++){
+      t5=t3;
+      t6=t4;
+      for(i=2;i<ido;i+=2){
+	t5+=2;
+	t6+=2;
+	ch[t5-1]=c1[t5-1]-c1[t6];
+	ch[t6-1]=c1[t5-1]+c1[t6];
+	ch[t5]=c1[t5]+c1[t6-1];
+	ch[t6]=c1[t5]-c1[t6-1];
+      }
+      t3+=ido;
+      t4+=ido;
+    }
+  }
+  goto L132;
+
+ L128:
+  t1=0;
+  t2=ipp2*t0;
+  for(j=1;j<ipph;j++){
+    t1+=t0;
+    t2-=t0;
+    t3=t1;
+    t4=t2;
+    for(i=2;i<ido;i+=2){
+      t3+=2;
+      t4+=2;
+      t5=t3;
+      t6=t4;
+      for(k=0;k<l1;k++){
+	ch[t5-1]=c1[t5-1]-c1[t6];
+	ch[t6-1]=c1[t5-1]+c1[t6];
+	ch[t5]=c1[t5]+c1[t6-1];
+	ch[t6]=c1[t5]-c1[t6-1];
+	t5+=ido;
+	t6+=ido;
+      }
+    }
+  }
+
+L132:
+  if(ido==1)return;
+
+  for(ik=0;ik<idl1;ik++)c2[ik]=ch2[ik];
+
+  t1=0;
+  for(j=1;j<ip;j++){
+    t2=(t1+=t0);
+    for(k=0;k<l1;k++){
+      c1[t2]=ch[t2];
+      t2+=ido;
+    }
+  }
+
+  if(nbd>l1)goto L139;
+
+  is= -ido-1;
+  t1=0;
+  for(j=1;j<ip;j++){
+    is+=ido;
+    t1+=t0;
+    idij=is;
+    t2=t1;
+    for(i=2;i<ido;i+=2){
+      t2+=2;
+      idij+=2;
+      t3=t2;
+      for(k=0;k<l1;k++){
+	c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
+	c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
+	t3+=ido;
+      }
+    }
+  }
+  return;
+
+ L139:
+  is= -ido-1;
+  t1=0;
+  for(j=1;j<ip;j++){
+    is+=ido;
+    t1+=t0;
+    t2=t1;
+    for(k=0;k<l1;k++){
+      idij=is;
+      t3=t2;
+      for(i=2;i<ido;i+=2){
+	idij+=2;
+	t3+=2;
+	c1[t3-1]=wa[idij-1]*ch[t3-1]-wa[idij]*ch[t3];
+	c1[t3]=wa[idij-1]*ch[t3]+wa[idij]*ch[t3-1];
+      }
+      t2+=ido;
+    }
+  }
+}
+
+STIN void drftb1(int n, double *c, double *ch, double *wa, int *ifac){
+  int i,k1,l1,l2;
+  int na;
+  int nf,ip,iw,ix2,ix3,ido,idl1;
+
+  nf=ifac[1];
+  na=0;
+  l1=1;
+  iw=1;
+
+  for(k1=0;k1<nf;k1++){
+    ip=ifac[k1 + 2];
+    l2=ip*l1;
+    ido=n/l2;
+    idl1=ido*l1;
+    if(ip!=4)goto L103;
+    ix2=iw+ido;
+    ix3=ix2+ido;
+
+    if(na!=0)
+      dradb4(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    else
+      dradb4(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1);
+    na=1-na;
+    goto L115;
+
+  L103:
+    if(ip!=2)goto L106;
+
+    if(na!=0)
+      dradb2(ido,l1,ch,c,wa+iw-1);
+    else
+      dradb2(ido,l1,c,ch,wa+iw-1);
+    na=1-na;
+    goto L115;
+
+  L106:
+    if(ip!=3)goto L109;
+
+    ix2=iw+ido;
+    if(na!=0)
+      dradb3(ido,l1,ch,c,wa+iw-1,wa+ix2-1);
+    else
+      dradb3(ido,l1,c,ch,wa+iw-1,wa+ix2-1);
+    na=1-na;
+    goto L115;
+
+  L109:
+/*    The radix five case can be translated later..... */
+/*    if(ip!=5)goto L112;
+
+    ix2=iw+ido;
+    ix3=ix2+ido;
+    ix4=ix3+ido;
+    if(na!=0)
+      dradb5(ido,l1,ch,c,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
+    else
+      dradb5(ido,l1,c,ch,wa+iw-1,wa+ix2-1,wa+ix3-1,wa+ix4-1);
+    na=1-na;
+    goto L115;
+
+  L112:*/
+    if(na!=0)
+      dradbg(ido,ip,l1,idl1,ch,ch,ch,c,c,wa+iw-1);
+    else
+      dradbg(ido,ip,l1,idl1,c,c,c,ch,ch,wa+iw-1);
+    if(ido==1)na=1-na;
+
+  L115:
+    l1=l2;
+    iw+=(ip-1)*ido;
+  }
+
+  if(na==0)return;
+
+  for(i=0;i<n;i++)c[i]=ch[i];
+}
+
+void __ogg_fdrfftb(int n, double *r, double *wsave, int *ifac){
+  if (n == 1)return;
+  drftb1(n, r, wsave, wsave+n, ifac);
+}
+
+STIN void dcsqb1(int n,double *x,double *w,double *xh,int *ifac){
+  int modn,i,k,kc;
+  int np2,ns2;
+  double xim1;
+
+  ns2=(n+1)>>1;
+  np2=n;
+
+  for(i=2;i<n;i+=2){
+    xim1=x[i-1]+x[i];
+    x[i]-=x[i-1];
+    x[i-1]=xim1;
+  }
+
+  x[0]+=x[0];
+  modn=n%2;
+  if(modn==0)x[n-1]+=x[n-1];
+
+  __ogg_fdrfftb(n,x,xh,ifac);
+
+  kc=np2;
+  for(k=1;k<ns2;k++){
+    kc--;
+    xh[k]=w[k-1]*x[kc]+w[kc-1]*x[k];
+    xh[kc]=w[k-1]*x[k]-w[kc-1]*x[kc];
+  }
+
+  if(modn==0)x[ns2]=w[ns2-1]*(x[ns2]+x[ns2]);
+
+  kc=np2;
+  for(k=1;k<ns2;k++){
+    kc--;
+    x[k]=xh[k]+xh[kc];
+    x[kc]=xh[k]-xh[kc];
+  }
+  x[0]+=x[0];
+}
+
+void __ogg_fdcosqb(int n,double *x,double *wsave,int *ifac){
+  static double tsqrt2 = 2.8284271247461900976033774484194;
+  double x1;
+
+  if(n<2){
+    x[0]*=4;
+    return;
+  }
+  if(n==2){
+    x1=(x[0]+x[1])*4;
+    x[1]=tsqrt2*(x[0]-x[1]);
+    x[0]=x1;
+    return;
+  }
+  
+  dcsqb1(n,x,wsave,wsave+n,ifac);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/discreteFourierTransform.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,102 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+         D I S C R E T E  F O U R I E R  T R A N S F O R M  T E S T 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+void  __ogg_fdrffti(int n, double* wsave, int* ifac);
+void  __ogg_fdrfftf(int n, double* X, double* wsave, int* ifac);
+
+void
+DiscreteFourierTransform(int n)
+{
+	double     p_value, upperBound, percentile, N_l, N_o, d;
+	double*    m = NULL;
+	double*    X = NULL;
+	double*    wsave = NULL;
+	int*       ifac = NULL;
+	int		i, count;
+	
+	if ( ((X = (double*) calloc(n,sizeof(double))) == NULL) ||
+		 ((wsave = (double *)calloc(2*n+15,sizeof(double))) == NULL) ||
+		 ((ifac = (int *)calloc(15,sizeof(int))) == NULL) ||
+		 ((m = (double*)calloc(n/2+1, sizeof(double))) == NULL) ) {
+			fprintf(stats[7],"\t\tUnable to allocate working arrays for the DFT.\n");
+			if( X != NULL )
+				free(X);
+			if( wsave != NULL )
+				free(wsave);
+			if( ifac != NULL )
+				free(ifac);
+			if( m != NULL )
+				free(m);
+			return;
+	}
+	for ( i=0; i<n; i++ )
+		X[i] = 2*(int)epsilon[i] - 1;
+	
+	__ogg_fdrffti(n, wsave, ifac);		/* INITIALIZE WORK ARRAYS */
+	__ogg_fdrfftf(n, X, wsave, ifac);	/* APPLY FORWARD FFT */
+	
+	m[0] = sqrt(X[0]*X[0]);	    /* COMPUTE MAGNITUDE */
+	
+	for ( i=0; i<n/2; i++ ) {	   	    /* DISPLAY FOURIER POINTS */
+		m[i+1] = sqrt(pow(X[2*i+1],2)+pow(X[2*i+2],2)); 
+	}
+	count = 0;				       /* CONFIDENCE INTERVAL */
+	upperBound = sqrt(2.995732274*n);
+	for ( i=0; i<n/2; i++ )
+		if ( m[i] < upperBound )
+			count++;
+	percentile = (double)count/(n/2)*100;
+	N_l = (double) count;       /* number of peaks less than h = sqrt(3*n) */
+	N_o = (double) 0.95*n/2.0;
+	d = (N_l - N_o)/sqrt(n/2.0*0.95*0.05);
+	p_value = erfc(fabs(d)/sqrt(2.0));
+
+	fprintf(stats[TEST_FFT], "\t\t\t\tFFT TEST\n");
+	fprintf(stats[TEST_FFT], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_FFT], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_FFT], "\t\t-------------------------------------------\n");
+	fprintf(stats[TEST_FFT], "\t\t(a) Percentile = %f\n", percentile);
+	fprintf(stats[TEST_FFT], "\t\t(b) N_l        = %f\n", N_l);
+	fprintf(stats[TEST_FFT], "\t\t(c) N_o        = %f\n", N_o);
+	fprintf(stats[TEST_FFT], "\t\t(d) d          = %f\n", d);
+	fprintf(stats[TEST_FFT], "\t\t-------------------------------------------\n");
+
+	fprintf(stats[TEST_FFT], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_FFT], "%f\n", p_value);
+
+	free(X);
+	free(wsave);
+	free(ifac);
+	free(m);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/frequency.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,57 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                          F R E Q U E N C Y  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+Frequency(int n)
+{
+	int		i;
+	double	f, s_obs, p_value, sum, sqrt2 = 1.41421356237309504880;
+	
+	sum = 0.0;
+	for ( i=0; i<n; i++ )
+		sum += 2*(int)epsilon[i]-1;
+	s_obs = fabs(sum)/sqrt(n);
+	f = s_obs/sqrt2;
+	p_value = erfc(f);
+
+	fprintf(stats[TEST_FREQUENCY], "\t\t\t      FREQUENCY TEST\n");
+	fprintf(stats[TEST_FREQUENCY], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_FREQUENCY], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_FREQUENCY], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_FREQUENCY], "\t\t(a) The nth partial sum = %d\n", (int)sum);
+	fprintf(stats[TEST_FREQUENCY], "\t\t(b) S_n/n               = %f\n", sum/n);
+	fprintf(stats[TEST_FREQUENCY], "\t\t---------------------------------------------\n");
+
+	fprintf(stats[TEST_FREQUENCY], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_FREQUENCY], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/generators.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,510 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/generators.h"
+#include "../include/genutils.h"
+
+const int KRandomByteCount = 1024;
+
+double
+lcg_rand(int N, double SEED, double* DUNIF, int NDIM)
+{
+	int    i;
+	double	DZ, DOVER, DZ1, DZ2, DOVER1, DOVER2;
+	double	DTWO31, DMDLS, DA1, DA2;
+
+	DTWO31 = 2147483648.0; /* DTWO31=2**31  */
+	DMDLS  = 2147483647.0; /* DMDLS=2**31-1 */
+	DA1 = 41160.0;       /* DA1=950706376 MOD 2**16 */
+	DA2 = 950665216.0;   /* DA2=950706376-DA1 */
+
+	DZ = SEED;
+	if ( N > NDIM )
+		N = NDIM;
+	for ( i=1; i<=N; i++ ) {
+		DZ = floor(DZ);
+		DZ1 = DZ*DA1;
+		DZ2 = DZ*DA2;
+		DOVER1 = floor(DZ1/DTWO31);
+		DOVER2 = floor(DZ2/DTWO31);
+		DZ1 = DZ1-DOVER1*DTWO31;
+		DZ2 = DZ2-DOVER2*DTWO31;
+		DZ = DZ1+DZ2+DOVER1+DOVER2;
+		DOVER = floor(DZ/DMDLS);
+		DZ = DZ-DOVER*DMDLS;
+		DUNIF[i-1] = DZ/DMDLS;
+		SEED = DZ;
+	}
+
+	return SEED;
+}
+
+void
+lcg()
+{
+	double*    DUNIF = NULL;
+	double     SEED;
+	int		i;
+	unsigned bit;
+	int		num_0s, num_1s, v, bitsRead;
+
+	SEED = 23482349.0;
+	if ( ((epsilon = (BitSequence *) calloc(tp.n, sizeof(BitSequence))) == NULL) ||
+	     ((DUNIF = (double*)calloc(tp.n, sizeof(double))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	 
+	for ( v=0; v<tp.numOfBitStreams; v++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		SEED = lcg_rand(tp.n, SEED, DUNIF, tp.n);
+		for ( i=0; i<tp.n; i++ ) {
+			if ( DUNIF[i] < 0.5 ) {
+				bit = 0;
+				num_0s++;
+			}
+			else {
+				bit = 1;
+				num_1s++;
+			}
+			bitsRead++;
+			epsilon[i] = (BitSequence)bit;
+		}
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+		}
+	free(DUNIF);
+	free(epsilon);
+}
+
+
+void
+quadRes1()
+{
+	int		k, num_0s, num_1s, bitsRead, done;
+	BYTE	p[64], g[64], x[128];
+	
+	if ( ((epsilon = (BitSequence *)calloc(tp.n, sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	ahtopb("987b6a6bf2c56a97291c445409920032499f9ee7ad128301b5d0254aa1a9633fdbd378d40149f1e23a13849f3d45992f5c4c6b7104099bc301f6005f9d8115e1", p, 64);
+	ahtopb("3844506a9456c564b8b8538e0cc15aff46c95e69600f084f0657c2401b3c244734b62ea9bb95be4923b9b7e84eeaf1a224894ef0328d44bc3eb3e983644da3f5", g, 64);
+	num_0s = 0;
+	num_1s = 0;
+	done = 0;
+	bitsRead = 0;
+	for ( k=0; k<tp.numOfBitStreams; k++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		done = 0;
+		bitsRead = 0;
+		do {
+			memset(x, 0x00, 128);
+			ModMult(x, g, 64, g, 64, p,64);
+			memcpy(g, x+64, 64);
+			done = convertToBits(g, 512, tp.n, &num_0s, &num_1s, &bitsRead);
+		} while ( !done );
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+
+	return;
+}
+
+void
+quadRes2()
+{
+	BYTE	g[64], x[129], t1[65];
+	BYTE	One[1], Two, Three[1];
+	int		k, num_0s, num_1s, bitsRead, done;
+	
+	if ( ((epsilon = (BitSequence *)calloc(tp.n, sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	One[0] = 0x01;
+	Two = 0x02;
+	Three[0] = 0x03;
+
+	ahtopb("7844506a9456c564b8b8538e0cc15aff46c95e69600f084f0657c2401b3c244734b62ea9bb95be4923b9b7e84eeaf1a224894ef0328d44bc3eb3e983644da3f5", g, 64);
+	
+	for( k=0; k<tp.numOfBitStreams; k++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		done = 0;
+		bitsRead = 0;
+		do {
+			memset(t1, 0x00, 65);
+			memset(x, 0x00, 129);
+			smult(t1, Two, g, 64);		/* 2x */
+			add(t1, 65, Three, 1);		/* 2x+3 */
+			Mult(x, t1, 65, g, 64);		/* x(2x+3) */
+			add(x, 129, One, 1);		/* x(2x+3)+1 */
+			memcpy(g, x+65, 64);
+			done = convertToBits(g, 512, tp.n, &num_0s, &num_1s, &bitsRead);
+		} while ( !done) ;
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+
+	return;
+}
+
+void
+cubicRes()
+{
+	BYTE	g[64], tmp[128], x[192];
+	int		k, num_0s, num_1s, bitsRead, done;
+	
+	if ( ((epsilon = (BitSequence *)calloc(tp.n, sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	
+	ahtopb("7844506a9456c564b8b8538e0cc15aff46c95e69600f084f0657c2401b3c244734b62ea9bb95be4923b9b7e84eeaf1a224894ef0328d44bc3eb3e983644da3f5", g, 64);
+
+	for ( k=0; k<tp.numOfBitStreams; k++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		done = 0;
+		do {
+			memset(tmp, 0x00, 128);
+			memset(x, 0x00, 192);
+			Mult(tmp, g, 64, g, 64);
+			Mult(x, tmp, 128, g, 64); // Don't need to mod by 2^512, just take low 64 bytes
+			memcpy(g, x+128, 64);
+			done = convertToBits(g, 512, tp.n, &num_0s, &num_1s, &bitsRead);
+		} while ( !done );
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+
+	return;
+}
+
+void
+exclusiveOR()
+{
+	int		i, num_0s, num_1s, bitsRead;
+	BYTE	bit_sequence[127];
+	
+	if ( ((epsilon = (BitSequence *)calloc(tp.n,sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+
+	memcpy(bit_sequence, "0001011011011001000101111001001010011011101101000100000010101111111010100100001010110110000000000100110000101110011111111100111", 127);
+	num_0s = 0;
+	num_1s = 0;
+	bitsRead = 0;
+	for (i=0; i<127; i++ ) {
+		if ( bit_sequence[i]  ) {
+			epsilon[bitsRead] = 1;
+			num_1s++;
+		}
+		else {
+			epsilon[bitsRead] = 0;
+			num_1s++;
+		}
+		bitsRead++;
+	}
+	for ( i=127; i<tp.n*tp.numOfBitStreams; i++ ) {
+		if ( bit_sequence[(i-1)%127] != bit_sequence[(i-127)%127] ) {
+			bit_sequence[i%127] = 1;
+			epsilon[bitsRead] = 1;
+			num_1s++;
+		}
+		else {
+			bit_sequence[i%127] = 0;
+			epsilon[bitsRead] = 0;
+			num_0s++;
+		}
+		bitsRead++;
+		if ( bitsRead == tp.n ) {
+			fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+			nist_test_suite();
+			num_0s = 0;
+			num_1s = 0;
+			bitsRead = 0;
+		}
+	}
+	free(epsilon);
+		
+	return;
+}
+
+
+void
+modExp()
+{
+	int		k, num_0s, num_1s, bitsRead, done;
+	BYTE	p[64], g[64], x[192], y[20];
+
+	if ( (epsilon = (BitSequence *)calloc(tp.n, sizeof(BitSequence))) == NULL ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	ahtopb("7AB36982CE1ADF832019CDFEB2393CABDF0214EC", y, 20);
+	ahtopb("987b6a6bf2c56a97291c445409920032499f9ee7ad128301b5d0254aa1a9633fdbd378d40149f1e23a13849f3d45992f5c4c6b7104099bc301f6005f9d8115e1", p, 64);
+	ahtopb("3844506a9456c564b8b8538e0cc15aff46c95e69600f084f0657c2401b3c244734b62ea9bb95be4923b9b7e84eeaf1a224894ef0328d44bc3eb3e983644da3f5", g, 64);
+
+	for ( k=0; k<tp.numOfBitStreams; k++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		done = 0;
+		do {
+			memset(x, 0x00, 128);
+			ModExp(x, g, 64, y, 20, p, 64);	      /* NOTE:  g must be less than p */
+			done = convertToBits(x, 512, tp.n, &num_0s, &num_1s, &bitsRead);
+			memcpy(y, x+44, 20);
+			} while ( !done );
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+
+	return;
+}
+
+void
+bbs()
+{
+	int		i, v, bitsRead;
+	BYTE	p[64], q[64], n[128], s[64], x[256];
+	int		num_0s, num_1s;
+
+	if ( (epsilon = (BitSequence*)calloc(tp.n, sizeof(BitSequence))) == NULL ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	ahtopb("E65097BAEC92E70478CAF4ED0ED94E1C94B154466BFB9EC9BE37B2B0FF8526C222B76E0E915017535AE8B9207250257D0A0C87C0DACEF78E17D1EF9DC44FD91F", p, 64);
+	ahtopb("E029AEFCF8EA2C29D99CB53DD5FA9BC1D0176F5DF8D9110FD16EE21F32E37BA86FF42F00531AD5B8A43073182CC2E15F5C86E8DA059E346777C9A985F7D8A867", q, 64);
+	memset(n, 0x00, 128);
+	Mult(n, p, 64, q, 64);
+	memset(s, 0x00, 64);
+	ahtopb("10d6333cfac8e30e808d2192f7c0439480da79db9bbca1667d73be9a677ed31311f3b830937763837cb7b1b1dc75f14eea417f84d9625628750de99e7ef1e976", s, 64);
+	memset(x, 0x00, 256);
+	ModSqr(x, s, 64, n, 128);
+ 
+	for ( v=0; v<tp.numOfBitStreams; v++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		for ( i=0; i<tp.n; i++ ) {
+			ModSqr(x, x, 128, n, 128);
+			memcpy(x, x+128, 128);
+			if ( (x[127] & 0x01) == 0 ) {
+				num_0s++;
+				epsilon[i] = 0;
+			}
+			else {
+				num_1s++;
+				epsilon[i] = 1;
+			}
+			bitsRead++;
+			if ( (i % 50000) == 0 )
+				printf("\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		}
+
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+}
+
+
+// The exponent, e, is set to 11
+// This results in k = 837 and r = 187
+void
+micali_schnorr()
+{
+	long	i, j;
+	int		k=837, num_0s, num_1s, bitsRead, done;
+	BYTE	p[64], q[64], n[128], e[1], X[128], Y[384], Tail[105];
+
+	if ( (epsilon = (BitSequence *)calloc(tp.n, sizeof(BitSequence))) == NULL ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+	ahtopb("E65097BAEC92E70478CAF4ED0ED94E1C94B154466BFB9EC9BE37B2B0FF8526C222B76E0E915017535AE8B9207250257D0A0C87C0DACEF78E17D1EF9DC44FD91F", p, 64);
+	ahtopb("E029AEFCF8EA2C29D99CB53DD5FA9BC1D0176F5DF8D9110FD16EE21F32E37BA86FF42F00531AD5B8A43073182CC2E15F5C86E8DA059E346777C9A985F7D8A867", q, 64);
+	memset(n, 0x00, 128);
+	Mult(n, p, 64, q, 64);
+	e[0] = 0x0b;
+	memset(X, 0x00, 128);
+	ahtopb("237c5f791c2cfe47bfb16d2d54a0d60665b20904ec822a6", X+104, 24);
+
+	for ( i=0; i<tp.numOfBitStreams; i++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		do {
+			ModExp(Y, X, 128, e, 1, n, 128);
+			memcpy(Tail, Y+23, 105);
+			for ( j=0; j<3; j++ )
+				bshl(Tail, 105);
+			done = convertToBits(Tail, k, tp.n, &num_0s, &num_1s, &bitsRead);
+			memset(X, 0x00, 128);
+			memcpy(X+104, Y, 24);
+			for ( j=0; j<5; j++ )
+				bshr(X+104, 24);
+		} while ( !done );
+
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+}
+
+//  Uses 160 bit Xkey and no XSeed (b=160)
+//  This is the generic form of the generator found on the last page of the Change Notice for FIPS 186-2
+void
+SHA1()
+{
+	ULONG	A, B, C, D, E, temp, Wbuff[16];
+	BYTE	Xkey[20], G[20], M[64];
+	BYTE	One[1] = { 0x01 };
+	int		i, num_0s, num_1s, bitsRead;
+	int		done;
+	ULONG	tx[5] = { 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0 };
+	
+	if ( ((epsilon = (BitSequence *) calloc(tp.n,sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient memory available.\n");
+		exit(1);
+	}
+
+	ahtopb("ec822a619d6ed5d9492218a7a4c5b15d57c61601", Xkey, 20);
+	
+	for ( i=0; i<tp.numOfBitStreams; i++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		do {
+			memcpy(M, Xkey, 20);
+			memset(M+20, 0x00, 44);
+			
+			// Start: SHA Steps A-E
+			A = tx[0];
+			B = tx[1];
+			C = tx[2];
+			D = tx[3];
+			E = tx[4];
+
+			memcpy((BYTE *)Wbuff, M, 64);
+#ifdef LITTLE_ENDIAN
+			byteReverse(Wbuff, 20);
+#endif
+			sub1Round1( 0 );  sub1Round1( 1 );  sub1Round1( 2 );  sub1Round1( 3 );
+			sub1Round1( 4 );  sub1Round1( 5 );  sub1Round1( 6 );  sub1Round1( 7 );
+			sub1Round1( 8 );  sub1Round1( 9 );  sub1Round1( 10 ); sub1Round1( 11 );
+			sub1Round1( 12 ); sub1Round1( 13 ); sub1Round1( 14 ); sub1Round1( 15 );
+			sub2Round1( 16 ); sub2Round1( 17 ); sub2Round1( 18 ); sub2Round1( 19 );
+			Round2( 20 ); Round2( 21 ); Round2( 22 ); Round2( 23 );
+			Round2( 24 ); Round2( 25 ); Round2( 26 ); Round2( 27 );
+			Round2( 28 ); Round2( 29 ); Round2( 30 ); Round2( 31 );
+			Round2( 32 ); Round2( 33 ); Round2( 34 ); Round2( 35 );
+			Round2( 36 ); Round2( 37 ); Round2( 38 ); Round2( 39 );
+			Round3( 40 ); Round3( 41 ); Round3( 42 ); Round3( 43 );
+			Round3( 44 ); Round3( 45 ); Round3( 46 ); Round3( 47 );
+			Round3( 48 ); Round3( 49 ); Round3( 50 ); Round3( 51 );
+			Round3( 52 ); Round3( 53 ); Round3( 54 ); Round3( 55 );
+			Round3( 56 ); Round3( 57 ); Round3( 58 ); Round3( 59 );
+			Round4( 60 ); Round4( 61 ); Round4( 62 ); Round4( 63 );
+			Round4( 64 ); Round4( 65 ); Round4( 66 ); Round4( 67 );
+			Round4( 68 ); Round4( 69 ); Round4( 70 ); Round4( 71 );
+			Round4( 72 ); Round4( 73 ); Round4( 74 ); Round4( 75 );
+			Round4( 76 ); Round4( 77 ); Round4( 78 ); Round4( 79 );
+			
+			A += tx[0];
+			B += tx[1];
+			C += tx[2];
+			D += tx[3];
+			E += tx[4];
+			
+			memcpy(G, (BYTE *)&A, 4);
+			memcpy(G+4, (BYTE *)&B, 4);
+			memcpy(G+8, (BYTE *)&C, 4);
+			memcpy(G+12, (BYTE *)&D, 4);
+			memcpy(G+16, (BYTE *)&E, 4);
+#ifdef LITTLE_ENDIAN
+			byteReverse((ULONG *)G, 20);
+#endif
+			// End: SHA Steps A-E
+
+			done = convertToBits(G, 160, tp.n, &num_0s, &num_1s, &bitsRead);
+			add(Xkey, 20, G, 20);
+			add(Xkey, 20, One, 1);
+		} while ( !done );
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+}
+
+void HASH_DRBG()
+    {
+    int     done = 0;
+    int     num_0s = 0;
+    int     num_1s = 0;
+    int     bitsRead = 0;
+
+    if ( ((epsilon = (BitSequence *) calloc(tp.n,sizeof(BitSequence))) == NULL) ) {
+        printf("Insufficient memory available.\n");
+        exit(1);
+    }
+    
+    TBuf8<KRandomByteCount> randBuffer(KRandomByteCount);
+
+    for (int i = 0; i < tp.numOfBitStreams; ++i) 
+        {
+        gConsole->Printf(_L("Starting test %d\n"), i+1);
+        num_0s = 0;
+        num_1s = 0;
+        bitsRead = 0;
+        done = 0;
+        do 
+            {
+            Math::Random(randBuffer);
+            done = convertToBits(randBuffer.Ptr() , KRandomByteCount*8, tp.n, &num_0s, &num_1s, &bitsRead);
+            } while ( !done );
+        fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+        
+        nist_test_suite();
+        }
+        free(epsilon);
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/genutils.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,693 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/*
+ * file: mp.c
+ *
+ * DESCRIPTION
+ *
+ * These functions comprise a multi-precision integer arithmetic
+ * and discrete function package.
+ */
+
+#include	"../include/genutils.h"
+
+#define	MAXPLEN		384
+
+
+/*****************************************
+** greater - Test if x > y               *
+**                                       *
+** Returns TRUE (1) if x greater than y, *
+** otherwise FALSE (0).                  *
+**                                       *
+** Parameters:                           *
+**                                       *
+**  x      Address of array x            *
+**  y      Address of array y            *
+**  l      Length both x and y in bytes  *
+**                                       *
+******************************************/ 
+int greater(BYTE *x, BYTE *y, int l)
+{
+	int		i;
+
+	for ( i=0; i<l; i++ )
+		if ( x[i] != y[i] )
+			break;
+
+	if ( i == l )
+		return 0;
+
+	if ( x[i] > y[i] )
+		return 1;
+
+	return 0;
+}
+
+
+/*****************************************
+** less - Test if x < y                  *
+**                                       *
+** Returns TRUE (1) if x less than y,    *
+** otherwise FALSE (0).                  *
+**                                       *
+** Parameters:                           *
+**                                       *
+**  x      Address of array x            *
+**  y      Address of array y            *
+**  l      Length both x and y in bytes  *
+**                                       *
+******************************************/ 
+int less(BYTE *x, BYTE *y, int l)
+{
+	int		i;
+
+	for ( i=0; i<l; i++ )
+		if ( x[i] != y[i] )
+			break;
+
+	if ( i == l ) {
+		return 0;
+	}
+
+	if ( x[i] < y[i] ) {
+		return 1;
+	}
+
+	return 0;
+}
+
+
+/*****************************************
+** bshl - shifts array left              *
+**                  by one bit.          *
+**                                       *	
+** x = x * 2                             *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  x      Address of array x            *
+**  l      Length array x in bytes       *
+**                                       *
+******************************************/ 
+BYTE bshl(BYTE *x, int l)
+{
+	BYTE	*p;
+	int		c1, c2;
+
+	p = x + l - 1;
+	c1 = 0;
+	c2 = 0;
+	while ( p != x ) {
+		if ( *p & 0x80 )
+			c2 = 1;
+		*p <<= 1;  /* shift the word left once (ls bit = 0) */
+		if ( c1 )
+			*p |= 1;
+		c1 = c2;
+		c2 = 0;
+		p--;
+	}
+
+	if ( *p & 0x80 )
+		c2 = 1;
+	*p <<= 1;  /* shift the word left once (ls bit = 0) */
+	if ( c1 )
+		*p |= (DIGIT)1;
+
+	return (BYTE)c2;
+}
+
+
+/*****************************************
+** bshr - shifts array right             *
+**                   by one bit.         *
+**                                       *	
+** x = x / 2                             *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  x      Address of array x            *
+**  l      Length array x in bytes       *	
+**                                       *
+******************************************/
+void bshr(BYTE *x, int l)	
+{
+	BYTE	*p;
+	int		c1,c2;
+
+	p = x;
+	c1 = 0;
+	c2 = 0;
+	while ( p != x+l-1 ) {
+		if ( *p & 0x01 )
+			c2 = 1;
+		*p >>= 1;  /* shift the word right once (ms bit = 0) */
+		if ( c1 )
+			*p |= 0x80;
+		c1 = c2;
+		c2 = 0;
+		p++;
+	}
+
+	*p >>= 1;  /* shift the word right once (ms bit = 0) */
+	if ( c1 )
+		*p |= 0x80;
+}
+
+
+/*****************************************
+** Mult - Multiply two integers          *
+**                                       *
+** A = B * C                             *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  A      Address of the result         *
+**  B      Address of the multiplier     *
+**  C      Address of the multiplicand   *
+**  LB      Length of B in bytes         *
+**  LC      Length of C in bytes         *
+**                                       *
+**  NOTE:  A MUST be LB+LC in length     *
+**                                       *
+******************************************/
+int Mult(BYTE *A, BYTE *B, int LB, BYTE *C, int LC)
+{
+	int    i, j;
+	int    k = 0;
+	DIGIT	result;
+
+
+	for ( i=LB-1; i>=0; i-- ) {
+		result = 0;
+		for ( j=LC-1; j>=0; j-- ) {
+			k = i+j+1;
+			result = (DIGIT)((DIGIT)A[k] + ((DIGIT)(B[i] * C[j])) + (result >> 8));
+			A[k] = (BYTE)result;
+			}
+		A[--k] = (BYTE)(result >> 8);
+	}
+
+	return 0;
+}
+
+
+void ModSqr(BYTE *A, BYTE *B, int LB, BYTE *M, int LM)
+{
+
+	Square(A, B, LB);
+	Mod(A, 2*LB, M, LM);
+}
+
+void ModMult(BYTE *A, BYTE *B, int LB, BYTE *C, int LC, BYTE *M, int LM)
+{
+	Mult(A, B, LB, C, LC);
+	Mod(A, (LB+LC), M, LM);
+}
+
+
+/*****************************************
+** smult - Multiply array by a scalar.   *
+**                                       *
+** A = b * C                             *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  A      Address of the result         *
+**  b      Scalar (1 BYTE)               *
+**  C      Address of the multiplicand   *
+**  L      Length of C in bytes          *
+**                                       *
+**  NOTE:  A MUST be L+1 in length       *
+**                                       *
+******************************************/
+void smult(BYTE *A, BYTE b, BYTE *C, int L)
+{
+	int		i;
+	DIGIT	result;
+
+	result = 0;
+	for ( i=L-1; i>0; i-- ) {
+		result = (DIGIT)(A[i] + ((DIGIT)b * C[i]) + (result >> 8));
+		A[i] = (BYTE)(result & 0xff);
+		A[i-1] = (BYTE)(result >> 8);
+	}
+}
+
+/*****************************************
+** Square() - Square an integer          *
+**                                       *
+** A = B^2                               *
+**                                       *
+** Parameters:                           *
+**                                       *
+**  A      Address of the result         *
+**  B      Address of the operand        *
+**  L      Length of B in bytes          *
+**                                       *
+**  NOTE:  A MUST be 2*L in length       *
+**                                       *
+******************************************/
+void Square(BYTE *A, BYTE *B, int L)
+{
+	Mult(A, B, L, B, L);
+}
+
+/*****************************************
+** ModExp - Modular Exponentiation       *
+**                                       *
+** A = B ** C (MOD M)                    *
+**                                       *	
+** Parameters:                           *	
+**                                       *
+**  A      Address of result             *
+**  B      Address of mantissa           *
+**  C      Address of exponent           *
+**  M      Address of modulus            *
+**  LB     Length of B in bytes          *
+**  LC     Length of C in bytes          *
+**  LM     Length of M in bytes          *
+**                                       *
+**  NOTE: The integer B must be less     *
+**        than the modulus M.      	 *
+**  NOTE: A must be at least 3*LM        *
+**        bytes long.  However, the      *
+**        result stored in A will be     *
+**        only LM bytes long.            *
+******************************************/
+void ModExp(BYTE *A, BYTE *B, int LB, BYTE *C, int LC, BYTE *M, int LM)
+{
+	BYTE	wmask;
+	int		bits;
+
+	bits = LC*8;
+	wmask = 0x80;
+
+	A[LM-1] = 1;
+
+	while ( !sniff_bit(C,wmask) ) {
+		wmask >>= 1;
+		bits--;
+		if ( !wmask ) {
+			wmask = 0x80;
+			C++;
+		}
+	}
+
+	while ( bits-- ) {
+		memset(A+LM, 0x00, LM*2);
+
+		/* temp = A*A (MOD M) */
+		ModSqr(A+LM, A,LM,  M,LM);
+
+		/* A = lower L bytes of temp */
+		memcpy(A, A+LM*2, LM);
+		memset(A+LM, 0x00, 2*LM);
+
+		if ( sniff_bit(C,wmask) ) {
+			memset(A+LM, 0x00, (LM+LB));
+			ModMult(A+LM, B,LB, A,LM,  M,LM);       /* temp = B * A (MOD M) */
+			memcpy(A, A+LM+(LM+LB)-LM, LM);  /* A = lower LM bytes of temp */
+			memset(A+LM, 0x00, 2*LM);
+		}
+ 
+		wmask >>= 1;
+		if ( !wmask ) {
+			wmask = 0x80;
+			C++;
+		}
+	}
+}
+
+
+/* DivMod:
+ *
+ *   computes:
+ *         quot = x / n
+ *         rem = x % n
+ *   returns:
+ *         length of "quot"
+ *
+ *  len of rem is lenx+1
+ */
+int DivMod(BYTE *x, int lenx, BYTE *n, int lenn, BYTE *quot, BYTE *rem)
+{
+	BYTE	*tx, *tn, *ttx, *ts, bmult[1];
+	int		i, shift, lgth_x, lgth_n, t_len, lenq;
+	DIGIT	tMSn, mult;
+	ULONG	tMSx;
+	int		underflow;
+
+	tx = x;
+	tn = n;
+	
+	/* point to the MSD of n  */
+	for ( i=0, lgth_n=lenn; i<lenn; i++, lgth_n-- ) {
+		if ( *tn )
+			break;
+		tn++;
+	}
+	if ( !lgth_n )
+		return 0;
+	
+	/* point to the MSD of x  */
+	for ( i=0, lgth_x=lenx; i<lenx; i++, lgth_x-- ) {
+		if ( *tx )
+			break;
+		tx++;
+	}
+	if ( !lgth_x )
+		return 0;
+
+	if ( lgth_x < lgth_n )
+		lenq = 1;
+	else
+		lenq = lgth_x - lgth_n + 1;
+	memset(quot, 0x00, lenq);
+	
+	/* Loop while x > n,  WATCH OUT if lgth_x == lgth_n */
+	while ( (lgth_x > lgth_n) || ((lgth_x == lgth_n) && !less(tx, tn, lgth_n)) ) {
+		shift = 1;
+		if ( lgth_n == 1 ) {
+			if ( *tx < *tn ) {
+				tMSx = (DIGIT) (((*tx) << 8) | *(tx+1));
+				tMSn = *tn;
+				shift = 0;
+			}
+			else {
+				tMSx = *tx;
+				tMSn = *tn;
+			}
+		}
+		else if ( lgth_n > 1 ) {
+			tMSx = (DIGIT) (((*tx) << 8) | *(tx+1));
+			tMSn = (DIGIT) (((*tn) << 8) | *(tn+1));
+			if ( (tMSx < tMSn) || ((tMSx == tMSn) && less(tx, tn, lgth_n)) ) {
+				tMSx = (tMSx << 8) | *(tx+2);
+				shift = 0;
+			}
+		}
+		else {
+			tMSx = (DIGIT) (((*tx) << 8) | *(tx+1));
+			tMSn = *tn;
+			shift = 0;
+		}
+
+		mult = (DIGIT) (tMSx / tMSn);
+		if ( mult > 0xff )
+			mult = 0xff;
+		bmult[0] = (BYTE)(mult & 0xff);
+
+		ts = rem;
+		do {
+			memset(ts, 0x00, lgth_x+1);
+			Mult(ts, tn, lgth_n, bmult, 1);
+
+			underflow = 0;
+			if ( shift ) {
+				if ( ts[0] != 0 )
+					underflow = 1;
+				else {
+					for ( i=0; i<lgth_x; i++ )
+						ts[i] = ts[i+1];
+					ts[lgth_x] = 0x00;
+				}
+			}
+			if ( greater(ts, tx, lgth_x) || underflow ) {
+				bmult[0]--;
+				underflow = 1;
+			}
+			else
+				underflow = 0;
+		} while ( underflow );
+		sub(tx, lgth_x, ts, lgth_x);
+		if ( shift )
+			quot[lenq - (lgth_x - lgth_n) - 1] = bmult[0];
+		else
+			quot[lenq - (lgth_x - lgth_n)] = bmult[0];
+		
+		ttx = tx;
+		t_len = lgth_x;
+		for ( i=0, lgth_x=t_len; i<t_len; i++, lgth_x-- ) {
+			if ( *ttx )
+				break;
+			ttx++;
+		}
+		tx = ttx;
+	}
+	memset(rem, 0x00, lenn);
+	if ( lgth_x )
+		memcpy(rem+lenn-lgth_x, tx, lgth_x);
+
+	return lenq;
+}
+
+
+/* 
+ * Mod - Computes an integer modulo another integer
+ *
+ * x = x (mod n)
+ *
+ */
+void Mod(BYTE *x, int lenx, BYTE *n, int lenn)
+{
+	BYTE	quot[MAXPLEN+1], rem[2*MAXPLEN+1];
+
+	memset(quot, 0x00, sizeof(quot));
+	memset(rem, 0x00, sizeof(rem));
+	if ( DivMod(x, lenx, n, lenn, quot, rem) ) {
+		memset(x, 0x00, lenx);
+		memcpy(x+lenx-lenn, rem, lenn);
+	}
+}
+
+/* 
+ * Div - Computes the integer division of two numbers
+ *
+ * x = x / n
+ *
+ */
+void Div(BYTE *x, int lenx, BYTE *n, int lenn)
+{
+	BYTE	quot[MAXPLEN+1], rem[2*MAXPLEN+1];
+	int		lenq;
+
+	memset(quot, 0x00, sizeof(quot));
+	memset(rem, 0x00, sizeof(rem));
+	if ( (lenq = DivMod(x, lenx, n, lenn, quot, rem)) != 0 ) {
+		memset(x, 0x00, lenx);
+		memcpy(x+lenx-lenq, quot, lenq);
+	}
+}
+
+
+/*****************************************
+** sub - Subtract two integers           *
+**                                       *
+** A = A - B                             *
+**                                       *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  A      Address of subtrahend integer *
+**  B      Address of subtractor integer *
+**  L      Length of A and B in bytes    *
+**                                       *
+**  NOTE: In order to save RAM, B is     *
+**        two's complemented twice,      *
+**        rather than using a copy of B  *
+**                                       *
+******************************************/
+void sub(BYTE *A, int LA, BYTE *B, int LB)
+{
+	BYTE	*tb;
+
+	tb = (BYTE *)calloc(LA, 1);
+	memcpy(tb, B, LB);
+	negate(tb, LB);
+	add(A, LA, tb, LA);
+
+	FREE(tb);
+}
+
+
+/*****************************************
+** negate - Negate an integer            *
+**                                       *
+** A = -A                                *
+**                                       *
+**                                       *
+** Parameters:                           *	
+**                                       *
+**  A      Address of integer to negate  *
+**  L      Length of A in bytes          *
+**                                       *
+******************************************/
+int negate(BYTE *A, int L)
+{
+	int		i, tL;
+	DIGIT	accum;
+
+	/* Take one's complement of A */
+	for ( i=0; i<L; i++ )
+		A[i] = (BYTE)(~(A[i]));
+
+	/* Add one to get two's complement of A */
+	accum = 1;
+	tL = L-1;
+	while ( accum && (tL >= 0) ) {
+		accum = (DIGIT)(accum + A[tL]);
+		A[tL--] = (BYTE)(accum & 0xff);
+		accum = (DIGIT)(accum >> 8);
+	}
+
+	return accum;
+}
+
+
+/*
+ * add()
+ *
+ * A = A + B
+ *
+ * LB must be <= LA
+ *
+ */
+BYTE add(BYTE *A, int LA, BYTE *B, int LB)
+{
+	int		i, indexA, indexB;
+	DIGIT	accum;
+
+	indexA = LA - 1; 	/* LSD of result */
+	indexB = LB - 1; 	/* LSD of B */
+
+	accum = 0;
+	for ( i = 0; i < LB; i++ ) {
+		accum = (DIGIT)(accum + A[indexA]);
+		accum = (DIGIT)(accum + B[indexB--]);
+		A[indexA--] = (BYTE)(accum & 0xff);
+		accum = (DIGIT)(accum >> 8);
+	}
+
+	if ( LA > LB )
+		while ( accum  && (indexA >= 0) ) {
+			accum = (DIGIT)(accum + A[indexA]);
+			A[indexA--] = (BYTE)(accum & 0xff);
+			accum = (DIGIT)(accum >> 8);
+		}
+
+	return (BYTE)accum;
+}
+
+
+void prettyprintBstr(char *S, BYTE *A, int L)
+{
+	int		i, extra, ctrb, ctrl;
+
+	if ( L == 0 )
+		printf("%s <empty>", S);
+	else
+		printf("%s\n\t", S);
+	extra = L % 24;
+	if ( extra ) {
+		ctrb = 0;
+		for ( i=0; i<24-extra; i++ ) {
+			printf("  ");
+			if ( ++ctrb == 4) {
+				printf(" ");
+				ctrb = 0;
+			}
+		}
+
+		for ( i=0; i<extra; i++ ) {
+			printf("%02X", A[i]);
+			if ( ++ctrb == 4) {
+				printf(" ");
+				ctrb = 0;
+			}
+		}
+		printf("\n\t");
+	}
+
+	ctrb = ctrl = 0;
+	for ( i=extra; i<L; i++ ) {
+		printf("%02X", A[i]);
+		if ( ++ctrb == 4) {
+			ctrl++;
+			if ( ctrl == 6 ) {
+				printf("\n\t");
+				ctrl = 0;
+			}
+			else
+				printf(" ");
+			ctrb = 0;
+		}
+	}
+	printf("\n\n");
+}
+
+
+/**********************************************************************/
+/*  Performs byte reverse for PC based implementation (little endian) */
+/**********************************************************************/
+void byteReverse(ULONG *buffer, int byteCount)
+{
+	ULONG value;
+	int count;
+
+	byteCount /= sizeof( ULONG );
+	for( count = 0; count < byteCount; count++ ) {
+		value = ( buffer[ count ] << 16 ) | ( buffer[ count ] >> 16 );
+		buffer[ count ] = ( ( value & 0xFF00FF00L ) >> 8 ) | ( ( value & 0x00FF00FFL ) << 8 );
+	}
+}
+
+void
+ahtopb (char *ascii_hex, BYTE *p_binary, int bin_len)
+{
+	BYTE    nibble;
+	int     i; 
+	
+	for ( i=0; i<bin_len; i++ ) {
+        nibble = ascii_hex[i * 2];
+	    if ( nibble > 'F' )
+	        nibble -= 0x20;   
+	    if ( nibble > '9' )
+	        nibble -= 7;      
+	    nibble -= '0';   
+	    p_binary[i] = (BYTE)(nibble << 4);
+		
+	    nibble = ascii_hex[i * 2 + 1];
+	    if ( nibble > 'F' )
+			nibble -= 0x20;
+        if ( nibble > '9' )
+            nibble -= 7;   
+        nibble -= '0';
+		p_binary[i] = (BYTE)(p_binary[i] + nibble);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/linearComplexity.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"  
+
+void
+LinearComplexity(int M, int n)
+{
+	int       i, ii, j, d, N, L, m, N_, sign, K = 6;
+	double    p_value, T_, mean, nu[7], chi2;
+	double    pi[7] = { 0.01047, 0.03125, 0.12500, 0.50000, 0.25000, 0.06250, 0.020833 };
+	BitSequence*   T = NULL;
+	BitSequence*   P = NULL;
+	BitSequence*   B_ = NULL;
+	BitSequence*   C = NULL;
+	
+	N = (int)floor(n/M);
+	if ( ((B_ = (BitSequence *) calloc(M, sizeof(BitSequence))) == NULL) ||
+		 ((C  = (BitSequence *) calloc(M, sizeof(BitSequence))) == NULL) ||
+		 ((P  = (BitSequence *) calloc(M, sizeof(BitSequence))) == NULL) ||
+		 ((T  = (BitSequence *) calloc(M, sizeof(BitSequence))) == NULL) ) {
+		printf("Insufficient Memory for Work Space:: Linear Complexity Test\n");
+		if ( B_!= NULL )
+			free(B_);
+		if ( C != NULL )
+			free(C);
+		if ( P != NULL )
+			free(P);
+		if ( T != NULL )
+			free(T);
+		return;
+	}
+
+
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "-----------------------------------------------------\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "\tL I N E A R  C O M P L E X I T Y\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "-----------------------------------------------------\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "\tM (substring length)     = %d\n", M);
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "\tN (number of substrings) = %d\n", N);
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "-----------------------------------------------------\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "        F R E Q U E N C Y                            \n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "-----------------------------------------------------\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "  C0   C1   C2   C3   C4   C5   C6    CHI2    P-value\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "-----------------------------------------------------\n");
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "\tNote: %d bits were discarded!\n", n%M);
+
+	for ( i=0; i<K+1; i++ )
+		nu[i] = 0.00;
+	for ( ii=0; ii<N; ii++ ) {
+		for ( i=0; i<M; i++ ) {
+			B_[i] = 0;
+			C[i] = 0;
+			T[i] = 0;
+			P[i] = 0;
+		}
+		L = 0;
+		m = -1;
+		d = 0;
+		C[0] = 1;
+		B_[0] = 1;
+		
+		/* DETERMINE LINEAR COMPLEXITY */
+		N_ = 0;
+		while ( N_ < M ) {
+			d = (int)epsilon[ii*M+N_];
+			for ( i=1; i<=L; i++ )
+				d += C[i] * epsilon[ii*M+N_-i];
+			d = d%2;
+			if ( d == 1 ) {
+				for ( i=0; i<M; i++ ) {
+					T[i] = C[i];
+					P[i] = 0;
+				}
+				for ( j=0; j<M; j++ )
+					if ( B_[j] == 1 )
+						P[j+N_-m] = 1;
+				for ( i=0; i<M; i++ )
+					C[i] = (BitSequence)((C[i] + P[i])%2);
+				if ( L <= N_/2 ) {
+					L = N_ + 1 - L;
+					m = N_;
+					for ( i=0; i<M; i++ )
+						B_[i] = T[i];
+				}
+			}
+			N_++;
+		}
+		if (((M+1)%2) == 0 ) 
+			sign = -1;
+		else 
+			sign = 1;
+		mean = M/2.0 + (9.0+sign)/36.0 - 1.0/pow(2, M) * (M/3.0 + 2.0/9.0);
+		if ( (M%2) == 0 )
+			sign = 1;
+		else 
+			sign = -1;
+		T_ = sign * (L - mean) + 2.0/9.0;
+		
+		if ( T_ <= -2.5 )
+			nu[0]++;
+		else if ( T_ > -2.5 && T_ <= -1.5 )
+			nu[1]++;
+		else if ( T_ > -1.5 && T_ <= -0.5 )
+			nu[2]++;
+		else if ( T_ > -0.5 && T_ <= 0.5 )
+			nu[3]++;
+		else if ( T_ > 0.5 && T_ <= 1.5 )
+			nu[4]++;
+		else if ( T_ > 1.5 && T_ <= 2.5 )
+			nu[5]++;
+		else
+			nu[6]++;
+	}
+	chi2 = 0.00;
+	for ( i=0; i<K+1; i++ ) 
+		fprintf(stats[TEST_LINEARCOMPLEXITY], "%4d ", (int)nu[i]);
+	for ( i=0; i<K+1; i++ )
+		chi2 += pow(nu[i]-N*pi[i], 2) / (N*pi[i]);
+	p_value = cephes_igamc(K/2.0, chi2/2.0);
+
+	fprintf(stats[TEST_LINEARCOMPLEXITY], "%9.6f%9.6f\n", chi2, p_value);
+	fprintf(results[TEST_LINEARCOMPLEXITY], "%f\n", p_value);
+
+	free(B_);
+	free(P);
+	free(C);
+	free(T);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/longestRunOfOnes.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,142 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* got rid of unused 'k' */
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"  
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                      L O N G E S T  R U N S  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+LongestRunOfOnes(int n)
+{
+	double			pval, chi2, pi[7];
+	int				run, v_n_obs, N, i, j, K, M, V[7];
+	unsigned int	nu[7] = { 0, 0, 0, 0, 0, 0, 0 };
+
+	if ( n < 128 ) {
+		fprintf(stats[TEST_LONGEST_RUN], "\t\t\t  LONGEST RUNS OF ONES TEST\n");
+		fprintf(stats[TEST_LONGEST_RUN], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_LONGEST_RUN], "\t\t   n=%d is too short\n", n);
+		return;
+	}
+	if ( n < 6272 ) {
+		K = 3;
+		M = 8;
+		V[0] = 1; V[1] = 2; V[2] = 3; V[3] = 4;
+		pi[0] = 0.21484375;
+		pi[1] = 0.3671875;
+		pi[2] = 0.23046875;
+		pi[3] = 0.1875;
+	}
+	else if ( n < 750000 ) {
+		K = 5;
+		M = 128;
+		V[0] = 4; V[1] = 5; V[2] = 6; V[3] = 7; V[4] = 8; V[5] = 9;
+		pi[0] = 0.1174035788;
+		pi[1] = 0.242955959;
+		pi[2] = 0.249363483;
+		pi[3] = 0.17517706;
+		pi[4] = 0.102701071;
+		pi[5] = 0.112398847;
+	}
+	else {
+		K = 6;
+		M = 10000;
+			V[0] = 10; V[1] = 11; V[2] = 12; V[3] = 13; V[4] = 14; V[5] = 15; V[6] = 16;
+		pi[0] = 0.0882;
+		pi[1] = 0.2092;
+		pi[2] = 0.2483;
+		pi[3] = 0.1933;
+		pi[4] = 0.1208;
+		pi[5] = 0.0675;
+		pi[6] = 0.0727;
+	}
+	
+	N = n/M;
+	for ( i=0; i<N; i++ ) {
+		v_n_obs = 0;
+		run = 0;
+		for ( j=0; j<M; j++ ) {
+			if ( epsilon[i*M+j] == 1 ) {
+				run++;
+				if ( run > v_n_obs )
+					v_n_obs = run;
+			}
+			else
+				run = 0;
+		}
+		if ( v_n_obs < V[0] )
+			nu[0]++;
+		for ( j=0; j<=K; j++ ) {
+			if ( v_n_obs == V[j] )
+				nu[j]++;
+		}
+		if ( v_n_obs > V[K] )
+			nu[K]++;
+	}
+
+	chi2 = 0.0;
+	for ( i=0; i<=K; i++ )
+		chi2 += ((nu[i] - N * pi[i]) * (nu[i] - N * pi[i])) / (N * pi[i]);
+
+	pval = cephes_igamc((double)(K/2.0), chi2 / 2.0);
+
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t\t  LONGEST RUNS OF ONES TEST\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t(a) N (# of substrings)  = %d\n", N);
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t(b) M (Substring Length) = %d\n", M);
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t(c) Chi^2                = %f\n", chi2);
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t      F R E Q U E N C Y\n");
+	fprintf(stats[TEST_LONGEST_RUN], "\t\t---------------------------------------------\n");
+
+	if ( K == 3 ) {
+		fprintf(stats[TEST_LONGEST_RUN], "\t\t  <=1     2     3    >=4   P-value  Assignment");
+		fprintf(stats[TEST_LONGEST_RUN], "\n\t\t %3d %3d %3d  %3d ", nu[0], nu[1], nu[2], nu[3]);
+	}
+	else if ( K == 5 ) {
+		fprintf(stats[TEST_LONGEST_RUN], "\t\t<=4  5  6  7  8  >=9 P-value  Assignment");
+		fprintf(stats[TEST_LONGEST_RUN], "\n\t\t %3d %3d %3d %3d %3d  %3d ", nu[0], nu[1], nu[2],
+				nu[3], nu[4], nu[5]);
+	}
+	else {
+		fprintf(stats[TEST_LONGEST_RUN],"\t\t<=10  11  12  13  14  15 >=16 P-value  Assignment");
+		fprintf(stats[TEST_LONGEST_RUN],"\n\t\t %3d %3d %3d %3d %3d %3d  %3d ", nu[0], nu[1], nu[2],
+				nu[3], nu[4], nu[5], nu[6]);
+	}
+	if ( isNegative(pval) || isGreaterThanOne(pval) )
+		fprintf(stats[TEST_LONGEST_RUN], "WARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+	fprintf(stats[TEST_LONGEST_RUN], "%s\t\tp_value = %f\n\n", pval < ALPHA ? "FAILURE" : "SUCCESS", pval);
+	fprintf(results[TEST_LONGEST_RUN], "%f\n", pval);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/math/erf.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,355 @@
+/*
+* Portions Copyright (c) 2006, 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* 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: 
+*/
+
+/* @(#)s_erf.c 5.1 93/09/24 */
+/*
+ * ====================================================
+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+ *
+ * Developed at SunPro, a Sun Microsystems, Inc. business.
+ * Permission to use, copy, modify, and distribute this
+ * software is freely granted, provided that this notice
+ * is preserved.
+ * ====================================================
+ */
+#ifndef __SYMBIAN32__
+#ifndef lint
+static char rcsid[] = "$FreeBSD: src/lib/msun/src/s_erf.c,v 1.7 2002/05/28 18:15:04 alfred Exp $";
+#endif
+#endif //__SYMBIAN32__
+
+#include <e32std.h>
+
+#include "openc.h"
+
+/* double erf(double x)
+ * double erfc(double x)
+ *               x
+ *            2      |\
+ *     erf(x)  =  ---------  | exp(-t*t)dt
+ *         sqrt(pi) \|
+ *               0
+ *
+ *     erfc(x) =  1-erf(x)
+ *  Note that
+ *      erf(-x) = -erf(x)
+ *      erfc(-x) = 2 - erfc(x)
+ *
+ * Method:
+ *  1. For |x| in [0, 0.84375]
+ *      erf(x)  = x + x*R(x^2)
+ *          erfc(x) = 1 - erf(x)           if x in [-.84375,0.25]
+ *                  = 0.5 + ((0.5-x)-x*R)  if x in [0.25,0.84375]
+ *     where R = P/Q where P is an odd poly of degree 8 and
+ *     Q is an odd poly of degree 10.
+ *                       -57.90
+ *          | R - (erf(x)-x)/x | <= 2
+ *
+ *
+ *     Remark. The formula is derived by noting
+ *          erf(x) = (2/sqrt(pi))*(x - x^3/3 + x^5/10 - x^7/42 + ....)
+ *     and that
+ *          2/sqrt(pi) = 1.128379167095512573896158903121545171688
+ *     is close to one. The interval is chosen because the fix
+ *     point of erf(x) is near 0.6174 (i.e., erf(x)=x when x is
+ *     near 0.6174), and by some experiment, 0.84375 is chosen to
+ *     guarantee the error is less than one ulp for erf.
+ *
+ *      2. For |x| in [0.84375,1.25], let s = |x| - 1, and
+ *         c = 0.84506291151 rounded to single (24 bits)
+ *          erf(x)  = sign(x) * (c  + P1(s)/Q1(s))
+ *          erfc(x) = (1-c)  - P1(s)/Q1(s) if x > 0
+ *            1+(c+P1(s)/Q1(s))    if x < 0
+ *          |P1/Q1 - (erf(|x|)-c)| <= 2**-59.06
+ *     Remark: here we use the taylor series expansion at x=1.
+ *      erf(1+s) = erf(1) + s*Poly(s)
+ *           = 0.845.. + P1(s)/Q1(s)
+ *     That is, we use rational approximation to approximate
+ *          erf(1+s) - (c = (single)0.84506291151)
+ *     Note that |P1/Q1|< 0.078 for x in [0.84375,1.25]
+ *     where
+ *      P1(s) = degree 6 poly in s
+ *      Q1(s) = degree 6 poly in s
+ *
+ *      3. For x in [1.25,1/0.35(~2.857143)],
+ *          erfc(x) = (1/x)*exp(-x*x-0.5625+R1/S1)
+ *          erf(x)  = 1 - erfc(x)
+ *     where
+ *      R1(z) = degree 7 poly in z, (z=1/x^2)
+ *      S1(z) = degree 8 poly in z
+ *
+ *      4. For x in [1/0.35,28]
+ *          erfc(x) = (1/x)*exp(-x*x-0.5625+R2/S2) if x > 0
+ *          = 2.0 - (1/x)*exp(-x*x-0.5625+R2/S2) if -6<x<0
+ *          = 2.0 - tiny        (if x <= -6)
+ *          erf(x)  = sign(x)*(1.0 - erfc(x)) if x < 6, else
+ *          erf(x)  = sign(x)*(1.0 - tiny)
+ *     where
+ *      R2(z) = degree 6 poly in z, (z=1/x^2)
+ *      S2(z) = degree 7 poly in z
+ *
+ *      Note1:
+ *     To compute exp(-x*x-0.5625+R/S), let s be a single
+ *     precision number and s := x; then
+ *      -x*x = -s*s + (s-x)*(s+x)
+ *          exp(-x*x-0.5626+R/S) =
+ *          exp(-s*s-0.5625)*exp((s-x)*(s+x)+R/S);
+ *      Note2:
+ *     Here 4 and 5 make use of the asymptotic series
+ *            exp(-x*x)
+ *      erfc(x) ~ ---------- * ( 1 + Poly(1/x^2) )
+ *            x*sqrt(pi)
+ *     We use rational approximation to approximate
+ *          g(s)=f(1/x^2) = log(erfc(x)*x) - x*x + 0.5625
+ *     Here is the error bound for R1/S1 and R2/S2
+ *          |R1/S1 - f(x)|  < 2**(-62.57)
+ *          |R2/S2 - f(x)|  < 2**(-61.52)
+ *
+ *      5. For inf > x >= 28
+ *          erf(x)  = sign(x) *(1 - tiny)  (raise inexact)
+ *          erfc(x) = tiny*tiny (raise underflow) if x > 0
+ *          = 2 - tiny if x<0
+ *
+ *      7. Special case:
+ *          erf(0)  = 0, erf(inf)  = 1, erf(-inf) = -1,
+ *          erfc(0) = 1, erfc(inf) = 0, erfc(-inf) = 2,
+ *      erfc/erf(NaN) is NaN
+ */
+
+
+
+
+
+////--------------------------------------------------
+
+#define __ieee754_exp   exp
+typedef TUint32 u_int32_t;
+typedef TInt32 int32_t;
+
+typedef union
+    {
+    double value;
+    struct
+        {
+        u_int32_t lsw;
+        u_int32_t msw;
+        } parts;
+    } ieee_double_shape_type;
+
+
+inline void GET_HIGH_WORD(int32_t& aHighWord, double aValue)
+    {
+    ieee_double_shape_type gh_u;
+    gh_u.value = aValue;
+    aHighWord = gh_u.parts.msw;                  
+    }
+    
+inline void SET_LOW_WORD(double& aValue, int32_t aLowWord)
+    {
+    ieee_double_shape_type sl_u;
+    sl_u.value = aValue;
+    sl_u.parts.lsw = aLowWord;
+    aValue = sl_u.value;
+    }
+
+//----------------------------------------------------------------math_private.h
+
+static const double tiny    = 1e-300;
+static const double tinySquare    = 0.00; // tiny * tiny 
+static const double half    = 5.00000000000000000000e-01; /* 0x3FE00000, 0x00000000 */
+static const double one     = 1.00000000000000000000e+00; /* 0x3FF00000, 0x00000000 */
+static const double two     = 2.00000000000000000000e+00; /* 0x40000000, 0x00000000 */
+    /* c = (float)0.84506291151 */
+static const double erx     = 8.45062911510467529297e-01; /* 0x3FEB0AC1, 0x60000000 */
+/*
+ * Coefficients for approximation to  erf on [0,0.84375]
+ */
+static const double efx     =  1.28379167095512586316e-01; /* 0x3FC06EBA, 0x8214DB69 */
+static const double efx8    =  1.02703333676410069053e+00; /* 0x3FF06EBA, 0x8214DB69 */
+static const double pp0     =  1.28379167095512558561e-01; /* 0x3FC06EBA, 0x8214DB68 */
+static const double pp1     = -3.25042107247001499370e-01; /* 0xBFD4CD7D, 0x691CB913 */
+static const double pp2     = -2.84817495755985104766e-02; /* 0xBF9D2A51, 0xDBD7194F */
+static const double pp3     = -5.77027029648944159157e-03; /* 0xBF77A291, 0x236668E4 */
+static const double pp4     = -2.37630166566501626084e-05; /* 0xBEF8EAD6, 0x120016AC */
+static const double qq1     =  3.97917223959155352819e-01; /* 0x3FD97779, 0xCDDADC09 */
+static const double qq2     =  6.50222499887672944485e-02; /* 0x3FB0A54C, 0x5536CEBA */
+static const double qq3     =  5.08130628187576562776e-03; /* 0x3F74D022, 0xC4D36B0F */
+static const double qq4     =  1.32494738004321644526e-04; /* 0x3F215DC9, 0x221C1A10 */
+static const double qq5     = -3.96022827877536812320e-06; /* 0xBED09C43, 0x42A26120 */
+/*
+ * Coefficients for approximation to  erf  in [0.84375,1.25]
+ */
+static const double pa0     = -2.36211856075265944077e-03; /* 0xBF6359B8, 0xBEF77538 */
+static const double pa1     =  4.14856118683748331666e-01; /* 0x3FDA8D00, 0xAD92B34D */
+static const double pa2     = -3.72207876035701323847e-01; /* 0xBFD7D240, 0xFBB8C3F1 */
+static const double pa3     =  3.18346619901161753674e-01; /* 0x3FD45FCA, 0x805120E4 */
+static const double pa4     = -1.10894694282396677476e-01; /* 0xBFBC6398, 0x3D3E28EC */
+static const double pa5     =  3.54783043256182359371e-02; /* 0x3FA22A36, 0x599795EB */
+static const double pa6     = -2.16637559486879084300e-03; /* 0xBF61BF38, 0x0A96073F */
+static const double qa1     =  1.06420880400844228286e-01; /* 0x3FBB3E66, 0x18EEE323 */
+static const double qa2     =  5.40397917702171048937e-01; /* 0x3FE14AF0, 0x92EB6F33 */
+static const double qa3     =  7.18286544141962662868e-02; /* 0x3FB2635C, 0xD99FE9A7 */
+static const double qa4     =  1.26171219808761642112e-01; /* 0x3FC02660, 0xE763351F */
+static const double qa5     =  1.36370839120290507362e-02; /* 0x3F8BEDC2, 0x6B51DD1C */
+static const double qa6     =  1.19844998467991074170e-02; /* 0x3F888B54, 0x5735151D */
+/*
+ * Coefficients for approximation to  erfc in [1.25,1/0.35]
+ */
+static const double ra0     = -9.86494403484714822705e-03; /* 0xBF843412, 0x600D6435 */
+static const double ra1     = -6.93858572707181764372e-01; /* 0xBFE63416, 0xE4BA7360 */
+static const double ra2     = -1.05586262253232909814e+01; /* 0xC0251E04, 0x41B0E726 */
+static const double ra3     = -6.23753324503260060396e+01; /* 0xC04F300A, 0xE4CBA38D */
+static const double ra4     = -1.62396669462573470355e+02; /* 0xC0644CB1, 0x84282266 */
+static const double ra5     = -1.84605092906711035994e+02; /* 0xC067135C, 0xEBCCABB2 */
+static const double ra6     = -8.12874355063065934246e+01; /* 0xC0545265, 0x57E4D2F2 */
+static const double ra7     = -9.81432934416914548592e+00; /* 0xC023A0EF, 0xC69AC25C */
+static const double sa1     =  1.96512716674392571292e+01; /* 0x4033A6B9, 0xBD707687 */
+static const double sa2     =  1.37657754143519042600e+02; /* 0x4061350C, 0x526AE721 */
+static const double sa3     =  4.34565877475229228821e+02; /* 0x407B290D, 0xD58A1A71 */
+static const double sa4     =  6.45387271733267880336e+02; /* 0x40842B19, 0x21EC2868 */
+static const double sa5     =  4.29008140027567833386e+02; /* 0x407AD021, 0x57700314 */
+static const double sa6     =  1.08635005541779435134e+02; /* 0x405B28A3, 0xEE48AE2C */
+static const double sa7     =  6.57024977031928170135e+00; /* 0x401A47EF, 0x8E484A93 */
+static const double sa8     = -6.04244152148580987438e-02; /* 0xBFAEEFF2, 0xEE749A62 */
+/*
+ * Coefficients for approximation to  erfc in [1/.35,28]
+ */
+static const double rb0     = -9.86494292470009928597e-03; /* 0xBF843412, 0x39E86F4A */
+static const double rb1     = -7.99283237680523006574e-01; /* 0xBFE993BA, 0x70C285DE */
+static const double rb2     = -1.77579549177547519889e+01; /* 0xC031C209, 0x555F995A */
+static const double rb3     = -1.60636384855821916062e+02; /* 0xC064145D, 0x43C5ED98 */
+static const double rb4     = -6.37566443368389627722e+02; /* 0xC083EC88, 0x1375F228 */
+static const double rb5     = -1.02509513161107724954e+03; /* 0xC0900461, 0x6A2E5992 */
+static const double rb6     = -4.83519191608651397019e+02; /* 0xC07E384E, 0x9BDC383F */
+static const double sb1     =  3.03380607434824582924e+01; /* 0x403E568B, 0x261D5190 */
+static const double sb2     =  3.25792512996573918826e+02; /* 0x40745CAE, 0x221B9F0A */
+static const double sb3     =  1.53672958608443695994e+03; /* 0x409802EB, 0x189D5118 */
+static const double sb4     =  3.19985821950859553908e+03; /* 0x40A8FFB7, 0x688C246A */
+static const double sb5     =  2.55305040643316442583e+03; /* 0x40A3F219, 0xCEDF3BE6 */
+static const double sb6     =  4.74528541206955367215e+02; /* 0x407DA874, 0xE79FE763 */
+static const double sb7     = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */
+
+double erf(double x)
+{
+    TInt32 hx,ix,i;
+    double R,S,P,Q,s,y,z,r;
+    GET_HIGH_WORD(hx,x);
+    ix = hx&0x7fffffff;
+    if(ix>=0x7ff00000) {        /* erf(nan)=nan */
+        i = ((TUint32)hx>>31)<<1;
+        return (double)(1-i)+one/x; /* erf(+-inf)=+-1 */
+    }
+
+    if(ix < 0x3feb0000) {       /* |x|<0.84375 */
+        if(ix < 0x3e300000) {   /* |x|<2**-28 */
+            if (ix < 0x00800000)
+            return 0.125*(8.0*x+efx8*x);  /*avoid underflow */
+        return x + efx*x;
+        }
+        z = x*x;
+        r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
+        s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
+        y = r/s;
+        return x + x*y;
+    }
+    if(ix < 0x3ff40000) {       /* 0.84375 <= |x| < 1.25 */
+        s = fabs(x)-one;
+        P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
+        Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
+        if(hx>=0) return erx + P/Q; else return -erx - P/Q;
+    }
+    if (ix >= 0x40180000) {     /* inf>|x|>=6 */
+        if(hx>=0) return one-tiny; else return tiny-one;
+    }
+    x = fabs(x);
+    s = one/(x*x);
+    if(ix< 0x4006DB6E) {    /* |x| < 1/0.35 */
+        R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
+                ra5+s*(ra6+s*ra7))))));
+        S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
+                sa5+s*(sa6+s*(sa7+s*sa8)))))));
+    } else {    /* |x| >= 1/0.35 */
+        R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
+                rb5+s*rb6)))));
+        S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
+                sb5+s*(sb6+s*sb7))))));
+    }
+    z  = x;
+    SET_LOW_WORD(z,0);
+    r  =  __ieee754_exp(-z*z-0.5625)*__ieee754_exp((z-x)*(z+x)+R/S);
+    if(hx>=0) return one-r/x; else return  r/x-one;
+}
+
+double erfc(double x)
+{
+    int32_t hx,ix;
+    double R,S,P,Q,s,y,z,r;
+    GET_HIGH_WORD(hx,x);
+    ix = hx&0x7fffffff;
+    if(ix>=0x7ff00000) {            /* erfc(nan)=nan */
+                        /* erfc(+-inf)=0,2 */
+        return (double)(((u_int32_t)hx>>31)<<1)+one/x;
+    }
+
+    if(ix < 0x3feb0000) {       /* |x|<0.84375 */
+        if(ix < 0x3c700000)     /* |x|<2**-56 */
+        return one-x;
+        z = x*x;
+        r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
+        s = one+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
+        y = r/s;
+        if(hx < 0x3fd00000) {   /* x<1/4 */
+        return one-(x+x*y);
+        } else {
+        r = x*y;
+        r += (x-half);
+            return half - r ;
+        }
+    }
+    if(ix < 0x3ff40000) {       /* 0.84375 <= |x| < 1.25 */
+        s = fabs(x)-one;
+        P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
+        Q = one+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
+        if(hx>=0) {
+            z  = one-erx; return z - P/Q;
+        } else {
+        z = erx+P/Q; return one+z;
+        }
+    }
+    if (ix < 0x403c0000) {      /* |x|<28 */
+        x = fabs(x);
+        s = one/(x*x);
+        if(ix< 0x4006DB6D) {    /* |x| < 1/.35 ~ 2.857143*/
+            R=ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
+                ra5+s*(ra6+s*ra7))))));
+            S=one+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
+                sa5+s*(sa6+s*(sa7+s*sa8)))))));
+        } else {            /* |x| >= 1/.35 ~ 2.857143 */
+        if(hx<0&&ix>=0x40180000) return two-tiny;/* x < -6 */
+            R=rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
+                rb5+s*rb6)))));
+            S=one+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
+                sb5+s*(sb6+s*sb7))))));
+        }
+        z  = x;
+        SET_LOW_WORD(z,0);
+        r  =  __ieee754_exp(-z*z-0.5625)*
+            __ieee754_exp((z-x)*(z+x)+R/S);
+        if(hx>0) return r/x; else return two-r/x;
+    } else {
+        if(hx>0) return tinySquare; else return two-tiny;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/matrix.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,189 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/matrix.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+R A N K  A L G O R I T H M  R O U T I N E S
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#define	MATRIX_FORWARD_ELIMINATION	0
+#define	MATRIX_BACKWARD_ELIMINATION	1
+
+int
+computeRank(int M, int Q, BitSequence **matrix)
+{
+	int		i, rank, m=MIN(M,Q);
+	
+	/* FORWARD APPLICATION OF ELEMENTARY ROW OPERATIONS */ 
+	for ( i=0; i<m-1; i++ ) {
+		if ( matrix[i][i] == 1 ) 
+			perform_elementary_row_operations(MATRIX_FORWARD_ELIMINATION, i, M, Q, matrix);
+		else { 	/* matrix[i][i] = 0 */
+			if ( find_unit_element_and_swap(MATRIX_FORWARD_ELIMINATION, i, M, Q, matrix) == 1 ) 
+				perform_elementary_row_operations(MATRIX_FORWARD_ELIMINATION, i, M, Q, matrix);
+		}
+	}
+
+	/* BACKWARD APPLICATION OF ELEMENTARY ROW OPERATIONS */ 
+	for ( i=m-1; i>0; i-- ) {
+		if ( matrix[i][i] == 1 )
+			perform_elementary_row_operations(MATRIX_BACKWARD_ELIMINATION, i, M, Q, matrix);
+		else { 	/* matrix[i][i] = 0 */
+			if ( find_unit_element_and_swap(MATRIX_BACKWARD_ELIMINATION, i, M, Q, matrix) == 1 )
+				perform_elementary_row_operations(MATRIX_BACKWARD_ELIMINATION, i, M, Q, matrix);
+		}
+	} 
+
+	rank = determine_rank(m, M, Q, matrix);
+
+	return rank;
+}
+
+void
+perform_elementary_row_operations(int flag, int i, int M, int Q, BitSequence **A)
+{
+	int		j, k;
+	
+	if ( flag == MATRIX_FORWARD_ELIMINATION ) {
+		for ( j=i+1; j<M;  j++ )
+			if ( A[j][i] == 1 ) 
+				for ( k=i; k<Q; k++ ) 
+					A[j][k] = (BitSequence)((A[j][k] + A[i][k]) % 2);
+	}
+	else {
+		for ( j=i-1; j>=0;  j-- )
+			if ( A[j][i] == 1 )
+				for ( k=0; k<Q; k++ )
+					A[j][k] = (BitSequence)((A[j][k] + A[i][k]) % 2);
+	}
+}
+
+int
+find_unit_element_and_swap(int flag, int i, int M, int Q, BitSequence **A)
+{ 
+	int		index, row_op=0;
+	
+	if ( flag == MATRIX_FORWARD_ELIMINATION ) {
+		index = i+1;
+		while ( (index < M) && (A[index][i] == 0) ) 
+			index++;
+			if ( index < M )
+				row_op = swap_rows(i, index, Q, A);
+	}
+	else {
+		index = i-1;
+		while ( (index >= 0) && (A[index][i] == 0) ) 
+			index--;
+			if ( index >= 0 )
+				row_op = swap_rows(i, index, Q, A);
+	}
+	
+	return row_op;
+}
+
+int
+swap_rows(int i, int index, int Q, BitSequence **A)
+{
+	int			p;
+	BitSequence	temp;
+	
+	for ( p=0; p<Q; p++ ) {
+		temp = A[i][p];
+		A[i][p] = A[index][p];
+		A[index][p] = temp;
+	}
+	
+	return 1;
+}
+
+int
+determine_rank(int m, int M, int Q, BitSequence **A)
+{
+	int		i, j, rank, allZeroes;
+	
+	/* DETERMINE RANK, THAT IS, COUNT THE NUMBER OF NONZERO ROWS */
+	
+	rank = m;
+	for ( i=0; i<M; i++ ) {
+		allZeroes = 1; 
+		for ( j=0; j<Q; j++)  {
+			if ( A[i][j] == 1 ) {
+				allZeroes = 0;
+				break;
+			}
+		}
+		if ( allZeroes == 1 )
+			rank--;
+	} 
+	
+	return rank;
+}
+
+BitSequence**
+create_matrix(int M, int Q)
+{
+	int			i;
+	BitSequence	**matrix;
+	
+	if ( (matrix = (BitSequence **) calloc(M, sizeof(BitSequence *))) == NULL ) {
+		printf("ERROR IN FUNCTION create_matrix:  Insufficient memory available.\n");
+		
+		return NULL;
+	}
+	else {
+		for ( i=0; i<M; i++ ) {
+			if ( (matrix[i] = (unsigned char*)calloc(Q, sizeof(BitSequence))) == NULL ) {
+				printf("ERROR IN FUNCTION create_matrix: Insufficient memory for %dx%d matrix.\n", M, M);
+
+				return NULL;
+			}
+		}
+		return matrix;
+	}
+}
+
+void
+def_matrix(int M, int Q, BitSequence **m,int k)
+{
+	int		i,j;
+	
+	for ( i=0; i<M; i++ ) 
+		for ( j=0; j<Q; j++ )
+			m[i][j] = epsilon[k*(M*Q)+j+i*M];
+}
+
+void
+delete_matrix(int M, BitSequence **matrix)
+{
+	int		i;
+
+	for ( i=0; i<M; i++ )
+		free(matrix[i]);
+	free(matrix);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/nonOverlappingTemplateMatchings.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,149 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/cephes.h"  
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+          N O N O V E R L A P P I N G  T E M P L A T E  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+NonOverlappingTemplateMatchings(int m, int n)
+{
+	int		numOfTemplates[100] = {0, 0, 2, 4, 6, 12, 20, 40, 74, 148, 284, 568, 1116,
+						2232, 4424, 8848, 17622, 35244, 70340, 140680, 281076, 562152};
+	/*----------------------------------------------------------------------------
+	NOTE:  Should additional templates lengths beyond 21 be desired, they must 
+	first be constructed, saved into files and then the corresponding 
+	number of nonperiodic templates for that file be stored in the m-th 
+	position in the numOfTemplates variable.
+	----------------------------------------------------------------------------*/
+	unsigned int	W_obs, *Wj = NULL; 
+	double			sum, chi2, p_value, lambda, pi[6], varWj;
+	int				i, j, jj, k, match, SKIP, M, N, K = 5;
+	
+	ResetTemplateIndex();
+
+	N = 8;
+	M = n/N;
+
+	if ( (Wj = (unsigned int*)calloc(N, sizeof(unsigned int))) == NULL ) {
+		fprintf(stats[TEST_NONPERIODIC], "\tNONOVERLAPPING TEMPLATES TESTS ABORTED DUE TO ONE OF THE FOLLOWING : \n");
+		fprintf(stats[TEST_NONPERIODIC], "\tInsufficient memory for required work space.\n");
+		return;
+	}
+	lambda = (M-m+1)/pow(2, m);
+	varWj = M*(1.0/pow(2.0, m) - (2.0*m-1.0)/pow(2.0, 2.0*m));
+
+	if ( isNegative(lambda) || isZero(lambda)) 
+	    {
+		fprintf(stats[TEST_NONPERIODIC], "\tNONOVERLAPPING TEMPLATES TESTS ABORTED DUE TO ONE OF THE FOLLOWING : \n");
+		fprintf(stats[TEST_NONPERIODIC], "\tLambda (%f) not being positive!\n", lambda);
+		}
+	else {
+		fprintf(stats[TEST_NONPERIODIC], "\t\t  NONPERIODIC TEMPLATES TEST\n");
+		fprintf(stats[TEST_NONPERIODIC], "-------------------------------------------------------------------------------------\n");
+		fprintf(stats[TEST_NONPERIODIC], "\t\t  COMPUTATIONAL INFORMATION\n");
+		fprintf(stats[TEST_NONPERIODIC], "-------------------------------------------------------------------------------------\n");
+		fprintf(stats[TEST_NONPERIODIC], "\tLAMBDA = %f\tM = %d\tN = %d\tm = %d\tn = %d\n", lambda, M, N, m, n);
+		fprintf(stats[TEST_NONPERIODIC], "-------------------------------------------------------------------------------------\n");
+		fprintf(stats[TEST_NONPERIODIC], "\t\tF R E Q U E N C Y\n");
+		fprintf(stats[TEST_NONPERIODIC], "Template   W_1  W_2  W_3  W_4  W_5  W_6  W_7  W_8    Chi^2   P_value Assignment Index\n");
+		fprintf(stats[TEST_NONPERIODIC], "-------------------------------------------------------------------------------------\n");
+
+		if ( numOfTemplates[m] < MAXNUMOFTEMPLATES )
+			SKIP = 1;
+		else
+			SKIP = (int)(numOfTemplates[m]/MAXNUMOFTEMPLATES);
+		numOfTemplates[m] = (int)numOfTemplates[m]/SKIP;
+		
+		sum = 0.0;
+		for ( i=0; i<2; i++ ) {                      /* Compute Probabilities */
+			pi[i] = exp(-lambda+i*log(lambda)-cephes_lgam(i+1));
+			sum += pi[i];
+		}
+		pi[0] = sum;
+		for ( i=2; i<=K; i++ ) {                      /* Compute Probabilities */
+			pi[i-1] = exp(-lambda+i*log(lambda)-cephes_lgam(i+1));
+			sum += pi[i-1];
+		}
+		pi[K] = 1 - sum;
+
+        BitSequence templateSequence[KMaxBit];
+
+        for( jj=0; jj<MIN(MAXNUMOFTEMPLATES, numOfTemplates[m]); jj++ ) {
+			sum = 0;
+            GetNextTemplateItem(templateSequence);
+
+			fprintf(stats[TEST_NONPERIODIC], " ");
+			for ( i=0; i<N; i++ ) {
+				W_obs = 0;
+				for ( j=0; j<M-m+1; j++ ) {
+					match = 1;
+					for ( k=0; k<m; k++ ) {
+					
+                    if ( (int)templateSequence[KMaxBit - k - 1] != (int)epsilon[i*M+j+k] ) {
+							match = 0;
+							break;
+						}
+					}
+					if ( match == 1 )
+						W_obs++;
+				}
+				Wj[i] = W_obs;
+			}
+			sum = 0;
+			chi2 = 0.0;                                   /* Compute Chi Square */
+			for ( i=0; i<N; i++ ) {
+				if ( m == 10 )
+					fprintf(stats[TEST_NONPERIODIC], "%3d  ", Wj[i]);
+				else
+					fprintf(stats[TEST_NONPERIODIC], "%4d ", Wj[i]);
+				chi2 += pow(((double)Wj[i] - lambda)/pow(varWj, 0.5), 2);
+			}
+			p_value = cephes_igamc(N/2.0, chi2/2.0);
+		
+			if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+				fprintf(stats[TEST_NONPERIODIC], "\t\tWARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+			fprintf(stats[TEST_NONPERIODIC], "%9.6f %f %s %3d\n", chi2, p_value, p_value < ALPHA ? "FAILURE" : "SUCCESS", jj);
+			if ( SKIP > 1 )
+			    {
+			    for(int index = 0; index < (SKIP-1)*2*m; ++index)
+			        {
+			        GetNextTemplateItem(templateSequence);
+			        }
+			    }
+			fprintf(results[TEST_NONPERIODIC], "%f\n", p_value);
+		}
+	}
+	
+	fprintf(stats[TEST_NONPERIODIC], "\n");
+	free(Wj);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/overlappingTemplateMatchings.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,132 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/cephes.h"  
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+               O V E R L A P P I N G  T E M P L A T E  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+double	Pr(int u, double eta);
+
+void
+OverlappingTemplateMatchings(int m, int n)
+{
+	int				i, k, match;
+	double			W_obs, eta, sum, chi2, p_value, lambda;
+	int				M, N, j, K = 5;
+	unsigned int	nu[6] = { 0, 0, 0, 0, 0, 0 };
+	double			pi[6] = { 0.143783, 0.139430, 0.137319, 0.124314, 0.106209, 0.348945 };
+	BitSequence		*sequence;
+
+	M = 1032;
+	N = n/M;
+	
+	if ( (sequence = (BitSequence *) calloc(m, sizeof(BitSequence))) == NULL ) {
+		fprintf(stats[TEST_OVERLAPPING], "\t\t    OVERLAPPING TEMPLATE OF ALL ONES TEST\n");
+		fprintf(stats[TEST_OVERLAPPING], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_OVERLAPPING], "\t\tTEMPLATE DEFINITION:  Insufficient memory, Overlapping Template Matchings test aborted!\n");
+	}
+	else
+		for ( i=0; i<m; i++ )
+			sequence[i] = 1;
+	
+	lambda = (double)(M-m+1)/pow(2,m);
+	eta = lambda/2.0;
+	sum = 0.0;
+	for ( i=0; i<K; i++ ) {			/* Compute Probabilities */
+		pi[i] = Pr(i, eta);
+		sum += pi[i];
+	}
+	pi[K] = 1 - sum;
+
+	for ( i=0; i<N; i++ ) {
+		W_obs = 0;
+		for ( j=0; j<M-m+1; j++ ) {
+			match = 1;
+			for ( k=0; k<m; k++ ) {
+				if ( sequence[k] != epsilon[i*M+j+k] )
+					match = 0;
+			}
+			if ( match == 1 )
+				W_obs++;
+		}
+		if ( W_obs <= 4 )
+			nu[(int)W_obs]++;
+		else
+			nu[K]++;
+	}
+	sum = 0;
+	chi2 = 0.0;                                   /* Compute Chi Square */
+	for ( i=0; i<K+1; i++ ) {
+		chi2 += pow((double)nu[i] - (double)N*pi[i], 2)/((double)N*pi[i]);
+		sum += nu[i];
+	}
+	p_value = cephes_igamc(K/2.0, chi2/2.0);
+
+	fprintf(stats[TEST_OVERLAPPING], "\t\t    OVERLAPPING TEMPLATE OF ALL ONES TEST\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t-----------------------------------------------\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t-----------------------------------------------\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(a) n (sequence_length)      = %d\n", n);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(b) m (block length of 1s)   = %d\n", m);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(c) M (length of substring)  = %d\n", M);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(d) N (number of substrings) = %d\n", N);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(e) lambda [(M-m+1)/2^m]     = %f\n", lambda);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t(f) eta                      = %f\n", eta);
+	fprintf(stats[TEST_OVERLAPPING], "\t\t-----------------------------------------------\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t   F R E Q U E N C Y\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t  0   1   2   3   4 >=5   Chi^2   P-value  Assignment\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t-----------------------------------------------\n");
+	fprintf(stats[TEST_OVERLAPPING], "\t\t%3d %3d %3d %3d %3d %3d  %f ",
+		nu[0], nu[1], nu[2], nu[3], nu[4], nu[5], chi2);
+
+	if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+		fprintf(stats[TEST_OVERLAPPING], "WARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+	free(sequence);
+	fprintf(stats[TEST_OVERLAPPING], "%f %s\n\n", p_value, p_value < ALPHA ? "FAILURE" : "SUCCESS");
+	fprintf(results[TEST_OVERLAPPING], "%f\n", p_value);
+}
+
+double
+Pr(int u, double eta)
+{
+	int		l;
+	double	sum, p;
+	
+	if ( u == 0 )
+		p = exp(-eta);
+	else {
+		sum = 0.0;
+		for ( l=1; l<=u; l++ )
+			sum += exp(-eta-u*log(2)+l*log(eta)-cephes_lgam(l+1)+cephes_lgam(u)-cephes_lgam(l)-cephes_lgam(u-l+1));
+		p = sum;
+	}
+	return p;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/randomExcursions.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,145 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"  
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                     R A N D O M  E X C U R S I O N S  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+RandomExcursions(int n)
+{
+	int		b, i, j, k, J, x;
+	int		cycleStart, cycleStop, *cycle = NULL, *S_k = NULL;
+	int		stateX[8] = { -4, -3, -2, -1, 1, 2, 3, 4 };
+	int		counter[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+	double	p_value, sum, constraint, nu[6][8];
+	double	pi[5][6] = { {0.0000000000, 0.00000000000, 0.00000000000, 0.00000000000, 0.00000000000, 0.0000000000}, 
+						 {0.5000000000, 0.25000000000, 0.12500000000, 0.06250000000, 0.03125000000, 0.0312500000},
+						 {0.7500000000, 0.06250000000, 0.04687500000, 0.03515625000, 0.02636718750, 0.0791015625},
+						 {0.8333333333, 0.02777777778, 0.02314814815, 0.01929012346, 0.01607510288, 0.0803755143},
+						 {0.8750000000, 0.01562500000, 0.01367187500, 0.01196289063, 0.01046752930, 0.0732727051} };
+	
+	if ( ((S_k = (int *)calloc(n, sizeof(int))) == NULL) ||
+		 ((cycle = (int *)calloc(MAX(1000, n/100), sizeof(int))) == NULL) ) {
+		printf("Random Excursions Test:  Insufficent Work Space Allocated.\n");
+		if ( S_k != NULL )
+			free(S_k);
+		if ( cycle != NULL )
+			free(cycle);
+		return;
+	}
+	
+	J = 0; 					/* DETERMINE CYCLES */
+	S_k[0] = 2*(int)epsilon[0] - 1;
+	for( i=1; i<n; i++ ) {
+		S_k[i] = S_k[i-1] + 2*epsilon[i] - 1;
+		if ( S_k[i] == 0 ) {
+			J++;
+			if ( J > MAX(1000, n/100) ) {
+				printf("ERROR IN FUNCTION randomExcursions:  EXCEEDING THE MAX NUMBER OF CYCLES EXPECTED\n.");
+				free(S_k);
+				free(cycle);
+				return;
+			}
+			cycle[J] = i;
+		}
+	}
+	if ( S_k[n-1] != 0 )
+		J++;
+	cycle[J] = n;
+
+	fprintf(stats[TEST_RND_EXCURSION], "\t\t\t  RANDOM EXCURSIONS TEST\n");
+	fprintf(stats[TEST_RND_EXCURSION], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_RND_EXCURSION], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_RND_EXCURSION], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_RND_EXCURSION], "\t\t(a) Number Of Cycles (J) = %04d\n", J);
+	fprintf(stats[TEST_RND_EXCURSION], "\t\t(b) Sequence Length (n)  = %d\n", n);
+
+	constraint = MAX(0.005*pow(n, 0.5), 500);
+	if (J < constraint) {
+		fprintf(stats[TEST_RND_EXCURSION], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_RND_EXCURSION], "\t\tWARNING:  TEST NOT APPLICABLE.  THERE ARE AN\n");
+		fprintf(stats[TEST_RND_EXCURSION], "\t\t\t  INSUFFICIENT NUMBER OF CYCLES.\n");
+		fprintf(stats[TEST_RND_EXCURSION], "\t\t---------------------------------------------\n");
+		for(i = 0; i < 8; i++)
+			fprintf(results[TEST_RND_EXCURSION], "%f\n", 0.0);
+	}
+	else {
+		fprintf(stats[TEST_RND_EXCURSION], "\t\t(c) Rejection Constraint = %f\n", constraint);
+		fprintf(stats[TEST_RND_EXCURSION], "\t\t-------------------------------------------\n");
+
+		cycleStart = 0;
+		cycleStop  = cycle[1];
+		for ( k=0; k<6; k++ )
+			for ( i=0; i<8; i++ )
+				nu[k][i] = 0.;
+		for ( j=1; j<=J; j++ ) {                           /* FOR EACH CYCLE */
+			for ( i=0; i<8; i++ )
+				counter[i] = 0;
+			for ( i=cycleStart; i<cycleStop; i++ ) {
+				if ( (S_k[i] >= 1 && S_k[i] <= 4) || (S_k[i] >= -4 && S_k[i] <= -1) ) {
+					if ( S_k[i] < 0 )
+						b = 4;
+					else
+						b = 3;
+					counter[S_k[i]+b]++;
+				}
+			}
+			cycleStart = cycle[j]+1;
+			if ( j < J )
+				cycleStop = cycle[j+1];
+			
+			for ( i=0; i<8; i++ ) {
+				if ( (counter[i] >= 0) && (counter[i] <= 4) )
+					nu[counter[i]][i]++;
+				else if ( counter[i] >= 5 )
+					nu[5][i]++;
+			}
+		}
+		
+		for ( i=0; i<8; i++ ) {
+			x = stateX[i];
+			sum = 0.;
+			for ( k=0; k<6; k++ )
+				sum += pow(nu[k][i] - J*pi[(int)fabs(x)][k], 2) / (J*pi[(int)fabs(x)][k]);
+			p_value = cephes_igamc(2.5, sum/2.0);
+			
+			if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+				fprintf(stats[TEST_RND_EXCURSION], "WARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+			fprintf(stats[TEST_RND_EXCURSION], "%s\t\tx = %2d chi^2 = %9.6f p_value = %f\n",
+					p_value < ALPHA ? "FAILURE" : "SUCCESS", x, sum, p_value);
+			fprintf(results[TEST_RND_EXCURSION], "%f\n", p_value);
+		}
+	} 
+	fprintf(stats[TEST_RND_EXCURSION], "\n");
+	free(S_k);
+	free(cycle);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/randomExcursionsVariant.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,90 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+            R A N D O M  E X C U R S I O N S  V A R I A N T  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+RandomExcursionsVariant(int n)
+{
+	int		i, p, J, x, constraint, count, *S_k;
+	int		stateX[18] = { -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+	double	p_value;
+	
+	if ( (S_k = (int *)calloc(n, sizeof(int))) == NULL ) {
+		fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\tRANDOM EXCURSIONS VARIANT: Insufficent memory allocated.\n");
+		return;
+	}
+	J = 0;
+	S_k[0] = 2*(int)epsilon[0] - 1;
+	for ( i=1; i<n; i++ ) {
+		S_k[i] = S_k[i-1] + 2*epsilon[i] - 1;
+		if ( S_k[i] == 0 )
+			J++;
+	}
+	if ( S_k[n-1] != 0 )
+		J++;
+
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t\tRANDOM EXCURSIONS VARIANT TEST\n");
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t(a) Number Of Cycles (J) = %d\n", J);
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t(b) Sequence Length (n)  = %d\n", n);
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t--------------------------------------------\n");
+
+	constraint = (int)MAX(0.005*pow(n, 0.5), 500);
+	if (J < constraint) {
+		fprintf(stats[TEST_RND_EXCURSION_VAR], "\n\t\tWARNING:  TEST NOT APPLICABLE.  THERE ARE AN\n");
+		fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t\t  INSUFFICIENT NUMBER OF CYCLES.\n");
+		fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t---------------------------------------------\n");
+		for ( i=0; i<18; i++ )
+			fprintf(results[TEST_RND_EXCURSION_VAR], "%f\n", 0.0);
+	}
+	else {
+		for ( p=0; p<=17; p++ ) {
+			x = stateX[p];
+			count = 0;
+			for ( i=0; i<n; i++ )
+				if ( S_k[i] == x )
+					count++;
+			p_value = erfc(fabs(count-J)/(sqrt(2.0*J*(4.0*fabs(x)-2))));
+
+			if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+				fprintf(stats[TEST_RND_EXCURSION_VAR], "\t\t(b) WARNING: P_VALUE IS OUT OF RANGE.\n");
+			fprintf(stats[TEST_RND_EXCURSION_VAR], "%s\t\t", p_value < ALPHA ? "FAILURE" : "SUCCESS");
+			fprintf(stats[TEST_RND_EXCURSION_VAR], "(x = %2d) Total visits = %4d; p-value = %f\n", x, count, p_value);
+			fprintf(results[TEST_RND_EXCURSION_VAR], "%f\n", p_value);
+		}
+	}
+	fprintf(stats[TEST_RND_EXCURSION_VAR], "\n");
+	free(S_k);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/rank.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,111 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"
+#include "../include/matrix.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                              R A N K  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+Rank(int n)
+{
+	int			N, i, k, r;
+	double		p_value, product, chi_squared, arg1, p_32, p_31, p_30, R, F_32, F_31, F_30;
+	
+	N = n/(32*32);
+	if ( isZero(N) ) {
+		fprintf(stats[TEST_RANK], "\t\t\t\tRANK TEST\n");
+		fprintf(stats[TEST_RANK], "\t\tError: Insuffucient # Of Bits To Define An 32x32 (%dx%d) Matrix\n", 32, 32);
+		p_value = 0.00;
+	}
+	else {
+        BitSequence **matrix = create_matrix(32, 32);
+		
+        r = 32;					/* COMPUTE PROBABILITIES */
+		product = 1;
+		for ( i=0; i<=r-1; i++ )
+			product *= ((1.e0-pow(2, i-32))*(1.e0-pow(2, i-32)))/(1.e0-pow(2, i-r));
+		p_32 = pow(2, r*(32+32-r)-32*32) * product;
+		
+		r = 31;
+		product = 1;
+		for ( i=0; i<=r-1; i++ )
+			product *= ((1.e0-pow(2, i-32))*(1.e0-pow(2, i-32)))/(1.e0-pow(2, i-r));
+		p_31 = pow(2, r*(32+32-r)-32*32) * product;
+		
+		p_30 = 1 - (p_32+p_31);
+		
+		F_32 = 0;
+		F_31 = 0;
+		for ( k=0; k<N; k++ ) {			/* FOR EACH 32x32 MATRIX   */
+			def_matrix(32, 32, matrix, k);
+#if (DISPLAY_MATRICES == 1)
+			display_matrix(32, 32, matrix);
+#endif
+			R = computeRank(32, 32, matrix);
+			if ( R == 32 )
+				F_32++;			/* DETERMINE FREQUENCIES */
+			if ( R == 31 )
+				F_31++;
+		}
+		F_30 = (double)N - (F_32+F_31);
+		
+		chi_squared =(pow(F_32 - N*p_32, 2)/(double)(N*p_32) +
+					  pow(F_31 - N*p_31, 2)/(double)(N*p_31) +
+					  pow(F_30 - N*p_30, 2)/(double)(N*p_30));
+		
+		arg1 = -chi_squared/2.e0;
+
+		fprintf(stats[TEST_RANK], "\t\t\t\tRANK TEST\n");
+		fprintf(stats[TEST_RANK], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_RANK], "\t\tCOMPUTATIONAL INFORMATION:\n");
+		fprintf(stats[TEST_RANK], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_RANK], "\t\t(a) Probability P_%d = %f\n", 32,p_32);
+		fprintf(stats[TEST_RANK], "\t\t(b)             P_%d = %f\n", 31,p_31);
+		fprintf(stats[TEST_RANK], "\t\t(c)             P_%d = %f\n", 30,p_30);
+		fprintf(stats[TEST_RANK], "\t\t(d) Frequency   F_%d = %d\n", 32,(int)F_32);
+		fprintf(stats[TEST_RANK], "\t\t(e)             F_%d = %d\n", 31,(int)F_31);
+		fprintf(stats[TEST_RANK], "\t\t(f)             F_%d = %d\n", 30,(int)F_30);
+		fprintf(stats[TEST_RANK], "\t\t(g) # of matrices    = %d\n", N);
+		fprintf(stats[TEST_RANK], "\t\t(h) Chi^2            = %f\n", chi_squared);
+		fprintf(stats[TEST_RANK], "\t\t(i) NOTE: %d BITS WERE DISCARDED.\n", n%(32*32));
+		fprintf(stats[TEST_RANK], "\t\t---------------------------------------------\n");
+
+		p_value = exp(arg1);
+		if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+			fprintf(stats[TEST_RANK], "WARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+		for ( i=0; i<32; i++ )				/* DEALLOCATE MATRIX  */
+			free(matrix[i]);
+		free(matrix);
+	}
+	fprintf(stats[TEST_RANK], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	fprintf(results[TEST_RANK], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/runs.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,80 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                              R U N S  T E S T 
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+Runs(int n)
+{
+	int		S, k;
+	double	pi, V, erfc_arg, p_value;
+
+	S = 0;
+	for ( k=0; k<n; k++ )
+		if ( epsilon[k] )
+			S++;
+	pi = (double)S / (double)n;
+
+	if ( fabs(pi - 0.5) > (2.0 / sqrt(n)) ) {
+		fprintf(stats[TEST_RUNS], "\t\t\t\tRUNS TEST\n");
+		fprintf(stats[TEST_RUNS], "\t\t------------------------------------------\n");
+		fprintf(stats[TEST_RUNS], "\t\tPI ESTIMATOR CRITERIA NOT MET! PI = %f\n", pi);
+		p_value = 0.0;
+	}
+	else {
+
+		V = 1;
+		for ( k=1; k<n; k++ )
+			if ( epsilon[k] != epsilon[k-1] )
+				V++;
+	
+		erfc_arg = fabs(V - 2.0 * n * pi * (1-pi)) / (2.0 * pi * (1-pi) * sqrt(2*n));
+		p_value = erfc(erfc_arg);
+		
+		fprintf(stats[TEST_RUNS], "\t\t\t\tRUNS TEST\n");
+		fprintf(stats[TEST_RUNS], "\t\t------------------------------------------\n");
+		fprintf(stats[TEST_RUNS], "\t\tCOMPUTATIONAL INFORMATION:\n");
+		fprintf(stats[TEST_RUNS], "\t\t------------------------------------------\n");
+		fprintf(stats[TEST_RUNS], "\t\t(a) Pi                        = %f\n", pi);
+		fprintf(stats[TEST_RUNS], "\t\t(b) V_n_obs (Total # of runs) = %d\n", (int)V);
+		fprintf(stats[TEST_RUNS], "\t\t(c) V_n_obs - 2 n pi (1-pi)\n");
+		fprintf(stats[TEST_RUNS], "\t\t    -----------------------   = %f\n", erfc_arg);
+		fprintf(stats[TEST_RUNS], "\t\t      2 sqrt(2n) pi (1-pi)\n");
+		fprintf(stats[TEST_RUNS], "\t\t------------------------------------------\n");
+		if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+			fprintf(stats[TEST_RUNS], "WARNING:  P_VALUE IS OUT OF RANGE.\n");
+
+		fprintf(stats[TEST_RUNS], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);
+	}
+
+	fprintf(results[TEST_RUNS], "%f\n", p_value);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/serial.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,101 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/cephes.h"  
+
+double psi2(int m, int n);
+
+void
+Serial(int m, int n)
+{
+	double	p_value1, p_value2, psim0, psim1, psim2, del1, del2;
+	
+	psim0 = psi2(m, n);
+	psim1 = psi2(m-1, n);
+	psim2 = psi2(m-2, n);
+	del1 = psim0 - psim1;
+	del2 = psim0 - 2.0*psim1 + psim2;
+	p_value1 = cephes_igamc(pow(2, m-1)/2, del1/2.0);
+	p_value2 = cephes_igamc(pow(2, m-2)/2, del2/2.0);
+	
+	fprintf(stats[TEST_SERIAL], "\t\t\t       SERIAL TEST\n");
+	fprintf(stats[TEST_SERIAL], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_SERIAL], "\t\t COMPUTATIONAL INFORMATION:		  \n");
+	fprintf(stats[TEST_SERIAL], "\t\t---------------------------------------------\n");
+	fprintf(stats[TEST_SERIAL], "\t\t(a) Block length    (m) = %d\n", m);
+	fprintf(stats[TEST_SERIAL], "\t\t(b) Sequence length (n) = %d\n", n);
+	fprintf(stats[TEST_SERIAL], "\t\t(c) Psi_m               = %f\n", psim0);
+	fprintf(stats[TEST_SERIAL], "\t\t(d) Psi_m-1             = %f\n", psim1);
+	fprintf(stats[TEST_SERIAL], "\t\t(e) Psi_m-2             = %f\n", psim2);
+	fprintf(stats[TEST_SERIAL], "\t\t(f) Del_1               = %f\n", del1);
+	fprintf(stats[TEST_SERIAL], "\t\t(g) Del_2               = %f\n", del2);
+	fprintf(stats[TEST_SERIAL], "\t\t---------------------------------------------\n");
+
+	fprintf(stats[TEST_SERIAL], "%s\t\tp_value1 = %f\n", p_value1 < ALPHA ? "FAILURE" : "SUCCESS", p_value1);
+	fprintf(results[TEST_SERIAL], "%f\n", p_value1);
+
+	fprintf(stats[TEST_SERIAL], "%s\t\tp_value2 = %f\n\n", p_value2 < ALPHA ? "FAILURE" : "SUCCESS", p_value2);
+	fprintf(results[TEST_SERIAL], "%f\n", p_value2);
+}
+
+double
+psi2(int m, int n)
+{
+	int				i, j, k, powLen;
+	double			sum, numOfBlocks;
+	unsigned int	*P;
+	
+	if ( (m == 0) || (m == -1) )
+		return 0.0;
+	numOfBlocks = n;
+	powLen = (int)pow(2, m+1)-1;
+	if ( (P = (unsigned int*)calloc(powLen,sizeof(unsigned int)))== NULL ) {
+		fprintf(stats[TEST_SERIAL], "Serial Test:  Insufficient memory available.\n");
+		fflush(stats[TEST_SERIAL]);
+		return 0.0;
+	}
+	for ( i=1; i<powLen-1; i++ )
+		P[i] = 0;	  /* INITIALIZE NODES */
+	for ( i=0; i<numOfBlocks; i++ ) {		 /* COMPUTE FREQUENCY */
+		k = 1;
+		for ( j=0; j<m; j++ ) {
+			if ( epsilon[(i+j)%n] == 0 )
+				k *= 2;
+			else if ( epsilon[(i+j)%n] == 1 )
+				k = 2*k+1;
+		}
+		P[k-1]++;
+	}
+	sum = 0.0;
+	for ( i=(int)pow(2, m)-1; i<(int)pow(2, m+1)-1; i++ )
+		sum += pow(P[i], 2);
+	sum = (sum * pow(2, m)/(double)n) - (double)n;
+	free(P);
+	
+	return sum;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/universal.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,125 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/cephes.h"
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+                         U N I V E R S A L  T E S T
+ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+void
+Universal(int n)
+{
+	int		i, j, p, L, Q, K;
+	double	arg, sqrt2, sigma, phi, sum, p_value, c;
+	long	*T, decRep;
+	double	expected_value[17] = { 0, 0, 0, 0, 0, 0, 5.2177052, 6.1962507, 7.1836656,
+				8.1764248, 9.1723243, 10.170032, 11.168765,
+				12.168070, 13.167693, 14.167488, 15.167379 };
+	double   variance[17] = { 0, 0, 0, 0, 0, 0, 2.954, 3.125, 3.238, 3.311, 3.356, 3.384,
+				3.401, 3.410, 3.416, 3.419, 3.421 };
+	
+	/* * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+	 * THE FOLLOWING REDEFINES L, SHOULD THE CONDITION:     n >= 1010*2^L*L       *
+	 * NOT BE MET, FOR THE BLOCK LENGTH L.                                        *
+	 * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+	L = 5;
+	if ( n >= 387840 )     L = 6;
+	if ( n >= 904960 )     L = 7;
+	if ( n >= 2068480 )    L = 8;
+	if ( n >= 4654080 )    L = 9;
+	if ( n >= 10342400 )   L = 10;
+	if ( n >= 22753280 )   L = 11;
+	if ( n >= 49643520 )   L = 12;
+	if ( n >= 107560960 )  L = 13;
+	if ( n >= 231669760 )  L = 14;
+	if ( n >= 496435200 )  L = 15;
+	if ( n >= 1059061760 ) L = 16;
+	
+	Q = 10*(int)pow(2, L);
+	K = (int) (floor(n/L) - (double)Q);	 		    /* BLOCKS TO TEST */
+	
+	p = (int)pow(2, L);
+	if ( (L < 6) || (L > 16) || ((double)Q < 10*pow(2, L)) ||
+		 ((T = (long *)calloc(p, sizeof(long))) == NULL) ) {
+		fprintf(stats[TEST_UNIVERSAL], "\t\tUNIVERSAL STATISTICAL TEST\n");
+		fprintf(stats[TEST_UNIVERSAL], "\t\t---------------------------------------------\n");
+		fprintf(stats[TEST_UNIVERSAL], "\t\tERROR:  L IS OUT OF RANGE.\n");
+		fprintf(stats[TEST_UNIVERSAL], "\t\t-OR- :  Q IS LESS THAN %f.\n", 10*pow(2, L));
+		fprintf(stats[TEST_UNIVERSAL], "\t\t-OR- :  Unable to allocate T.\n");
+		return;
+	}
+	
+	/* COMPUTE THE EXPECTED:  Formula 16, in Marsaglia's Paper */
+	c = 0.7 - 0.8/(double)L + (4 + 32/(double)L)*pow(K, -3/(double)L)/15;
+	sigma = c * sqrt(variance[L]/(double)K);
+	sqrt2 = sqrt(2);
+	sum = 0.0;
+	for ( i=0; i<p; i++ )
+		T[i] = 0;
+	for ( i=1; i<=Q; i++ ) {		/* INITIALIZE TABLE */
+		decRep = 0;
+		for ( j=0; j<L; j++ )
+			decRep += epsilon[(i-1)*L+j] * (long)pow(2, L-1-j);
+		T[decRep] = i;
+	}
+	for ( i=Q+1; i<=Q+K; i++ ) { 	/* PROCESS BLOCKS */
+		decRep = 0;
+		for ( j=0; j<L; j++ )
+			decRep += epsilon[(i-1)*L+j] * (long)pow(2, L-1-j);
+		sum += log(i - T[decRep])/log(2);
+		T[decRep] = i;
+	}
+	phi = (double)(sum/(double)K);
+
+	fprintf(stats[TEST_UNIVERSAL], "\t\tUNIVERSAL STATISTICAL TEST\n");
+	fprintf(stats[TEST_UNIVERSAL], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_UNIVERSAL], "\t\tCOMPUTATIONAL INFORMATION:\n");
+	fprintf(stats[TEST_UNIVERSAL], "\t\t--------------------------------------------\n");
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(a) L         = %d\n", L);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(b) Q         = %d\n", Q);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(c) K         = %d\n", K);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(d) sum       = %f\n", sum);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(e) sigma     = %f\n", sigma);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(f) variance  = %f\n", variance[L]);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(g) exp_value = %f\n", expected_value[L]);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(h) phi       = %f\n", phi);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t(i) WARNING:  %d bits were discarded.\n", n-(Q+K)*L);
+	fprintf(stats[TEST_UNIVERSAL], "\t\t-----------------------------------------\n");
+
+	arg = fabs(phi-expected_value[L])/(sqrt2 * sigma);
+	p_value = erfc(arg);
+	if ( isNegative(p_value) || isGreaterThanOne(p_value) )
+		fprintf(stats[TEST_UNIVERSAL], "\t\tWARNING:  P_VALUE IS OUT OF RANGE\n");
+
+	fprintf(stats[TEST_UNIVERSAL], "%s\t\tp_value = %f\n\n", p_value < ALPHA ? "FAILURE" : "SUCCESS", p_value);    
+	fprintf(results[TEST_UNIVERSAL], "%f\n", p_value);
+	
+	free(T);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/utilities.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,637 @@
+/*
+* Portions Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+* The original NIST Statistical Test Suite code is placed in public domain.
+* (http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html) 
+* 
+* This software was developed at the National Institute of Standards and Technology by 
+* employees of the Federal Government in the course of their official duties. Pursuant
+* to title 17 Section 105 of the United States Code this software is not subject to 
+* copyright protection and is in the public domain. The NIST Statistical Test Suite is
+* an experimental system. NIST assumes no responsibility whatsoever for its use by other 
+* parties, and makes no guarantees, expressed or implied, about its quality, reliability, 
+* or any other characteristic. We would appreciate acknowledgment if the software is used.
+*/
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+U T I L I T I E S
+* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+
+#include "openc.h"
+#include "../include/externs.h"
+#include "../include/utilities.h"
+#include "../include/generators.h"
+#include "../include/stat_fncs.h"
+
+
+TBuf8<KMaxFileName> gLogFilePath;
+TInt                gTemplateIndex = 1;
+
+bool ConvertToAperiodicBits(BitSequence aSequence[32], long value);
+
+
+int
+displayGeneratorOptions()
+{
+	int		option = 0;
+
+	printf("           G E N E R A T O R    S E L E C T I O N \n");
+	printf("           ______________________________________\n\n");
+	printf("    [0] Input File                 [1] Linear Congruential\n");
+	printf("    [2] Quadratic Congruential I   [3] Quadratic Congruential II\n");
+	printf("    [4] Cubic Congruential         [5] XOR\n");
+	printf("    [6] Modular Exponentiation     [7] Blum-Blum-Shub\n");
+	printf("    [8] Micali-Schnorr             [9] G Using SHA-1\n\n");
+	printf("   Enter Choice: ");
+	scanf("%d", &option);
+	printf("\n\n");
+
+	return option;
+}
+
+
+int
+generatorOptions(char** streamFile)
+{
+	char	file[200];
+	int		option = NUMOFGENERATORS+1; 
+	
+	while ( (option < 0) || (option > NUMOFGENERATORS) ) {
+		option = displayGeneratorOptions();
+		switch( option ) {
+			case 0:
+				printf("\t\tUser Prescribed Input File: ");
+				scanf("%s", file);
+				*streamFile = (char*)calloc(200, sizeof(char));
+				sprintf(*streamFile, "%s", file);
+				printf("\n");
+				break;
+			case 1:
+				*streamFile = "Linear-Congruential";
+				break;
+			case 2:
+				*streamFile = "Quadratic-Congruential-1";
+				break;
+			case 3:
+				*streamFile = "Quadratic-Congruential-2";
+				break;
+			case 4:
+				*streamFile = "Cubic-Congruential";
+				break;
+			case 5:
+				*streamFile = "XOR";
+				break;
+			case 6:
+				*streamFile = "Modular-Exponentiation";
+				break;
+			case 7:
+				*streamFile = "Blum-Blum-Shub";
+				break;
+			case 8:
+				*streamFile = "Micali-Schnorr";
+				break;
+			case 9:
+				*streamFile = "G using SHA-1";
+				break;
+				
+			/* INTRODUCE NEW PRNG NAMES HERE */
+			/*
+			case 10:  *streamFile = "myNewPRNG";
+				break;
+			*/
+			default:
+				printf("Error:  Out of range - Try again!\n");
+				break;
+		}
+	}
+	return option;
+}
+
+
+void
+chooseTests()
+{
+	int		i;
+	
+	printf("                S T A T I S T I C A L   T E S T S\n");
+	printf("                _________________________________\n\n");
+	printf("    [01] Frequency                       [02] Block Frequency\n");
+	printf("    [03] Cumulative Sums                 [04] Runs\n");
+	printf("    [05] Longest Run of Ones             [06] Rank\n");
+	printf("    [07] Discrete Fourier Transform      [08] Nonperiodic Template Matchings\n");
+	printf("    [09] Overlapping Template Matchings  [10] Universal Statistical\n");
+	printf("    [11] Approximate Entropy             [12] Random Excursions\n");
+	printf("    [13] Random Excursions Variant       [14] Serial\n");
+	printf("    [15] Linear Complexity\n\n");
+	printf("         INSTRUCTIONS\n");
+	printf("            Enter 0 if you DO NOT want to apply all of the\n");
+	printf("            statistical tests to each sequence and 1 if you DO.\n\n");
+	printf("   Enter Choice: ");
+	scanf("%d", &testVector[0]);
+	printf("\n");
+	if ( testVector[0] == 1 )
+	    {
+		for( i=1; i<=NUMOFTESTS; i++ )
+			testVector[i] = 1;
+		
+		// Disable Fast Fourier Transform Test.
+		// NIST has discovered a problem with the Fast Fourier Transform test. 
+		// At this time NIST advises disregarding the results of this test until 
+		// a further update is posted.
+		// Link: http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html
+		//
+		// When the FFT test is fixed remove the following 5 lines.
+		printf(" Please Note: \n");
+		printf(" NIST has discovered a problem with the DFT test and hence the DFT results are invalid currently.\n");
+		printf(" DFT test will be disabled at the momemt in the NIST test suite run \n \n");        
+		testVector[TEST_FFT] = 0; 
+		testVector[0] = 0; 
+	    }
+	else {
+		printf("         INSTRUCTIONS\n");
+		printf("            Enter a 0 or 1 to indicate whether or not the numbered statistical\n");
+		printf("            test should be applied to each sequence.\n\n");
+		printf("      123456789111111\n");
+		printf("               012345\n");
+		printf("      ");
+        for ( i=1; i<=NUMOFTESTS; i++ ) 
+            scanf("%1d", &testVector[i]);
+        printf("\n\n");
+    }
+}
+
+
+void
+fixParameters()
+{
+	int		counter, testid;
+	
+	//  Check to see if any parameterized tests are selected
+	if ( (testVector[TEST_BLOCK_FREQUENCY] != 1) && (testVector[TEST_NONPERIODIC] != 1) && 
+		 (testVector[TEST_OVERLAPPING] != 1) && (testVector[TEST_APEN] != 1) &&
+		 (testVector[TEST_SERIAL] != 1) && (testVector[TEST_LINEARCOMPLEXITY] != 1) )
+			return;
+		
+	do {
+		counter = 1;
+		printf("        P a r a m e t e r   A d j u s t m e n t s\n");
+		printf("        -----------------------------------------\n");
+		if ( testVector[TEST_BLOCK_FREQUENCY] == 1 )
+			printf("    [%d] Block Frequency Test - block length(M):         %d\n", counter++, tp.blockFrequencyBlockLength);
+		if ( testVector[TEST_NONPERIODIC] == 1 )
+			printf("    [%d] NonOverlapping Template Test - block length(m): %d\n", counter++, tp.nonOverlappingTemplateBlockLength);
+		if ( testVector[TEST_OVERLAPPING] == 1 )
+			printf("    [%d] Overlapping Template Test - block length(m):    %d\n", counter++, tp.overlappingTemplateBlockLength);
+		if ( testVector[TEST_APEN] == 1 )
+			printf("    [%d] Approximate Entropy Test - block length(m):     %d\n", counter++, tp.approximateEntropyBlockLength);
+		if ( testVector[TEST_SERIAL] == 1 )
+			printf("    [%d] Serial Test - block length(m):                  %d\n", counter++, tp.serialBlockLength);
+		if ( testVector[TEST_LINEARCOMPLEXITY] == 1 )
+			printf("    [%d] Linear Complexity Test - block length(M):       %d\n", counter++, tp.linearComplexitySequenceLength);
+		printf("\n");
+		printf("   Select Test (0 to continue): ");
+		scanf("%1d", &testid);
+		printf("\n");
+		
+		counter = 0;
+		if ( testVector[TEST_BLOCK_FREQUENCY] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter Block Frequency Test block length: ");
+				scanf("%d", &tp.blockFrequencyBlockLength);
+				printf("\n");
+				continue;
+			}
+		}
+		if ( testVector[TEST_NONPERIODIC] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter NonOverlapping Template Test block Length: ");
+				scanf("%d", &tp.nonOverlappingTemplateBlockLength);
+				printf("\n");
+				continue;
+			}
+		}
+		if ( testVector[TEST_OVERLAPPING] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter Overlapping Template Test block Length: ");
+				scanf("%d", &tp.overlappingTemplateBlockLength);
+				printf("\n");
+				continue;
+			}
+		}
+		if ( testVector[TEST_APEN] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter Approximate Entropy Test block Length: ");
+				scanf("%d", &tp.approximateEntropyBlockLength);
+				printf("\n");
+				continue;
+			}
+		}
+		if ( testVector[TEST_SERIAL] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter Serial Test block Length: ");
+				scanf("%d", &tp.serialBlockLength);
+				printf("\n");
+				continue;
+			}
+		}
+		if ( testVector[TEST_LINEARCOMPLEXITY] == 1 ) {
+			counter++;
+			if ( counter == testid ) {
+				printf("   Enter Linear Complexity Test block Length: ");
+				scanf("%d", &tp.linearComplexitySequenceLength);
+				printf("\n");
+				continue;
+			}
+		}
+	} while ( testid != 0 );
+}
+
+
+void
+fileBasedBitStreams(char *streamFile)
+{
+	FILE	*fp;
+	int		mode;
+	
+	printf("   Input File Format:\n");
+	printf("    [0] ASCII - A sequence of ASCII 0's and 1's\n");
+	printf("    [1] Binary - Each byte in data file contains 8 bits of data\n\n");
+	printf("   Select input mode:  ");
+	scanf("%1d", &mode);
+	printf("\n");
+	if ( mode == 0 ) {
+		if ( (fp = fopen(streamFile, "r")) == NULL ) {
+			printf("ERROR IN FUNCTION fileBasedBitStreams:  file %s could not be opened.\n",  streamFile);
+			exit(-1);
+		}
+		readBinaryDigitsInASCIIFormat(fp, streamFile);
+		fclose(fp);
+	}
+	else if ( mode == 1 ) {
+		if ( (fp = fopen(streamFile, "rb")) == NULL ) {
+			printf("ERROR IN FUNCTION fileBasedBitStreams:  file %s could not be opened.\n", streamFile);
+			exit(-1);
+		}
+		readHexDigitsInBinaryFormat(fp);
+		fclose(fp);
+	}
+}
+
+
+void
+readBinaryDigitsInASCIIFormat(FILE *fp, char *streamFile)
+{
+	int		i, j, num_0s, num_1s, bitsRead, bit;
+	
+	if ( (epsilon = (BitSequence *) calloc(tp.n, sizeof(BitSequence))) == NULL ) {
+		printf("BITSTREAM DEFINITION:  Insufficient memory available.\n");
+		printf("Statistical Testing Aborted!\n");
+		return;
+	}
+	printf("     Statistical Testing In Progress.........\n\n");   
+	for ( i=0; i<tp.numOfBitStreams; i++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		for ( j=0; j<tp.n; j++ ) {
+			if ( fscanf(fp, "%1d", &bit) == EOF ) {
+				printf("ERROR:  Insufficient data in file %s.  %d bits were read.\n", streamFile, bitsRead);
+				fclose(fp);
+				free(epsilon);
+				return;
+			}
+			else {
+				bitsRead++;
+				if ( bit == 0 ) 
+					num_0s++;
+				else 
+					num_1s++;
+				epsilon[j] = (BitSequence)bit;
+			}
+		}
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		nist_test_suite();
+	}
+	free(epsilon);
+}
+
+
+void
+readHexDigitsInBinaryFormat(FILE *fp)
+{
+	int		i, done, num_0s, num_1s, bitsRead;
+	BYTE	buffer[4];
+	
+	if ( (epsilon = (BitSequence *) calloc(tp.n,sizeof(BitSequence))) == NULL ) {
+		printf("BITSTREAM DEFINITION:  Insufficient memory available.\n");
+		return;
+	}
+
+	printf("     Statistical Testing In Progress.........\n\n");   
+	for ( i=0; i<tp.numOfBitStreams; i++ ) {
+		num_0s = 0;
+		num_1s = 0;
+		bitsRead = 0;
+		done = 0;
+		do {
+			if ( fread(buffer, sizeof(unsigned char), 4, fp) != 4 ) {
+				printf("READ ERROR:  Insufficient data in file.\n");
+				free(epsilon);
+				return;
+			}
+			done = convertToBits(buffer, 32, tp.n, &num_0s, &num_1s, &bitsRead);
+		} while ( !done );
+		fprintf(freqfp, "\t\tBITSREAD = %d 0s = %d 1s = %d\n", bitsRead, num_0s, num_1s);
+		
+		nist_test_suite();
+		
+	}
+	free(epsilon);
+}
+
+
+int
+convertToBits(const BYTE *x, int xBitLength, int bitsNeeded, int *num_0s, int *num_1s, int *bitsRead)
+{
+	int		i, j, count, bit;
+	BYTE	mask;
+	int		zeros, ones;
+
+	count = 0;
+	zeros = ones = 0;
+	for ( i=0; i<(xBitLength+7)/8; i++ ) {
+		mask = 0x80;
+		for ( j=0; j<8; j++ ) {
+			if ( *(x+i) & mask ) {
+				bit = 1;
+				(*num_1s)++;
+				ones++;
+			}
+			else {
+				bit = 0;
+				(*num_0s)++;
+				zeros++;
+			}
+			mask >>= 1;
+			epsilon[*bitsRead] = (BitSequence)bit;
+			(*bitsRead)++;
+			if ( *bitsRead == bitsNeeded )
+				return 1;
+			if ( ++count == xBitLength )
+				return 0;
+		}
+	}
+	
+	return 0;
+}
+
+
+void
+openOutputStreams(int option)
+{
+	int		i, numOfBitStreams, numOfOpenFiles = 0;
+	char	freqfn[200], statsDir[200], resultsDir[200];
+    TBuf16<200>      logFilePath;
+    logFilePath.Copy(_L("c:\\nist"));
+
+    printf("      Directory for logs : ");
+    gConsole->Printf(logFilePath);
+    ReadStringFromConsole(logFilePath);
+    gConsole->Printf(_L("\r\n"));
+    gLogFilePath.Copy(logFilePath);
+
+    TBuf8<100> tempName;
+    TBuf<100> directoryName;
+
+    for(i = 1; i <= NUMOFTESTS; ++i)
+        {
+        tempName.Format(_L8("%s\\experiments\\%s\\%s\\"), gLogFilePath.PtrZ(),  generatorDir[option], testNames[i]);
+        directoryName.Copy(tempName);
+        gFileSession.MkDirAll(directoryName);
+        }
+	
+	sprintf(freqfn, "%s\\experiments\\%s\\freq", gLogFilePath.PtrZ(), generatorDir[option]);
+	if ( (freqfp = fopen(freqfn, "w")) == NULL ) {
+		printf("\t\tMAIN:  Could not open freq file: experiments/%s/freq", generatorDir[option]);
+		exit(-1);
+	}
+
+	TBuf8<512> finalAnalysisReport;
+    finalAnalysisReport.Format(_L8("%s\\finalAnalysisReport"), gLogFilePath.PtrZ());
+
+    if ( (summary = fopen((const char *)finalAnalysisReport.PtrZ(), "w")) == NULL ) {
+		printf("\t\tMAIN:  Could not open stats file: %s\\experiments\\%s\\finalAnalysisReport",gLogFilePath.PtrZ(), generatorDir[option]);
+		exit(-1);
+	}
+	
+	for( i=1; i<=NUMOFTESTS; i++ ) {
+		if ( testVector[i] == 1 ) {
+			sprintf(statsDir, "%s\\experiments\\%s\\%s\\stats", gLogFilePath.PtrZ(), generatorDir[option], testNames[i]);
+			sprintf(resultsDir, "%s\\experiments\\%s\\%s\\results", gLogFilePath.PtrZ(), generatorDir[option], testNames[i]);
+			if ( (stats[i] = fopen(statsDir, "w")) == NULL ) {	/* STATISTICS LOG */
+				printf("ERROR: LOG FILES COULD NOT BE OPENED.\n");
+				printf("       MAX # OF OPENED FILES HAS BEEN REACHED = %d\n", numOfOpenFiles);
+				printf("-OR-   THE OUTPUT DIRECTORY DOES NOT EXIST.\n");
+				exit(-1);
+			}
+			else
+				numOfOpenFiles++;
+			if ( (results[i] = fopen(resultsDir, "w")) == NULL ) {	/* P_VALUES LOG   */
+				 printf("ERROR: LOG FILES COULD NOT BE OPENED.\n");
+				 printf("       MAX # OF OPENED FILES HAS BEEN REACHED = %d\n", numOfOpenFiles);
+				 printf("-OR-   THE OUTPUT DIRECTORY DOES NOT EXIST.\n");
+				 exit(-1);
+			}
+			else
+				numOfOpenFiles++;
+		}
+	}
+	printf("   How many bitstreams? ");
+	scanf("%d", &numOfBitStreams);
+	tp.numOfBitStreams = numOfBitStreams;
+	printf("\n");
+}
+
+
+void
+invokeTestSuite(int option, char *streamFile)
+{
+	fprintf(freqfp, "________________________________________________________________________________\n\n");
+	fprintf(freqfp, "\t\tALPHA = %6.4f\n", ALPHA);
+	fprintf(freqfp, "________________________________________________________________________________\n\n");
+	if ( option != 0 )
+		printf("     Statistical Testing In Progress.........\n\n");
+	switch( option ) {
+		case 0:
+			fileBasedBitStreams(streamFile);
+			break;
+		case 1:
+			lcg();
+			break;
+		case 2:
+			quadRes1();
+			break;
+		case 3:
+			quadRes2();
+			break;
+		case 4:
+			cubicRes();
+			break;
+		case 5:
+			exclusiveOR();
+			break;
+		case 6:
+			modExp();
+			break;
+		case 7:
+			bbs();
+			break;
+		case 8:
+			micali_schnorr();
+			break;
+		case 9:
+			SHA1();
+			break;
+		case 10:
+		    HASH_DRBG();
+		    break;
+			
+		/* INTRODUCE NEW PSEUDO RANDOM NUMBER GENERATORS HERE */
+			
+		default:
+			printf("Error in invokeTestSuite!\n");
+			break;
+	}
+	printf("     Statistical Testing Complete!!!!!!!!!!!!\n\n");
+}
+
+
+void
+nist_test_suite()
+{
+	if ( (testVector[0] == 1) || (testVector[TEST_FREQUENCY] == 1) ) 
+		Frequency(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_BLOCK_FREQUENCY] == 1) ) 
+		BlockFrequency(tp.blockFrequencyBlockLength, tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_CUSUM] == 1) )
+		CumulativeSums(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_RUNS] == 1) )
+		Runs(tp.n); 
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_LONGEST_RUN] == 1) )
+		LongestRunOfOnes(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_RANK] == 1) )
+		Rank(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_FFT] == 1) )
+	    {
+        // Disable Fast Fourier Transform Test.
+		// NIST has discovered a problem with the Fast Fourier Transform test. 
+		// At this time NIST advises disregarding the results of this test until 
+		// a further update is posted.
+		// Link: http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html
+		//
+		// When the FFT test is fixed remove the following 3 printf lines and uncomment the 4th line.
+        printf("  Please Note: NIST has discovered a problem with the DFT test and hence\n");
+        printf("  the DFT results are invalid currently.\n");
+        printf("  So all tests except DFT will run until futher notification from NIST \n \n");   
+        //DiscreteFourierTransform(tp.n);
+	    }
+	    	
+	if ( (testVector[0] == 1) || (testVector[TEST_NONPERIODIC] == 1) )
+		NonOverlappingTemplateMatchings(tp.nonOverlappingTemplateBlockLength, tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_OVERLAPPING] == 1) )
+		OverlappingTemplateMatchings(tp.overlappingTemplateBlockLength, tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_UNIVERSAL] == 1) )
+		Universal(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_APEN] == 1) )
+		ApproximateEntropy(tp.approximateEntropyBlockLength, tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_RND_EXCURSION] == 1) )
+		RandomExcursions(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_RND_EXCURSION_VAR] == 1) )
+		RandomExcursionsVariant(tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_SERIAL] == 1) )
+		Serial(tp.serialBlockLength,tp.n);
+	
+	if ( (testVector[0] == 1) || (testVector[TEST_LINEARCOMPLEXITY] == 1) )
+		LinearComplexity(tp.linearComplexitySequenceLength, tp.n);
+}
+
+void GetNextTemplateItem(BitSequence aBitSequence[])
+    {
+    int count = (TInt)pow(2, tp.overlappingTemplateBlockLength);
+    
+    for(bool isSuccess = false; (!isSuccess) && (gTemplateIndex < count); ++gTemplateIndex)
+        {
+        isSuccess = ConvertToAperiodicBits(aBitSequence, gTemplateIndex);
+        }
+    }
+
+
+bool ConvertToAperiodicBits(BitSequence aSequence[32], long value)
+    {
+    int bitMask = int(1U << (KMaxBit-1));
+
+    long count = tp.overlappingTemplateBlockLength;
+    
+    for(int c = 0; c < KMaxBit; c++) 
+        {
+        if (value & bitMask)
+            aSequence[c] = 1;
+        else
+            aSequence[c] = 0;
+        value <<= 1;
+        }
+
+    bool match = false;
+    
+    for(int i = 1; i < count; i++) 
+        {
+        match = false;
+        if ((aSequence[KMaxBit-count]!= aSequence[KMaxBit-1]) && ((aSequence[KMaxBit-count]!= aSequence[KMaxBit-2])||(aSequence[KMaxBit-count+1] != aSequence[KMaxBit-1]))) 
+            {
+            for(int c = KMaxBit-count; c <= (KMaxBit-1)-i; c++) 
+                {
+                if (aSequence[c] != aSequence[c+i]) 
+                    {
+                    match = true;
+                    break;
+                    }
+                }
+            }
+        
+        if (!match) 
+            {
+            break;
+            }
+        }
+
+    return match;
+    }
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/utils/openc.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,616 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*/
+
+
+//------------------------------------ System Header Files ------------------------------------------------
+#include <e32cons.h>        // ConsoleBase
+//------------------------------------ Local Header Files -------------------------------------------------
+#include "openc.h"
+
+//-------------------------------- Constants, global variables and Macro Definitions ----------------------------------------
+_LIT(KConsoleName, "NIST Test Console");
+CConsoleBase* gConsole = NULL;
+
+
+int PrintToScreen(const char* aString);
+
+const TInt KIntStringLen = 10;
+RFs gFileSession;
+
+enum TDataType
+    {
+    EInteger,
+    EFloat,
+    EUnknownType = 0x10000
+    };
+
+const TInt KMaxReadSize = 50;
+const TInt KMaxScreenBufferSize = 100;
+
+TBuf<KMaxScreenBufferSize> gScreenBuffer;
+
+class GlobalInitilizer
+    {
+public:
+    GlobalInitilizer()
+        {
+        TInt err = gFileSession.Connect();
+
+        if(err != KErrNone)
+            {
+            User::Exit(err);
+            }
+
+        TRAP(err, gConsole = Console::NewL(KConsoleName, TSize(KConsFullScreen,KConsFullScreen)));
+        if(err != KErrNone)
+            {
+            User::Exit(err);
+            }
+        }
+    ~GlobalInitilizer()
+        {
+        gFileSession.Close();
+        delete gConsole;
+        }
+    };
+
+GlobalInitilizer globalObj;
+
+//------------------------------------ Function Definitions -----------------------------------------------
+
+double log(double aSource)
+    {
+    double result = 0.0;
+    Math::Ln(result, aSource);
+    return result;
+    }
+
+double exp(double aSource)
+    {
+    double result = 0.0;
+    Math::Exp(result, aSource);
+    return result;
+    }
+
+double fabs(double aSource)
+    {
+    return (aSource >= 0.0)? aSource: -aSource;
+    }
+
+
+double floor(double aSource)
+    {
+    if(aSource >= 0.0 || aSource == (TInt64)aSource)
+        {
+        return (double)(TInt64)aSource;
+        }
+   
+    return (double)((TInt64)aSource - 1);
+    }
+
+double sqrt(double aSource)
+    {
+    double result = 0.0;
+    Math::Sqrt(result, aSource);
+    return result;
+    }
+
+double pow(double aSource, double aPower)
+    {
+    double result = 0.0;
+    Math::Pow(result, aSource, aPower);
+    return result;
+    }
+
+// Math trigonometric functions
+double sin(double aSource)
+    {
+    double result = 0.0;
+    Math::Sin(result, aSource);
+    return result;
+    }
+
+double cos(double aSource)
+    {
+    double result = 0.0;
+    Math::Cos(result, aSource);
+    return result;
+    }
+
+// Stdio functions
+int printf(const char* aFormatString, ...)
+    {
+    TUint length = User::StringLength((TUint8*)aFormatString) + 100;
+    HBufC8* buffer = HBufC8::New(length);
+    if(NULL == buffer)
+        {
+        return KErrNoMemory;
+        }
+    
+    TPtr8 targetPtr = buffer->Des();
+    TPtrC8 formatPtr((TUint8*)aFormatString);
+
+    VA_LIST list;
+    VA_START(list, aFormatString);
+    
+    targetPtr.FormatList(formatPtr, list);
+    
+    PrintToScreen((const char*)targetPtr.PtrZ());
+
+    delete buffer;
+
+    return targetPtr.Length();
+    }
+
+int puts(const char* aString)
+    {
+    int ret = PrintToScreen(aString);
+    gConsole->Printf(_L("\n"));
+    
+    return ret;
+    }
+
+int putchar(int aChar)
+    {
+    gConsole->Printf(_L("%c"), aChar);
+    return aChar;
+    }
+
+char* strcpy(char* aDst, const char* aSrc)
+    {
+    char* cp = aDst;
+
+    while((*cp++ = *aSrc++) != 0)
+        ; // Copy src over dst
+
+    return(aDst);
+    }
+
+int scanf(const char* aFormatString, ...)
+    {
+    TDataType type = EUnknownType;
+    TBool byteRead = EFalse;
+    
+    if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%d", 2) == 0)
+        {
+        type = EInteger;
+        }
+    else if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%f", 2) == 0)
+        {
+        type = EFloat;
+        }
+    else if(Mem::Compare((const unsigned char*)aFormatString, 3, (const unsigned char*)"%1d", 3) == 0)
+        {
+        type = EInteger;
+        byteRead = ETrue;
+        }
+    else
+        {
+        User::Panic(_L("NIST TestSuit Error"), KErrArgument);
+        }
+    
+    if(!byteRead || (gScreenBuffer.Length() == 0))
+        {
+        ReadStringFromConsole(gScreenBuffer);
+        }
+
+    TLex parser(gScreenBuffer);
+    parser.SkipSpace();
+    
+    VA_LIST list;
+    VA_START(list, aFormatString);
+
+    switch(type)
+        {
+        case EInteger:
+            {
+            TInt* ptr = VA_ARG(list, TInt*);
+            if(byteRead)
+                {
+                TChar ch(gScreenBuffer[0]);
+                gScreenBuffer.Delete(0, 1);
+                *ptr = ch.GetNumericValue();
+                }
+            else
+                {
+                parser.Val(*ptr);
+                gScreenBuffer.Zero();
+                }
+            break;
+            }
+        case EFloat:
+            {
+            float* ptr = VA_ARG(list, float*);
+            parser.Val(*ptr);
+            gScreenBuffer.Zero();
+            break;
+            }
+        case EUnknownType:
+            {
+            User::Panic(_L("NIST TestSuit Error"), KErrArgument);
+            }
+        }
+
+    return 1;
+    }
+
+int sprintf(char *aBuffer, const char* aFormatString, ...)
+    {
+    TUint length = User::StringLength((TUint8*)aFormatString) + 100;
+    TPtr8 aTargetPtr((TUint8*)aBuffer, length);
+    TPtrC8 formatPtr((TUint8*)aFormatString);
+
+    VA_LIST list;
+    VA_START(list, aFormatString);
+    
+    aTargetPtr.FormatList(formatPtr, list);
+    aTargetPtr.ZeroTerminate();
+
+    return User::StringLength((TUint8*)aBuffer);;
+    }
+
+int GetFileMode(const char* aModeStr, TFileMode& aFileMode, TBool& aIsAppend)
+    {
+    aIsAppend = EFalse;
+    switch (*aModeStr)
+        {
+        case 'r':
+            aFileMode = EFileRead;
+            break;
+            
+        case 'w':
+            aFileMode = EFileWrite;
+            break;
+            
+        case 'a':
+            aFileMode = EFileWrite;
+            aIsAppend = ETrue;
+            break;
+            
+        default:
+            return KErrArgument;
+        } 
+      
+    return KErrNone;
+    }
+
+FILE *fopen(const char *aFileName, const char *aMode)
+    {
+    TPtrC8 fileNamePtr(reinterpret_cast<const unsigned char*>(aFileName));
+    TFileName fileName;
+    fileName.Copy(fileNamePtr);
+    RFile* file = new RFile;
+    if(NULL == file)
+        {
+        return NULL;
+        }
+
+    TFileMode mode = EFileRead;
+    TBool isAppend = EFalse;
+    GetFileMode(aMode, mode, isAppend);
+    int err = KErrArgument;
+    switch(mode)
+        {
+        case EFileRead:
+            {
+            err = file->Open(gFileSession, fileName, mode);
+            break;
+            }
+        case EFileWrite:
+            {
+            if(isAppend)
+                {
+                err = file->Open(gFileSession, fileName, mode);
+                if(err == KErrNone)
+                    {
+                    TInt offset = 0;
+                    err = file->Seek(ESeekEnd, offset);
+                    break;
+                    }
+                }
+            
+            err = file->Replace(gFileSession, fileName, mode);
+            break;
+            }
+        default:
+            err = KErrArgument;
+        }
+
+    if(KErrNone != err)
+        {
+        file->Close();
+        delete file;
+        file = NULL;
+        }
+    return file;
+    }
+
+
+
+int fclose(FILE *aFp)
+    {
+    if(NULL != aFp)
+        {
+        aFp->Close();
+        delete aFp;
+        }
+    return KErrNone;
+    }
+
+int fprintf(FILE* aFile, const char* aFormatString, ...)
+    {
+    TUint length = User::StringLength((TUint8*)aFormatString) + 100;
+    HBufC8* buffer = HBufC8::New(length);
+    if(NULL == buffer)
+        {
+        return KErrNoMemory;
+        }
+    
+    TPtr8 targetPtr = buffer->Des();
+    TPtrC8 formatPtr((TUint8*)aFormatString);
+
+    VA_LIST list;
+    VA_START(list, aFormatString);
+    
+    targetPtr.FormatList(formatPtr, list);
+    targetPtr.ZeroTerminate();
+    
+    aFile->Write(targetPtr);
+    
+    delete buffer;
+
+    return targetPtr.Length();
+    }
+
+int fscanf(FILE* aFp, const char * aFormatString, ...)
+    {
+    TDataType type = EUnknownType;
+    TBool byteRead = EFalse;
+    
+    if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%d", 2) == 0)
+        {
+        type = EInteger;
+        }
+    else if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%f", 2) == 0)
+        {
+        type = EFloat;
+        }
+    else if(Mem::Compare((const unsigned char*)aFormatString, 3, (const unsigned char*)"%1d", 3) == 0)
+        {
+        type = EInteger;
+        byteRead = ETrue;
+        }
+    else
+        {
+        User::Panic(_L("NIST TestSuit Error"), KErrArgument);
+        }
+    
+    TInt initialOffset = 0;
+    aFp->Seek(ESeekCurrent, initialOffset);
+    TBuf8<KMaxReadSize + 1> readBuffer;
+    aFp->Read(readBuffer, KMaxReadSize);
+    readBuffer.ZeroTerminate();
+    TLex8 parser(readBuffer);
+    parser.SkipSpace();
+    
+    VA_LIST list;
+    VA_START(list, aFormatString);
+
+    switch(type)
+        {
+        case EInteger:
+            {
+            TInt* ptr = VA_ARG(list, TInt*);
+            TChar ch = parser.Peek();
+            
+            if(!ch.IsDigit())
+                {
+                break;
+                }
+            
+            if(byteRead)
+                {
+                ch = parser.Get();
+                *ptr = ch.GetNumericValue();
+                }
+            else
+                {
+                parser.Val(*ptr);
+                }
+
+            break;
+            }
+        case EFloat:
+            {
+            float* ptr = VA_ARG(list, float*);
+            parser.Val(*ptr);
+            break;
+            }
+        case EUnknownType:
+            {
+            User::Panic(_L("NIST TestSuit Error"), KErrArgument);
+            }
+        }
+
+    TInt len = initialOffset + parser.Offset();
+    aFp->Seek(ESeekStart, len);
+    
+    return 1;
+    }
+
+TUint32 fread(void* aPtr, TUint32 aSize, TUint32 aCount, FILE* aFile)
+    {
+    TUint32 size = aSize * aCount;
+    TPtr8 dataPtr((TUint8*)aPtr, size);
+    TInt err = aFile->Read(dataPtr);
+    if(KErrNone != err)
+        {
+        size = (TUint32)dataPtr.Length();
+        }
+    return size;
+    }
+
+int fseek(FILE* aFile, long aOffset, int aWhence)
+    {
+    int ret = KErrNone;
+    int fileOffset = aOffset;
+    switch(aWhence)
+        {
+        case SEEK_SET:
+            {
+            ret = aFile->Seek(ESeekStart, fileOffset);
+            break;
+            }
+        case SEEK_CUR:
+            {
+            ret = aFile->Seek(ESeekCurrent, fileOffset);
+            break;
+            }
+        case SEEK_END:
+            {
+            ret = aFile->Seek(ESeekEnd, fileOffset);
+            break;
+            }
+        default:
+            User::Panic(_L("NIST TestSuit Error"), KErrArgument);
+        }
+    
+    return ret;
+    }
+
+
+
+int fflush(FILE *aFile)
+    {
+    TInt err = aFile->Flush();
+    if(err != KErrNone)
+        {
+        err = EOF;
+        }
+    return err;
+    }
+
+
+// Conio functions
+void* calloc(TUint32 aElementCount, TUint32 aSize)
+    {
+    aSize *= aElementCount;
+    return User::AllocZ(aSize);
+    }
+
+void free(void *aMemory)
+    {
+    User::Free(aMemory);
+    }
+
+TBool IsCharacterKey(TKeyCode aKey)
+    {
+    if(aKey > EKeyEscape && aKey < EKeyDelete)
+        {
+        return ETrue;
+        }
+    
+    return EFalse;
+    }
+
+_LIT(KLineBreaker, "\r\n");
+
+void ReadStringFromConsole(TDes& aString)
+    {
+    // This infinte loop terminates when user hits an "enter" key
+    FOREVER
+        {
+        // Get a key(character) from the console
+        TKeyCode ch = gConsole->Getch();
+        
+        switch(ch)
+            {
+            case EKeyEnter:
+                {
+                if(aString.Length() == 0)
+                    {
+                    break;// At least one character should be read.
+                    }
+                gConsole->Printf(KLineBreaker);
+                return;
+                }
+            case EKeyBackspace:
+                {
+                if(0 != aString.Length())
+                    {
+                    // Back-space only takes the cursor one position back
+                    // So to delete a character blank-space is inserted at
+                    // that position and later cursor is again adjusted.
+                    gConsole->Printf(_L("%c%c%c"), EKeyBackspace, 
+                                                   EKeySpace, 
+                                                   EKeyBackspace);
+                    // Delete the character from the target string also. 
+                    aString.Delete(aString.Length() - 1, 1);
+                    }
+                break;
+                }
+            default:
+                {
+                TInt maxBufferLength = aString.MaxLength();
+                // IsCharacterKey will return true if ch is a displayable
+                // character else it will return false.
+                if(IsCharacterKey(ch) && aString.Length() != maxBufferLength)
+                    {
+                    gConsole->Printf(_L("%c"), ch);
+                    aString.Append(ch);
+                    }
+                }
+            }
+        }
+    }
+  
+TInt ReadIntL(TInt& aValue)
+    {
+    TBuf<KIntStringLen> string;
+    ReadStringFromConsole(string);
+    TLex lexObj(string);
+    return lexObj.Val(aValue);
+    }
+
+int PrintToScreen(const char* aString)
+    {
+    TUint length = User::StringLength((TUint8*)aString);
+    HBufC* buffer = HBufC::New(length);
+    if(NULL == buffer)
+        {
+        return EOF;
+        }
+    
+    TPtr targetPtr = buffer->Des();
+
+    TPtrC8 stringPtr((TUint8*)aString);
+
+    targetPtr.Copy(stringPtr);
+    gConsole->Printf(targetPtr);
+    
+    delete buffer;
+    
+    return KErrNone;
+    }
+
+void exit ( int status )
+    {
+    User::Exit(status);
+    for(;;){} // So that GCC compiler don't complain about noreturn function returns.
+    }
+
+//------------------------------------------  E  O  F -----------------------------------------------------
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32utils/nistsecurerng/src/utils/qsort.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* Map ANSI bsearch and qsort onto EPOC32 functions 
+*/
+
+#include <e32std.h>
+#include "openc.h"
+
+NONSHARABLE_CLASS(TAnsiKey) : public TKey
+	{
+public:
+	TAnsiKey(const TAny* key, const TAny* base, TInt length, TInt (*compar)(const TAny*, const TAny*))
+		: iSearchKey(key), iCmp(compar)
+		{ SetPtr(base); iKeyLength=length; }
+
+	virtual TInt Compare(TInt aLeft,TInt aRight) const;
+	virtual TAny *At(TInt anIndex) const;
+private:
+	const TAny* iSearchKey;
+	TInt (*iCmp)(const TAny*, const TAny*);
+	};
+
+TInt TAnsiKey::Compare (TInt aLeft,TInt aRight) const
+	{
+	if (aRight==KIndexPtr)
+		return (*iCmp)(At(aLeft),iSearchKey);
+	else
+		return (*iCmp)(At(aLeft),At(aRight));
+	}
+
+TAny* TAnsiKey::At (TInt aPos) const
+	{
+	return (TUint8*)iPtr+(aPos*iKeyLength);
+	}
+
+NONSHARABLE_CLASS(TAnsiSwap) : public TSwap
+	{
+public:
+	TAnsiSwap(const TAny* base, TInt length) : iPtr(base), iLength(length) {}
+
+	virtual void Swap(TInt aLeft,TInt aRight) const;
+private:
+	TUint8* At(TInt aPos) const {return (TUint8*)iPtr+(aPos*iLength);}
+
+	const TAny* iPtr;
+	TInt  iLength;
+	};
+
+void TAnsiSwap::Swap(TInt aLeft,TInt aRight) const
+	{
+	TUint8* left=At(aLeft);
+	TUint8* right=At(aRight);
+	TUint8 tmp;
+
+	for (TInt i=iLength; i>0; i--)
+		{
+		tmp=*left;
+		*left++=*right;
+		*right++=tmp;
+		}
+	}
+
+/*
+FUNCTION
+<<bsearch>>---binary search
+
+INDEX
+	bsearch
+
+ANSI_SYNOPSIS
+	#include <stdlib.h>
+	void *bsearch(const void *<[key]>, const void *<[base]>,
+		size_t <[nmemb]>, size_t <[size]>,
+		int (*<[compar]>)(const void *, const void *));
+
+TRAD_SYNOPSIS
+	#include <stdlib.h>
+	char *bsearch(<[key]>, <[base]>, <[nmemb]>, <[size]>, <[compar]>)
+	char *<[key]>;
+	char *<[base]>;
+	size_t <[nmemb]>, <[size]>;
+	int (*<[compar]>)();
+
+DESCRIPTION
+<<bsearch>> searches an array beginning at <[base]> for any element
+that matches <[key]>, using binary search.  <[nmemb]> is the element
+count of the array; <[size]> is the size of each element.
+
+The array must be sorted in ascending order with respect to the
+comparison function <[compar]> (which you supply as the last argument of
+<<bsearch>>).
+
+You must define the comparison function <<(*<[compar]>)>> to have two
+arguments; its result must be negative if the first argument is
+less than the second, zero if the two arguments match, and
+positive if the first argument is greater than the second (where
+``less than'' and ``greater than'' refer to whatever arbitrary
+ordering is appropriate).
+
+RETURNS
+Returns a pointer to an element of <[array]> that matches <[key]>.  If
+more than one matching element is available, the result may point to
+any of them. Returns NULL if no matching element is found.
+
+PORTABILITY
+<<bsearch>> is ANSI.
+
+No supporting OS subroutines are required.
+*/
+
+/**
+searches an array beginning at <[base]> for any element
+that matches <[key]>, using binary search
+@return a pointer to an element of <[array]> that matches <[key]>.  If
+more than one matching element is available, the result may point to
+any of them. Returns NULL if no matching element is found.
+@param key
+@param base
+@param nmemb
+@param size
+*/
+void* bsearch (const void* key, const void* base, TUint32 nmemb, TUint32 size,
+	int (*compar)(const void*, const void*))
+	{
+	TAnsiKey searchMe(key, base, size, compar);
+	TInt result=KIndexPtr;
+	TInt r=User::BinarySearch(nmemb, searchMe, result);
+	if (r==0)
+		return searchMe.At(result);
+	else
+		return NULL;
+	}
+
+/*
+FUNCTION
+<<qsort>>---sort an array
+
+INDEX
+	qsort
+
+ANSI_SYNOPSIS
+	#include <stdlib.h>
+	void qsort(void *<[base]>, size_t <[nmemb]>, size_t <[size]>,
+		   int (*<[compar]>)(const void *, const void *) );
+
+TRAD_SYNOPSIS
+	#include <stdlib.h>
+	qsort(<[base]>, <[nmemb]>, <[size]>, <[compar]> )
+	char *<[base]>;
+	size_t <[nmemb]>;
+	size_t <[size]>;
+	int (*<[compar]>)();
+
+DESCRIPTION
+<<qsort>> sorts an array (beginning at <[base]>) of <[nmemb]> objects.
+<[size]> describes the size of each element of the array.
+
+You must supply a pointer to a comparison function, using the argument
+shown as <[compar]>.  (This permits sorting objects of unknown
+properties.)  Define the comparison function to accept two arguments,
+each a pointer to an element of the array starting at <[base]>.  The
+result of <<(*<[compar]>)>> must be negative if the first argument is
+less than the second, zero if the two arguments match, and positive if
+the first argument is greater than the second (where ``less than'' and
+``greater than'' refer to whatever arbitrary ordering is appropriate).
+
+The array is sorted in place; that is, when <<qsort>> returns, the
+array elements beginning at <[base]> have been reordered.
+
+RETURNS
+<<qsort>> does not return a result.
+
+PORTABILITY
+<<qsort>> is required by ANSI (without specifying the sorting algorithm).
+*/
+
+/**
+Sort an array.
+@param base 
+@param nmemb
+@param size describes the size of each element of the array
+*/
+void qsort (void* base, TUint32 nmemb, TUint32 size,
+	int (*compar)(const void*, const void*))
+	{
+	TAnsiKey  searchMe(NULL, base, size, compar);
+	TAnsiSwap swapUs(base,size);
+	User::QuickSort(nmemb, searchMe, swapUs);
+	return;
+	}
+
Binary file kerneltest/e32utils/nistsecurerng/testdata/testdata.zip has changed
--- a/kerneltest/e32utils/trace/btracevw.pl	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1952 +0,0 @@
-#
-# 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:
-#
-
-#!/usr/bin/perl
-
-use File::Find;
-use File::Spec::Functions;
-
-
-	my $TraceFileName;
-	
-	my $PrintFlagFilePos = 0;
-	my $PrintFlagHdrLen = 0;
-	my $PrintFlagHdrFlags = 0;
-	my $PrintFlagFormatString = 0;
-	my $VerboseMode = 0;
-	my $RawMode = 0;
-	my $FormatIdIsSubCategory = 0;
-	my $OutputSawDictionaryMode = 0;
-	
-	# for the category range 0-191, the format string is indexed by the category & subcategory
-	%FormatTables = 
-		(
-		0 => 			# ERDebugPrintf
-			{
-			0 => "ThreadId %h, %s",
-			},
-	
-		1 => 			# ERKernPrintf
-			{
-			0 => "ThreadId %h, %s",
-			},
-
-		3 =>			# EThreadIdentification
-			{	
-			0 => "ENanoThreadCreate, NThread %x",
-			1 => "ENanoThreadDestroy, NThread %x",
-			2 => "EThreadCreate, NThread %x, DProcess %x, name %s",
-			3 => "EThreadDestroy, NThread %x, DProcess %x, Id %x",
-			4 => "EThreadName, NThread %x, DProcess %x, name %s",
-			5 => "EProcessName, NThread %x, DProcess %x, name %s",
-			6 => "EThreadId, NThread %x, DProcess %x, Id %x",
-			7 => "EProcessCreate, DProcess %x",
-			8 => "EProcessDestroy, DProcess %x",
-			},
-		);
-
-	my @typedefs;
-	my @members;
-	my %values	= (
-#		UTF::KInitialClientFormat		=>	{type=>"TFormatId", size=>2, value=>512}
-		KMaxTUint8						=> {type=>"TUint8", size=>1, value=>255},
-		KMaxTUint16						=> {type=>"TUint16", size=>2, value=>65535}
-	);
-	my %macros;
-	my @classes;
-	my @enums;
-	my %formatStrings;		# each enum may have it's own format string
-	my %formatCategories;	# each enum may have it's own format category
-	
-	my %filescope;
-	$filescope{file}=1;
-	undef $filescope{name};	
-
-	$filescope{typedefs}=\@typedefs;
-	$filescope{members}=\@members;
-	$filescope{values}=\%values;
-	$filescope{macros} = \%macros;
-	$filescope{FormatTables} = \%FormatTables;
-	
-	$filescope{classes} = \@classes;
-	$filescope{enums} = \@enums;
-
-	$filescope{formatStrings} =\%formatStrings;
-	$filescope{formatCategories} = \%formatCategories;
-	
-		
-		
-	if (@ARGV == 0)
-  		{
-  		print "BTraceVw.pl \n";
-  		print "An unsupported utility which extracts UTrace-style format-strings\n";
-  		print "from header files & uses these to decode a BTrace output file\n";
-  		print "Syntax : BTraceVw.pl [-v] [-r] [-sd] [-i <IncFilePath>] [<BTrace file>]\n";
-  		print "where  : -v  = verbose mode\n";
-  		print "       : -r  = raw output mode\n";
-  		print "       : -sd = produce SAW trace viewer dictionary file\n";
-  		print "       :       this file then needs to be merged into the 'com.symbian.analysis.trace.ui.prefs' file\n";
-  		print "       :       located under the carbide workspace directory\n";
-		print "\n";
-  		
-		print "e.g. (this decodes a trace file & produces a comma-separated output file) : \n";
-		print "btracevw.pl -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/f32tracedef.h -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/utraceefsrv.h -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/utraceefile.h trace.utf >trace.csv\n";
-		print "\n";
-		print "e.g. (this overwrites the SAW dictioany file) : \n";
-		print "btracevw.pl -sd -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/f32tracedef.h -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/utraceefsrv.h -i /os/kernelhwsrv/userlibandfileserver/fileserver/inc/utraceefile.h >com.symbian.analysis.trace.ui.prefs\n";
-  		
-		exit;
-		}
-
-	while (@ARGV > 0)
-		{
-		
-		if ($ARGV[0] eq "-i")
-	        {
-	        shift @ARGV;
-		    ($FilePath) = @ARGV;
-	        shift @ARGV;
-
-	        undef @incFiles;
-		    @incFiles;
-		
-		    find sub { push @incFiles, $File::Find::name if m/\.h$/i;}, $FilePath ;
-		    foreach $incFile (@incFiles)
-		        {
-				H2Trace($incFile, \%filescope);
-		        }
-	        }
-		elsif ($ARGV[0] eq "-r")
-	        {
-		    $RawMode = 1;
-   	        shift @ARGV;
-	        }
-		elsif ($ARGV[0] eq "-sd")
-	        {
-		    $OutputSawDictionaryMode = 1;
-   	        shift @ARGV;
-	        }
-		elsif ($ARGV[0] eq "-v")
-	        {
-		    $VerboseMode = 1;
-   	        shift @ARGV;
-	        }
-	    else
-	    	{
-			$TraceFileName = "$ARGV[0]";
-	        shift @ARGV;
-	    	}
-        }
-		
-	if ($VerboseMode)
-		{
-		dump_scope(\%filescope);
-		PrintFormatTables(\%FormatTables);
-		}
-	if ($OutputSawDictionaryMode)
-		{
-		OutputSawDictionary(\%FormatTables);
-		}
-
-    if (defined ($TraceFileName))
-        {
-        ReadTraceFile($RawMode);
-        }
-
-        
-        
-        
-sub ReadTraceFile($)
-    {
-	(my $RawMode) = @_;
-#	print "Trace file is $TraceFileName, RawMode $RawMode, VerboseMode $VerboseMode\n\n";
-
-	open (LOGFILE, "<$TraceFileName") or die "Can't open $TraceFileName: $!\n";
-	binmode (LOGFILE);
-
-	my $val = 0;
-
-
-	# enum TFlags from e32btrace.h
-	$EHeader2Present	= 1<<0;
-	$ETimestampPresent	= 1<<1;
-	$ETimestamp2Present	= 1<<2;
-	$EContextIdPresent	= 1<<3;
-	$EPcPresent			= 1<<4;
-	$EExtraPresent		= 1<<5;
-	$ERecordTruncated	= 1<<6;
-	$EMissingRecord		= 1<<7;
-	
-	# enum TFlags2 from e32btrace.h
-	$EMultipartFlagMask	= 3<<0;
-	$ECpuIdMask			= 0xfff<<20;
-
-	# enum TMultiPart from e32btrace.h
-	$EMultipartFirst	= 1;
-	$EMultipartMiddle	= 2;
-	$EMultipartLast		= 3;
-	
-	$EMaxBTraceDataArray = 80;
-	
-	# enum TCategory from e32btrace.h
-	$EThreadIdentification = 3;
-	
-	# enum TThreadIdentification from e32btrace.h
-	$EThreadCreate = 2;
-	$EThreadName = 4;
-	$EProcessName = 5;
-	$EThreadId = 6;
-	
-	# Context Id bits from e32btrace.h
-	$EContextIdMask = 0x00000003;
-	$EContextIdThread = 0;
-	$EContextIdFIQ = 0x1;
-	$EContextIdIRQ = 0x2;
-	$EContextIdIDFC = 0x3;
-
-	# enum TClassificationRange from e32btraceu.h
-	$EAllRangeFirst = 192;
-	$EAllRangeLast = 222;
-
-	%TCategoryIdToString = 
-		(
-		0 => "ERDebugPrintf",
-		1 => "EKernPrintf",
-		2 => "EPlatsecPrintf",
-		3 => "EThreadIdentification",
-		4 => "ECpuUsage",
-        5 => "EKernPerfLog",
-        6 => "EClientServer",
-        7 => "ERequests",
-        8 => "EChunks",
-        9 => "ECodeSegs",
-		10 => "EPaging",
-		11 => "EThreadPriority",
-		12 => "EPagingMedia",
-		13 => "EKernelMemory",
-		14 => "EHeap",
-		15 => "EMetaTrace",
-		16 => "ERamAllocator",
-		17 => "EFastMutex",
-		18 => "EProfiling", 
-        19 => "EResourceManager",
-        20 => "EResourceManagerUs",
-		21 => "ERawEvent ",
-		128 => "EPlatformSpecificFirst",
-		191 => "EPlatformSpecificLast",
-		192 => "ESymbianExtentionsFirst",
-
-		# UTrace "ALL" range 
-		192 => "EPanic",
-		193 => "EError",
-		194 => "EWarning", 
-		195 => "EBorder", 
-		196 => "EState", 
-		197 => "EInternals", 
-		198 => "EDump", 
-		199 => "EFlow", 
-		200 => "ESystemCharacteristicMetrics", 
-		201 => "EAdhoc",
-
-		253 => "ESymbianExtentionsLast",
-		254 => "ETest1",
-		255 => "ETest2",
-		);
-
-
-	%ProcessNames;
-	%ThreadNames;
-	%ThreadIds;
-	
-	
-	# print column titles
-	if ($PrintFlagFilePos) {printf "FilePos, ";}	# col #0
-	if ($PrintFlagHdrLen) {	printf "Len, ";}		# col #1
-	if ($PrintFlagHdrFlags) {printf "Flags, "; }	# col #2
-	printf "Category, ";			# col #3
-	printf "TimeStamp, ";			# col #4
-	printf "Delta, ";				# col #5
-	printf "context Id, ";			# col #6
-	printf "PC, ";					# col #7
-	printf "UID, ";					# col #8
-	if ($PrintFlagFormatString){printf "Format string, ";}	# col #9
-	printf "Formatted text, ";		# col #10
-	print "\n\n";
-
-	
-	while (1)
-		{
-		my $pos = tell (LOGFILE);
-		
-		# print file pos (col #0)
-		if ($PrintFlagFilePos){	printf ("0x%08X, ", $pos);}
-		
-		my $category;
-		my $subCategory;
-		my $multipartFlags = 0;
-		my $recordData = "";
-		my $recordLen;
-		my $recordPos = 0;
-		
-		$recordLen = ReadRecord(LOGFILE, \$pos, \$recordData, \$category, \$subCategory, \$multipartFlags, $RawMode);
-		if ($recordLen == -1)
-			{last;}
-
-			
-		if (!$RawMode && ($multipartFlags == $EMultipartMiddle || $multipartFlags == $EMultipartLast))
-			{next;}
-					
-#		print record contents
-#		my $buf;
-#					for (my $i=0; $i < $recordLen; $i+=4)
-#						{
-#		$buf.= sprintf ("%08X ", unpack("V", substr($recordData, $recordPos+$i, 4)));
-#						}
-#		printf "\n[$buf\n]";				
-
-
-		# for UTrace "ALL" range, read UID 
-		if ($category >= $EAllRangeFirst && $category <= $EAllRangeLast && 
-			(!$RawMode) && $multipartFlags != $EMultipartMiddle && $multipartFlags != $EMultipartLast)
-			{
-			$uid = unpack("V", substr($recordData, $recordPos, 4));
-			$recordPos+= 4;	
-
-			# then read formatID			
-			$FormatIdIsSubCategory = ($subCategory != 0) ? 1 : 0;
-			if ($FormatIdIsSubCategory)
-				{
-				$formatId = $subCategory
-				}
-			else				
-				{
-				$formatId = unpack("V", substr($recordData, $recordPos, 4));
-  				$recordPos+= 4;
-				}
-			}
-		
-					
-		# print UID (col #8)
-		printf "0x%08X, ", $uid;
-
-			
-		my $formatTable;
-		my $formatString;
-		if ($category >= $EAllRangeFirst && $category <= $EAllRangeLast)
-			{
-			$formatString = $FormatTables{$uid}{$formatId};
-			}
-		else
-			{
-			$formatString = $FormatTables{$category}{$subCategory};
-			}
-
-
-		# Get thread names
-		if ($category == $EThreadIdentification)
-			{
-			if ($subCategory == $EProcessName)
-				{
-				my $process = unpack("V", substr($recordData, 4, 4));
-				my $processName = substr($recordData, 8, $recordLen - 8);	
-#				printf ("\nprocess [%08X] processName [$processName]\n", $process);
-				$ProcessNames{$process} = $processName;
-				}
-			elsif ($subCategory == $EThreadCreate || $subCategory == $EThreadName)
-				{
-				my $thread = unpack("V", substr($recordData, 0, 4));
-				my $process = unpack("V", substr($recordData, 4, 4));
-				my $threadName = substr($recordData, 8, $recordLen - 8);	
-#				printf ("\nprocess [%08X] thread [%08X] threadName [$threadName]\n", $process, $thread, $threadName);
-				$ThreadNames{$thread} = $ProcessNames{$process} . "::" . $threadName;
-				}
-			elsif ($subCategory == $EThreadId)
-				{
-				my $thread = unpack("V", substr($recordData, 0, 4));
-				my $process = unpack("V", substr($recordData, 4, 4));
-				my $threadId = unpack("V", substr($recordData, 8, 4));
-#				printf ("\nprocess [%08X] thread [%08X] threadId [%08X]\n", $process, $thread, $threadId);
-				$ThreadIds{$thread} = $threadId;
-				}
-			}
-			
-			
-		# print Format string (col #9)
-		if ($PrintFlagFormatString)
-			{
-			my $formatStringWithoutCommas = $formatString;
-			$formatStringWithoutCommas=~ s/,/ /g;
-			printf "%s, ", $formatStringWithoutCommas;
-			}
-
-		my $formattedText;
-		
-		my $lenFormatString = length($formatString);
-		if ($lenFormatString && !$RawMode && $multipartFlags != $EMultipartMiddle && $multipartFlags != $EMultipartLast)
-			{
-			for (my $i=0; $i<$lenFormatString; $i++)
-				{
-				my $c = (substr ($formatString, $i, 1));
-#				printf "$c\n";
-				if ($c eq "%")
-					{
-					undef my $fieldLen;
-					$i++;
-	        		$c = (substr ($formatString, $i, 1));
-					if ($c eq "%")
-						{
-						$formattedText.= substr ($formatString, $i, 1);
-						next;
-						}
-					if ($c eq "*")	## take length from buffer
-						{
-						$fieldLen = unpack("V", substr($recordData, $recordPos, 4));
-						if ($fieldLen > $recordLen-$recordPos)
-							{
-							$formattedText.= "*** Invalid field length ***";
-							last;
-							}
-						$recordPos+= 4;
-						$i++;
-		        		$c = (substr ($formatString, $i, 1));
-						}
-					if (lc $c eq "x" || $c eq "h")
-						{
-						if (defined $fieldLen)
-							{
-							if (($fieldLen & 3) == 0)
-								{
-								for (my $i=0; $i< $fieldLen; $i+= 4)
-									{
-									$formattedText.= sprintf ("%08X ", unpack("V", substr($recordData, $recordPos, 4)));
-									$recordPos+= 4;
-									}
-								}
-							else
-								{
-								for (my $i=0; $i< $fieldLen; $i++)
-									{
-									$formattedText.= sprintf ("%02X ", unpack("C", substr($recordData, $recordPos, 1)));
-									$recordPos++;
-									}
-								}
-							}
-						else
-							{
-							$formattedText.= sprintf ("0x%08X", unpack("V", substr($recordData, $recordPos, 4)));
-							$recordPos+= 4;
-							}
-						$recordPos = ($recordPos + 3) & ~3;
-						next;
-						}
-					# display "%ld" as hex for now as don't know how to get perl to use or display a 64 decimal value
-					elsif (lc $c eq "l" && substr ($formatString, $i+1, 1) eq "d")
-						{
-						$i++;
-						my $loWord = unpack("V", substr($recordData, $recordPos, 4));
-						$recordPos+= 4;
-						my $hiWord = unpack("V", substr($recordData, $recordPos, 4));
-						$recordPos+= 4;
-						$formattedText.= sprintf ("0x%X:%08X", $hiWord, $loWord);
-						}
-					elsif (lc $c eq "l" && substr ($formatString, $i+1, 1) eq "x")
-						{
-						$i++;
-						my $loWord = unpack("V", substr($recordData, $recordPos, 4));
-						$recordPos+= 4;
-						my $hiWord = unpack("V", substr($recordData, $recordPos, 4));
-						$recordPos+= 4;
-						$formattedText.= sprintf ("0x%X:%08X", $hiWord, $loWord);
-						}
-					elsif (lc $c eq "d")
-						{
-						$formattedText.= sprintf ("%d", unpack("V", substr($recordData, $recordPos, 4)));
-						$recordPos+= 4;
-						$recordPos = ($recordPos + 3) & ~3;
-						next;
-						}
-					elsif ($c eq "s")
-						{
-						if (!defined $fieldLen) 
-							{$fieldLen = $recordLen - $recordPos;}
-						$formattedText.= substr($recordData, $recordPos, $fieldLen);
-						$recordPos+= $fieldLen; 
-						$recordPos = ($recordPos + 3) & ~3;
-						next;
-						}
-					elsif ($c eq "S")
-						{
-						if (!defined $fieldLen) 
-							{$fieldLen = $recordLen-$recordPos;}
-						for (my $j=0; $j < $fieldLen; $j+=2)
-							{
-					        my $byte = unpack("c", substr ($recordData, $recordPos+$j, 1));
- 							$formattedText.= sprintf ("%c", $byte);
-							}
-						$recordPos+= $fieldLen; 
-						$recordPos = ($recordPos + 3) & ~3;
-						next;
-						}
-					elsif ($c eq "c")
-						{
-				        my $byte = unpack("c", substr ($recordData, $recordPos, 1));
-						$formattedText.= sprintf ("%c", $byte);
-						}
-					}
-				else
-					{
-					$formattedText.= $c;
-					}
-				}
-			}
-		else	# no format string : print as hex
-			{
-			for (my $i=0; $i < $recordLen; $i+=4)
-				{
-				$formattedText.= sprintf ("%08X ", unpack("V", substr($recordData, $i, 4)));
-				}
-			$recordPos+= $recordLen; $recordLen = 0;
-			
-			}
-		
-
-		# print Formatted text (col #10)
-		$formattedText=~ s/,/;/g;
-		$formattedText=~ s/\r//g;
-		$formattedText=~ s/\n/,/g;
-		printf "%s", $formattedText;
-
-		printf("\n");
-
-		if ($len < 0 || $recordLen < 0)	{die "truncated file";}
-  
-
-		$pos+= ($len +3) & ~3;
-		seek (LOGFILE, $pos, SEEK_SET) or die "truncated file";
-		$i++;
-		}
-
-	close (LOGFILE);
-
-	if ($VerboseMode)
-		{
-		print "*** Processes ***\n";
-		for $id ( keys %ProcessNames )
-			{
-			printf ("process %08X ProcessName %s\n", $id, $ProcessNames{$id});
-			}
-		print "*** Thread ***\n";
-		for $id ( keys %ThreadNames )
-			{
-			printf ("thread %08X ThreadName %s::%X\n", $id, $ThreadNames{$id}, $ThreadIds{$id});
-			}
-		}
-
-    }
-
-    
-sub ReadSingleRecord
-	{
-	($fh, $data, $dataLen, $recordLen, $category, $subCategory, $multipartFlags, $extraN, $totalLen, $offset, $RawMode) = @_;	
-	
-	my $hdr;
-	my $flags;
-	my $header2;
-	my $timestamp;
-	my $timestamp2;
-	my $contextId;
-	my $programConter;	
-	
-	my $recordOffset = 0;
-	
-	$timestampLast;	
-	my $timestampDelta = 0;	
-	
-	my $bytesRead = read($fh, $hdr, 4);
-	
-	
-	if ($bytesRead < 4)	
-		{return -1;}
-
-	($$recordLen,$flags,$$category,$$subCategory) = unpack("CCCC", $hdr);
-	$$dataLen = $$recordLen-4;
-	
-	if ($flags & $EHeader2Present)
-		{$$multipartFlags = (ReadDword($fh) & $EMultipartFlagMask); $$dataLen-= 4}
-	else
-		{$$multipartFlags = 0;}
-	if ($flags & $ETimestampPresent)
-		{$timestamp = ReadDword($fh); $$dataLen-= 4;}
-	if ($flags & $ETimestamp2Present)
-		{$timestamp2 = ReadDword($fh); $$dataLen-= 4;}
-	if ($flags & $EContextIdPresent)
-		{$contextId = ReadDword($fh); $$dataLen-= 4;}
-	if ($flags & $EPcPresent)
-		{$programConter = ReadDword($fh); $$dataLen-= 4;}
-	if ($flags & $EExtraPresent)
-		{$$extraN = ReadDword($fh); $$dataLen-= 4;}
-	if ($$multipartFlags != 0)
-		{
-		$$totalLen = ReadDword($fh);  $$dataLen-= 4;
-		if ($$multipartFlags == $EMultipartMiddle || $$multipartFlags == $EMultipartLast)
-			{$$offset = ReadDword($fh);  $$totalLen-= 4; $$dataLen-= 4;}
-		}				
-
-	$timestampDelta = $timestamp - $timestampLast;
-	$timestampLast = $timestamp;
-
-	read($fh, $$data, ($$dataLen + 3) & ~3);
-
-
-	if ($RawMode || $$multipartFlags == $EMultipartFirst || $$multipartFlags == 0)
-		{
-		# print header len (col #1)
-		if ($PrintFlagHdrLen){printf ("0x%02X, ", $$recordLen);}
-	
-		# print header flags (col #2)
-		if ($PrintFlagHdrFlags)
-			{
-			printf ("%02X ", $flags);
-			if ($flags & $EHeader2Present) {printf "EHeader2Present ";}
-			if ($flags & $ETimestampPresent) {printf "ETimestampPresent ";}
-			if ($flags & $ETimestamp2Present) {printf "ETimestamp2Present ";}
-			if ($flags & $EContextIdPresent) {printf "EContextIdPresent ";}
-			if ($flags & $EPcPresent) {printf "EPcPresent ";}
-			if ($$multipartFlags != 0)
-				{
-				printf "EExtraPresent ";
-				if ($$multipartFlags == $EMultipartFirst) {print "EMultipartFirst ";}
-				elsif ($$multipartFlags == $EMultipartMiddle) {print "EMultipartMiddle ";}
-				elsif ($$multipartFlags == $EMultipartLast) {print "EMultipartLast ";}
-				printf ("ExtraN(0x%08X) ", $$extraN);
-				}
-			if ($flags & $ERecordTruncated) {printf "ERecordTruncated ";}
-			if ($flags & $EMissingRecord) {printf "EMissingRecord ";}
-			print ",";
-			}
-				
-		# print category (col #3)
-		printf "(%d;%d) $categoryString  , ", $$category, $$subCategory;
-	
-		# print timestamp(s) (col #4)
-		printf "0x";
-		if (defined $timestamp2) {printf "%08X : ", $timestamp2;}
-		printf "%08X", $timestamp;
-		printf ", ";;
-	
-		# print timestamp delta (col #5)
-		printf "0x%08X, ", $timestampDelta;
-
-		# print context Id (col #6)
-		if (!$RawMode && defined $ThreadNames{$contextId})
-			{
-			printf ("%s::%X, ", $ThreadNames{$contextId}, $ThreadIds{$contextId});
-			}
-		else			
-			{
-			if ((($contextId & $EContextIdMask) == $EContextIdThread) || $RawMode)
-				{printf "0x%08X, ", $contextId;}
-			elsif (($contextId & $EContextIdMask) == $EContextIdFIQ)
-				{printf "FIQ, ";}
-			elsif (($contextId & $EContextIdMask) == $EContextIdIRQ)
-				{printf "IRQ, ";}
-			elsif (($contextId & $EContextIdMask) == $EContextIdIDFC)
-				{printf "IDFC, ";}
-			}
-	
-		# print Program Counter (col #7)
-		printf "0x%08X, ", $programConter;
-		}
-
-		
-	
-	
-#########################################################
-#	my $hex;
-#	for (my $i=0; $i < $$dataLen; $i+=4)
-#		{
-#		$hex.= sprintf ("%08X ", unpack("V", substr($$data, $i, 4)));
-#		}
-#	printf "\nadding [$hex]\n";
-#########################################################
-	return $bytesRead
-	}
-
-	      
-sub ReadRecord 
-	{
-	($fh, $recordPos, $recordData, $category, $subCategory, $multipartFlags, $RawMode) = @_;
-#	printf "CurrentPos %08X\n", $pos;
-
-
-
-	seek ($fh, $$recordPos, SEEK_SET) or die "truncated file";
-	my $recordLen;
-	my $extraN;
-	my $totalLen;
-	my $offset;
-	my $dataLen;
-	my $data;
-	my $bytesRead;
-	
-	
-	$bytesRead = ReadSingleRecord($fh,  \$data, \$dataLen, \$recordLen, \$$category, \$$subCategory, \$$multipartFlags, \$extraN, \$totalLen, \$offset, $RawMode);
-
-	if ($bytesRead == -1)	# eof ?
-		{return -1; }
-	$$recordPos+= ($recordLen +3) & ~3;
-	
-	$$recordData = $data;
-    $offset = $dataLen;
-
-	$offset-= 4;		# subtract 4 bytes for UID ?????????
-    
-    if ($RawMode || $$multipartFlags != $EMultipartFirst)
-    	{return $dataLen;}
-
-    $pos = $$recordPos;
-
-	while (1)
-		{
-		
-		# find next record, i.e. look for a record which matches $extraN 
-		
-		seek ($fh, $pos, SEEK_SET) or die "truncated file";
-
-		my $recordLen;
-		
-		my $category;
-		my $subCategory;
-		my $multipartFlags;
-		my $currentExtraN;
-		my $currentOffset;
-		
-		my $totalLen;
-		my $currentDataLen;
-		my $data;
-		$bytesRead = ReadSingleRecord($fh, \$data, \$currentDataLen, \$recordLen, \$category, \$subCategory, \$multipartFlags, \$currentExtraN, \$totalLen, \$currentOffset, $RawMode);
-		if ($bytesRead == -1)	# eof ?
-			{return -1; }
-		$pos+= ($recordLen +3) & ~3;
-		
-#		printf "\npos %08X, Seaching for (extra %08X, offset %08X), found (extra %08X, offset %08X)\n",
-#			$pos, $extraN, $offset, $currentExtraN, $currentOffset;
-
-		if ($currentExtraN == $extraN && $currentOffset == $offset)
-			{
-			$$recordData.= $data;
-			$offset+= $currentDataLen;
-			$dataLen+= $currentDataLen;
-			}
-			
-		if ($multipartFlags == $EMultipartLast)
-			{last;}
-		}
-	
-	return $dataLen;
-	}	
-
-sub ReadDword {
-	(my $fh) = @_;
-	my $buffer;
-
-	$bytesRead = read($fh, $buffer, 4);
-	if ($bytesRead < 4) 	{die "truncated file";}
-
-	my $dword = unpack("V", $buffer);
-
-	return $dword
-	};
-
-sub ReadByte {
-	(my $fh) = @_;
-	my $buffer;
-
-	$bytesRead = read($fh, $buffer, 1);
-	if ($bytesRead < 1) 	{die "truncated file";}
-
-	my $byte = unpack("C", $buffer);
-
-	return $byte
-	};
-
-    
-	
-sub PrintFormatTables($)
-	{
-	my ($formatTables) = @_;
-		
-	for $tableIndex ( sort keys %$formatTables )
-		{
-		printf ("SYMTraceFormatCategory %08X:\n", $tableIndex);
-		for $formatId (sort keys %{ $$formatTables{$tableIndex} } )
-			{
-			printf ("%08X => %s\n", $formatId, $$formatTables{$tableIndex}{$formatId});
-			}
-			print "\n";
-		}
-	}
-        
-
-
-sub OutputSawDictionary($)
-	{
-	my ($formatTables) = @_;
-
-
-	# SAW enums
-	$EFieldTypeHexDump = 0;
-	$EFieldTypeHex = 1;
-	$EFieldTypeDecimal = 2;
-	$EFieldTypeStringToEnd = 3;
-	$EFieldTypeNullTerminatedString = 4;
-	$EFieldTypeHexDumpToEnd = 5;
-	$EFieldTypeUnicodeToEnd = 6;
-	$EFieldTypeNullTerminatedUnicode = 7;
-	$EFieldTypeCountedUnicode = 8;
-	$EFieldTypeCountedHexDump = 9;
-	$EFieldTypeCountedString = 10;
-
-	my $moduleIds;	# string containg all UIDs separared by semi-colons
-		
-	for $tableIndex ( sort keys %$formatTables )
-		{
-		if ($tableIndex < 256)
-			{
-			next;
-			}
-		$moduleIds.= sprintf ("%08X;", $tableIndex);
-		
-		printf ("MODULEID_%08X_DESC=\n", $tableIndex);
-		printf ("MODULEID_%08X_NAME=%08X\n", $tableIndex, $tableIndex);
-		
-		my $formatIds;
-		$formatIds = sprintf ("MODULEID_%08X_FORMATIDS=", $tableIndex);
-		
-		for $formatId  (sort keys %{ $$formatTables{$tableIndex} } )
-			{
-			$formatIds.= sprintf ("%d;", $formatId);
-			}
-		printf ("$formatIds\n");
-		
-		
-		for $formatId (sort keys %{ $$formatTables{$tableIndex} } )
-			{
-			my $fieldCount = 0;
-			my $formatString = $$formatTables{$tableIndex}{$formatId};
-			
-#printf ("formatString = (%s)\n", $formatString);
-
-			# format name is the first format string up until the first space or '%' character or end-of line ...
-			$formatString=~ m/^[^%\s]*/;
-			my $formatName = $&;
-			
-			# thow the format name away
-			$formatString = $';
-			
-			# strip the leading space
-			$formatString=~ s/\s*//;
-
-			printf ("MODULEID_%08X_FORMATID_%d_NAME=%s\n", $tableIndex, $formatId, $formatName);
-#printf ("MODULEID_%08X_FORMATID_%d_DESC=\n", $tableIndex, $formatId);
-
-			my $lenFormatString = length($formatString);
-			
-			my $formattedText;
-			my $fieldType = $EFieldTypeHex;
-			my $fieldLen = 0;
-			while (length($formatString))
-				{
-				my $c = (substr ($formatString, 0, 1));
-#print ("[$formatString][$c]\n");				
-				$formatString=~ s/.//;	# strip the leading space
-				if ($c eq "%")
-					{
-#print "found %\n";							
-					my $fieldLenSpecified = 0;
-	        		$c = (substr ($formatString, 0, 1));
-					$formatString=~ s/.//;	# discard char
-#print "c2=$c\n";							
-					if ($c eq "%")
-						{
-						$formattedText.= substr ($formatString, 0, 1);
-						next;
-						}
-					if ($c eq "*")	## take length from buffer
-						{
-						$fieldLenSpecified = 1;
-		        		$c = (substr ($formatString, 0, 1));
-						$formatString=~ s/.//;	# discard char
-						}
-					if (lc $c eq "x" || $c eq "h")
-						{
-						## deal wilth $fieldLenSpecified
-						if ($fieldLenSpecified)
-							{
-							$fieldType = $EFieldTypeCountedHexDump;
-							$fieldLen = 0;
-							}
-						else
-							{
-							$fieldType = $EFieldTypeHex;
-							$fieldLen = 4;
-							}
-						}
-					elsif (lc $c eq "l" && substr ($formatString, 0, 1) eq "d")
-						{
-						$formatString=~ s/.//;	# discard char
-						$fieldType = $EFieldTypeDecimal;
-						$fieldLen = 8;
-						}
-					elsif (lc $c eq "l" && substr ($formatString, 0, 1) eq "x")
-						{
-						$formatString=~ s/.//;	# discard char
-						$fieldType = $EFieldTypeHex;
-						$fieldLen = 8;
-						}
-					elsif (lc $c eq "d")
-						{
-						$fieldType = $EFieldTypeDecimal;
-						$fieldLen = 4;
-						}
-					elsif ($c eq "s")
-						{
-						## deal wilth $fieldLenSpecified
-						if ($fieldLenSpecified)
-							{
-							$fieldType = $EFieldTypeCountedString;
-							$fieldLen = 0;
-							}
-						else
-							{
-							$fieldType = $EFieldTypeStringToEnd;
-							$fieldLen = 0;
-							}
-						}
-					elsif ($c eq "S")
-						{
-						## deal wilth $fieldLenSpecified
-						if ($fieldLenSpecified)
-							{
-							$fieldType = $EFieldTypeCountedUnicode;
-							$fieldLen = 0;
-							}
-						else
-							{
-							$fieldType = EFieldTypeUnicodeToEnd;
-							$fieldLen = 0;
-							}
-						}
-					elsif ($c eq "c")
-						{
-						$fieldType = $EFieldTypeHex;
-						$fieldLen = 1;
-						}
-					printf ("MODULEID_%08X_FORMATID_%d_FIELD_%d_NAME=%s\n", $tableIndex, $formatId, $fieldCount, $formattedText);
-					printf ("MODULEID_%08X_FORMATID_%d_FIELD_%d_TYPE=%s\n", $tableIndex, $formatId, $fieldCount, $fieldType);
-					if ($fieldLen > 0)
-						{printf ("MODULEID_%08X_FORMATID_%d_FIELD_%d_LENGTH=%s\n", $tableIndex, $formatId, $fieldCount, $fieldLen);}
-					$fieldCount++;
-					$formattedText="";
-					
-					$formatString=~ s/\s//;	# strip the leading space
-					}
-				else
-					{
-#					if ($c eq ":") {$formattedText.= '\\'; }
-					$formattedText.= $c;
-					}
-				}
-			printf ("MODULEID_%08X_FORMATID_%d_FIELDS=%d\n", $tableIndex, $formatId, $fieldCount);
-			
-			}
-		print "MODULEIDS=$moduleIds\n";
-		}
-	}
-	
-	
-	
-	
-	
-	
-	        
-        
-sub H2Trace($$)
-{
-	%basictypes = (
-		TInt8		=>	1,
-		TUint8		=>	1,
-		TInt16		=>	2,
-		TUint16		=>	2,
-		TInt32		=>	4,
-		TUint32		=>	4,
-		TInt		=>	4,
-		TUint		=>	4,
-		TBool		=>	4,
-		TInt64		=>	8,
-		TUint64		=>	8,
-		TLinAddr	=>	4,
-		TVersion	=>	4,
-		TPde		=>	4,
-		TPte		=>	4,
-		TProcessPriority => 4,
-		TFormatId	=>  2,
-	);
-	
-	if (scalar(@_)!= 2) {
-		die "perl h2trace.pl <input.h>\n";
-	}
-	my ($infile, $filescope) = @_;
-	
-	if ($VerboseMode)
-		{print "\nOpening $infile\n";}
-	
-	open IN, $infile or die "Can't open $infile for input\n";
-	my $in;
-	while (<IN>) {
-		$in.=$_;
-	}
-	close IN;
-	
-	# First remove any backslash-newline combinations
-	$in =~ s/\\\n//gms;
-	
-	# Remove any character constants
-	$in =~  s/\'(.?(${0})*?)\'//gms;
-	
-	# Strip comments beginning with //
-	$in =~ s/\/\/(.*?)\n/\n/gms;    #//(.*?)\n
-	
-	# Strip comments (/* */) but leave doxygen comments (/** */)
-	$in =~ s/\/\*[^*](.*?)\*\//\n/gms;  #/*(.*?)*/
-	
-	
-	# Collapse whitespace into a single space or newline
-	$in =~ s/\t/\ /gms;
-	$in =~ s/\r/\ /gms;
-	
-	# Tokenize on non-identifier characters
-	my @tokens0 = split(/(\W)/,$in);
-	my @tokens;
-	my $inString = 0;
-	my $inComment = 0;
-	my $string;
-	foreach $t (@tokens0) {
-		next if ($t eq "");
-		next if (!$inString && ($t eq " " or $t eq ""));
-		if ($inComment == 0) 
-			{
-			if ($t eq "/")
-				{$inComment = 1;}
-			}
-		elsif ($inComment == 1) 
-			{
-			if ($t eq "*")
-				{$inComment = 2;}
-			else
-				{$inComment = 0;}
-			}
-		elsif ($inComment == 2) 
-			{
-			if ($t eq "*")
-				{$inComment = 3;}
-			}
-		elsif ($inComment == 3) 
-			{
-			if ($t eq "/")
-				{
-				$inComment = 0;
-		        # if we were in a string, need to push previous '*'
-		        if ($inString)
-		          {
-		          push @tokens, "*";
-		          }
-				$inString = 0;	# end of comment aborts a string
-				$string = "";
-				}
-			else
-				{$inComment = 2;}
-			}
-			
-		if ($t eq "\"")
-			{
-			if (!$inString) 
-				{
-				$inString=1;
-				next;
-				}
-			else
-				{
-				$inString=0;
-				$t = $string;
-				$string = "";
-#				if ($VerboseMode) {print "string : [$t]\n";	}
-				}
-			}
-			
-		if ($inString)
-			{
-			$string.= $t;
-			next;
-			}
-		push @tokens, $t;
-	}
-	
-	my $CurrentTraceFormatString;
-	my $CurrentTraceFormatCategory;
-	# format Key as specified by the @TraceFormatCategory tag is either the current category 
-	# or the current UID
-	my $CurrentFormatTableKey;	
-	
-	
-	my $line=1;
-	parse_scope($filescope, \@tokens, \$line);
-
-	#print $in;
-	#print join (" ", @tokens);
-}	# end of     H2Trace
-	
-
-
-	sub parse_scope($$$) {
-		my ($scope, $tokens, $line) = @_;
-		my $state = 1;
-		
-		my @classes;
-		my $curr_offset=0;
-		my $overall_align=0;
-#		print ">parse_scope $scope->{name}\n";
-		
-		while (scalar(@$tokens))
-			{
-			my $t = shift @$tokens;
-#			printf "t: [$t] [$$line]\n";
-	    	if (!defined ($t)) {
-	      		printf "undefined !";
-	      		next;
-	      	}
-			if ($state>=-1 and $t eq "\n") {
-				++$$line;
-				$state=1;
-				next;
-			} elsif ($state==-1 and $t ne "\n") {
-				next;
-			} elsif ($state==-2 and $t ne ';') {
-				next;
-			}
-			
-			if ($state>0 and $t eq '#') {
-				$t = shift @$tokens;
-				if ($t eq 'define') {
-					my $ident = shift @$tokens;
-					my $defn = shift @$tokens;
-					if ($defn ne '(') {	# don't do macros with parameters
-#					print "MACRO: $ident :== $defn\n";
-					$macros{$ident} = $defn;
-					}
-				}
-				$state=-1;	# skip to next line
-				next;
-			}
-			
-			
-			if (parse_doxygen($scope,$tokens, $line, $t) == 1)
-				{next;}
-	
-			if ($t eq "namespace" ) {
-				$state=0;
-				my %cl;
-				$cl{specifier}=$t;
-				$cl{scope}=$scope;
-				$cl{values}=$scope->{values};
-				$cl{members}=\$scope->{members};
-				$cl{typedefs}=\$scope->{typedefs};
-				$cl{FormatTables}=$scope->{FormatTables};
-				$cl{formatStrings} =$scope->{formatStrings};
-				$cl{formatCategories} =$scope->{formatCategories};
-				
-				my $new_namespace = \%cl;
-				my $n = get_token($scope,$tokens,$line);
-				if ($n !~ /\w+/) {
-					warn "Unnamed $t not supported at line $$line\n";
-					return;
-				}
-				$new_namespace->{name}=$n;
-				my @class_match = grep {$_->{name} eq $n} @classes;
-				my $exists = scalar(@class_match);
-				my $b = get_token($scope,$tokens,$line);
-				if ($b eq ':') {
-					die "Inheritance not supported at line $$line\n";
-				} elsif ($b eq ';') {
-					# forward declaration
-					push @classes, $new_namespace unless ($exists);
-					next;
-				} elsif ($b ne '{') {
-					warn "Syntax error#1 at line $$line\n";
-					return;
-				}
-				if ($exists) {
-					$new_namespace = $class_match[0];
-					if ($new_namespace->{complete}) {
-						warn "Duplicate definition of $cl{specifier} $n\n";
-					}
-				}
-				push @classes, $new_namespace unless ($exists);
-				parse_scope($new_namespace, $tokens, $line);
-				next;
-			}
-			
-			if ($t eq "struct" or $t eq "class" or $t eq "NONSHARABLE_CLASS") {
-				next if ($state==0);
-				$state=0;
-				my %cl;
-				$cl{specifier}=$t;
-				$cl{scope}=$scope;
-				my @members;
-				my @typedefs;
-				$cl{members}=\@members;
-				$cl{typedefs}=\@typedefs;
-				$cl{FormatTables}=$scope->{FormatTables};
-				my $new_class = \%cl;
-				my $n;
-
-				if ($t eq "NONSHARABLE_CLASS")
-					{
-					my $b = get_token($scope,$tokens,$line);
-					if ($b !~ /\(/) {die "Syntax error at line $$line\n";}
-					$n = get_token($scope,$tokens,$line);
-  				$b = get_token($scope,$tokens,$line);
-					if ($b !~ /\)/) {die "Syntax error at line $$line\n";}
-					}
-				else					
-					{
-					$n = get_token($scope,$tokens,$line);
-					}
-								
-				
-				if ($n !~ /\w+/) {
-					warn "Unnamed $t not supported at line $$line\n";
-					return;
-				}
-				$new_class->{name}=$n;
-				my @class_match = grep {$_->{name} eq $n} @classes;
-				my $exists = scalar(@class_match);
-				my $b = get_token($scope,$tokens,$line);
-				#skip inheritance etc until we get to a '{' or \ ';'
-				while ($b ne '{' && $b ne ';')
-					{
-			        $b = get_token($scope,$tokens,$line);
-			        die "Syntax error#2 at line $$line\n" if  (!defined $b);
-					}
-				if ($b eq ';') {
-					# forward declaration
-					push @classes, $new_class unless ($exists);
-					next;
-				} 
-				if ($exists) {
-					$new_class = $class_match[0];
-					if ($new_class->{complete}) {
-						warn "Duplicate definition of $cl{specifier} $n\n";
-					}
-				}
-				push @classes, $new_class unless ($exists);
-				parse_scope($new_class, $tokens, $line);
-				next;
-			} elsif ($t eq "enum") {
-				$state=0;
-				my $n = get_token($scope,$tokens,$line);
-				my $name="";
-				if ($n =~ /\w+/) {
-					$name = $n;
-					$n = get_token($scope,$tokens,$line);
-				}
-				push @enums, $name;
-				if ($n ne '{') {
-					die "Syntax error#4 at line $$line\n";
-				}
-				parse_enum($scope, $tokens, $line, $name);
-				next;
-			} elsif ($t eq '}') {
-				$state=0;
-				if ($scope->{scope}) {
-			        if ($scope->{specifier} eq "namespace")
-			        	{
-						$scope->{complete}=1;
-#						print "Scope completed\n";
-						last;
-						}
-					$t = get_token($scope,$tokens,$line);
-					# skip to next ';'
-					while (defined ($t) and $t ne ';')
-						{$t = get_token($scope,$tokens,$line);}
-					die "Syntax error#5 at line $$line\n" if ($t ne ';');
-					$scope->{complete}=1;
-#					print "Scope completed\n";
-					last;
-				}
-				warn "Syntax error#5 at line $$line\n";
-				return;
-			}
-			$state=0;
-			if ($scope->{scope}) {
-				if ($t eq "public" or $t eq "private" or $t eq "protected") {
-					if (shift (@$tokens) eq ':') {
-						next;	# ignore access specifiers
-					}
-				die "Syntax error#6 at line $$line\n";
-				}
-			}
-			unshift @$tokens, $t;
-			
-			my @currdecl = parse_decl_def($scope, $tokens, $line);
-#			print scalar (@currdecl), "\n";
-			if ($t eq 'static') {
-				next;	# skip static members
-			}
-			my $typedef;
-			if ($t eq 'typedef') {
-#			print "TYPEDEF\n";
-				$typedef = 1;
-				$t = shift @currdecl;
-				$t = $currdecl[0];
-			} else {
-#			print "NOT TYPEDEF\n";
-				$typedef = 0;
-			}
-#			print "$currdecl[0]\n";
-			next if (scalar(@currdecl)==0);
-			
-			if ($t eq "const") {
-				# check for constant declaration
-#				print "CONST $currdecl[1] $currdecl[2] $currdecl[3]\n";
-				my $ctype = lookup_type($scope, $currdecl[1]);
-#				print "$ctype->{basic}    $ctype->{size}\n";
-				if ($ctype->{basic} and $currdecl[2]=~/^\w+$/ and $currdecl[3] eq '=') {
-					if ($typedef!=0) {
-						die "Syntax error#7 at line $$line\n";
-					}
-					shift @currdecl;
-					shift @currdecl;
-					my $type = $ctype->{name};
-					my $name;		#### = shift @currdecl;
-
-					if ($scope->{name})
-						{	
-						$name = $scope->{name} . "::" . shift @currdecl;
-						}
-					else
-						{
-						$name = shift @currdecl;
-						}
-#					printf "[$name,$scope->{name}]";
-					my $size = $ctype->{size};
-					shift @currdecl;
-					my $value = get_constant_expr($scope,\@currdecl,$line);
-					$values{$name} = {type=>$type, size=>$size, value=>$value};
-					next;
-				}
-			}
-			
-			
-			
-		}
-	}
-	
-	sub get_token($$$) {
-		my ($scope,$tokenlist,$line) = @_;
-		while (scalar(@$tokenlist)) {
-			my $t = shift @$tokenlist;
-			return $t if (!defined($t));
-			if (parse_doxygen($scope,$tokenlist, $line, $t) == 1)
-				{next;}
-			if ($t !~ /^[\s]*$/)
-				{
-				if ($$tokenlist[0] eq ":" and $$tokenlist[1] eq ":")
-					{
-					$t.= shift @$tokenlist;
-					$t.= shift @$tokenlist;
-					$t.= shift @$tokenlist;
-#					print "Colon-separated token";
-					}
-				return $t
-				}
-			++$$line;
-		}
-  		return undef;
-	}
-	
-	sub skip_qualifiers($) {
-		my ($tokens) = @_;
-		my $f=0;
-		my %quals = (
-			EXPORT_C => 1,
-			IMPORT_C => 1,
-			inline => 1,
-			virtual => 0,
-			const => 0,
-			volatile => 0,
-			static => 0,
-			extern => 0,
-			LOCAL_C => 0,
-			LOCAL_D => 0,
-			GLDEF_C => 0,
-			GLREF_C => 0,
-			GLDEF_D => 0,
-			GLREF_D => 0
-			);
-		for (;;) {
-			my $t = $$tokens[0];
-			my $q = $quals{$t};
-			last unless (defined ($q));
-			$f |= $q;
-			shift @$tokens;
-		}
-		return $f;
-	}
-	
-	sub parse_indirection($) {
-		my ($tokens) = @_;
-		my $level = 0;
-		for (;;) {
-			my $t = $$tokens[0];
-			if ($t eq '*') {
-				++$level;
-				shift @$tokens;
-				next;
-			}
-			last if ($t ne "const" and $t ne "volatile");
-			shift @$tokens;
-		}
-		return $level;
-	}
-	
-	sub get_operand($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $t = get_token($scope,$tokens,$line);
-		if ($t eq '-') {
-			my $x = get_operand($scope,$tokens,$line);
-			return -$x;
-		} elsif ($t eq '+') {
-			my $x = get_operand($scope,$tokens,$line);
-			return $x;
-		} elsif ($t eq '~') {
-			my $x = get_operand($scope,$tokens,$line);
-			return ~$x;
-		} elsif ($t eq '!') {
-			my $x = get_operand($scope,$tokens,$line);
-			return $x ? 0 : 1;
-		} elsif ($t eq '(') {
-			my $x = get_constant_expr($scope,$tokens,$line);
-			my $t = get_token($scope,$tokens,$line);
-			if ($t ne ')') {
-				warn "Missing ) at line $$line\n";
-				return undefined;
-			}
-			return $x;
-		} elsif ($t eq "sizeof") {
-			my $ident = get_token($scope,$tokens,$line);
-			if ($ident eq '(') {
-				$ident = get_token($scope,$tokens,$line);
-				my $cb = get_token($scope,$tokens,$line);
-				if ($cb ne ')') {
-					warn "Bad sizeof() syntax at line $$line\n";
-					return undefined;
-				}
-			}
-			$ident = look_through_macros($ident);
-			if ($ident !~ /^\w+$/) {
-				warn "Bad sizeof() syntax at line $$line\n";
-				return undefined;
-			}
-			my $type = lookup_type($scope, $ident);
-			if (!defined $type) {
-				warn "Unrecognised type $ident at line $$line\n";
-				return undefined;
-			}
-			if ($type->{basic}) {
-				return $type->{size};
-			} elsif ($type->{enum}) {
-				return 4;
-			} elsif ($type->{ptr}) {
-				return 4;
-			} elsif ($type->{fptr}) {
-				return 4;
-			}
-			my $al = $type->{class}->{align};
-			my $sz = $type->{class}->{size};
-			return ($sz+$al-1)&~($al-1);
-		}
-		$t = look_through_macros($t);
-		if ($t =~ /^0x/i) {
-			return oct($t);
-		} elsif ($t =~ /^\d/) {
-			return $t;
-		} elsif ($t =~ /^\w+$/) {
-			my $x = lookup_value($scope,$t);
-#			die "Unrecognised identifier '$t' at line $$line\n" unless defined($x);
-			if (!defined($x)) {
-				print "Unrecognised identifier '$t' at line $$line\n" ;
-			}
-			return $x;
-		} elsif ($t =~ /^\w+::\w+$/) {
-			my $x = lookup_value($scope,$t);
-#			die "Unrecognised identifier '$t' at line $$line\n" unless defined($x);
-			if (!defined($x)) {
-				print "Unrecognised identifier '$t' at line $$line\n" ;
-			}
-			return $x;
-		} else {
-			warn "Syntax error#10 at line $$line\n";
-			return undefined;
-		}
-	}
-	
-	sub look_through_macros($) {
-		my ($ident) = @_;
-		while ($ident and $macros{$ident}) {
-			$ident = $macros{$ident};
-		}
-		return $ident;
-	}
-	
-	sub lookup_value($$) {
-		my ($scope,$ident) = @_;
-		while ($scope) {
-			my $vl = $scope->{values};
-			if (defined($vl->{$ident})) {
-				return $vl->{$ident}->{value};
-			}
-			$scope = $scope->{scope};
-		}
-		return undef();
-	}
-	
-	sub lookup_type($$) {
-		my ($scope,$ident) = @_;
-		if ($basictypes{$ident}) {
-			return {scope=>$scope, basic=>1, name=>$ident, size=>$basictypes{$ident} };
-		}
-		while ($scope) {
-			if ($basictypes{$ident}) {
-				return {scope=>$scope, basic=>1, name=>$ident, size=>$basictypes{$ident} };
-			}
-			my $el = $scope->{enums};
-			my $cl = $scope->{classes};
-			my $td = $scope->{typedefs};
-			if (grep {$_ eq $ident} @$el) {
-				return {scope=>$scope, enum=>1, name=>$ident, size=>4 };
-			}
-			my @match_class = (grep {$_->{name} eq $ident} @$cl);
-			if (scalar(@match_class)) {
-				return {scope=>$scope, class=>$match_class[0]};
-			}
-			my @match_td = (grep {$_->{name} eq $ident} @$td);
-			if (scalar(@match_td)) {
-				my $tdr = $match_td[0];
-				my $cat = $tdr->{category};
-				if ($cat eq 'basic' or $cat eq 'enum' or $cat eq 'class') {
-					$ident = $tdr->{alias};
-					next;
-				} else {
-					return { scope=>$scope, $cat=>1, $size=>$tdr->{size} };
-				}
-			}
-			$scope = $scope->{scope};
-		}
-		return undef();
-	}
-	
-	sub get_mult_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_operand($scope,$tokens,$line);
-		my $t;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '*') {
-				my $y = get_operand($scope,$tokens,$line);
-				$x = $x * $y;
-			} elsif ($t eq '/') {
-				my $y = get_operand($scope,$tokens,$line);
-				if ($y != 0)
-					{$x = int($x / $y);}
-			} elsif ($t eq '%') {
-				my $y = get_operand($scope,$tokens,$line);
-				if ($y != 0)
-					{$x = int($x % $y);}
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_add_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_mult_expr($scope,$tokens,$line);
-		my $t;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '+') {
-				my $y = get_mult_expr($scope,$tokens,$line);
-				$x = $x + $y;
-			} elsif ($t eq '-') {
-				my $y = get_mult_expr($scope,$tokens,$line);
-				$x = $x - $y;
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_shift_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_add_expr($scope,$tokens,$line);
-		my $t, $t2;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '<' or $t eq '>') {
-				$t2 = get_token($scope,$tokens,$line);
-				if ($t2 ne $t) {
-					unshift @$tokens, $t2;
-					last;
-				}
-			}
-			if ($t eq '<') {
-				my $y = get_add_expr($scope,$tokens,$line);
-				$x = $x << $y;
-			} elsif ($t eq '>') {
-				my $y = get_add_expr($scope,$tokens,$line);
-				$x = $x >> $y;
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_and_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_shift_expr($scope,$tokens,$line);
-		my $t;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '&') {
-				my $y = get_shift_expr($scope,$tokens,$line);
-				$x = $x & $y;
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_xor_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_and_expr($scope,$tokens,$line);
-		my $t;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '^') {
-				my $y = get_and_expr($scope,$tokens,$line);
-				$x = $x ^ $y;
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_ior_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_xor_expr($scope,$tokens,$line);
-		my $t;
-		for (;;) {
-			$t = get_token($scope,$tokens,$line);
-			if ($t eq '|') {
-				my $y = get_xor_expr($scope,$tokens,$line);
-				$x = $x | $y;
-			} else {
-				last;
-			}
-		}
-		unshift @$tokens, $t;
-		return $x;
-	}
-	
-	sub get_constant_expr($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $x = get_ior_expr($scope,$tokens,$line);
-		return $x;
-	}
-	
-	sub parse_enum($$$$) {
-		my ($scope,$tokens,$line,$enum_name) = @_;
-		my $vl = $scope->{values};
-		my $fstr = $scope->{formatStrings};
-		my $fcat = $scope->{formatCategories};
-		my $fmtTable = $scope->{FormatTables};
-		
-		my $x = 0;
-		for (;;) {
-			my $t = get_token($scope,$tokens,$line);
-			last if ($t eq '}');
-			if (!defined($t)) {
-				die "Unexpected end of file #2 at line $$line\n";
-			}
-			
-			if ($t eq '#') {
-				next;
-				}
-			
-			if ($t !~ /^\w+$/) {
-				warn "Syntax error#11 at line $$line\n";
-				next;
-			}
-
-			if ($scope->{name})
-				{	
-				$t = $scope->{name} . "::" . $t;
-				}
-
-			if (defined($vl->{$t})) {
-				warn "Duplicate identifier [$t] at line $$line\n";
-			}
-			my $t2 = get_token($scope,$tokens,$line);
-			if ($t2 eq ',') {
-				$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
-				$fstr->{$t} = $CurrentTraceFormatString; 
-				$fcat->{$t} = $CurrentTraceFormatCategory; 
-				if (defined $CurrentTraceFormatCategory && defined $CurrentTraceFormatString)
-					{ $fmtTable->{$CurrentTraceFormatCategory}{$x} = $CurrentTraceFormatString; }
-				undef $CurrentTraceFormatString;
-				++$x;
-			} elsif ($t2 eq '}') {
-				$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
-				$fstr->{$t} = $CurrentTraceFormatString; 
-				$fcat->{$t} = $CurrentTraceFormatCategory; 
-				if (defined $CurrentTraceFormatCategory && defined $CurrentTraceFormatString)
-					{ $fmtTable->{$CurrentTraceFormatCategory}{$x} = $CurrentTraceFormatString; }
-				undef $CurrentTraceFormatString;
-				++$x;
-				last;
-			} elsif ($t2 eq '=') {
-				$x = get_constant_expr($scope, $tokens, $line);
-				$vl->{$t} = {type=>$enum_name, size=>4, value=>$x, enum=>1};
-				$fstr->{$t} = $CurrentTraceFormatString; 
-				$fcat->{$t} = $CurrentTraceFormatCategory;
-				if (defined $CurrentTraceFormatCategory && defined $CurrentTraceFormatString)
-					{ $fmtTable->{$CurrentTraceFormatCategory}{$x} = $CurrentTraceFormatString; }
-				undef $CurrentTraceFormatString; 
-				++$x;
-				$t2 = get_token($scope,$tokens,$line);
-				last if ($t2 eq '}');
-				next if ($t2 eq ',');
-				warn "Syntax error#12 at line $$line\n";
-			} else {
-				unshift @$tokens, $t2;
-			}
-		}
-		my $t = get_token($scope,$tokens,$line);
-		if ($t ne ';') {
-			warn "Missing ; at line $$line\n";
-		}
-	}
-	
-	
-	sub  parse_decl_def($$$) {
-		my ($scope,$tokens,$line) = @_;
-		my $level=0;
-		my @decl;
-		while ( scalar(@$tokens) ) {
-			my $t = get_token($scope,$tokens, $line);
-			if ( (!defined ($t) || $t eq ';') and ($level==0)) {
-				return @decl;
-			}
-	
-			if ($t eq "static")
-				{
-				next;
-				}
-	
-			push @decl, $t;
-			if ($t eq '{') {
-				++$level;
-			}
-			if ($t eq '}') {
-				if ($level==0) {
-					warn "Syntax error#13 at line $$line\n";
-					unshift @$tokens, $t;
-					return @decl;
-					
-				}
-				if (--$level==0) {
-					return ();	# end of function definition reached
-				}
-			}
-		}
-		die "Unexpected end of file #3 at line $$line\n";
-	}
-	
-	sub dump_scope($) {
-		my ($scope) = @_;
-		my $el = $scope->{enums};
-		my $cl = $scope->{classes};
-		my $vl = $scope->{values};
-		my $fstr = $scope->{formatStrings};
-		my $fcat = $scope->{formatCategories};
-		print "SCOPE: $scope->{name}\n";
-		if (scalar(@$el)) {
-			print "\tenums:\n";
-			foreach (@$el) {
-				print "\t\t$_\n";
-			}
-		}
-		if (scalar(keys(%$vl))) {
-			print "\tvalues:\n";
-			foreach $vname (keys(%$vl)) {
-				my $v = $vl->{$vname};
-				my $x = $v->{value};
-				my $t = $v->{type};
-				my $sz = $v->{size};
-				my $fstring = $fstr->{$vname};
-				my $fcategory = $fcat->{$vname};
-				if ($v->{enum}) {
-					printf ("\t\t$vname\=$x (enum $t) size=$sz fcat=[0x%x] fstr=[%s]\n", $fcategory,$fstring);
-				} else {
-					printf ("\t\t$vname\=$x (type $t) size=$sz fcat=[0x%x] fstr=[%s]\n", $fcategory, $fstring);
-				}
-			}
-		}
-		if ($scope->{scope}) {
-			my $members = $scope->{members};
-			foreach (@$members) {
-				my $n = $_->{name};
-				my $sz = $_->{size};
-				my $off = $_->{offset};
-				my $spc = $_->{spacing};
-				if (defined $spc) {
-					print "\t$n\[\]\: spacing $spc size $sz offset $off\n";
-				} else {
-					print "\t$n\: size $sz offset $off\n";
-				}
-			}
-			print "\tOverall size : $scope->{size}\n";
-			print "\tOverall align: $scope->{align}\n";
-		}
-		foreach $s (@$cl) {
-			dump_scope($s);
-		}
-	}
-	
-	
-	
-		
-	sub parse_doxygen($$$$) {
-		my ($scope,$tokens,$line,$t) = @_;
-	
-		if ($t ne "/")
-			{
-			return 0;	# not a doxygen comment
-			}
-		if ($t eq "/") {
-			$state=0;
-			my $t2 = shift @$tokens;
-			my $t3 = shift @$tokens;
-	
-			if ($t2 ne "*" || $t3 ne "*")
-				{
-				unshift @$tokens, $t3;
-				unshift @$tokens, $t2;
-				return 0;	# not a doxygen comment
-				}
-		}
-#		printf "doxygen start on line %d\n", $$line;
-		for (;;) {
-			my $t = shift @$tokens;
-			if (!defined($t)) 
-					{
-					warn "Unexpected end of file #4 at line $$line\n";	
-					return
-					}
-			
-			if ($t eq "\n"){++$$line };
-			
-			if ($t eq '*')
-				{
-				my $t2 = shift @$tokens;
-				last if ($t2 eq '/');
-				unshift @$tokens, $t2;
-				}
-			
-			if ($t eq '@')
-				{
-				my $t2 = shift @$tokens;
-				if ($t2 eq 'SYMTraceFormatString')
-					{
-					my $t3 = shift @$tokens;
-#					if ($VerboseMode){print "SYMTraceFormatString = [$t3]\n";}
-					$CurrentTraceFormatString = $t3;
-					}
-				if ($t2 eq 'SYMTraceFormatCategory')
-					{
-					$CurrentTraceFormatCategory = get_operand($scope,$tokens,$line);
-#					if ($VerboseMode){printf ("SYMTraceFormatCategory = 0x%x\n", $CurrentTraceFormatCategory);}
-					}
-				else
-					{
-					unshift @$tokens, $t2;
-					}
-				}
-	
-		}
-#		printf ("doxygen end  on line %d\n", $$line);
-		return 1;	# is a doxygen comment
-	}
-	
-
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-        
-                
--- a/kerneltest/f32test/demandpaging/t_nandpaging.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/demandpaging/t_nandpaging.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -277,7 +277,6 @@
 					Drive.ControlIO(KNandGetDeferStats,statsBuf,0);
 					test.Printf(_L("PG %d PO %d(%d%%) NG %d NO %d\n"),stats.iPageGarbage,  stats.iPageOther, (TInt) ((stats.iPageOther*100)/cCount), stats.iNormalGarbage,  stats.iNormalOther);
 
-					test(stats.iPageOther>0);
 				 	pageGarbageCount+=stats.iPageGarbage; 
 				 	pageOtherCount+=stats.iPageOther;			 	
 				 	normalGarbageCount+=stats.iNormalGarbage; 
@@ -301,6 +300,7 @@
 			{
 			test.Printf(_L("\nTotals: Avg %2d %d%% CC=%4d \n"), fullTot/fullcCount, (TInt)(totChangeCount*100)/fullcCount, totChangeCount);
 			test.Printf(_L("PG %d PO %d(%d%%) NG %d NO %d\n"),pageGarbageCount,  pageOtherCount,(TInt) (pageOtherCount*100/fullcCount), normalGarbageCount,  normalOtherCount );
+			test(pageOtherCount > 0);	// Ensure at least one paging conflict occurred during the test.
 			}
 
 		// If totChangeCount does not change, nand maybe busy waiting.
@@ -511,15 +511,14 @@
 	TUint8* start = (TUint8*)romHeader+romHeader->iPageableRomStart;
 	TUint size = romHeader->iPageableRomSize;
 	TUint8* addr=NULL;
-	TBool flush;
 	while (Testing)
 		{
 			PageSemaphore.Wait(); // wait for main thread to want paging.
-			flush = (PagesBeingPaged==0);
 			addr=start+((TInt64(Random())*TInt64(size))>>32);	
-			PageDoneSemaphore.Signal(); // Acknolage request.
+			PageDoneSemaphore.Signal(); // Acknowledge request.
 
 			PageMutex.Wait();
+			TBool flush = (PagesBeingPaged==0);	// Ensure only one thread is flushing the cache at a time.
 			PagesBeingPaged++;
 			PageMutex.Signal();
 
--- a/kerneltest/f32test/group/base_f32test.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/group/base_f32test.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "File Server Tests"
 
 component	base_f32test
--- a/kerneltest/f32test/group/bld.inf	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/group/bld.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -268,8 +268,6 @@
 #include "../plugins/version_2/file64bit/group/file64bit_plugin.inf"
 #endif
 
-t_ftrace
-
 t_surrogatepair
 
 // this test loads a actual codepage dll (cp932.dll),  should be the last test.
--- a/kerneltest/f32test/group/t_ftrace.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-// Copyright (c) 1997-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:
-// f32test/group/t_ftrace.mmp
-//
-//
-
-TARGET         t_ftrace.exe
-TARGETTYPE     EXE
-SOURCEPATH	../server
-SOURCE         t_ftrace.cpp
-SOURCE         t_main.cpp
-SOURCEPATH     ../fileutils/src
-SOURCE         t_chlffs.cpp
-
-LIBRARY        euser.lib efsrv.lib hal.lib btracec.lib
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-USERINCLUDE    ../server
-USERINCLUDE    ../fileutils/inc
-
-CAPABILITY		TCB DISKADMIN ALLFILES
-VENDORID 0x70000001
-
-SMPSAFE
--- a/kerneltest/f32test/loader/base_loader.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/loader/base_loader.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,16 +1,1 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # dummy MRP so that the tools put the build output directory in a place consistant with other components
--- a/kerneltest/f32test/locl/localeutils/elocl32_japan/src/t_tlocl32_lat1.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/locl/localeutils/elocl32_japan/src/t_tlocl32_lat1.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 * Copyright (c) 1995-1999 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
+* under the terms of the License "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
--- a/kerneltest/f32test/server/t_dlocl.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/server/t_dlocl.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -669,6 +669,7 @@
     eloclus.Append(TPtrC(KDLLExtension));
     r = locale.GetLocaleDllName(ELocaleLanguageSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test.Printf(_L("dllName looking for %s (%s)\n"), dllName.Ptr(), eloclus.Ptr());
     test(dllName.Find(eloclus) != KErrNotFound);
     
@@ -676,18 +677,21 @@
 
     r = locale.GetLocaleDllName(ELocaleCollateSetting, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclus) != KErrNotFound);
     
     dllName.FillZ();
 
     r = locale.GetLocaleDllName(ELocaleLocaleSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclus) != KErrNotFound);
     
     dllName.FillZ();
 
     r = locale.GetLocaleDllName(ELocaleTimeDateSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclus) != KErrNotFound);
     
     dllName.FillZ();
@@ -720,24 +724,28 @@
     eloclge.Append(KDLLExtension);
     r = locale.GetLocaleDllName(ELocaleLanguageSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclus) != KErrNotFound);
     
     dllName.FillZ();
 
     r = locale.GetLocaleDllName(ELocaleCollateSetting, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclus) != KErrNotFound);
     
     dllName.FillZ();
 
     r = locale.GetLocaleDllName(ELocaleLocaleSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclge) != KErrNotFound);
     
     dllName.FillZ();
 
     r = locale.GetLocaleDllName(ELocaleTimeDateSettings, dllName);
     test_KErrNone(r);
+	dllName.UpperCase();
     test(dllName.Find(eloclge) != KErrNotFound);
     
     dllName.FillZ();
--- a/kerneltest/f32test/server/t_falsespace.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/server/t_falsespace.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1049,7 +1049,7 @@
 	test_KErrNone(nRes);
     for(i=0; i<MaxDummyFiles; ++i)
 	    {
-        nRes = DeleteFileX(KBaseFN, i); 
+        nRes = DeleteFileX(KBaseFN, i);
         test_KErrNone(nRes);
 		}
 	}
@@ -1084,6 +1084,70 @@
 	}
 
 
+//-----------------------------------------------------------------------------
+/**
+    Test that the reserving some drive space does not takes more space than required.
+*/
+void Test0()
+{
+    test.Next(_L("test ReserveDriveSpace threshold"));
+
+    TInt nRes;
+    TVolumeIOParamInfo volIop;
+    TInt64 freespace=0;
+
+    //-- 1. format the volume
+    FormatDrive();
+
+    GetFreeDiskSpace(freespace);
+    const TInt64 freeSpace1 = freespace; //-- initial amount of free space on the volume
+
+    nRes = TheFs.VolumeIOParam(gTestDrive, volIop);
+    test_KErrNone(nRes);
+    const TInt KClusterSz = volIop.iClusterSize;
+    if(!IsPowerOf2(KClusterSz))
+        {
+        test.Next(_L("The FS hasn't reported a cluster size. The test is inconsistent, skipping"));
+        return;
+        }
+
+    //-- reserve exactly 1 cluster worth drive space.
+    nRes = TheFs.ReserveDriveSpace(gTestDrive, KClusterSz);
+    test_KErrNone(nRes);
+
+    GetFreeDiskSpace(freespace);
+    const TInt64 freeSpace2 = freespace;
+    test((freeSpace1 - freeSpace2) == KClusterSz);
+
+    //-- fill up a drive (it has a reserved space)
+    FillUpDisk();
+
+    //-- delete 1 file; 
+    nRes = DeleteFileX(KBaseName, 0);
+    test_KErrNone(nRes);
+
+    //-- try to create a file with the size that is exacly the same as free space; it should succeed
+    GetFreeDiskSpace(freespace);
+    
+    nRes = CreateEmptyFile(TheFs, _L("\\aaa1"), freespace);
+    test_KErrNone(nRes);
+
+    GetFreeDiskSpace(freespace);
+    test(freespace == 0);
+
+    //-- return the drive space to the system
+	nRes = TheFs.ReserveDriveSpace(gTestDrive,0);
+	test_KErrNone(nRes); 
+
+    //-- release drive space
+    nRes = TheFs.ReleaseReserveAccess(gTestDrive);
+    test_KErrNone(nRes);
+
+    GetFreeDiskSpace(freespace);
+    test(freespace == KClusterSz);
+
+    FormatDrive();
+}
 
 //-----------------------------------------------------------------------------
 
@@ -1092,9 +1156,9 @@
 // Do tests relative to session path
 //
 	{
-	//-- set up console output 
-	Fat_Test_Utils::SetConsole(test.Console()); 
-	
+	//-- set up console output
+	Fat_Test_Utils::SetConsole(test.Console());
+
 	// If TESTFAST mode (for automated test builds) is set, don't run LFFS tests.
 	if ((UserSvr::DebugMask(2) & 0x00000002) && IsTestingLFFS())
 		{
@@ -1133,6 +1197,7 @@
 		return;
 		}
 
+    Test0();
 	Test1();	// General test for new APIs
 	Test2();	// Test to ensure drive and session reserve limits are not exceeded
 	Test3();
@@ -1144,6 +1209,6 @@
 	Test2();	// run this test to check reserves are being cleared correctly
 
 	TestFAT4G_Boundary();
-    
+
 	TurnAllocFailureOff();
 	}
--- a/kerneltest/f32test/server/t_filecache.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/server/t_filecache.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -22,7 +22,7 @@
 #include "t_server.h"
 #include <e32twin.h>
 #include <e32rom.h>
-#include <u32hal.h>	//*test*
+#include <u32hal.h>
 
 
 //----------------------------------------------------------------------------------------------
@@ -251,7 +251,6 @@
 		}
 	}
 
-//*test**************************************************************************
 TInt FreeRam()
 	{
 	// wait for any async cleanup in the supervisor to finish first...
@@ -261,7 +260,85 @@
 	UserHal::MemoryInfo(meminfo);
 	return meminfo().iFreeRamInBytes;
 	}
-//*test**************************************************************************
+
+void LowMemoryTest()
+	{
+	TInt fileSize = 0;
+	
+	const TInt KWriteLen = 128*1024;
+	test.Next(_L("Test appending to a file with low memory"));
+	gBufPtr.SetLength(KBufSize);
+
+	RFile f;
+	TFileName testFile   = _L("TEST.BIN");
+
+	TInt r = f.Replace(TheFs, testFile, EFileWrite | EFileWriteBuffered);
+	test_KErrNone(r);
+
+	TInt pos = 0;
+
+	TPtrC8 writePtr;
+	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
+
+	r = f.Write(pos, writePtr);
+	test_KErrNone(r);
+	pos+= writePtr.Length();
+
+	r = f.Size(fileSize);
+	test_KErrNone(r);
+	test_Equal(fileSize,pos);
+
+
+
+	TUint freeRam = FreeRam();
+	const TInt KPageSize=4096;
+	freeRam = (freeRam + KPageSize -1) & ~(KPageSize-1);
+	test.Printf(_L("FreeRam = %d"), freeRam);
+
+	RChunk chunk;
+	TChunkCreateInfo chunkInfo;
+	chunkInfo.SetDisconnected(0, 0, freeRam);
+	chunkInfo.SetPaging(TChunkCreateInfo::EUnpaged);
+	test_KErrNone(chunk.Create(chunkInfo));
+
+	test.Printf(_L("Gobbling all of memory..."));
+	
+	TUint commitEnd;
+	for (commitEnd = 0; commitEnd < freeRam; commitEnd += KPageSize) 
+		{
+		r = chunk.Commit(commitEnd,KPageSize);
+		if (r != KErrNone)
+			break;
+		
+		}
+	test.Printf(_L("commitEnd %d, r %d"), commitEnd, r);
+	test_Value(r, r == KErrNoMemory || r == KErrNone);
+
+	test.Printf(_L("FreeRam = %d"), FreeRam());
+
+	pos-= KSegmentSize;
+	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
+
+	test.Printf(_L("Writing to file..."));
+
+	r = f.Write(pos, writePtr);
+	test_KErrNone(r);
+	pos+= writePtr.Length();
+
+	test.Printf(_L("Setting size of file ..."));
+	r = f.Size(fileSize);
+	test_KErrNone(r);
+	test_Equal(fileSize,pos);
+
+	test.Printf(_L("Closing file ..."));
+	f.Close();
+
+	test.Printf(_L("Closing chunk ..."));
+	chunk.Close();
+
+	test.Printf(_L("FreeRam = %d"), FreeRam());
+	}
+
 
 
 LOCAL_C void UnitTests()
@@ -312,67 +389,7 @@
 	TInt uncachedPacketsRead;
 #endif
 
-//*test**************************************************************************
-	{
-	TInt fileSize = 0;
-	
-	const TInt KWriteLen = 128*1024;
-	test.Next(_L("Test appending to a file with low memory"));
-	gBufPtr.SetLength(KBufSize);
-
-	r = f.Replace(TheFs, testFile, EFileWrite | EFileWriteBuffered);
-	test_KErrNone(r);
-
-	pos = 0;
-
-	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
-
-	r = f.Write(pos, writePtr);
-	test_KErrNone(r);
-	pos+= writePtr.Length();
-
-	r = f.Size(fileSize);
-	test_KErrNone(r);
-	test_Equal(fileSize,pos);
-
-
-
-	TInt freeRam = FreeRam();
-	test.Printf(_L("FreeRam = %d"), freeRam);
-	const TInt KPageSize=4096;
-
-	RChunk chunk;
-	TChunkCreateInfo chunkInfo;
-	chunkInfo.SetDisconnected(0, 0, freeRam);
-	chunkInfo.SetPaging(TChunkCreateInfo::EUnpaged);
-	test_KErrNone(chunk.Create(chunkInfo));
-
-	TUint commitEnd = 0;
-	TInt r;
-	while(KErrNone == (r = chunk.Commit(commitEnd,KPageSize)))
-		{
-		commitEnd += KPageSize;
-		}
-	test_Equal(KErrNoMemory, r);
-
-
-
-	pos-= KSegmentSize;
-	writePtr.Set(gBufPtr.MidTPtr(pos, KWriteLen));
-
-	r = f.Write(pos, writePtr);
-	test_KErrNone(r);
-	pos+= writePtr.Length();
-
-	r = f.Size(fileSize);
-	test_KErrNone(r);
-	test_Equal(fileSize,pos);
-
-	f.Close();
-
-	chunk.Close();
-	}
-//*test**************************************************************************
+	LowMemoryTest();
 
 	// create an empty file, so that any writes overlapping segemt boundaries
 	// need a read first
--- a/kerneltest/f32test/server/t_ftrace.cpp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,424 +0,0 @@
-// 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:
-// f32test\server\t_ftrace.cpp
-// 
-//
-
-#define __E32TEST_EXTENSION__
-#include <f32file.h>
-#include <f32tracedef.h>
-#include <e32test.h>
-#include "t_server.h"
-
-#include "../../../kernel/eka/include/d32btrace.h"
-#include "../../../kernel/eka/include/e32btrace.h"
-#include <utraceefsrv.h>
-
-RTest test(_L("T_FTRACE"));
-
-RBTrace Trace;
-
-void SetBTraceFilter(const TUint32* aNew,TUint32* aOld)
-	{
-	TUint category = 0;
-	do
-		{
-		TUint32 newBits = *aNew++;
-		TUint32 oldBits = 0;
-		do
-			{
-			oldBits >>= 1;
-			if(Trace.SetFilter(category,newBits&1))
-				oldBits |= 0x80000000u;
-			newBits >>= 1;
-			++category;
-			}
-		while(category&31);
-		if(aOld)
-			*aOld++ = oldBits;
-		}
-	while(category<256);
-	}
-
-
-
-//---------------------------------------------------------------------------------------------------------------------
-//! @SYMTestCaseID				KBASE-T_FTRACE-0001
-//! @SYMTestCaseDesc			Test File Server Tracing of RFile::Replace()
-//! @SYMTestType				UT
-//! @SYMPREQ					PREQ1617
-//! @SYMTestPriority			Medium
-//! @SYMTestActions				
-//! 	1.	Call RFile::Replace() to create a file
-//! 	2.	Get trace data from BTrace and verify that the expected trace data is present
-//! 
-//! @SYMTestExpectedResults
-//! 	1.	Trace data payload should be as expected, i.e. it should contain the file name, mode etc.
-//---------------------------------------------------------------------------------------------------------------------
-void TestRFileReplace()
-	{
-	test.Start(_L("Test trace output from creating a file"));
-	RFile file;
-	TFileName testFileName = _L("File.txt");
-
-	TheFs.Delete(testFileName);
-
-	Trace.Empty();
-
-	TInt r = file.Replace(TheFs,testFileName,EFileStreamText);
-	test_KErrNone(r);
-
-
-	TBool funcInFound = EFalse;
-	TBool funcOutFound = EFalse;
-
-	TBuf8<1024> buf;
-	for(;;)
-		{
-		TUint8* record;
-		TInt dataSize = Trace.GetData(record);
-		if(!dataSize)
-			break;
-		TUint8* end = record+dataSize;
-
-		while(record<end)
-			{
-			TUint size = record[BTrace::ESizeIndex];
-			TUint flags = record[BTrace::EFlagsIndex];
-			TUint category = record[BTrace::ECategoryIndex];
-			TUint subCategory = record[BTrace::ESubCategoryIndex];
-			TUint8* data = record+4;
-			size -= 4;
-
-			buf.Zero();
-			if(flags&(BTrace::EHeader2Present))
-				{
-				data += 4;
-				size -= 4;
-				}
-
-			if((flags&(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))==(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))
-				{
-				buf.AppendFormat(_L8("time:%08x:%08x "),((TUint32*)data)[1],*(TUint32*)data);
-				data += 8;
-				size -= 8;
-				}
-			else if(flags&(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))
-				{
-				buf.AppendFormat(_L8("time:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-
-			if(flags&(BTrace::EContextIdPresent))
-				{
-				buf.AppendFormat(_L8("context:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-			else
-				{
-				buf.AppendFormat(_L8("                 "));
-				}
-
-			if(flags&(BTrace::EPcPresent))
-				{
-				buf.AppendFormat(_L8("pc:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-
-			if(flags&(BTrace::EExtraPresent))
-				{
-				data += 4;
-				size -= 4;
-				}
-
-			TUint32 data0 = (size>0) ? *(TUint32*)(data) : 0;
-			TUint32 data1 = (size>4) ? *(TUint32*)(data+4) : 0;
-			TPtrC8 des(0,0);
-			if(size>=8)
-				des.Set(data+8,size-8);
-
-			buf.AppendFormat(_L8("size:%d flags:%02x cat:%d,%d data: "),size,flags,category,subCategory);
-			for(TUint i=0; i<size; i+=4)
-				buf.AppendFormat(_L8("%08x "),*(TUint32*)(data+i));
-			buf.Append('\r');
-			buf.Append('\n');
-			test(buf.MaxLength() >= (buf.Length()*2));
-			RDebug::RawPrint(buf.Expand());
-
-
-			if (category == UTF::EBorder && subCategory == 0 && data0 == EF32TraceUidEfsrv)
-				{
-				if (data1 == UTraceModuleEfsrv::EFileReplace)
-					{
-					TInt sessionHandle = (size>8) ? *(TUint32*)(data+8) : 0;
-					TUint32 fileMode = (size>12) ? *(TUint32*)(data+12) : 0;
-					TInt fileNameLen = (size>16) ? *(TUint32*)(data+16) : 0;
-					fileNameLen/= 2;	// convert to unicode length
-					TText16* fileName = (TText16*) ((size>20) ? (data+20) : NULL);
-
-					test(sessionHandle == TheFs.Handle());
-					test(fileMode == EFileStreamText);
-					test(fileNameLen == testFileName.Length());
-					TPtrC16 fileNamePtr (fileName, fileNameLen);
-					test(fileName != NULL);
-					test(testFileName.Compare(fileNamePtr) == 0);
-					funcInFound = ETrue;
-					}
-				else if (data1 == UTraceModuleEfsrv::EFileReplaceReturn)
-					{
-					TInt retCode = (size>8) ? *(TUint32*)(data+8) : 0;
-					TInt subsessionHandle = (size>12) ? *(TUint32*)(data+12) : 0;
-
-					test(retCode == KErrNone);
-					test(subsessionHandle == file.SubSessionHandle());
-					funcOutFound = ETrue;
-					}
-				}
-
-			record = BTrace::NextRecord(record);
-			}
-		Trace.DataUsed();
-		}
-
-	file.Close();
-	TheFs.Delete(testFileName);
-
-	test (funcInFound);
-	test (funcOutFound);
-	}
-
-//---------------------------------------------------------------------------------------------------------------------
-//! @SYMTestCaseID				KBASE-T_FTRACE-0002
-//! @SYMTestCaseDesc			Test File Server Tracing of RFs::Rename()
-//! @SYMTestType				UT
-//! @SYMPREQ					PREQ1617
-//! @SYMTestPriority			Medium
-//! @SYMTestActions				
-//! 	1.	Call RFile::Replace() to create a file
-//! 	2.	Close the file
-//! 	3.	Call RFs::Rename to rename the file
-//! 	4.	Get trace data from BTrace and verify that the expected trace data is present
-//! 
-//! @SYMTestExpectedResults
-//! 	1.	Trace data payload should be as expected, i.e. it should contain both file names, etc.
-//---------------------------------------------------------------------------------------------------------------------
-void TestRFsRename()
-	{
-	test.Start(_L("Test trace output from renaming a file"));
-	RFile file;
-	TFileName testFileName1 = _L("File1.txt");
-	TFileName testFileName2 = _L("File2.txt");
-
-	TheFs.Delete(testFileName1);
-	TheFs.Delete(testFileName2);
-
-	TInt r = file.Replace(TheFs,testFileName1,EFileStreamText);
-	test_Value(r, r == KErrNone || r == KErrAlreadyExists);
-	file.Close();
-
-	Trace.Empty();
-
-	r = TheFs.Rename(testFileName1, testFileName2);
-	test_KErrNone(r);
-
-
-	TBool funcInFound = EFalse;
-	TBool funcOutFound = EFalse;
-
-	TBuf8<1024> buf;
-	for(;;)
-		{
-		TUint8* record;
-		TInt dataSize = Trace.GetData(record);
-		if(!dataSize)
-			break;
-		TUint8* end = record+dataSize;
-
-		while(record<end)
-			{
-			TUint size = record[BTrace::ESizeIndex];
-			TUint flags = record[BTrace::EFlagsIndex];
-			TUint category = record[BTrace::ECategoryIndex];
-			TUint subCategory = record[BTrace::ESubCategoryIndex];
-			TUint8* data = record+4;
-			size -= 4;
-
-			buf.Zero();
-			if(flags&(BTrace::EHeader2Present))
-				{
-				data += 4;
-				size -= 4;
-				}
-
-			if((flags&(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))==(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))
-				{
-				buf.AppendFormat(_L8("time:%08x:%08x "),((TUint32*)data)[1],*(TUint32*)data);
-				data += 8;
-				size -= 8;
-				}
-			else if(flags&(BTrace::ETimestampPresent|BTrace::ETimestamp2Present))
-				{
-				buf.AppendFormat(_L8("time:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-
-			if(flags&(BTrace::EContextIdPresent))
-				{
-				buf.AppendFormat(_L8("context:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-			else
-				{
-				buf.AppendFormat(_L8("                 "));
-				}
-
-			if(flags&(BTrace::EPcPresent))
-				{
-				buf.AppendFormat(_L8("pc:%08x "),*(TUint32*)data);
-				data += 4;
-				size -= 4;
-				}
-
-			if(flags&(BTrace::EExtraPresent))
-				{
-				data += 4;
-				size -= 4;
-				}
-
-			TUint32 data0 = (size>0) ? *(TUint32*)(data) : 0;
-			TUint32 data1 = (size>4) ? *(TUint32*)(data+4) : 0;
-			TPtrC8 des(0,0);
-			if(size>=8)
-				des.Set(data+8,size-8);
-
-			buf.AppendFormat(_L8("size:%d flags:%02x cat:%d,%d data: "),size,flags,category,subCategory);
-			for(TUint i=0; i<size; i+=4)
-				buf.AppendFormat(_L8("%08x "),*(TUint32*)(data+i));
-			buf.Append('\r');
-			buf.Append('\n');
-			test(buf.MaxLength() >= (buf.Length()*2));
-			RDebug::RawPrint(buf.Expand());
-
-
-			if (category == UTF::EBorder && subCategory == 0 && data0 == EF32TraceUidEfsrv)
-				{
-				TUint8* recData = data+8;
-				if (data1 == UTraceModuleEfsrv::EFsRename)
-					{
-					TInt sessionHandle = *(TUint32*) recData; recData+= 4;
-
-					TInt fileNameLen1 = *(TUint32*) recData; recData+= 4;
-					TText16* fileName1 = (TText16*) recData; recData+= ((fileNameLen1 +4) & ~3);
-
-					TInt fileNameLen2 = *(TUint32*) recData; recData+= 4;
-					TText16* fileName2 = (TText16*) recData; recData+= fileNameLen2;
-
-					fileNameLen1/= 2;	// convert to unicode length
-					fileNameLen2/= 2;	// convert to unicode length
-
-
-					test(sessionHandle == TheFs.Handle());
-					
-					test(fileNameLen1 == testFileName1.Length());
-					TPtrC16 fileNamePtr1 (fileName1, fileNameLen1);
-					test(fileName1 != NULL);
-					test(testFileName1.Compare(fileNamePtr1) == 0);
-
-					test(fileNameLen2 == testFileName2.Length());
-					TPtrC16 fileNamePtr2 (fileName2, fileNameLen2);
-					test(fileName2 != NULL);
-					test(testFileName2.Compare(fileNamePtr2) == 0);
-
-					funcInFound = ETrue;
-					}
-				else if (data1 == UTraceModuleEfsrv::EFsRenameReturn)
-					{
-					TInt retCode = (size>8) ? *(TUint32*)(data+8) : 0;
-
-					test(retCode == KErrNone);
-
-					funcOutFound = ETrue;
-					}
-				}
-
-			record = BTrace::NextRecord(record);
-			}
-		Trace.DataUsed();
-		}
-
-
-	test (funcInFound);
-	test (funcOutFound);
-
-	TheFs.Delete(testFileName1);
-	TheFs.Delete(testFileName2);
-	}
-
-void CallTestsL()
-	{
-
-// By default, file server trace-points are only compiled in in debug mode
-#if defined(_DEBUG)
-	test.Title();
-	TInt r;
-
-	test.Start(_L("Open LDD"));
-	r = Trace.Open();
-	test_KErrNone(r);
-
-
-	TUint32 OldTraceFilter[8] = {0};
-
-	TUint savedMode = Trace.Mode();
-	SetBTraceFilter(OldTraceFilter,OldTraceFilter);
-
-	Trace.ResizeBuffer(0x100000);
-	Trace.Empty();
-
-	Trace.SetMode(RBTrace::EEnable | RBTrace::EFreeRunning);
-
-	TBool b;
-//	b = Trace.SetFilter(BTrace::EThreadIdentification, ETrue);
-//	test(b >= 0);
-	b = Trace.SetFilter(UTF::EPanic, ETrue);
-	test(b >= 0);
-	b = Trace.SetFilter(UTF::EError, ETrue);
-	test(b >= 0);
-	b = Trace.SetFilter(UTF::EBorder, ETrue);
-	test(b >= 0);
-
-	b = Trace.SetFilter2(EF32TraceUidEfsrv, ETrue);
-	test(b >= 0);
-
-	TestRFileReplace();
-	TestRFsRename();
-
-	// restore trace settings...
-	Trace.SetMode(0);
-	SetBTraceFilter(OldTraceFilter,OldTraceFilter);
-	Trace.SetMode(savedMode);
-
-
-	test.Next(_L("Close LDD"));
-	Trace.Close();
-
-	test.End();
-#endif
-	}
-
--- a/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbinterop1.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/f32test/smassstorage/scripts/usbinterop2.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbinterop2.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/f32test/smassstorage/scripts/usbperformance.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbperformance.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl	Thu May 27 14:17:14 2010 +0300
+++ b/kerneltest/f32test/smassstorage/scripts/usbperformance_multifile.pl	Fri Jun 11 15:02:23 2010 +0300
@@ -2,7 +2,7 @@
 # Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
 # All rights reserved.
 # This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
+# under the terms of the License "Eclipse Public License v1.0"
 # which accompanies this distribution, and is available
 # at the URL "http://www.eclipse.org/legal/epl-v10.html".
 #
--- a/userlibandfileserver/domainmgr/group/base_domain.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/domainmgr/group/base_domain.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Domain Manager"
 
 component	base_domain
--- a/userlibandfileserver/fileserver/automounter/base_f32_automounter.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/automounter/base_f32_automounter.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,19 +1,4 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
-# component name "exFAT File System"
+# component name "Automounter File System"
 
 component   base_f32_automounter
 
--- a/userlibandfileserver/fileserver/estart/base_f32_estart.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/estart/base_f32_estart.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "EStart"
 
 component	base_f32_estart
--- a/userlibandfileserver/fileserver/etshell/base_f32_eshell.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/etshell/base_f32_eshell.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Text Shell"
 
 component	base_f32_eshell
--- a/userlibandfileserver/fileserver/etshell/ts_com.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/etshell/ts_com.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -256,7 +256,7 @@
 			aPath.Insert(0,TheShell->currentPath.Left(2));
 		}
 
-	RFile file;
+	RFile64 file;
 	r=file.Open(CShell::TheFs,aPath,EFileStream);
 	if (r!=KErrNone)	//		File could not be opened
 		{
@@ -1199,11 +1199,23 @@
                 //-- print out cluster size that FS reported
                 TVolumeIOParamInfo volIoInfo;
                 nRes = aFs.VolumeIOParam(aDrvNum, volIoInfo);
-                if(nRes == KErrNone && volIoInfo.iClusterSize >= 512)
+                if(nRes == KErrNone)
                 {
-                    Buf.AppendFormat(_L(", Cluster Sz:%d"), volIoInfo.iClusterSize);
+                    if(volIoInfo.iBlockSize >= 0)
+                    {
+                        Buf.AppendFormat(_L(", BlkSz:%d"), volIoInfo.iBlockSize);
+                    }
+                    
+                    if(volIoInfo.iClusterSize >= 0)
+                    {
+                        Buf.AppendFormat(_L(", ClSz:%d"), volIoInfo.iClusterSize);
+                    }
+
+                    Buf.AppendFormat(_L(", CacheFlags:0x%x"), volInfo.iFileCacheFlags);
+                
                 }
 
+
                 if(Buf.Length())
                 {
                     Buf.Append(_L("\n"));
@@ -1972,7 +1984,7 @@
 	ShellFunction::StripQuotes(aPath);
 
 	ParsePath(aPath);
-	RFile file;
+	RFile64 file;
 	TInt r=file.Open(TheShell->TheFs,aPath,EFileStream);
 	if (r!=KErrNone)
 		return(r);
@@ -3108,7 +3120,7 @@
 TInt ShellFunction::Type(TDes& aPath,TUint aSwitches)
 	{
 	ParsePath(aPath);
-	RFile file;
+	RFile64 file;
 	TInt r=file.Open(TheShell->TheFs,aPath,EFileStreamText|EFileShareReadersOnly);
 	if (r!=KErrNone)
 		return r;
--- a/userlibandfileserver/fileserver/ftrace/d_ftrace.cpp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,215 +0,0 @@
-/*
-* 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:
-*
-*/
-// D_FTRACE.CPP
-//
-//
-//
-#include "plat_priv.h"
-#include <kernel/kernel.h>
-
-#include "f32trace.h"
-
-DMutex* TheTraceMutex = NULL;
-_LIT(KLitTraceMutexName, "FTRACE_MUTEX");
-
-const TInt KMajorVersionNumber=1;
-const TInt KMinorVersionNumber=0;
-const TInt KBuildVersionNumber=0;
-
-
-class DLddFactoryFTrace : public DLogicalDevice
-	{
-public:
-	DLddFactoryFTrace();
-	virtual ~DLddFactoryFTrace();
-	virtual TInt Install();
-	virtual void GetCaps(TDes8 &aDes) const;
-	virtual TInt Create(DLogicalChannelBase*& aChannel); 	//overriding pure virtual
-	};
-
-class DLddFTrace : public DLogicalChannelBase
-	{
-public:
-	DLddFTrace();
-	~DLddFTrace();
-protected:
-	virtual TInt DoCreate(TInt aUnit, const TDesC8* anInfo, const TVersion& aVer);
-
-	virtual TInt Request(TInt aReqNo, TAny* a1, TAny* a2);
-
-private:
-	void DoCancel(TInt aReqNo);
-	TInt DoRequest(TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2);
-	TInt DoControl(TInt aFunction, TAny* a1, TAny* a2);
-
-private:
-    };
-
-DECLARE_STANDARD_LDD()
-	{
-	TInt r = Kern::MutexCreate(TheTraceMutex,  KLitTraceMutexName, KMutexOrdNone);
-	if (r != KErrNone)
-		return NULL;
-
-	return new DLddFactoryFTrace;
-	}
-
-DLddFactoryFTrace::DLddFactoryFTrace()
-	{
-
-    iParseMask=KDeviceAllowUnit;  // Pass stack number as unit
-	iUnitsMask=0xffffffff;
-	iVersion=TVersion(KMajorVersionNumber,KMinorVersionNumber,KBuildVersionNumber);
-	}
-
-TInt DLddFactoryFTrace::Create(DLogicalChannelBase*& aChannel)
-	{
-	aChannel=new DLddFTrace;
-	return aChannel ? KErrNone : KErrNoMemory;
-	}
-
-TInt DLddFactoryFTrace::Install()
-	{
-    TPtrC name=_L("FTrace");
-	return(SetName(&name));
-	}
-
-void DLddFactoryFTrace::GetCaps(TDes8& /*aDes*/) const
-	{
-	}
-
-DLddFactoryFTrace::~DLddFactoryFTrace()
-	{
-	}
-
-DLddFTrace::DLddFTrace()
-	{
-    }
-
-DLddFTrace::~DLddFTrace()
-	{
-    }
-
-TInt DLddFTrace::DoCreate(TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& aVer)
-	{
-
-	if (!Kern::QueryVersionSupported(TVersion(KMajorVersionNumber,KMinorVersionNumber,KBuildVersionNumber),aVer))
-		return(KErrNotSupported);
-
-    return(KErrNone);
-	}
-
-void DLddFTrace::DoCancel(TInt /*aReqNo*/)
-	{
-	}
-
-TInt DLddFTrace::Request(TInt aReqNo, TAny* a1, TAny* a2)
-	{
-	NKern::ThreadEnterCS();
-	Kern::MutexWait(*TheTraceMutex);
-	TInt r = DoControl(aReqNo, a1, a2);
-	Kern::MutexSignal(*TheTraceMutex);
-	NKern::ThreadLeaveCS();
-
-	return r;
-	}
-
-
-const TUint KTraceBufferSize = 4096;
-TUint8 gTraceBuffer[KTraceBufferSize];
-
-
-#define MIN(a,b)			((a) < (b) ? (a) : (b))
-
-TInt DLddFTrace::DoControl(TInt aFunction, TAny* a1, TAny* a2)
-//
-// Mostly requests (but some kernel server async ones)
-//
-	{
-	TInt r=KErrNotSupported;
-	switch (aFunction)
-		{
-        case RFTrace::ETraceMultiple:
-            {
-			typedef struct {
-				TClassification iCategory;
-				TUint8 iPadding1[sizeof(TUint) - sizeof(TClassification)];
-
-				TFormatId iFormatId;
-				TUint8 iPadding2[sizeof(TUint) - sizeof(TFormatId)];
-
-				TUint32 iUid;
-				TInt iDescriptorCount;
-				} TraceArgs;
-
-			TraceArgs args={0};
-
-			XTRAP(r, XT_DEFAULT, kumemget32(&args, a1, sizeof(args)));
-			if (r != KErrNone)
-				return r;
-
-			// current descriptor - MUST be either a TPtr8 or a TBuf8<4>
-			TUint32 desc[2] = {0, 0};
-			TUint32& desLength = desc[0];
-
-			TUint offset = 0;
-
-			*((TUint*) (gTraceBuffer+offset)) = args.iFormatId;
-			offset+= sizeof(TUint);
-
-			TDesC8* des = (TDesC8*) ((TUint8*) a2);
-			const TInt desSize = sizeof(TPtrC8);
-			for (TInt n=0; n< args.iDescriptorCount; n++, des = (TDesC8*) (((TUint8*) des) + desSize) )
-				{
-
-				XTRAP(r, XT_DEFAULT, kumemget32(desc, des, sizeof(desc)));
-				TUint32 desType = desLength >> KShiftDesType;
-				desLength &= (TUint) (KMaskDesLength);
-				if (desType == EPtrC)
-					{
-					*((TUint*) (gTraceBuffer+offset)) = desLength;
-					desLength = (desLength+3)&~3;
-					offset+= sizeof(TUint);
-					}
-				else if (desType == EBufC)
-					{
-					*((TUint*) (gTraceBuffer+offset)) = desc[1];
-					offset+= sizeof(TUint);
-					if (desLength > 4)
-						return KErrArgument;
-					desLength = 0;
-					continue;
-					}
-				else
-					return KErrArgument;
-
-				TUint len = MIN(KTraceBufferSize - offset, desLength);
-				XTRAP(r, XT_DEFAULT, kumemget(gTraceBuffer+offset, (const TUint8*) desc[1], len));
-				offset+= len;
-
-				}
-
-			BTrace::OutFilteredBig
-				(BTRACE_HEADER_C(8,args.iCategory, 0), args.iUid, gTraceBuffer, offset);
-
-			r=KErrNone;
-			break;
-            }
-		}
-	return(r);
-	}
-
--- a/userlibandfileserver/fileserver/ftrace/f32trace.h	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/ftrace/f32trace.h	Fri Jun 11 15:02:23 2010 +0300
@@ -22,20 +22,6 @@
 #if !defined(__FTRACE_H__)
 #define __FTRACE_H__
 
-#include <e32cmn.h>
-#include <e32btrace.h>
-
-
-#ifndef __KERNEL_MODE__
-	#include <e32std.h>
-#endif
-
-#include "f32tracedef.h"
-
-#if defined(__EABI__)
-#pragma diag_suppress 1446		// non-POD class type passed through ellipsis
-#endif
-
 /**
 @internalComponent
 @prototype
@@ -43,218 +29,41 @@
 
 #if ((defined (_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UDEB)) ||		\
 	(!defined(_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UREL)))
-	#define SYMBIAN_FTRACE_ENABLE
+	#include "OstTraceDefinitions.h"			// may or may not define OST_TRACE_COMPILER_IN_USE
+#else
+	#undef OST_TRACE_COMPILER_IN_USE
+	#undef OST_TRACE_CATEGORY
+	#define OST_TRACE_CATEGORY OST_TRACE_CATEGORY_NONE
+
+	#undef OstTrace0
+	#undef OstTrace1
+	#undef OstTraceData
+	#undef OstTraceExt1
+	#undef OstTraceExt2
+	#undef OstTraceExt3
+	#undef OstTraceExt4
+	#undef OstTraceExt5
+
+	#define OstTrace0( aGroupName, aTraceName, aTraceText )
+	#define OstTrace1( aGroupName, aTraceName, aTraceText, aParam )
+	#define OstTraceData( aGroupName, aTraceName, aTraceText, aPtr, aLength )
+	#define OstTraceExt1( aGroupName, aTraceName, aTraceText, aParam )
+	#define OstTraceExt2( aGroupName, aTraceName, aTraceText, aParam1, aParam2 )
+	#define OstTraceExt3( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3 )
+	#define OstTraceExt4( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4 )
+	#define OstTraceExt5( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4, aParam5 )
 #endif
 
 
-
-inline TBool Trace1(TClassification aClassification, TFormatId aFormatId, TModuleUid aUid, TUint a1)
-	{
-	return BTraceFilteredContext12(
-		aClassification,					// Category
-		0,								// Sub-category
-		aUid,		// UID
-		aFormatId,
-		a1);							
-	}
-
-inline TBool TraceN(TClassification aClassification, TFormatId aFormatId,  TModuleUid aUid, TInt aArgCount, TUint a1, ...)
-	{
-	const TInt KMaxArgs = 8;
-	if (aArgCount > KMaxArgs)
-		return EFalse;
-	TUint args[KMaxArgs];
-	TInt argLen = aArgCount << 2;
-	memcpy(args, &a1, argLen);
-	
-	return BTraceFilteredContextN(
-		aClassification,					// Category
-		0,									// Sub-category
-		aUid,		// UID
-		aFormatId,
-		args,
-		argLen);								
-	}
-
-
-inline TBool TraceStr(TClassification aClassification, TFormatId aFormatId,  TModuleUid aUid, const TAny* aData, TInt aDataSize)
-	{
-	// NB This will truncate the data (!!!) - 
-	// we can't use BTraceFilteredContextBig for this as it doesn't have room for the format Id
-	return BTraceFilteredContextN(		
-		aClassification,					// Category
-		0,								// Sub-category
-		aUid,		// UID
-		aFormatId,
-		aData, 
-		aDataSize);							
-	}
-
-
-
-
-
-
-
-class RFTrace : public RBusLogicalChannel
-	{
-public:
-	enum {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=1};
-	enum TControl
-        {
-		ETraceMultiple,
-		};
-
-#ifndef __KERNEL_MODE__
-
-public:
-	inline TInt Open(TOwnerType aType)
-		{return DoCreate(_L("FTrace"),TVersion(),0,NULL,NULL,aType);}
-
-	inline 	TBool TraceMultiple(TClassification aClassification, TFormatId aFormatId, TUint32 aUid, TInt aDescriptorCount, TUint64 aParam1, ...)
+#if defined (OST_TRACE_COMPILER_IN_USE)
+	// This class is used to reconstruct an RMessage2 object from a message handle so that we can 
+	// call RMessagePtr2::Client() and then RThread::Id() to retrieve the client's thread Id.
+	// This is useful for matching client requests to calls to the proxydrive
+	class RDummyMessage : public RMessage2
 		{
-		if (Handle() == NULL)
-			return EFalse;
-		// ARM passes first 4 parameters in registers, so....
-		// parcel-up the first four parameters in an array and pass a pointer to the array to the LDD; 
-		// the next parameter(s) should be on the stack, so we can just pass a pointer to the first element 
-		TUint args[4] = {aClassification, aFormatId, aUid, aDescriptorCount};
-		TUint64* pArg1 = &aParam1;
-		TInt r = DoControl(ETraceMultiple, (TAny*) args, pArg1);
-		if (r |= KErrNone)
-			User::Panic(_L("FSCLIENT Trace panic"), 0);
-		return ETrue;
-		}
-
-	static inline TUint64 PkgData(const TDesC16& aDes)	{return MAKE_TUINT64( ((TUint) aDes.Ptr()), (aDes.Length()<<1) | (EPtrC<<KShiftDesType));}
-	static inline TUint64 PkgData(const TDesC8& aDes)	{return MAKE_TUINT64( ((TUint) aDes.Ptr()), aDes.Length() | (EPtrC<<KShiftDesType));}
-
-	static inline TUint64 PkgData(TChar aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TUint8 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TInt8 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TUint16 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TInt16 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TUint32 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TInt32 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TUint aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	static inline TUint64 PkgData(TInt aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
-	
-#endif	// __KERNEL_MODE__
-
-private:
-
-	};
-
-// This class is used to reconstruct an RMessage2 object from a message handle so that we can 
-// call RMessagePtr2::Client() and then RThread::Id() to retrieve the client's thread Id.
-// This is useful for matching client requests to calls to the proxydrive
-class RDummyMessage : public RMessage2
-	{
-public:
-	inline RDummyMessage(TInt aHandle) {iHandle = aHandle; iFunction=-1;}
-	};
-
-
-
-#ifdef SYMBIAN_FTRACE_ENABLE
-
-	// Use these macros for tracing 1-8 TUints...
-	#define TRACE0(aClassification, aFormatId, aUid)								Trace1(aClassification, aFormatId, aUid, 0)
-	#define TRACE1(aClassification, aFormatId, aUid, a1)							Trace1(aClassification, aFormatId, aUid, (TUint) a1)
-	#define TRACE2(aClassification, aFormatId, aUid, a1, a2)						TraceN(aClassification, aFormatId, aUid, 2, (TUint) a1, (TUint) a2)
-	#define TRACE3(aClassification, aFormatId, aUid, a1, a2, a3)					TraceN(aClassification, aFormatId, aUid, 3, (TUint) a1, (TUint) a2, (TUint) a3)
-	#define TRACE4(aClassification, aFormatId, aUid, a1, a2, a3, a4)				TraceN(aClassification, aFormatId, aUid, 4, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4)
-	#define TRACE5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)			TraceN(aClassification, aFormatId, aUid, 5, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5)
-	#define TRACE6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)		TraceN(aClassification, aFormatId, aUid, 6, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6)
-	#define TRACE7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)	TraceN(aClassification, aFormatId, aUid, 7, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6, (TUint) a7)
-	#define TRACE8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)TraceN(aClassification, aFormatId, aUid, 8, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6, (TUint) a7, (TUint) a8)
-
-	#define TRACESTR(aClassification, aFormatId, aUid, aData, aDataSize)			TraceStr(aClassification, aFormatId, aUid, aData, aDataSize)
-
-	#define RFTRACE_LOAD							\
-		User::LoadLogicalDevice(_L("D_FTRACE"));	
-
-	// macros for opening and closing the trace LDD, which is used for tracing arbitrary data types....
-#if defined(__DLL__)
-	#define RFTRACE_OPEN							\
-		RFTrace TheFtrace;							\
-		TheFtrace.SetHandle((TInt) Dll::Tls());		\
-		if (TheFtrace.Handle() == NULL)				\
-			{										\
-			TheFtrace.Open(EOwnerThread);			\
-			Dll::SetTls((TAny*) TheFtrace.Handle());\
-			}
-
-	#define RFTRACE_CLOSE							\
-		{											\
-		RFTrace ftrace;								\
-		TInt handle = (TInt) Dll::Tls();			\
-		ftrace.SetHandle(handle);					\
-		ftrace.Close();								\
-		Dll::SetTls(NULL);							\
-		}		
-#else
-	extern RFTrace TheFtrace;
-	#define RFTRACE_OPEN
-	#define RFTRACE_CLOSE 
-#endif
-	
-	// Use these macros for tracing 1-8 arbitrary data types....
-	#define TRACEMULT1(aClassification, aFormatId, aUid, a1)						\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,1,RFTrace::PkgData(a1));	\
-			}
-
-	#define TRACEMULT2(aClassification, aFormatId, aUid, a1, a2)					\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,2,RFTrace::PkgData(a1),RFTrace::PkgData(a2));	\
-			}
-
-	#define TRACEMULT3(aClassification, aFormatId, aUid, a1, a2, a3)				\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,3,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3)); \
-			}
-
-	#define TRACEMULT4(aClassification, aFormatId, aUid, a1, a2, a3, a4)			\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,4,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4)); \
-			}
-
-	#define TRACEMULT5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)		\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,5,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5)); \
-			}
-
-	#define TRACEMULT6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)	\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,6,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6)); \
-			}
-
-	#define TRACEMULT7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,7,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6),RFTrace::PkgData(a7)); \
-			}
-
-	#define TRACEMULT8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)\
-		if (BTrace::CheckFilter2(aClassification, aUid))								\
-			{																			\
-			RFTRACE_OPEN																\
-			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,8,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6),RFTrace::PkgData(a7),RFTrace::PkgData(a8)); \
-			}
+	public:
+		inline RDummyMessage(TInt aHandle) {iHandle = aHandle; iFunction=-1;}
+		};
 
 
 	// This macro retrieves the client thread ID from a message, which is useful for 
@@ -276,78 +85,18 @@
 		RDummyMessage msg(aMsgHandle);			\
 		TRACETHREADID(msg);		
 
-
-	// Use these macros for tracing a return code followed by 1-7 TUints...
-	// If the return code is negative the UTF::EError classification is used IF ENABLED  - otherwise the passed classification is used
-	#define TRACERET1(aClassification, aFormatId, aUid, r)								TRACE1( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r);
-	#define TRACERET2(aClassification, aFormatId, aUid, r, a2)							TRACE2( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2)
-	#define TRACERET3(aClassification, aFormatId, aUid, r, a2, a3)						TRACE3( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3)
-	#define TRACERET4(aClassification, aFormatId, aUid, r, a2, a3, a4)					TRACE4( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4)
-	#define TRACERET5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)				TRACE5( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5)
-	#define TRACERET6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)			TRACE6( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6)
-	#define TRACERET7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)		TRACE7( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
-	#define TRACERET8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)	TRACE8( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
-
-	// Use these macros for tracing a return code followed by 1-7 arbitrary data types....
-	// If the return code is negative the UTF::EError classification is used IF ENABLED  - otherwise the passed classification is used
-	#define TRACERETMULT1(aClassification, aFormatId, aUid, r)								TRACEMULT1( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r);
-	#define TRACERETMULT2(aClassification, aFormatId, aUid, r, a2)							TRACEMULT2( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2)
-	#define TRACERETMULT3(aClassification, aFormatId, aUid, r, a2, a3)						TRACEMULT3( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3)
-	#define TRACERETMULT4(aClassification, aFormatId, aUid, r, a2, a3, a4)					TRACEMULT4( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4)
-	#define TRACERETMULT5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)				TRACEMULT5( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5)
-	#define TRACERETMULT6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)			TRACEMULT6( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6)
-	#define TRACERETMULT7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)		TRACEMULT7( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
-	#define TRACERETMULT8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)	TRACEMULT8( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
-
+#else	// #if defined (OST_TRACE_COMPILER_IN_USE)
 
-#else		// #ifdef SYMBIAN_FTRACE_ENABLE
-	#define TRACE0(aClassification, aFormatId, aUid)
-	#define TRACE1(aClassification, aFormatId, aUid, a1)
-	#define TRACE2(aClassification, aFormatId, aUid, a1, a2)
-	#define TRACE3(aClassification, aFormatId, aUid, a1, a2, a3)
-	#define TRACE4(aClassification, aFormatId, aUid, a1, a2, a3, a4)
-	#define TRACE5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)
-	#define TRACE6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)
-	#define TRACE7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)
-	#define TRACE8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)
-	#define TRACESTR(aClassification, aFormatId, aUid, aData, aDataSize)
-
-	#define RFTRACE_LOAD
-	#define RFTRACE_OPEN
-	#define RFTRACE_CLOSE
-
-	#define TRACEMULT1(aClassification, aFormatId, aUid, a1)
-	#define TRACEMULT2(aClassification, aFormatId, aUid, a1, a2)
-	#define TRACEMULT3(aClassification, aFormatId, aUid, a1, a2, a3)
-	#define TRACEMULT4(aClassification, aFormatId, aUid, a1, a2, a3, a4)
-	#define TRACEMULT5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)
-	#define TRACEMULT6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)
-	#define TRACEMULT7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)
-	#define TRACEMULT8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)
 	#define TRACETHREADID(aMsg)
 	#define TRACETHREADIDH(aMsgHandle)
 
-	#define TRACERET1(aClassification, aFormatId, aUid, r)
-	#define TRACERET2(aClassification, aFormatId, aUid, r, a2)
-	#define TRACERET3(aClassification, aFormatId, aUid, r, a2, a3)
-	#define TRACERET4(aClassification, aFormatId, aUid, r, a2, a3, a4)
-	#define TRACERET5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)
-	#define TRACERET6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)
-	#define TRACERET7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
-	#define TRACERET8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
-
-	#define TRACERETMULT1(aClassification, aFormatId, aUid, r)
-	#define TRACERETMULT2(aClassification, aFormatId, aUid, r, a2)
-	#define TRACERETMULT3(aClassification, aFormatId, aUid, r, a2, a3)
-	#define TRACERETMULT4(aClassification, aFormatId, aUid, r, a2, a3, a4)
-	#define TRACERETMULT5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)
-	#define TRACERETMULT6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)
-	#define TRACERETMULT7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
-	#define TRACERETMULT8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
-#endif
+#endif	// #if defined (OST_TRACE_COMPILER_IN_USE)
 
 
 
 
-#endif
+
 
+#endif	// #if !defined(__FTRACE_H__)
+
+
--- a/userlibandfileserver/fileserver/group/base_f32.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/group/base_f32.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "File Server"
 
 component	base_f32
--- a/userlibandfileserver/fileserver/group/bld.inf	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/group/bld.inf	Fri Jun 11 15:02:23 2010 +0300
@@ -46,17 +46,13 @@
 ../inc/F32plugin.h								SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(f32plugin.h)
 ../inc/f32plugin.inl							SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(f32plugin.inl)
 
-../inc/f32tracedef.h							SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(f32tracedef.h)
-../inc/utraceefsrv.h							SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(utraceefsrv.h)
-../inc/utraceefile.h							SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(utraceefile.h)
 ../rom/f32.iby	 		/epoc32/rom/f32/f32.iby
 
 PRJ_MMPFILES
 
 #if !defined(SMP)
-efsrv
-efile
+../sfsrv/efsrv
+../sfile/efile
 runtests
 #endif
 
-ftrace
--- a/userlibandfileserver/fileserver/group/efile.mmh	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-// Copyright (c) 1996-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:
-// f32\group\efile.mmp
-// efile.exe File Server
-// 
-//
-
-/**
- @file
-*/
-
-
-SOURCEPATH	../sfsrv
-USERINCLUDE	../sfsrv
-USERINCLUDE	../ftrace
-SOURCE			 cl_file.cpp
-SOURCE			 cl_cli.cpp
-SOURCE			 cl_dir.cpp
-
-SOURCEPATH	../sfile
-USERINCLUDE	.
-SOURCE			 sf_amh.cpp sf_dat.cpp sf_debug.cpp sf_dir.cpp
-SOURCE			 sf_drv.cpp sf_file.cpp sf_fmt.cpp
-SOURCE			 sf_ldr.cpp sf_main.cpp sf_nbs.cpp sf_ses.cpp
-SOURCE			 sf_svr.cpp sf_sys.cpp sf_utl.cpp sf_mnt.cpp
-SOURCE			 sf_raw.cpp sf_prel.cpp sf_disk.cpp
-SOURCE			 sf_request.cpp sf_ops.cpp sf_notify.cpp
-SOURCE			 sf_thread.cpp sf_local.cpp sf_obj.cpp
-SOURCE			 sf_ext.cpp sf_hash.cpp
-SOURCE			 sf_plugin.cpp sf_plugin_ops.cpp sf_plugin_man.cpp
-SOURCE			 Sf_plugin_util.cpp
-SOURCE			 sf_cache_man.cpp sf_cache_client.cpp
-SOURCE			 sf_file_cache.cpp
-SOURCE			 sf_memory_man.cpp sf_memory_client.cpp
-SOURCE			 sf_plugin_shim.cpp
-SOURCE			 sf_notifier_handlers.cpp
-#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
-SOURCE			 sf_pool.cpp sf_notifier.cpp
-#endif
-
-#ifdef WINS
-SOURCE			 sf_lwins.cpp
-
-library			emulator.lib
-#else
-SOURCE			 sf_lepoc.cpp  sf_inflate.cpp sf_cache.cpp sf_decomp.cpp
-SOURCE			 sf_pgcompr.cpp
-
-#ifdef MARM
-SOURCEPATH	../../../kernel/eka/kernel/arm
-SOURCE			 byte_pair.cia
-#else
-SOURCEPATH	../../../kernel/eka/kernel
-SOURCE			 byte_pair.cpp
-#endif
-
-
-SOURCEPATH	../srom
-SOURCE			 sr_rom.cpp
-#endif
-
-STRICTDEPEND
-
-SOURCEPATH	.
-DOCUMENT		 release.txt
-
-TARGETTYPE		exexp
-
-DEFFILE			efile.def
-
-USERINCLUDE	../inc
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-SYSTEMINCLUDE	../inc
-#endif
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-USERINCLUDE	../../../kernel/eka/include
-
-LIBRARY			 efsrv.lib euser.lib hal.lib btracec.lib
-
-EPOCSTACKSIZE	0x6000
-EPOCHEAPSIZE	0x00001000	0x800000
-
-START WINS
-BASEADDRESS		0x62000000
-WIN32_LIBRARY	kernel32.lib
-END
-UID		0x1000008c 0x100039e3
-VENDORID 0x70000001
-
-unpagedcode
-unpageddata
-
-SMPSAFE
-
-
--- a/userlibandfileserver/fileserver/group/efile.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-// Copyright (c) 1996-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:
-// f32/group/efile.mmp
-// efile.exe File Server
-// 
-//
-
-/**
- @file
-*/
-
-
-TARGET			efile.exe
-
-#include "f32caps.mmh"  // Capabilities of File Server process
-#include "f32.mmh"  	// Generic definitions for the whole f32 component
-
-MACRO			SYMBIAN_PRIVATE_EFSRV
-
-#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
-	macro SYMBIAN_FTRACE_ENABLE_UDEB
-//	macro SYMBIAN_FTRACE_ENABLE_UREL
-#endif
-
-#include "efile.mmh"
-
-
-
-
-
--- a/userlibandfileserver/fileserver/group/efile_instrumented.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-// Copyright (c) 1996-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:
-// f32/group/efile.mmp
-// efile_instrumented.exe Instrumented version of the File Server
-// 
-//
-
-/**
- @file
-*/
-
-
-TARGET			efile_instrumented.exe
-
-#include "f32caps.mmh"  // Capabilities of File Server process
-#include "f32.mmh"  	// Generic definitions for the whole f32 component
-
-MACRO			SYMBIAN_PRIVATE_EFSRV
-
-#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
-	macro SYMBIAN_FTRACE_ENABLE_UDEB
-	macro SYMBIAN_FTRACE_ENABLE_UREL
-#endif
-
-#include "efile.mmh"
-
--- a/userlibandfileserver/fileserver/group/efsrv.mmh	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-// Copyright (c) 1996-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:
-// f32\group\efsrv.mmp
-// efsrv.dll File Server client-side library
-// 
-//
-
-/**
- @file
-*/
-
-
-
-USERINCLUDE		../ftrace
-
-SOURCEPATH		../sfsrv
-SOURCE			 cl_cdir.cpp cl_cli.cpp cl_debug.cpp cl_dir.cpp
-SOURCE			 cl_drive.cpp cl_entry.cpp cl_file.cpp cl_find.cpp
-SOURCE			 cl_fman.cpp cl_fmt.cpp cl_fraw.cpp cl_ftext.cpp
-SOURCE			 cl_main.cpp cl_parse.cpp cl_scan.cpp cl_insecure.cpp
-SOURCE			 cl_plugin.cpp cl_blockmap.cpp cl_clamp.cpp
-SOURCE			 cl_shim.cpp
-SOURCE			 cl_notification.cpp
-SOURCEPATH	.
-DOCUMENT		 release.txt
-
-TARGETTYPE		dll
-
-DEFFILE			 efsrv.def
-
-USERINCLUDE	../inc
-#ifdef SYMBIAN_OLD_EXPORT_LOCATION
-SYSTEMINCLUDE	../inc
-#endif
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-LIBRARY			 euser.lib hal.lib
-
-START WINS
-BASEADDRESS		0x66000000
-END
-
-UID		0x1000008d 0x100039e4
-VENDORID 0x70000001
-CAPABILITY	All
-
-unpagedcode
-
-SMPSAFE
-
--- a/userlibandfileserver/fileserver/group/efsrv.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-// Copyright (c) 1996-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:
-// f32/group/efsrv.mmp
-// efsrv.dll File Server client-side library
-// 
-//
-
-/**
- @file
-*/
-
-
-TARGET			efsrv.dll
-
-#include "f32.mmh"  	// Generic definitions for the whole f32 component
-
-#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
-	macro SYMBIAN_FTRACE_ENABLE_UDEB
-//	macro SYMBIAN_FTRACE_ENABLE_UREL
-#endif
-
-
-#include "efsrv.mmh"
--- a/userlibandfileserver/fileserver/group/efsrv_instrumented.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-// Copyright (c) 1996-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:
-// f32/group/efsrv.mmp
-// efsrv_instrumented.dll Instrumented version of the File Server client-side library
-// 
-//
-
-/**
- @file
-*/
-
-
-TARGET			efsrv_instrumented.dll
-
-#include "f32.mmh"  	// Generic definitions for the whole f32 component
-
-#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
-	macro SYMBIAN_FTRACE_ENABLE_UDEB
-	macro SYMBIAN_FTRACE_ENABLE_UREL
-#endif
-
-
-#include "efsrv.mmh"
--- a/userlibandfileserver/fileserver/group/ftrace.mmp	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-// Copyright (c) 2008-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:
-//
-
-#include "kernel/kern_ext.mmh"
-#include "f32.mmh"
-
-USERINCLUDE		../inc
-
-TARGET         d_ftrace.ldd
-TARGETTYPE     LDD
-SOURCEPATH	../ftrace
-SOURCE         d_ftrace.cpp
-
-epocallowdlldata
-
-OS_LAYER_SYSTEMINCLUDE_SYMBIAN
-
-start wins
-win32_headers
-end
-
-capability	all
-VENDORID 0x70000001
-
-UNPAGED
-SMPSAFE
--- a/userlibandfileserver/fileserver/group/release.txt	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/group/release.txt	Fri Jun 11 15:02:23 2010 +0300
@@ -1,3 +1,50 @@
+Version 2.00.3042
+=================
+(Made by vfebvre 14/05/2010)
+
+1.	migubarr
+	1.	REQ 428-1297 Migrate File Server Tracing from UTF to OST
+		PackageReleaseID=495120
+
+
+Version 2.00.3041
+=================
+(Made by vfebvre 13/05/2010)
+
+1.	famustaf
+	1.	ou1cimx1#380321 Build on Linux - Incorrect slash in #include in sf_sys.cpp
+
+
+Version 2.00.3040
+=================
+(Made by vfebvre 12/05/2010)
+
+1.	cnotton
+	1.	MINOR_CHANGE Corrected MRP comment text
+
+2.	hengrant
+	1.	ou1cimx1#370931 Memory card gets locked by itself MCL
+
+
+Version 2.00.3039
+=================
+(Made by vfebvre 06/05/2010)
+
+1.	famustaf
+	1.	ou1cimx1#372432 CFileMan malfunctioning in copying
+
+2.	dlyokhin
+	1.	ou1cimx1#372220 File server may request more free space on the volume than necessary
+
+
+Version 2.00.3038
+=================
+(Made by vfebvre 05/05/2010)
+
+1.	niccox
+	1.	ou1cimx1#371028 shostmassstorage capabilities are too high
+
+
 Version 2.00.3037
 =================
 (Made by vfebvre 30/04/2010)
--- a/userlibandfileserver/fileserver/inc/f32file.h	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/inc/f32file.h	Fri Jun 11 15:02:23 2010 +0300
@@ -708,27 +708,28 @@
 	{
 public:
 	/**
-	The size of a block in bytes.
-	
-	Reads and writes that are aligned on block boundaries are up to twice as fast as when 
-	mis-aligned.	
-	
-	Read and write operations on certain underlying media is done in blocks.
-	A write operation that modifies only part of a block is less efficient, in general, than
-	one that modifies an entire block. Data throughput degrades linearly for reads and writes in smaller
-	sized units. 
+	The size of a media block in bytes. This is a physical property of a media and returned by the corresponding media driver.
+	This value is usually at least 512 bytes and always a power of 2. For some media types the meaning of this value is 
+    "the min. size of the aligned data buffer which write onto the media doesn't lead to read-modify-write operation."
+    Therefore, reads and writes that are aligned on block boundaries and with lenght of a multiple block size can be much faster.	
+	Read and write operations on certain underlying media is done in blocks. A write operation that modifies only part of a block is less efficient, 
+    in general, than one that modifies an entire block. Data throughput degrades linearly for reads and writes in smaller sized units. 
 	*/
 	TInt iBlockSize;
+	
 	/**
-	The size in bytes of a single disk cluster.
-	
-	Read and write operations that are aligned on cluster boundaries are more efficient.
-	
-	The file system organises and allocates the file data on the disk in clusters where each cluster is
-	one or more blocks. Files that are not zero length occupy at least one cluster of the disk, 
-	so large numbers of very small files use up more disk space than expected. 
+	The size in bytes of a single file system cluster. This is a logical property of the file system. 
+	The file system organises and allocates the data on the disk in clusters where each cluster usually consists of one or more blocks. 
+    Cluster is a minimal unit that the file system allocates on the volume. Thus, a file of 1 byte length occupies 1 cluster.
+
+	Read and write operations that are aligned on cluster boundaries are more efficient from the file system point of view.
+    In some circumstances cluster size can be less than a block size, but it is very inefficient.
+
+    This value is reported by a file system. The value less than 0 indicates a error.
 	*/
 	TInt iClusterSize;
+
+
 	/**
 	The recommended buffer size for optimised reading performance. 
 	
@@ -763,7 +764,7 @@
 
     /** 
     The maximum file size that is supported by the file system mounted on this volume. 
-    Not all file system may provide this parameter;  The value KMaxTUint64 (0xffffffffffffffff) means that this particular file system hasn't 
+    Not all file system may report this parameter;  The value KMaxTUint64 (0xffffffffffffffff) means that this particular file system hasn't 
     provided this information.
     */
     TUint64 iMaxSupportedFileSize;
--- a/userlibandfileserver/fileserver/inc/f32tracedef.h	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* 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:
-*
-* WARNING: This file contains some APIs which are internal and are subject
-*          to change without notice. Such APIs should therefore not be used
-*          outside the Kernel and Hardware Services package.
-*/
-// F32TRACEDEF.H
-//
-
-#if !defined(__F32TRACEDEF_H__)
-#define __F32TRACEDEF_H__
-
-//*********************************
-// from e32utrace_basic_types.h
-//*********************************
-typedef TUint8  TClassification;	// same as BTrace::TCategory
-typedef TUint32 TModuleUid;			
-typedef TUint16 TFormatId;			// 2 bytes occupying first 32-bit word of data
-
-namespace UTF
-	{
-	const static TFormatId KInitialClientFormat = 512; 
-	const static TFormatId KMaxFormatId = KMaxTUint16;		// 0xFFFF
-
-	enum TClassificationAll
-		{
-		EPanic = 192,
-		EError = 193,
-		EWarning = 194, 
-		EBorder = 195, 
-		EState = 196, 
-		EInternals = 197, 
-		EDump = 198, 
-		EFlow = 199, 
-		ESystemCharacteristicMetrics = 200, 
-		EAdhoc = 201,
-		EClassificationAllHighWaterMark, 
-		};
-	}	// namespace UTF
-
-
-enum TF32TraceFormatUids
-	{
-	EF32TraceUidEfsrv		=	0x100039e4,	// 268450276
-	EF32TraceUidFirst		=	0x10286575,	// 271082869
-	EF32TraceUidLast		=	0x10286594,	// 271082900
-	
-	EF32TraceUidFileSys		=	0x10286575,	// 271082869
-	EF32TraceUidProxyDrive	=	0x10286576,	// 271082870
-
-    // Provided to allow the following compile time assert.
-    ETraceUidHighWaterMark,
-    };
-    __ASSERT_COMPILE(ETraceUidHighWaterMark <= (EF32TraceUidLast + 1));
-	
-
-#endif
-
--- a/userlibandfileserver/fileserver/inc/f32ver.h	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/inc/f32ver.h	Fri Jun 11 15:02:23 2010 +0300
@@ -58,6 +58,6 @@
 
 @see TVersion
 */
-const TInt KF32BuildVersionNumber=3037;
+const TInt KF32BuildVersionNumber=3042;
 //
 #endif
--- a/userlibandfileserver/fileserver/inc/utraceefile.h	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,603 +0,0 @@
-
-// Copyright (c) 2008-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:
-// File Server tracing
-// 
-//
-
-/**
- @file
- @publishedPartner
- @prototype
-*/
-
-#ifndef UTRACEEFILE_H
-#define UTRACEEFILE_H
-
-
-#include <f32tracedef.h>
-
-/**
-This defines trace attributes to be used by file-system tracing
-
-*/
-namespace UTraceModuleFileSys
-    {
-
-	/** 
-	@SYMTraceFormatCategory EF32TraceUidFileSys 
-    @SYMTraceFormatId
-    */
-    enum TFormatId
-        {
-		EReserved = UTF::KInitialClientFormat-1,
-
-        /** @SYMTraceFormatString "+CFileSystem::CFileSystem()" */
-		ECFileSystemConstructor,
-        /** @SYMTraceFormatString "-CFileSystem::CFileSystem()" */
-        ECFileSystemConstructorReturn,
-
-        /** @SYMTraceFormatString "+~CFileSystem::CFileSystem()" */
-		ECFileSystemDestructor,
-        /** @SYMTraceFormatString "-~CFileSystem::CFileSystem()" */
-        ECFileSystemDestructorReturn,
-
-        /** @SYMTraceFormatString "+CFileSystem::New() handle %x" */
-		ECFileSystemNew,
-        /** @SYMTraceFormatString "-CFileSystem::New() fileSystem %x" */
-        ECFileSystemNewRet,
-
-        /** @SYMTraceFormatString "+CFileSystem::Remove() this %x" */
-		ECFileSystemRemove,
-        /** @SYMTraceFormatString "-CFileSystem::Remove()" */
-        ECFileSystemRemoveRet,
-
-        /** @SYMTraceFormatString "CFileSystem::IsExtensionSupported() this %x r %d" */
-		ECFileSystemIsExtensionSupported,
-
-		/** @SYMTraceFormatString "+CFileSystem::Install() this %x" */
-		ECFileSystemInstall,
-        /** @SYMTraceFormatString "-CFileSystem::Install() r %d Name %*S" */
-        ECFileSystemInstallRet,
-
-		/** @SYMTraceFormatString "+CFileSystem::NewMountL() this %x drive %d" */
-		ECFileSystemNewMountL,
-        /** @SYMTraceFormatString "-CFileSystem::NewMountL() r %d CMountCB %x" */
-        ECFileSystemNewMountLRet,
-
-		/** @SYMTraceFormatString "+CFileSystem::NewFileL() this %x drive %d" */
-		ECFileSystemNewFileL,
-        /** @SYMTraceFormatString "-CFileSystem::NewFileL() r %d CFileCB %x" */
-        ECFileSystemNewFileLRet,
-
-		/** @SYMTraceFormatString "+CFileSystem::NewDirL() this %x drive %d" */
-		ECFileSystemNewDirL,
-        /** @SYMTraceFormatString "-CFileSystem::NewDirL() r %d CDirCB %x" */
-        ECFileSystemNewDirLRet,
-
-		/** @SYMTraceFormatString "+CFileSystem::NewFormatL() this %x drive %d" */
-		ECFileSystemNewFormatL,
-        /** @SYMTraceFormatString "-CFileSystem::NewFormatL() r %d CFormatCB %x" */
-        ECFileSystemNewFormatLRet,
-
-		/** @SYMTraceFormatString "+CFileSystem::DriveInfo() this %x aDriveNumber %d" */
-		ECFileSystemDriveInfo,
-        /** @SYMTraceFormatString "-CFileSystem::DriveInfo() type %d driveAtt %x mediaAtt %x" */
-        ECFileSystemDriveInfoRet,
-
-
-        
-		/** @SYMTraceFormatString "+CMountCB::ReMount() drive %d" */
-		ECMountCBReMount,
-        /** @SYMTraceFormatString "-CMountCB::ReMount() success %d" */
-        ECMountCBReMountRet,
-
-		/** @SYMTraceFormatString "+CMountCB::Dismounted() drive %d" */
-		ECMountCBDismounted,
-        /** @SYMTraceFormatString "-CMountCB::Dismounted()" */
-        ECMountCBDismountedRet,
-
-
-		/** @SYMTraceFormatString "+CMountCB::VolumeL() drive %d" */
-		ECMountCBVolumeL,
-        /** @SYMTraceFormatString "-CMountCB::VolumeL() r %d iUniqueID %x iSize %ld iFree %ld iFileCacheFlags %x" */
-        ECMountCBVolumeLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::SetVolumeL() drive %d aName %*S" */
-		ECMountCBSetVolumeL,
-        /** @SYMTraceFormatString "-CMountCB::SetVolumeL() r %d" */
-        ECMountCBSetVolumeLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::MkDirL() drive %d aName %*S" */
-		ECMountCBMkDirL,
-        /** @SYMTraceFormatString "-CMountCB::MkDirL() r %d" */
-        ECMountCBMkDirLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::RmDirL() drive %d aName %*S" */
-		ECMountCBRmDirL,
-        /** @SYMTraceFormatString "-CMountCB::RmDirL() r %d" */
-        ECMountCBRmDirLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::DeleteL() drive %d aName %*S" */
-		ECMountCBDeleteL,
-        /** @SYMTraceFormatString "-CMountCB::DeleteL() r %d" */
-        ECMountCBDeleteLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::RenameL() drive %d anOldName %*S anNewName *S" */
-		ECMountCBRenameL,
-        /** @SYMTraceFormatString "-CMountCB::RenameL() r %d" */
-        ECMountCBRenameLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ReplaceL() drive %d anOldName %*S anNewName *S" */
-		ECMountCBReplaceL,
-        /** @SYMTraceFormatString "-CMountCB::ReplaceL() r %d" */
-        ECMountCBReplaceLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::EntryL() drive %d aName %*S" */
-		ECMountCBEntryL,
-        /** @SYMTraceFormatString "-CMountCB::EntryL() r %d att %x modified %lx size %d" */
-        ECMountCBEntryLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::SetEntryL() drive %d aName %*S aTime %lx aSetAttMask %x aClearAttMask %x" */
-		ECMountCBSetEntryL,
-        /** @SYMTraceFormatString "-CMountCB::SetEntryL() r %d" */
-        ECMountCBSetEntryLRet,
-
-        /** @SYMTraceFormatString "+CMountCB::FileOpenL() drive %d aName %*S aMode %x anOpen %d aFile %x" */
-		ECMountCBFileOpenL,
-        /** @SYMTraceFormatString "-CMountCB::FileOpenL() r %d" */
-        ECMountCBFileOpenLRet,
-
-        /** @SYMTraceFormatString "+CMountCB::DirOpenL() drive %d aName %*S aDir %x" */
-		ECMountCBDirOpenL,
-        /** @SYMTraceFormatString "-CMountCB::DirOpenL() r %d" */
-        ECMountCBDirOpenLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::RawReadL() drive %d aPos %ld aLength %d aTrg %x anOffset %x threadId %x" */
-		ECMountCBRawReadL,
-        /** @SYMTraceFormatString "-CMountCB::RawReadL() r %d" */
-        ECMountCBRawReadLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::RawWriteL() drive %d aPos %ld aLength %d aTrg %x anOffset %x threadId %x" */
-		ECMountCBRawWriteL,
-        /** @SYMTraceFormatString "-CMountCB::RawWriteL() r %d" */
-        ECMountCBRawWriteLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::GetShortNameL() drive %d aLongName %*S" */
-		ECMountCBGetShortNameL,
-        /** @SYMTraceFormatString "-CMountCB::GetShortNameL() r %d aShortName %*S" */
-        ECMountCBGetShortNameLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::GetLongNameL() drive %d aShortName %*S" */
-		ECMountCBGetLongNameL,
-        /** @SYMTraceFormatString "-CMountCB::GetLongNameL() r %d aLongName %*S" */
-        ECMountCBGetLongNameLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ReadFileSectionL() drive %d aName %*S aPos %ld aTrg %x aLength %d threadId %x" */
-		ECMountCBReadFileSectionL,
-        /** @SYMTraceFormatString "-CMountCB::ReadFileSectionL() r %d" */
-        ECMountCBReadFileSectionLRet,
-
-		/** @SYMTraceFormatString "+CMountCB::CheckDisk1() drive %d" */
-		ECMountCBCheckDisk1,
-        /** @SYMTraceFormatString "-CMountCB::CheckDisk1() r %d" */
-        ECMountCBCheckDisk1Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::CheckDisk2() drive %d aOperation %d aParam1 %x aParam2 %x" */
-		ECMountCBCheckDisk2,
-        /** @SYMTraceFormatString "-CMountCB::CheckDisk2() r %d" */
-        ECMountCBCheckDisk2Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::ScanDrive1() drive %d" */
-		ECMountCBScanDrive1,
-        /** @SYMTraceFormatString "-CMountCB::ScanDrive1() r %d" */
-        ECMountCBScanDrive1Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::ScanDrive2() drive %d aOperation %d aParam1 %x aParam2 %x" */
-		ECMountCBScanDrive2,
-        /** @SYMTraceFormatString "-CMountCB::ScanDrive2() r %d" */
-        ECMountCBScanDrive2Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::ControlIO() drive %d aCommand %d aParam1 %x aParam2 %x threadId %x" */
-		ECMountCBControlIO,
-        /** @SYMTraceFormatString "-CMountCB::ControlIO() r %d" */
-        ECMountCBControlIORet,
-
-		/** @SYMTraceFormatString "+CMountCB::Lock() drive %d aStore %d" */
-		ECMountCBLock,
-        /** @SYMTraceFormatString "-CMountCB::Lock() r %d" */
-        ECMountCBLockRet,
-
-		/** @SYMTraceFormatString "+CMountCB::Unlock() drive %d aStore %d" */
-		ECMountCBUnlock,
-        /** @SYMTraceFormatString "-CMountCB::Unlock() r %d" */
-        ECMountCBUnlockRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ClearPassword() drive %d" */
-		ECMountCBClearPassword,
-        /** @SYMTraceFormatString "-CMountCB::ClearPassword() r %d" */
-        ECMountCBClearPasswordRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ForceRemountDrive() drive %d aMountInfo %x aMountInfoMessageHandle %x aFlags %x" */
-		ECMountCBForceRemountDrive,
-        /** @SYMTraceFormatString "-CMountCB::ForceRemountDrive() r %d" */
-        ECMountCBForceRemountDriveRet,
-
-		/** @SYMTraceFormatString "+CMountCB::FinaliseMount1() drive %d" */
-		ECMountCBFinaliseMount1,
-        /** @SYMTraceFormatString "-CMountCB::FinaliseMount1() r %d" */
-        ECMountCBFinaliseMount1Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::FinaliseMount2() drive %d" */
-		ECMountCBFinaliseMount2,
-        /** @SYMTraceFormatString "-CMountCB::FinaliseMount2() r %d" */
-        ECMountCBFinaliseMount2Ret,
-
-		/** @SYMTraceFormatString "+CMountCB::MountControl() drive %d aLevel %d aOption %x aParam %x" */
-		ECMountCBMountControl,
-        /** @SYMTraceFormatString "-CMountCB::MountControl() r %d" */
-        ECMountCBMountControlRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ESQ_RequestFreeSpace() drive %d" */
-		ECMountCBFreeSpace,
-        /** @SYMTraceFormatString "-CMountCB::ESQ_RequestFreeSpace() r %d FreeSpace %ld" */
-        ECMountCBFreeSpaceRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ESQ_GetCurrentFreeSpace() drive %d" */
-		ECMountCBCurrentFreeSpace,
-        /** @SYMTraceFormatString "-CMountCB::ESQ_GetCurrentFreeSpace() r %d FreeSpace %ld" */
-        ECMountCBCurrentFreeSpaceRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ESQ_MountedVolumeSize() drive %d" */
-		ECMountCBVolumeSize,
-        /** @SYMTraceFormatString "-CMountCB::ESQ_MountedVolumeSize() r %d size %ld" */
-        ECMountCBVolumeSizeRet,
-
-		/** @SYMTraceFormatString "+CMountCB::ErasePassword() drive %d" */
-		ECMountCBErasePassword,
-        /** @SYMTraceFormatString "-CMountCB::ErasePassword() r %d" */
-        ECMountCBErasePasswordRet,
-
-		/** @SYMTraceFormatString "+CMountCB::GetInterface() drive %d aInterfaceId %d aInput %x" */
-		ECMountCBGetInterface,
-        /** @SYMTraceFormatString "-CMountCB::GetInterface() r %d aInterface %x" */
-        ECMountCBGetInterfaceRet,
-
-		/** @SYMTraceFormatString "+CFileCB::RenameL() this %x aNewName %*S" */
-		ECFileCBRenameL,
-        /** @SYMTraceFormatString "-CFileCB::RenameL() r %d" */
-        ECFileCBRenameLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::ReadL() this %x aPos %ld aLength %d aDes %x threadId %x aOffset %x" */
-		ECFileCBReadL,
-        /** @SYMTraceFormatString "-CFileCB::ReadL() r %d" */
-        ECFileCBReadLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::WriteL() this %x aPos %ld aLength %d aDes %x threadId %x aOffset %x" */
-		ECFileCBWriteL,
-        /** @SYMTraceFormatString "-CFileCB::WriteL() r %d" */
-        ECFileCBWriteLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::SetSizeL() this %x aSize %ld" */
-		ECFileCBSetSizeL,
-        /** @SYMTraceFormatString "-CFileCB::SetSizeL() r %d" */
-        ECFileCBSetSizeLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::SetEntryL() this %x aTime %lx aSetAttMask %x aClearAttMask %x" */
-		ECFileCBSetEntryL,
-        /** @SYMTraceFormatString "-CFileCB::SetEntryL() r %d" */
-        ECFileCBSetEntryLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::FlushDataL() this %x" */
-		ECFileCBFlushDataL,
-        /** @SYMTraceFormatString "-CFileCB::FlushDataL() r %d" */
-        ECFileCBFlushDataLRet,
-
-		/** @SYMTraceFormatString "+CFileCB::GetInterface() aInterfaceId %d aInput %x" */
-		ECFileCBGetInterface,
-        /** @SYMTraceFormatString "-CFileCB::GetInterface() r %d aInterface %x" */
-        ECFileCBGetInterfaceRet,
-
-
-		/** @SYMTraceFormatString "+CDirCB::ReadL() this %x" */
-		ECDirCBReadL,
-        /** @SYMTraceFormatString "-CDirCB::ReadL() r %d att %x modified %lx size %d" */
-        ECDirCBReadLRet,
-
-		/** @SYMTraceFormatString "+CDirCB::StoreLongEntryNameL() this %x" */
-		ECDirCBStoreLongEntryNameL,
-        /** @SYMTraceFormatString "-CDirCB::StoreLongEntryNameL() r %d" */
-        ECDirCBStoreLongEntryNameLRet,
-
-
-		/** @SYMTraceFormatString "+CFormatCB::DoFormatStepL() this %x" */
-		ECFormatCBDoFormatStepL,
-        /** @SYMTraceFormatString "-CFormatCB::DoFormatStepL() r %d  iCurrentStep %d" */
-        ECFormatCBDoFormatStepLRet,
-
-
-
-
-
-        /**
-        Provided to allow the following compile time assert.
-        */
-        EFormatIdHighWaterMark,
-        };
-    __ASSERT_COMPILE(EFormatIdHighWaterMark <= (UTF::KMaxFormatId + 1));
-	}
-
-namespace UTraceModuleProxyDrive
-    {
-	/** 
-	@SYMTraceFormatCategory EF32TraceUidProxyDrive 
-    @SYMTraceFormatId
-    */
-    enum TFormatId
-        {
-		EReserved = UTF::KInitialClientFormat-1,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::New() aMount %x drive %d" */
-		ECLocalProxyDriveNew,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::New() proxyDrive %x" */
-        ECLocalProxyDriveNewRet,
-
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Initialise() this %x" */
-		ECBaseExtProxyDriveInitialise,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Initialise() r %d" */
-        ECBaseExtProxyDriveInitialiseRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Initialise() this %x" */
-		ECLocalProxyDriveInitialise,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Initialise() r %d" */
-        ECLocalProxyDriveInitialiseRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::ControlIO() this %x" */
-		ECBaseExtProxyDriveControlIO,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::ControlIO() r %d" */
-        ECBaseExtProxyDriveControlIORet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::ControlIO() this %x" */
-		ECLocalProxyDriveControlIO,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::ControlIO() r %d" */
-        ECLocalProxyDriveControlIORet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Read1() this %x aPos %ld aLength %d aTrg %x threadId %x aOffset %x aFlags %x" */
-		ECBaseExtProxyDriveRead1,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Read1() r %d" */
-        ECBaseExtProxyDriveRead1Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Read1() this %x aPos %ld aLength %d aTrg %x threadId %x aOffset %x aFlags %x" */
-		ECLocalProxyDriveRead1,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Read1() r %d" */
-        ECLocalProxyDriveRead1Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Read2() this %x aPos %ld aLength %d aTrg %x threadId %x aOffset %x" */
-		ECBaseExtProxyDriveRead2,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Read2() r %d" */
-        ECBaseExtProxyDriveRead2Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Read2() this %x aPos %ld aLength %d aTrg %x threadId %x aOffset %x" */
-		ECLocalProxyDriveRead2,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Read2() r %d" */
-        ECLocalProxyDriveRead2Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Read3() this %x aPos %ld aLength %d aTrg %x" */
-		ECBaseExtProxyDriveRead3,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Read3() r %d" */
-        ECBaseExtProxyDriveRead3Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Read3() this %x aPos %ld aLength %d aTrg %x" */
-		ECLocalProxyDriveRead3,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Read3() r %d" */
-        ECLocalProxyDriveRead3Ret,
-
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Write1() this %x aPos %ld aLength %d aSrc %x threadId %x aOffset %x aFlags %x" */
-		ECBaseExtProxyDriveWrite1,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Write1() r %d" */
-        ECBaseExtProxyDriveWrite1Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Write1() this %x aPos %ld aLength %d aSrc %x threadId %x aOffset %x aFlags %x" */
-		ECLocalProxyDriveWrite1,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Write1() r %d" */
-        ECLocalProxyDriveWrite1Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Write2() this %x aPos %ld aLength %d aSrc %x threadId %x aOffset %x" */
-		ECBaseExtProxyDriveWrite2,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Write2() r %d" */
-        ECBaseExtProxyDriveWrite2Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Write2() this %x aPos %ld aLength %d aSrc %x threadId %x aOffset %x" */
-		ECLocalProxyDriveWrite2,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Write2() r %d" */
-        ECLocalProxyDriveWrite2Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Write3() this %x aPos %ld aLength %d aSrc %x" */
-		ECBaseExtProxyDriveWrite3,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Write3() r %d" */
-        ECBaseExtProxyDriveWrite3Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Write3() this %x aPos %ld aLength %d aSrc %x" */
-		ECLocalProxyDriveWrite3,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Write3() r %d" */
-        ECLocalProxyDriveWrite3Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Dismounted() this %x" */
-		ECBaseExtProxyDriveDismounted,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Dismounted() r %d" */
-        ECBaseExtProxyDriveDismountedRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Dismounted() this %x" */
-		ECLocalProxyDriveDismounted,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Dismounted() r %d" */
-        ECLocalProxyDriveDismountedRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Enlarge() this %x aLength %d" */
-		ECBaseExtProxyDriveEnlarge,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Enlarge() r %d" */
-        ECBaseExtProxyDriveEnlargeRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Enlarge() this %x aLength %d" */
-		ECLocalProxyDriveEnlarge,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Enlarge() r %d" */
-        ECLocalProxyDriveEnlargeRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::ReduceSize() this %x aPos %d aLength %d" */
-		ECBaseExtProxyDriveReduceSize,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::ReduceSize() r %d" */
-        ECBaseExtProxyDriveReduceSizeRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::ReduceSize() this %x aPos %d aLength %d" */
-		ECLocalProxyDriveReduceSize,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::ReduceSize() r %d" */
-        ECLocalProxyDriveReduceSizeRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Caps() this %x" */
-		ECBaseExtProxyDriveCaps,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Caps() r %d" */
-        ECBaseExtProxyDriveCapsRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Caps() this %x" */
-		ECLocalProxyDriveCaps,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Caps() r %d" */
-        ECLocalProxyDriveCapsRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Format1() this %x" */
-		ECBaseExtProxyDriveFormat1,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Format1() r %d iFormatIsCurrent %d i512ByteSectorsFormatted %d iMaxBytesPerFormat %d" */
-        ECBaseExtProxyDriveFormat1Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Format1() this %x" */
-		ECLocalProxyDriveFormat1,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Format1() r %d iFormatIsCurrent %d i512ByteSectorsFormatted %d iMaxBytesPerFormat %d" */
-        ECLocalProxyDriveFormat1Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Format2() this %x aPos %ld aLength %d" */
-		ECBaseExtProxyDriveFormat2,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Format2() r %d" */
-        ECBaseExtProxyDriveFormat2Ret,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Format2() this %x aPos %ld aLength %d" */
-		ECLocalProxyDriveFormat2,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Format2() r %d" */
-        ECLocalProxyDriveFormat2Ret,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::SetMountInfo() this %x" */
-		ECBaseExtProxyDriveSetMountInfo,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::SetMountInfo() r %d" */
-        ECBaseExtProxyDriveSetMountInfoRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::SetMountInfo() this %x" */
-		ECLocalProxyDriveSetMountInfo,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::SetMountInfo() r %d" */
-        ECLocalProxyDriveSetMountInfoRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::ForceRemount() this %x" */
-		ECBaseExtProxyDriveForceRemount,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::ForceRemount() r %d" */
-        ECBaseExtProxyDriveForceRemountRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::ForceRemount() this %x" */
-		ECLocalProxyDriveForceRemount,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::ForceRemount() r %d" */
-        ECLocalProxyDriveForceRemountRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Unlock() this %x aPassword %d" */
-		ECBaseExtProxyDriveUnlock,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Unlock() r %d" */
-        ECBaseExtProxyDriveUnlockRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Unlock() this %x aPassword %d" */
-		ECLocalProxyDriveUnlock,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Unlock() r %d" */
-        ECLocalProxyDriveUnlockRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Lock() this %x aPassword %d" */
-		ECBaseExtProxyDriveLock,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Lock() r %d" */
-        ECBaseExtProxyDriveLockRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Lock() this %x aPassword %d" */
-		ECLocalProxyDriveLock,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Lock() r %d" */
-        ECLocalProxyDriveLockRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::Clear() this %x" */
-		ECBaseExtProxyDriveClear,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::Clear() r %d" */
-        ECBaseExtProxyDriveClearRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::Clear() this %x" */
-		ECLocalProxyDriveClear,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::Clear() r %d" */
-        ECLocalProxyDriveClearRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::ErasePassword() this %x" */
-		ECBaseExtProxyDriveErasePassword,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::ErasePassword() r %d" */
-        ECBaseExtProxyDriveErasePasswordRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::ErasePassword() this %x" */
-		ECLocalProxyDriveErasePassword,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::ErasePassword() r %d" */
-        ECLocalProxyDriveErasePasswordRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::DeleteNotify() this %x aPos %ld aLength %d" */
-		ECBaseExtProxyDriveDeleteNotify,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::DeleteNotify() r %d" */
-        ECBaseExtProxyDriveDeleteNotifyRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::DeleteNotify() this %x aPos %ld aLength %d" */
-		ECLocalProxyDriveDeleteNotify,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::DeleteNotify() r %d" */
-        ECLocalProxyDriveDeleteNotifyRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::GetLastErrorInfo() this %x" */
-		ECBaseExtProxyDriveGetLastErrorInfo,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::GetLastErrorInfo() r %d" */
-        ECBaseExtProxyDriveGetLastErrorInfoRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::GetLastErrorInfo() this %x" */
-		ECLocalProxyDriveGetLastErrorInfo,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::GetLastErrorInfo() r %d" */
-        ECLocalProxyDriveGetLastErrorInfoRet,
-
-		/** @SYMTraceFormatString "+CBaseExtProxyDrive::GetInterface() this %x aInterfaceId %d aInput %x" */
-		ECBaseExtProxyDriveGetInterface,
-        /** @SYMTraceFormatString "-CBaseExtProxyDrive::GetInterface() r %d aInterface %x" */
-        ECBaseExtProxyDriveGetInterfaceRet,
-
-		/** @SYMTraceFormatString "+CLocalProxyDrive::GetInterface() this %x aInterfaceId %d aInput %x" */
-		ECLocalProxyDriveGetInterface,
-        /** @SYMTraceFormatString "-CLocalProxyDrive::GetInterface() r %d aInterface %x" */
-        ECLocalProxyDriveGetInterfaceRet,
-
-
-
-
-        /**
-        Provided to allow the following compile time assert.
-        */
-        EFormatIdHighWaterMark,
-        };
-    __ASSERT_COMPILE(EFormatIdHighWaterMark <= (UTF::KMaxFormatId + 1));
-
-
-
-    } // end of namespace UTraceModuleFileSys
-
-	
-#endif // UTRACEEFILE_H
--- a/userlibandfileserver/fileserver/inc/utraceefsrv.h	Thu May 27 14:17:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,995 +0,0 @@
-
-// Copyright (c) 2008-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:
-// File Server client-side tracing
-// 
-//
-
-/**
- @file
- @publishedPartner
- @prototype
-*/
-
-#ifndef UTRACEEFSRV_H
-#define UTRACEEFSRV_H
-
-
-#include <f32tracedef.h>
-
-#define MODULEUID EF32TraceUidEfsrv
-
-
-/**
-This defines trace attributes to be used by trace points within the efsrv.dll executable.
-*/
-namespace UTraceModuleEfsrv
-    {
-
-	/** 
-	@SYMTraceFormatCategory EF32TraceUidEfsrv 
-	*/
-
-
-
-    /**
-    @SYMTraceFormatId
-    */
-    enum TFormatId
-        {
-		EReserved = UTF::KInitialClientFormat-1,
-
-        /** @SYMTraceFormatString "+RFile::Replace() sess %x mode %x FileName %*S" */
-		EFileReplace,
-        /** @SYMTraceFormatString "-RFile::Replace() r %d subs %x" */
-        EFileReplaceReturn,
-
-        /** @SYMTraceFormatString "+RFile::Create() sess %x mode %x FileName %*S" */
-		EFileCreate,
-        /** @SYMTraceFormatString "-RFile::Create() r %d subs %x" */
-        EFileCreateReturn,
-
-        /** @SYMTraceFormatString "+RFile::Open() sess %x mode %x FileName %*S" */
-		EFileOpen,
-        /** @SYMTraceFormatString "-RFile::Open() r %d subs %x" */
-        EFileOpenReturn,
-
-        /** @SYMTraceFormatString "+RFile::Adopt() sess %x subs %x" */
-        EFileAdopt,
-        /** @SYMTraceFormatString "-RFile::Adopt() r %d sess %x subs %x" */
-        EFileAdoptReturn,
-
-        /** @SYMTraceFormatString "+RFile::AdoptFromServer() sess %x subs %x" */
-        EFileAdoptFromServer,
-        /** @SYMTraceFormatString "-RFile::AdoptFromServer() r %d sess %x subs %x" */
-        EFileAdoptFromServerReturn,
-
-        /** @SYMTraceFormatString "+RFile::AdoptFromClient() sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d " */
-        EFileAdoptFromClient,
-        /** @SYMTraceFormatString "-RFile::AdoptFromClient() r %d sess %x subs %x" */
-        EFileAdoptFromClientReturn,
-
-        /** @SYMTraceFormatString "+RFile::AdoptFromCreator() subs %x aFsHandleIndex %d aFileHandleIndex %d" */
-        EFileAdoptFromCreator,
-        /** @SYMTraceFormatString "-RFile::AdoptFromCreator() r %d sess %x subs %x" */
-        EFileAdoptFromCreatorReturn,
-
-        /** @SYMTraceFormatString "+RFile::Duplicate() sess %x subs %x aType %d" */
-        EFileDuplicate,
-        /** @SYMTraceFormatString "-RFile::Duplicate() r %d sess %x subs %x" */
-        EFileDuplicateReturn,
-
-        
-        /** @SYMTraceFormatString "+RFile::TransferToServer() sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d" */
-        EFileTransferToServer,
-        /** @SYMTraceFormatString "-RFile::TransferToServer() r %d" */
-        EFileTransferToServerReturn,
-
-        /** @SYMTraceFormatString "+RFile::TransferToClient() sess %x subs %x aFileHandleIndex %d" */
-        EFileTransferToClient,
-        /** @SYMTraceFormatString "-RFile::TransferToClient() r %d" */
-        EFileTransferToClientReturn,
-
-        /** @SYMTraceFormatString "+RFile::TransferToProcess() sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d" */
-        EFileTransferToProcess,
-        /** @SYMTraceFormatString "-RFile::TransferToProcess() r %d" */
-        EFileTransferToProcessReturn,
-
-		
-		/** @SYMTraceFormatString "+RFile::Name() sess %x subs %x" */
-        EFileName,
-		/** @SYMTraceFormatString "-RFile::Name() r %d aName %*S" */
-        EFileNameReturn,
-
-		/** @SYMTraceFormatString "+RFile::FullName() sess %x subs %x" */
-        EFileFullName,
-		/** @SYMTraceFormatString "-RFile::FullName() r %d aName %*S" */
-        EFileFullNameReturn,
-
-		
-		
-		/** @SYMTraceFormatString "+RFile::Temp() sess %x aPath %*S aMode %x" */
-        EFileTemp,
-        /** @SYMTraceFormatString "-RFile::Temp() r %d subs %x aName %*S" */
-        EFileTempReturn,
-
-
-        /** @SYMTraceFormatString "+RFile::Write1() sess %x subs %x len %d" */
-        EFileWrite1,
-		/** @SYMTraceFormatString "-RFile::Write1() r %d" */
-        EFileWrite1Return,
-		
-        /** @SYMTraceFormatString "+RFile::Write2() sess %x subs %x len %d status %x" */
-        EFileWrite2,
-		/** @SYMTraceFormatString "-RFile::Write2()" */
-        EFileWrite2Return,
-		
-        /** @SYMTraceFormatString "+RFile::Write3() sess %x subs %x pos %ld len %d" */
-        EFileWrite3,
-		/** @SYMTraceFormatString "-RFile::Write3() r %d" */
-        EFileWrite3Return,
-		
-        /** @SYMTraceFormatString "+RFile::Write4() sess %x subs %x pos %ld len %d status %x" */
-        EFileWrite4,
-		/** @SYMTraceFormatString "-RFile::Write4()" */
-        EFileWrite4Return,
-		
-
-
-
-        /** @SYMTraceFormatString "+RFile::Read1() sess %x subs %x maxlen %d" */
-        EFileRead1,
-		/** @SYMTraceFormatString "-RFile::Read1() r %d len %d" */
-        EFileRead1Return,
-
-        /** @SYMTraceFormatString "+RFile::Read2() sess %x subs %x maxlen %d status %x" */
-        EFileRead2,
-		/** @SYMTraceFormatString "-RFile::Read2()" */
-        EFileRead2Return,
-
-        /** @SYMTraceFormatString "+RFile::Read3() sess %x subs %x aPos %ld maxlen %d" */
-        EFileRead3,
-		/** @SYMTraceFormatString "-RFile::Read3() r %d len %d" */
-        EFileRead3Return,
-
-        /** @SYMTraceFormatString "+RFile::Read4() sess %x subs %x aPos %ld maxlen %d status %x" */
-        EFileRead4,
-		/** @SYMTraceFormatString "-RFile::Read4()" */
-        EFileRead4Return,
-
-
-
-
-
-		/** @SYMTraceFormatString "+RFile::Lock() sess %x subs %x aPos %ld aLength %d" */
-        EFileLock,
-        /** @SYMTraceFormatString "-RFile::Lock() r %d" */
-        EFileLockReturn,
-
-		/** @SYMTraceFormatString "+RFile::UnLock() sess %x subs %x aPos %ld aLength %d" */
-        EFileUnLock,
-        /** @SYMTraceFormatString "-RFile::UnLock() r %d" */
-        EFileUnLockReturn,
-
-		/** @SYMTraceFormatString "+RFile::Seek() sess %x subs %x aMode %x aPos %ld" */
-        EFileSeek,
-        /** @SYMTraceFormatString "-RFile::Seek() r %d" */
-        EFileSeekReturn,
-
-		/** @SYMTraceFormatString "+RFile::Flush() sess %x subs %x status %x" */
-        EFileFlush,
-        /** @SYMTraceFormatString "-RFile::Flush() r %d" */
-        EFileFlushReturn,
-
-		/** @SYMTraceFormatString "+RFile::Size1() sess %x subs %x" */
-        EFileSize,
-        /** @SYMTraceFormatString "-RFile::Size1() r %d aSize %d" */
-        EFileSizeReturn,
-
-		/** @SYMTraceFormatString "+RFile::Size2() sess %x subs %x" */
-        EFileSize2,
-        /** @SYMTraceFormatString "-RFile::Size2() r %d aSize %ld" */
-        EFileSize2Return,
-
-		/** @SYMTraceFormatString "+RFile::SetSize() sess %x subs %x aSize %ld" */
-        EFileSetSize,
-        /** @SYMTraceFormatString "-RFile::SetSize() r %d" */
-        EFileSetSizeReturn,
-
-		/** @SYMTraceFormatString "+RFile::Att() sess %x subs %x" */
-        EFileAtt,
-        /** @SYMTraceFormatString "-RFile::Att() r %d aVal %x" */
-        EFileAttReturn,
-
-		/** @SYMTraceFormatString "+RFile::SetAtt() sess %x subs %x aSetAttMask %x aClearAttMask %x" */
-        EFileSetAtt,
-        /** @SYMTraceFormatString "-RFile::SetAtt() r %d" */
-        EFileSetAttReturn,
-
-		/** @SYMTraceFormatString "+RFile::Modified() sess %x subs %x" */
-        EFileModified,
-        /** @SYMTraceFormatString "-RFile::Modified() r %d aTime %lx" */
-        EFileModifiedReturn,
-
-		/** @SYMTraceFormatString "+RFile::SetModified() sess %x subs %x aTime %lx" */
-        EFileSetModified,
-        /** @SYMTraceFormatString "-RFile::SetModified() r %d" */
-        EFileSetModifiedReturn,
-
-		/** @SYMTraceFormatString "+RFile::Set() sess %x subs %x aTime %lx aSetAttMask %x aClearAttMask %x" */
-        EFileSet,
-        /** @SYMTraceFormatString "-RFile::Set() r %d" */
-        EFileSetReturn,
-
-		/** @SYMTraceFormatString "+RFile::ChangeMode() sess %x subs %x aNewMode %x" */
-        EFileChangeMode,
-        /** @SYMTraceFormatString "-RFile::ChangeMode() r %d" */
-        EFileChangeModeReturn,
-
-		/** @SYMTraceFormatString "+RFile::Rename() sess %x subs %x aNewName %*S" */
-        EFileRename,
-        /** @SYMTraceFormatString "-RFile::Rename() r %d" */
-        EFileRenameReturn,
-
-		/** @SYMTraceFormatString "+RFile::Drive() sess %x subs %x" */
-        EFileDrive,
-        /** @SYMTraceFormatString "-RFile::Drive() r %d driveAtt %x mediaAtt %x type %x" */
-        EFileDriveReturn,
-
-		/** @SYMTraceFormatString "+RFile::Clamp() sess %x subs %x" */
-        EFileClamp,
-        /** @SYMTraceFormatString "-RFile::Clamp() r %d" */
-        EFileClampReturn,
-
-		/** @SYMTraceFormatString "+RFile::BlockMap() sess %x subs %x aStartPos %ld aEndPos %ld aBlockMapusage %d" */
-        EFileBlockMap,
-        /** @SYMTraceFormatString "-RFile::BlockMap() r %d" */
-        EFileBlockMapReturn,
-
-		/** @SYMTraceFormatString "+RFile::Close() sess %x subs %x" */
-        EFileClose,
-        /** @SYMTraceFormatString "-RFile::Close()" */
-        EFileCloseReturn,
-
-
-
-		/** @SYMTraceFormatString "+RFS::DriveToChar() aDrive %d" */
-		EFsDriveToChar,
-		/** @SYMTraceFormatString "-RFs::DriveToChar() r %d aChar %c" */
-		EFsDriveToCharReturn,
-		/** @SYMTraceFormatString "+RFs::IsRomAddress() aPtr %x" */
-		EFsIsRomAddress,
-		/** @SYMTraceFormatString "-RFS::IsRomAddress() r %d" */
-		EFsIsRomAddressReturn,
-		/** @SYMTraceFormatString "+RFs::GetSystemDrive()" */
-		EFsGetSystemDrive,
-		/** @SYMTraceFormatString "-RFs::GetSystemDrive() r %d" */
-		EFsGetSystemDriveReturn,
-		/** @SYMTraceFormatString "+RFs::GetSystemDriveChar()" */
-		EFsGetSystemDriveChar,
-		/** @SYMTraceFormatString "-RFs::GetSystemDriveChar() r %c" */
-		EFsGetSystemDriveCharReturn,
-		/** @SYMTraceFormatString "+RFs::SetSystemDrive() sess %x" */
-		EFsSetSystemDrive,
-		/** @SYMTraceFormatString "-RFs::SetSystemDrive() r %d" */
-		EFsSetSystemDriveReturn,
-		/** @SYMTraceFormatString "+RFs::Connect()" */
-		EFsConnect,
-		/** @SYMTraceFormatString "-RFs::Connect() r %d sess %x" */
-		EFsConnectReturn,
-		/** @SYMTraceFormatString "+RFs::SetSessionToPrivate() sess %x" */
-		EFsSetSessionToPrivate,
-		/** @SYMTraceFormatString "-RFs::SetSessionToPrivate() r %d" */
-		EFsSetSessionToPrivateReturn,
-		/** @SYMTraceFormatString "+RFs::PrivatePath() sess %x" */
-		EFsPrivatePath,
-		/** @SYMTraceFormatString "-RFs::PrivatePath() r %d aPath %*S" */
-		EFsPrivatePathReturn,
-		/** @SYMTraceFormatString "+RFs::CreatePrivatePath() sess %x aDrive %d" */
-		EFsCreatePrivatePath,
-		/** @SYMTraceFormatString "-RFs::CreatePrivatePath() r %d" */
-		EFsCreatePrivatePathReturn,
-		/** @SYMTraceFormatString "+RFs::Version() sess %x" */
-		EFsVersion,
-		/** @SYMTraceFormatString "-RFs::Version() iMajor %d iMinor %d iBuild %d" */
-		EFsVersionReturn,
-		/** @SYMTraceFormatString "+RFs::AddFileSystem() sess %x aFileName %*S" */
-		EFsAddFileSystem,
-		/** @SYMTraceFormatString "-RFs::AddFileSystem() r %d" */
-		EFsAddFileSystemReturn,
-		/** @SYMTraceFormatString "+RFs::RemoveFileSystem() sess %x aFileName %*S" */
-		EFsRemoveFileSystem,
-		/** @SYMTraceFormatString "-RFs::RemoveFileSystem() r %d" */
-		EFsRemoveFileSystemReturn,
-		/** @SYMTraceFormatString "+RFs::MountFileSystem1() sess %x aFileSystemName %*S aDrive %d" */
-		EFsMountFileSystem1,
-		/** @SYMTraceFormatString "-RFs::MountFileSystem1() r %d" */
-		EFsMountFileSystem1Return,
-		/** @SYMTraceFormatString "+RFs::MountFileSystem2() sess %x aFileSystemName %*S aDrive %d aIsSync %d" */
-		EFsMountFileSystem2,
-		/** @SYMTraceFormatString "-RFs::MountFileSystem2() r %d" */
-		EFsMountFileSystem2Return,
-		/** @SYMTraceFormatString "+RFs::MountFileSystem3() sess %x aFileSystemName %*S aExtensionName %*S aDrive %d" */
-		EFsMountFileSystem3,
-		/** @SYMTraceFormatString "-RFs::MountFileSystem3() r %d" */
-		EFsMountFileSystem3Return,
-		/** @SYMTraceFormatString "+RFs::MountFileSystem4() sess %x aFileSystemName %*S aExtensionName %*S aDrive %d aIsSync %d" */
-		EFsMountFileSystem4,
-		/** @SYMTraceFormatString "-RFs::MountFileSystem4() r %d" */
-		EFsMountFileSystem4Return,
-		/** @SYMTraceFormatString "+RFs::MountFileSystemAndScan1() sess %x aFileSystemName %*S aDrive %d" */
-		EFsMountFileSystemAndScan1,
-		/** @SYMTraceFormatString "-RFs::MountFileSystemAndScan1() r %d" */
-		EFsMountFileSystemAndScan1Return,
-		/** @SYMTraceFormatString "+RFs::MountFileSystemAndScan2() sess %x aFileSystemName %*S aExtensionName %*S aDrive %d " */
-		EFsMountFileSystemAndScan2,
-		/** @SYMTraceFormatString "-RFs::MountFileSystemAndScan2() r %d aIsMountSuccess %d" */
-		EFsMountFileSystemAndScan2Return,
-		/** @SYMTraceFormatString "+RFs::DismountFileSystem() sess %x aFileSystemName %*S aDrive %d" */
-		EFsDismountFileSystem,
-		/** @SYMTraceFormatString "-RFs::DismountFileSystem() r %d" */
-		EFsDismountFileSystemReturn,
-		/** @SYMTraceFormatString "+RFs::FileSystemName() sess %x aDrive %d" */
-		EFsFileSystemName,
-		/** @SYMTraceFormatString "-RFs::FileSystemName() r %d aName %*S" */
-		EFsFileSystemNameReturn,
-		/** @SYMTraceFormatString "+RFs::AddExtension() sess %x aFileName %*S" */
-		EFsAddExtension,
-		/** @SYMTraceFormatString "-RFs::AddExtension() r %d" */
-		EFsAddExtensionReturn,
-		/** @SYMTraceFormatString "+RFs::MountExtension() sess %x aExtensionName %*S aDrive %d" */
-		EFsMountExtension,
-		/** @SYMTraceFormatString "-RFs::MountExtension() r %d" */
-		EFsMountExtensionReturn,
-		/** @SYMTraceFormatString "+RFs::DismountExtension() sess %x aExtensionName %*S aDrive %d" */
-		EFsDismountExtension,
-		/** @SYMTraceFormatString "-RFs::DismountExtension() r %d" */
-		EFsDismountExtensionReturn,
-		/** @SYMTraceFormatString "+RFs::RemoveExtension() sess %x aExtensionName %*S" */
-		EFsRemoveExtension,
-		/** @SYMTraceFormatString "-RFs::RemoveExtension() r %d" */
-		EFsRemoveExtensionReturn,
-		/** @SYMTraceFormatString "+RFs::ExtensionName() sess %x aExtensionName %*S aDrive %d aPos %d" */
-		EFsExtensionName,
-		/** @SYMTraceFormatString "-RFs::ExtensionName() r %d" */
-		EFsExtensionNameReturn,
-		/** @SYMTraceFormatString "+RFs::RemountDrive() sess %x aDrive %d aMountInfo %x aFlags %x" */
-		EFsRemountDrive,
-		/** @SYMTraceFormatString "-RFs::RemountDrive() r %d" */
-		EFsRemountDriveReturn,
-		/** @SYMTraceFormatString "+RFs::NotifyChange1() sess %x aType %x status %x" */
-		EFsNotifyChange1,
-		/** @SYMTraceFormatString "-RFs::NotifyChange1() r %d" */
-		EFsNotifyChange1Return,
-		/** @SYMTraceFormatString "+RFs::NotifyChange2() sess %x aType %x status %x aPathName %*S" */
-		EFsNotifyChange2,
-		/** @SYMTraceFormatString "-RFs::NotifyChange2() r %d" */
-		EFsNotifyChange2Return,
-		/** @SYMTraceFormatString "+RFs::NotifyChangeCancel1() sess %x" */
-		EFsNotifyChangeCancel1,
-		/** @SYMTraceFormatString "-RFs::NotifyChangeCancel1() r %d" */
-		EFsNotifyChangeCancel1Return,
-		/** @SYMTraceFormatString "+RFs::NotifyChangeCancel2() sess %x status %x" */
-		EFsNotifyChangeCancel2,
-		/** @SYMTraceFormatString "-RFs::NotifyChangeCancel2() r %d" */
-		EFsNotifyChangeCancel2Return,
-		/** @SYMTraceFormatString "+RFs::NotifyDiskSpace() sess %x aThreshold %ld aDrive %d status %x" */
-		EFsNotifyDiskSpace,
-		/** @SYMTraceFormatString "-RFs::NotifyDiskSpace() r %d" */
-		EFsNotifyDiskSpaceReturn,
-		/** @SYMTraceFormatString "+RFs::NotifyDiskSpaceCancel1() sess %x status %x" */
-		EFsNotifyDiskSpaceCancel1,
-		/** @SYMTraceFormatString "-RFs::NotifyDiskSpaceCancel1() r %d" */
-		EFsNotifyDiskSpaceCancel1Return,
-		/** @SYMTraceFormatString "+RFs::NotifyDiskSpaceCancel2() sess %x" */
-		EFsNotifyDiskSpaceCancel2,
-		/** @SYMTraceFormatString "-RFs::NotifyDiskSpaceCancel2() r %d" */
-		EFsNotifyDiskSpaceCancel2Return,
-		/** @SYMTraceFormatString "+RFs::DriveList1() sess %x" */
-		EFsDriveList1,
-		/** @SYMTraceFormatString "-RFs::DriveList1() r %d" */
-		EFsDriveList1Return,
-		/** @SYMTraceFormatString "+RFs::DriveList2() sess %x aFlags %x" */
-		EFsDriveList2,
-		/** @SYMTraceFormatString "-RFs::DriveList2() r %d" */
-		EFsDriveList2Return,
-		/** @SYMTraceFormatString "+RFs::Drive() sess %x aDrive %d" */
-		EFsDrive,
-		/** @SYMTraceFormatString "-RFs::Drive() r %d driveAtt %x mediaAtt %x type %x" */
-		EFsDriveReturn,
-		/** @SYMTraceFormatString "+RFs::Volume1() sess %x aDrive %d" */
-		EFsVolume1,
-		/** @SYMTraceFormatString "-RFs::Volume1() r %d iUniqueID %x iSize %ld iFree %ld iFileCacheFlags %x" */
-		EFsVolume1Return,
-		/** @SYMTraceFormatString "+RFs::Volume2() sess %x aDrive %d status %x" */
-		EFsVolume2,
-		/** @SYMTraceFormatString "-RFs::Volume2() r %d" */
-		EFsVolume2Return,
-		/** @SYMTraceFormatString "+RFs::SetVolumeLabel() sess %x aName %*S aDrive %d" */
-		EFsSetVolumeLabel,
-		/** @SYMTraceFormatString "-RFs::SetVolumeLabel() r %d" */
-		EFsSetVolumeLabelReturn,
-		/** @SYMTraceFormatString "+RFs::Subst() sess %x aPath %*S aDrive %d" */
-		EFsSubst,
-		/** @SYMTraceFormatString "-RFs::Subst() r %d" */
-		EFsSubstReturn,
-		/** @SYMTraceFormatString "+RFs::SetSubst() sess %x aPath %%S aDrive %d" */
-		EFsSetSubst,
-		/** @SYMTraceFormatString "-RFs::SetSubst() r %d" */
-		EFsSetSubstReturn,
-		/** @SYMTraceFormatString "+RFs::RealName() sess %x aName %*S" */
-		EFsRealName,
-		/** @SYMTraceFormatString "-RFs::RealName() r %d aResult %*S" */
-		EFsRealNameReturn,
-		/** @SYMTraceFormatString "+RFs::GetMediaSerialNumber() sess %x aDrive %d" */
-		EFsGetMediaSerialNumber,
-		/** @SYMTraceFormatString "-RFs::GetMediaSerialNumber() r %d aSerialNum %*x" */
-		EFsGetMediaSerialNumberReturn,
-		/** @SYMTraceFormatString "+RFs::SessionPath() sess %x" */
-		EFsSessionPath,
-		/** @SYMTraceFormatString "-RFs::SessionPath() r %d aPath %*S" */
-		EFsSessionPathReturn,
-		/** @SYMTraceFormatString "+RFs::SetSessionPath() sess %x aPath %*S" */
-		EFsSetSessionPath,
-		/** @SYMTraceFormatString "-RFs::SetSessionPath() r %d" */
-		EFsSetSessionPathReturn,
-		/** @SYMTraceFormatString "+RFs::MkDir() sess %x aPath %*S" */
-		EFsMkDir,
-		/** @SYMTraceFormatString "-RFs::MkDir() r %d" */
-		EFsMkDirReturn,
-		/** @SYMTraceFormatString "+RFs::MkDirAll() sess %x aPath %*S" */
-		EFsMkDirAll,
-		/** @SYMTraceFormatString "-RFs::MkDirAll() r %d" */
-		EFsMkDirAllReturn,
-		/** @SYMTraceFormatString "+RFs::RmDir() sess %x aPath %*S" */
-		EFsRmDir,
-		/** @SYMTraceFormatString "-RFs::RmDir() r %d" */
-		EFsRmDirReturn,
-		/** @SYMTraceFormatString "+RFs::GetDir1() sess %x aName %*S aUidType0 %x aUidType1 %x aUidType2 %x aKey %x" */
-		EFsGetDir1,
-		/** @SYMTraceFormatString "-RFs::GetDir1() r %d" */
-		EFsGetDir1Return,
-		/** @SYMTraceFormatString "+RFs::GetDir2() sess %x aName %*S anAttMask %x aKey %x" */
-		EFsGetDir2,
-		/** @SYMTraceFormatString "-RFs::GetDir2() r %d" */
-		EFsGetDir2Return,
-		/** @SYMTraceFormatString "+RFs::GetDir3() sess %x aName %*S anAttMask %x aKey %x" */
-		EFsGetDir3,
-		/** @SYMTraceFormatString "-RFs::GetDir3() r %d" */
-		EFsGetDir3Return,
-		/** @SYMTraceFormatString "+RFs::Parse1() sess %x aName %*S" */
-		EFsParse1,
-		/** @SYMTraceFormatString "-RFs::Parse1() r %d" */
-		EFsParse1Return,
-		/** @SYMTraceFormatString "+RFs::Parse2() sess %x aName %*S aRelated %*S" */
-		EFsParse2,
-		/** @SYMTraceFormatString "-RFs::Parse2() r %d" */
-		EFsParse2Return,
-		/** @SYMTraceFormatString "+RFs::Delete() sess %x aName %*S" */
-		EFsDelete,
-		/** @SYMTraceFormatString "-RFs::Delete() r %d" */
-		EFsDeleteReturn,
-		/** @SYMTraceFormatString "+RFs::Rename() sess %x anOldName %*S aNewName %*S" */
-		EFsRename,
-		/** @SYMTraceFormatString "-RFs::Rename() r %d" */
-		EFsRenameReturn,
-		/** @SYMTraceFormatString "+RFs::Replace() sess %x anOldName %*S aNewName %*S" */
-		EFsReplace,
-		/** @SYMTraceFormatString "-RFs::Replace() r %d" */
-		EFsReplaceReturn,
-		/** @SYMTraceFormatString "+RFs::Att() sess %x aName %*S" */
-		EFsAtt,
-		/** @SYMTraceFormatString "-RFs::Att() r %d aVal %x" */
-		EFsAttReturn,
-		/** @SYMTraceFormatString "+RFs::SetAtt() sess %x aName %*S aSetAttMask %x aClearAttMask %x" */
-		EFsSetAtt,
-		/** @SYMTraceFormatString "-RFs::SetAtt() r %d" */
-		EFsSetAttReturn,
-		/** @SYMTraceFormatString "+RFs::Modified() sess %x aName %*S" */
-		EFsModified,
-		/** @SYMTraceFormatString "-RFs::Modified() r %d aTime %lx" */
-		EFsModifiedReturn,
-		/** @SYMTraceFormatString "+RFs::SetModified() sess %x aName %*S aTime %lx" */
-		EFsSetModified,
-		/** @SYMTraceFormatString "-RFs::SetModified() r %d" */
-		EFsSetModifiedReturn,
-		/** @SYMTraceFormatString "+RFs::Entry() sess %x aName %*S" */
-		EFsEntry,
-		/** @SYMTraceFormatString "-RFs::Entry() r %d att %x modified %lx size %d" */
-		EFsEntryReturn,
-		/** @SYMTraceFormatString "+RFs::SetEntry() sess %x aName %*S aTime %lx aSetAttMask %x aClearAttMask %x" */
-		EFsSetEntry,
-		/** @SYMTraceFormatString "-RFs::SetEntry() r %d" */
-		EFsSetEntryReturn,
-		/** @SYMTraceFormatString "+RFs::ReadFileSection() sess %x aName %*S aPos %ld aLength %d" */
-		EFsReadFileSection,
-		/** @SYMTraceFormatString "-RFs::ReadFileSection() r %d" */
-		EFsReadFileSectionReturn,
-		/** @SYMTraceFormatString "+RFs::ResourceCountMarkStart() sess %x" */
-		EFsResourceCountMarkStart,
-		/** @SYMTraceFormatString "-RFs::ResourceCountMarkStart() r %d" */
-		EFsResourceCountMarkStartReturn,
-		/** @SYMTraceFormatString "+RFs::ResourceCountMarkEnd() sess %x" */
-		EFsResourceCountMarkEnd,
-		/** @SYMTraceFormatString "-RFs::ResourceCountMarkEnd() r %d" */
-		EFsResourceCountMarkEndReturn,
-		/** @SYMTraceFormatString "+RFs::ResourceCount() sess %x" */
-		EFsResourceCount,
-		/** @SYMTraceFormatString "-RFs::ResourceCount() r %d" */
-		EFsResourceCountReturn,
-		/** @SYMTraceFormatString "+RFs::CheckDisk() sess %x aDrive %*S" */
-		EFsCheckDisk,
-		/** @SYMTraceFormatString "-RFs::CheckDisk() r %d" */
-		EFsCheckDiskReturn,
-		/** @SYMTraceFormatString "+RFs::ScanDrive() sess %x aDrive %*S" */
-		EFsScanDrive,
-		/** @SYMTraceFormatString "-RFs::ScanDrive() r %d" */
-		EFsScanDriveReturn,
-		/** @SYMTraceFormatString "+RFs::GetShortName() sess %x aLongName %*S" */
-		EFsGetShortName,
-		/** @SYMTraceFormatString "-RFs::GetShortName() r %d aShortName %*S" */
-		EFsGetShortNameReturn,
-		/** @SYMTraceFormatString "+RFs::GetLongName() sess %x aShortName %*S" */
-		EFsGetLongName,
-		/** @SYMTraceFormatString "-RFs::GetLongName() r %d aLongName %*S" */
-		EFsGetLongNameReturn,
-		/** @SYMTraceFormatString "+RFs::IsFileOpen() sess %x aFileName %*S" */
-		EFsIsFileOpen,
-		/** @SYMTraceFormatString "-RFs::IsFileOpen() r %d anAnswer %d" */
-		EFsIsFileOpenReturn,
-		/** @SYMTraceFormatString "+RFs::GetNotifyUser() sess %x" */
-		EFsGetNotifyUser,
-		/** @SYMTraceFormatString "-RFs::GetNotifyUser() r %d" */
-		EFsGetNotifyUserReturn,
-		/** @SYMTraceFormatString "+RFs::SetNotifyUser() sess %x aValue %d" */
-		EFsSetNotifyUser,
-		/** @SYMTraceFormatString "-RFs::SetNotifyUser() r %d" */
-		EFsSetNotifyUserReturn,
-		/** @SYMTraceFormatString "+RFs::IsFileInRom() sess %x aFileName %*S" */
-		EFsIsFileInRom,
-		/** @SYMTraceFormatString "-RFs::IsFileInRom() r %d" */
-		EFsIsFileInRomReturn,
-		/** @SYMTraceFormatString "+RFs::IsValidName1() sess %x aFileName %*S" */
-		EFsIsValidName1,
-		/** @SYMTraceFormatString "-RFs::IsValidName1() r %d" */
-		EFsIsValidName1Return,
-		/** @SYMTraceFormatString "+RFs::IsValidName2() sess %x aFileName %*S" */
-		EFsIsValidName2,
-		/** @SYMTraceFormatString "-RFs::IsValidName2() r %d aBadChar %c" */
-		EFsIsValidName2Return,
-		/** @SYMTraceFormatString "+RFs::IsValidName3() sess %x aFileName %*S" */
-		EFsIsValidName3,
-		/** @SYMTraceFormatString "-RFs::IsValidName3() r %d err %d" */
-		EFsIsValidName3Return,
-		/** @SYMTraceFormatString "+RFs::GetDriveName() sess %x aDrive %d" */
-		EFsGetDriveName,
-		/** @SYMTraceFormatString "-RFs::GetDriveName() r %d aDriveName %*S" */
-		EFsGetDriveNameReturn,
-		/** @SYMTraceFormatString "+RFs::SetDriveName() sess %x aDrive %d aDriveName %*S" */
-		EFsSetDriveName,
-		/** @SYMTraceFormatString "-RFs::SetDriveName() r %d" */
-		EFsSetDriveNameReturn,
-		/** @SYMTraceFormatString "+RFs::LockDrive() sess %x aDrv %d aStore %d" */
-		EFsLockDrive,
-		/** @SYMTraceFormatString "-RFs::LockDrive() r %d" */
-		EFsLockDriveReturn,
-		/** @SYMTraceFormatString "+RFs::UnlockDrive() sess %x aDrv %d aStore %d" */
-		EFsUnlockDrive,
-		/** @SYMTraceFormatString "-RFs::UnlockDrive() r %d" */
-		EFsUnlockDriveReturn,
-		/** @SYMTraceFormatString "+RFs::ClearPassword() sess %x aDrv %d" */
-		EFsClearPassword,
-		/** @SYMTraceFormatString "-RFs::ClearPassword() r %d" */
-		EFsClearPasswordReturn,
-		/** @SYMTraceFormatString "+RFs::ErasePassword() sess %x aDrv %d" */
-		EFsErasePassword,
-		/** @SYMTraceFormatString "-RFs::ErasePassword() r %d" */
-		EFsErasePasswordReturn,
-		/** @SYMTraceFormatString "+RFs::StartupInitComplete() sess %x status %x" */
-		EFsStartupInitComplete,
-		/** @SYMTraceFormatString "-RFs::StartupInitComplete() r %d" */
-		EFsStartupInitCompleteReturn,
-		/** @SYMTraceFormatString "+RFs::SetLocalDriveMapping() sess %x aMapping %*x" */
-		EFsSetLocalDriveMapping,
-		/** @SYMTraceFormatString "-RFs::SetLocalDriveMapping() r %d" */
-		EFsSetLocalDriveMappingReturn,
-		/** @SYMTraceFormatString "+RFs::FinaliseDrive() sess %x aDriveNo %d aMode %d" */
-		EFsFinaliseDrive,
-		/** @SYMTraceFormatString "-RFs::FinaliseDrive() r %d" */
-		EFsFinaliseDriveReturn,
-		/** @SYMTraceFormatString "+RFs::FinaliseDrives() sess %x" */
-		EFsFinaliseDrives,
-		/** @SYMTraceFormatString "-RFs::FinaliseDrives() r %d" */
-		EFsFinaliseDrivesReturn,
-		/** @SYMTraceFormatString "+RFs::SwapFileSystem() sess %x aOldFileSystemName %*S aNewFileSystemName %*S aDrive %d" */
-		EFsSwapFileSystem,
-		/** @SYMTraceFormatString "-RFs::SwapFileSystem() r %d" */
-		EFsSwapFileSystemReturn,
-		/** @SYMTraceFormatString "+RFs::AddCompositeMount() sess %x aFileSystemName %*S aLocalDriveToMount %d aCompositeDrive %d aSync %d" */
-		EFsAddCompositeMount,
-		/** @SYMTraceFormatString "-RFs::AddCompositeMount() r %d" */
-		EFsAddCompositeMountReturn,
-		/** @SYMTraceFormatString "+RFs::ReserveDriveSpace() sess %x aDriveNo %d aSpace %d" */
-		EFsReserveDriveSpace,
-		/** @SYMTraceFormatString "-RFs::ReserveDriveSpace() r %d" */
-		EFsReserveDriveSpaceReturn,
-		/** @SYMTraceFormatString "+RFs::GetReserveAccess() sess %x aDriveNo %d" */
-		EFsGetReserveAccess,
-		/** @SYMTraceFormatString "-RFs::GetReserveAccess() r %d" */
-		EFsGetReserveAccessReturn,
-		/** @SYMTraceFormatString "+RFs::ReleaseReserveAccess() sess %x aDriveNo %d" */
-		EFsReleaseReserveAccess,
-		/** @SYMTraceFormatString "-RFs::ReleaseReserveAccess() r %d" */
-		EFsReleaseReserveAccessReturn,
-		/** @SYMTraceFormatString "+RFs::NotifyDismount() sess %x aDrive %d stauts %x aMode %d" */
-		EFsNotifyDismount,
-		/** @SYMTraceFormatString "-RFs::NotifyDismount() r %d" */
-		EFsNotifyDismountReturn,
-		/** @SYMTraceFormatString "+RFs::NotifyDismountCancel1() sess %x status %x" */
-		EFsNotifyDismountCancel1,
-		/** @SYMTraceFormatString "-RFs::NotifyDismountCancel1() r %d" */
-		EFsNotifyDismountCancel1Return,
-		/** @SYMTraceFormatString "+RFs::NotifyDismountCancel2() sess %x" */
-		EFsNotifyDismountCancel2,
-		/** @SYMTraceFormatString "-RFs::NotifyDismountCancel2() r %d" */
-		EFsNotifyDismountCancel2Return,
-		/** @SYMTraceFormatString "+RFs::AllowDismount() sess %x aDrive %d" */
-		EFsAllowDismount,
-		/** @SYMTraceFormatString "-RFs::AllowDismount() r %d" */
-		EFsAllowDismountReturn,
-		/** @SYMTraceFormatString "+RFs::SetStartupConfiguration() sess %x aCommand %d aParam1 %x aParam2 %x" */
-		EFsSetStartupConfiguration,
-		/** @SYMTraceFormatString "-RFs::SetStartupConfiguration() r %d" */
-		EFsSetStartupConfigurationReturn,
-		/** @SYMTraceFormatString "+RFs::SetNotifyChange() sess %x aNotifyChange %d" */
-		EFsSetNotifyChange,
-		/** @SYMTraceFormatString "-RFs::SetNotifyChange() r %d" */
-		EFsSetNotifyChangeReturn,
-		/** @SYMTraceFormatString "+RFs::InitialisePropertiesFile() sess %x filePtr %x fileLen %d" */
-		EFsInitialisePropertiesFile,
-		/** @SYMTraceFormatString "-RFs::InitialisePropertiesFile() r %d" */
-		EFsInitialisePropertiesFileReturn,
-		/** @SYMTraceFormatString "+RFs::QueryVolumeInfoExt() sess %x aDrive %d aCommand %d" */
-		EFsQueryVolumeInfoExt,
-		/** @SYMTraceFormatString "-RFs::QueryVolumeInfoExt() r %d" */
-		EFsQueryVolumeInfoExtReturn,
-		/** @SYMTraceFormatString "+RFs::VolumeIOParam() sess %x aDrive %d" */
-		EFsVolumeIOParam,
-		/** @SYMTraceFormatString "-RFs::VolumeIOParam() r %d iBlockSize %d iClusterSize %d iRecReadBufSize %d iRecWriteBufSize %d" */
-		EFsVolumeIOParamReturn,
-		/** @SYMTraceFormatString "+RFs::FileSystemSubType() sess %x aDrive %d aName %*S" */
-		EFsFileSystemSubType,
-		/** @SYMTraceFormatString "-RFs::FileSystemSubType() r %d" */
-		EFsFileSystemSubTypeReturn,
-
-		/** @SYMTraceFormatString "+RFs::AddPlugin() sess %x aFileName %*S" */
-        EFsAddPlugin,
-        /** @SYMTraceFormatString "-RFs::AddPlugin() r %d" */
-        EFsAddPluginReturn,
-
-		/** @SYMTraceFormatString "+RFs::RemovePlugin() sess %x aPluginName %*S" */
-        EFsRemovePlugin,
-        /** @SYMTraceFormatString "-RFs::RemovePlugin() r %d" */
-        EFsRemovePluginReturn,
-
-		/** @SYMTraceFormatString "+RFs::MountPlugin1() sess %x aPluginName %*S" */
-        EFsMountPlugin1,
-        /** @SYMTraceFormatString "-RFs::MountPlugin1() r %d" */
-        EFsMountPlugin1Return,
-
-		/** @SYMTraceFormatString "+RFs::MountPlugin2() sess %x aPluginName %*S aDrive %d" */
-        EFsMountPlugin2,
-        /** @SYMTraceFormatString "-RFs::MountPlugin2() r %d" */
-        EFsMountPlugin2Return,
-
-		/** @SYMTraceFormatString "+RFs::MountPlugin3() sess %x aPluginName %*S aDrive %d aPos %d" */
-        EFsMountPlugin3,
-        /** @SYMTraceFormatString "-RFs::MountPlugin3() r %d" */
-        EFsMountPlugin3Return,
-
-		/** @SYMTraceFormatString "+RFs::DismountPlugin() sess %x aPluginName %*S" */
-        EFsDismountPlugin1,
-        /** @SYMTraceFormatString "-RFs::DismountPlugin() r %d" */
-        EFsDismountPlugin1Return,
-
-		/** @SYMTraceFormatString "+RFs::DismountPlugin2() sess %x aPluginName %*S aDrive %d" */
-        EFsDismountPlugin2,
-        /** @SYMTraceFormatString "-RFs::DismountPlugin2() r %d" */
-        EFsDismountPlugin2Return,
-
-		/** @SYMTraceFormatString "+RFs::DismountPlugin3() sess %x aPluginName %*S aDrive %d aPos %d" */
-        EFsDismountPlugin3,
-        /** @SYMTraceFormatString "-RFs::DismountPlugin3() r %d" */
-        EFsDismountPlugin3Return,
-
-		/** @SYMTraceFormatString "+RFs::PluginName() sess %x aDrive %d aPos %d" */
-        EFsPluginName,
-        /** @SYMTraceFormatString "-RFs::PluginName() r %d aName %*S" */
-        EFsPluginNameReturn,
-
-		/** @SYMTraceFormatString "+RFs::Close() sess %x" */
-		EFsClose,
-		/** @SYMTraceFormatString "-RFs::Close() r %d" */
-		EFsCloseReturn,
-
-
-		/** @SYMTraceFormatString "+RDir::Open1() sess %x aName %*S aUidType0 %x aUidType1 %x aUidType2 %x" */
-        EDirOpen1,
-        /** @SYMTraceFormatString "-RDir::Open1() r %d subs %x" */
-        EDirOpen1Return,
-
-		/** @SYMTraceFormatString "+RDir::Open2() sess %x aName %*S anAttMask %x" */
-        EDirOpen2,
-        /** @SYMTraceFormatString "-RDir::Open2() r %d subs %x" */
-        EDirOpen2Return,
-
-		/** @SYMTraceFormatString "+RDir::Close() sess %x subs %x" */
-        EDirClose,
-        /** @SYMTraceFormatString "-RDir::Close()" */
-        EDirCloseReturn,
-
-		/** @SYMTraceFormatString "+RDir::Read1() sess %x subs %x" */
-        EDirRead1,
-        /** @SYMTraceFormatString "-RDir::Read1() r %d count %d" */
-        EDirRead1Return,
-
-		/** @SYMTraceFormatString "+RDir::Read2() sess %x subs %x status %x" */
-        EDirRead2,
-        /** @SYMTraceFormatString "-RDir::Read2()" */
-        EDirRead2Return,
-
-		/** @SYMTraceFormatString "+RDir::Read3() sess %x subs %x" */
-        EDirRead3,
-        /** @SYMTraceFormatString "-RDir::Read3() r %d" */
-        EDirRead3Return,
-
-		/** @SYMTraceFormatString "+RDir::Read4() sess %x subs %x status %x" */
-        EDirRead4,
-        /** @SYMTraceFormatString "-RDir::Read4()" */
-        EDirRead4Return,
-
-
-		/** @SYMTraceFormatString "+RFormat::Open1() sess %x aName %*S aFormatMode %x" */
-        EFormat1Open,
-        /** @SYMTraceFormatString "-RFormat::Open1() r %d subs %x aCount %d" */
-        EFormatOpen1Return,
-
-		/** @SYMTraceFormatString "+RFormat::Open2() sess %x aName %*S aFormatMode %x aInfo %x" */
-        EFormat2Open,
-        /** @SYMTraceFormatString "-RFormat::Open2() r %d subs %x aCount %d" */
-        EFormatOpen2Return,
-
-		/** @SYMTraceFormatString "+RFormat::Close() sess %x subs %x" */
-        EFormatClose,
-        /** @SYMTraceFormatString "-RFormat::Close()" */
-        EFormatCloseReturn,
-
-		/** @SYMTraceFormatString "+RFormat::Next1() sess %x subs %x" */
-        EFormatNext1,
-        /** @SYMTraceFormatString "-RFormat::Next1() r %d aStep %d" */
-        EFormatNext1Return,
-
-		/** @SYMTraceFormatString "+RFormat::Next2() sess %x subs %x status %x" */
-        EFormatNext2,
-        /** @SYMTraceFormatString "-RFormat::Next2()" */
-        EFormatNext2Return,
-
-
-
-		/** @SYMTraceFormatString "+RPlugin::Open() aPos %d" */
-        EPluginOpen,
-        /** @SYMTraceFormatString "-RPlugin::Open() r %d subs %x" */
-        EPluginOpenReturn,
-
-		/** @SYMTraceFormatString "+RPlugin::Close() sess %x subs %x" */
-        EPluginClose,
-        /** @SYMTraceFormatString "-RPlugin::Close() r %d" */
-        EPluginCloseReturn,
-
-		/** @SYMTraceFormatString "+RPlugin::DoRequest1() sess %x subs %x aReqNo %d status %x" */
-        EPluginDoRequest1,
-        /** @SYMTraceFormatString "-RPlugin::DoRequest1()" */
-        EPluginDoRequest1Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoRequest2() sess %x subs %x aReqNo %d status %x a1 %x" */
-        EPluginDoRequest2,
-        /** @SYMTraceFormatString "-RPlugin::DoRequest2()" */
-        EPluginDoRequest2Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoRequest3() sess %x subs %x aReqNo %d status %x a1 %x a2 %x" */
-        EPluginDoRequest3,
-        /** @SYMTraceFormatString "-RPlugin::DoRequest3()" */
-        EPluginDoRequest3Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoControl() sess %x subs %x aFunction %d" */
-        EPluginDoControl1,
-        /** @SYMTraceFormatString "-RPlugin::DoControl() r %d" */
-        EPluginDoControl1Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoControl2() sess %x subs %x aFunction %d a1 %x" */
-        EPluginDoControl2,
-        /** @SYMTraceFormatString "-RPlugin::DoControl2() r %d" */
-        EPluginDoControl2Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoControl3() sess %x subs %x aFunction %d a1 %x a2 %x" */
-        EPluginDoControl3,
-        /** @SYMTraceFormatString "-RPlugin::DoControl3() r %d" */
-        EPluginDoControl3Return,
-
-		/** @SYMTraceFormatString "+RPlugin::DoCancel() sess %x subs %x aReqMask %x" */
-        EPluginDoCancel,
-        /** @SYMTraceFormatString "-RPlugin::DoCancel()" */
-        EPluginDoCancelReturn,
-
-
-		/** @SYMTraceFormatString "+CFileMan::NewL1() sess %x" */
-        ECFileManNewL1,
-        /** @SYMTraceFormatString "-CFileMan::NewL1() CFileMan* %x" */
-        ECFileManNewL1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::NewL2() sess %x anObserver %x" */
-        ECFileManNewL2,
-        /** @SYMTraceFormatString "-CFileMan::NewL2() CFileMan* %x" */
-        ECFileManNewL2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::~CFileMan() this %x" */
-        ECFileManDestructor,
-        /** @SYMTraceFormatString "-CFileMan::~CFileMan()" */
-        ECFileManDestructorReturn,
-
-		/** @SYMTraceFormatString "+CFileMan::CurrentAction() this %x" */
-        ECFileManCurrentAction,
-        /** @SYMTraceFormatString "-CFileMan::CurrentAction() action %d" */
-        ECFileManCurrentActionReturn,
-
-		/** @SYMTraceFormatString "+CFileMan::GetCurrentTarget() this %x" */
-        ECFileManGetCurrentTarget,
-        /** @SYMTraceFormatString "-CFileMan::GetCurrentTarget() aTrgName %*S" */
-        ECFileManGetCurrentTargetReturn,
-
-		/** @SYMTraceFormatString "+CFileMan::GetCurrentSource() this %x" */
-        ECFileManGetCurrentSource,
-        /** @SYMTraceFormatString "-CFileMan::GetCurrentSource() aSrcName %*S" */
-        ECFileManGetCurrentSourceReturn,
-
-		/** @SYMTraceFormatString ".CFileMan::BytesTransferredByCopyStep() this %x BytesTransferred %d" */
-        ECFileManBytesTransferredByCopyStep,
-
-		/** @SYMTraceFormatString "+CFileMan::Attribs1() this %x aName %*S aSetMask %x aClearMask %x aTime %lx aSwitches %d, status %x" */
-        ECFileManAttribs1,
-        /** @SYMTraceFormatString "-CFileMan::Attribs1() r %d" */
-        ECFileManAttribs1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Attribs2() this %x aName %*S aSetMask %x aClearMask %x aTime %lx aSwitches %d" */
-        ECFileManAttribs2,
-        /** @SYMTraceFormatString "-CFileMan::Attribs2() r %d" */
-        ECFileManAttribs2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Copy1() this %x anOld %*S aNew %*S aSwitches %d status %x" */
-        ECFileManCopy1,
-        /** @SYMTraceFormatString "-CFileMan::Copy1() r %d" */
-        ECFileManCopy1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Copy2() this %x anOld %*S aNew %*S aSwitches %d" */
-        ECFileManCopy2,
-        /** @SYMTraceFormatString "-CFileMan::Copy2() r %d" */
-        ECFileManCopy2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Copy3() this %x anOldSubs %x aNew %*S aSwitches %d" */
-        ECFileManCopy3,
-        /** @SYMTraceFormatString "-CFileMan::Copy3() r %d" */
-        ECFileManCopy3Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Copy4() this %x anOldSubs %x aNew %*S aSwitches %dstatus %x" */
-        ECFileManCopy4,
-        /** @SYMTraceFormatString "-CFileMan::Copy4() r %d" */
-        ECFileManCopy4Return,
-		
-		/** @SYMTraceFormatString "+CFileMan::Delete1() this %x aName %*S aSwitches %d status %x" */
-        ECFileManDelete1,
-        /** @SYMTraceFormatString "-CFileMan::Delete1() r %d" */
-        ECFileManDelete1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Delete2() this %x aName %*S aSwitches %d" */
-        ECFileManDelete2,
-        /** @SYMTraceFormatString "-CFileMan::Delete2() r %d" */
-        ECFileManDelete2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Move1() this %x anOld %*S aNew %*S aSwitches %d status %x" */
-        ECFileManMove1,
-        /** @SYMTraceFormatString "-CFileMan::Move1() r %d" */
-        ECFileManMove1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Move2() this %x anOld %*S aNew %*S aSwitches %d" */
-        ECFileManMove2,
-        /** @SYMTraceFormatString "-CFileMan::Move2() r %d" */
-        ECFileManMove2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Rename1() this %x anOld %*S aNew %*S aSwitches %d status %x" */
-        ECFileManRename1,
-        /** @SYMTraceFormatString "-CFileMan::Rename1() r %d" */
-        ECFileManRename1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::Rename2() this %x anOld %*S aNew %*S aSwitches %d" */
-        ECFileManRename2,
-        /** @SYMTraceFormatString "-CFileMan::Rename2() r %d" */
-        ECFileManRename2Return,
-
-		/** @SYMTraceFormatString "+CFileMan::RmDir1() this %x aDirName %*S status %x" */
-        ECFileManRmDir1,
-        /** @SYMTraceFormatString "-CFileMan::RmDir1() r %d" */
-        ECFileManRmDir1Return,
-
-		/** @SYMTraceFormatString "+CFileMan::RmDir2() this %x aDirName %*S" */
-        ECFileManRmDir2,
-        /** @SYMTraceFormatString "-CFileMan::RmDir2() r %d" */
-        ECFileManRmDir2Return,
-
-
-
-
-
-		/** @SYMTraceFormatString "+CDirScan::NewL() sess %x" */
-        ECDirScanNewL,
-        /** @SYMTraceFormatString "-CDirScan::NewL() CDirScan* %x" */
-        ECDirScanNewLReturn,
-
-		/** @SYMTraceFormatString "+CDirScan::NewLC() sess %x" */
-        ECDirScanNewLC,
-        /** @SYMTraceFormatString "-CDirScan::NewLC() CDirScan* %x" */
-        ECDirScanNewLCReturn,
-
-		/** @SYMTraceFormatString "+CDirScan::~CDirScan() this %x" */
-        ECDirScanDestructor,
-        /** @SYMTraceFormatString "-CDirScan::~CDirScan()" */
-        ECDirScanDestructorReturn,
-
-		/** @SYMTraceFormatString "+CDirScan::SetScanDataL() this %x aMatchName %*S anEntryAttMask %x anEntrySortKey %d aScanDir %d" */
-        ECDirScanSetScanDataL,
-        /** @SYMTraceFormatString "-CDirScan::SetScanDataL() r %d" */
-        ECDirScanSetScanDataLReturn,
-
-		/** @SYMTraceFormatString "+CDirScan::NextL() this %x" */
-        ECDirScanNextL,
-        /** @SYMTraceFormatString "-CDirScan::NextL() r %d DirEntries %d" */
-        ECDirScanNextLReturn,
-
-        /** @SYMTraceFormatString "-CDirScan Leave r %d" */
-        ECDirScanLeave,
-
-
-
-
-
-
-        /** @SYMTraceFormatString "Efsrv.dll Panic r %d" */
-        EPanic,
-
-        
-		/** @SYMTraceFormatString "TimeStamp" */
-        ETimeStamp,
-
-        /**
-        Provided to allow the following compile time assert.
-        */
-        EFormatIdHighWaterMark,
-        };
-    __ASSERT_COMPILE(EFormatIdHighWaterMark <= (UTF::KMaxFormatId + 1));
-
-
-
-    } // end of namespace UTraceModuleEfsrv
-
-	
-#endif // UTRACEEFSRV_H
--- a/userlibandfileserver/fileserver/rom/f32.iby	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/rom/f32.iby	Fri Jun 11 15:02:23 2010 +0300
@@ -17,8 +17,6 @@
 secondary=\Epoc32\Release\##MAIN##\##BUILD##\efile.exe  sys\bin\efile.exe  FIXED HEAPMAX(0x80000)
 file=\Epoc32\Release\##MAIN##\##BUILD##\efsrv.dll       sys\bin\efsrv.dll
 
-device[VARID]=\Epoc32\Release\##KMAIN##\##BUILD##\d_ftrace.ldd          sys\bin\d_ftrace.ldd
-
 #ifdef WITH_EXFAT
 file=\Epoc32\Release\##MAIN##\##BUILD##\exfat.fsy       sys\bin\exfat.fsy
 #endif
--- a/userlibandfileserver/fileserver/scomp/base_f32_scomp.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/scomp/base_f32_scomp.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "Composite File System"
 
 component	base_f32_scomp
--- a/userlibandfileserver/fileserver/sfat/base_f32_sfat.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat/base_f32_sfat.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "FAT File System"
 
 component	base_f32_sfat
--- a/userlibandfileserver/fileserver/sfat32/base_f32_sfat32.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfat32/base_f32_sfat32.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "FAT32 File System"
 
 component	base_f32_sfat32
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfile/efile.mmh	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,109 @@
+// Copyright (c) 1996-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:
+// f32\sfile\efile.mmp
+// efile.exe File Server
+// 
+//
+
+/**
+ @file
+*/
+
+
+SOURCEPATH		../sfsrv
+USERINCLUDE		../sfsrv
+
+USERINCLUDE		../ftrace
+USERINCLUDE		../sfile/traces
+
+SOURCE			 cl_file.cpp
+SOURCE			 cl_cli.cpp
+SOURCE			 cl_dir.cpp
+
+SOURCEPATH		../sfile
+USERINCLUDE		.
+SOURCE			 sf_amh.cpp sf_dat.cpp sf_debug.cpp sf_dir.cpp
+SOURCE			 sf_drv.cpp sf_file.cpp sf_fmt.cpp
+SOURCE			 sf_ldr.cpp sf_main.cpp sf_nbs.cpp sf_ses.cpp
+SOURCE			 sf_svr.cpp sf_sys.cpp sf_utl.cpp sf_mnt.cpp
+SOURCE			 sf_raw.cpp sf_prel.cpp sf_disk.cpp
+SOURCE			 sf_request.cpp sf_ops.cpp sf_notify.cpp
+SOURCE			 sf_thread.cpp sf_local.cpp sf_obj.cpp
+SOURCE			 sf_ext.cpp sf_hash.cpp
+SOURCE			 sf_plugin.cpp sf_plugin_ops.cpp sf_plugin_man.cpp
+SOURCE			 Sf_plugin_util.cpp
+SOURCE			 sf_cache_man.cpp sf_cache_client.cpp
+SOURCE			 sf_file_cache.cpp
+SOURCE			 sf_memory_man.cpp sf_memory_client.cpp
+SOURCE			 sf_plugin_shim.cpp
+SOURCE			 sf_notifier_handlers.cpp
+#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION
+SOURCE			 sf_pool.cpp sf_notifier.cpp
+#endif
+
+#ifdef WINS
+SOURCE			 sf_lwins.cpp
+
+library			emulator.lib
+#else
+SOURCE			 sf_lepoc.cpp  sf_inflate.cpp sf_cache.cpp sf_decomp.cpp
+SOURCE			 sf_pgcompr.cpp
+
+#ifdef MARM
+SOURCEPATH	../../../kernel/eka/kernel/arm
+SOURCE			 byte_pair.cia
+#else
+SOURCEPATH	../../../kernel/eka/kernel
+SOURCE			 byte_pair.cpp
+#endif
+
+
+SOURCEPATH	../srom
+SOURCE			 sr_rom.cpp
+#endif
+
+STRICTDEPEND
+
+SOURCEPATH	.
+DOCUMENT		 ../group/release.txt
+
+TARGETTYPE		exexp
+
+DEFFILE			efile.def
+
+USERINCLUDE	../inc ../sfsrv/traces
+#ifdef SYMBIAN_OLD_EXPORT_LOCATION
+SYSTEMINCLUDE	../inc
+#endif
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+USERINCLUDE	../../../kernel/eka/include
+
+LIBRARY			 efsrv.lib euser.lib hal.lib
+
+EPOCSTACKSIZE	0x6000
+EPOCHEAPSIZE	0x00001000	0x800000
+
+START WINS
+BASEADDRESS		0x62000000
+WIN32_LIBRARY	kernel32.lib
+END
+UID		0x1000008c 0x100039e3
+VENDORID 0x70000001
+
+unpagedcode
+unpageddata
+
+SMPSAFE
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfile/efile.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,42 @@
+// Copyright (c) 1996-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:
+// f32/sfile/efile.mmp
+// efile.exe File Server
+// 
+//
+
+/**
+ @file
+*/
+
+
+TARGET			efile.exe
+
+#include "f32caps.mmh"  // Capabilities of File Server process
+#include "f32.mmh"  	// Generic definitions for the whole f32 component
+
+MACRO			SYMBIAN_PRIVATE_EFSRV
+
+// By default, tracepoints are compiled in to UDEB version only
+#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
+macro SYMBIAN_FTRACE_ENABLE_UDEB
+//macro SYMBIAN_FTRACE_ENABLE_UREL
+#endif
+
+#include "efile.mmh"
+
+
+
+
+
--- a/userlibandfileserver/fileserver/sfile/sf_dat.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_dat.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -51,7 +51,6 @@
 TBool StartupInitCompleted;
 TBool LocalDriveMappingSet;
 CKernEventNotifier* TheKernEventNotifier;
-RFTrace TheFtrace;
 
 
 GLDEF_D TCodePageUtils TheCodePage;
--- a/userlibandfileserver/fileserver/sfile/sf_dir.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_dir.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,6 +17,10 @@
 
 #include "sf_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_dirTraces.h"
+#endif
+
 LOCAL_C CDirCB* GetDirFromHandle(TInt aHandle,CSessionFs* aSession)
 //
 // Get the dir control block from its handle.
@@ -52,19 +56,18 @@
 		{
 		TEntry e;
 
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECDirCBReadL, EF32TraceUidFileSys, &aDir);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECDIRCBREADL2, "fsDirReadPacked this %x", &aDir);
 		aDir.ReadL(e);
-		TRACE5(UTF::EBorder, UTraceModuleFileSys::ECDirCBReadLRet, EF32TraceUidFileSys, 
-			KErrNone, e.iAtt, I64LOW(e.iModified.Int64()), I64HIGH(e.iModified.Int64()), e.iSize);
+		OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECDIRCBREADL2RET, "fsDirReadPacked r %d att %x modified %x:%x  size %d", (TUint) KErrNone, (TUint) e.iAtt, (TUint) I64HIGH(e.iModified.Int64()), (TUint) I64LOW(e.iModified.Int64()), (TUint) e.iSize);
 		TInt len=EntrySize(e, EFalse);
 		TInt rLen=EntrySize(e, ETrue);
 		TEntry* pX=PtrAdd(pE,rLen);
 		if (pX>pEnd)
 			{
 
-			TRACE1(UTF::EBorder, UTraceModuleFileSys::ECDirCBStoreLongEntryNameL, EF32TraceUidFileSys, &aDir);
+			OstTrace1(TRACE_FILESYSTEM, FSYS_ECDIRCBSTORELONGENTRYNAMEL, "fsDirReadPacked this %x", &aDir);
 			aDir.StoreLongEntryNameL(e.iName);
-			TRACE1(UTF::EBorder, UTraceModuleFileSys::ECDirCBStoreLongEntryNameLRet, EF32TraceUidFileSys, KErrNone);
+			OstTrace1(TRACE_FILESYSTEM, FSYS_ECDIRCBSTORELONGENTRYNAMELRET, "fsDirReadPacked r %d", KErrNone);
 
 			aDir.SetPending(ETrue);
 			break;
@@ -163,10 +166,10 @@
 		return(r);
 	TEntry e;
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECDirCBReadL, EF32TraceUidFileSys, &dir);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECDIRCBREADL1, "this %x", &dir);
 	TRAP(r,dir->ReadL(e))
-	TRACE5(UTF::EBorder, UTraceModuleFileSys::ECDirCBReadLRet, EF32TraceUidFileSys, 
-		KErrNone, e.iAtt, I64LOW(e.iModified.Int64()), I64HIGH(e.iModified.Int64()), e.iSize);
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECDIRCBREADL1RET, "r %d att %x modified %x:%x  size %d", (TUint) KErrNone, (TUint) e.iAtt, (TUint) I64HIGH(e.iModified.Int64()), (TUint) I64LOW(e.iModified.Int64()), (TUint) e.iSize);
+		
 
 
 	if (r==KErrNone)
--- a/userlibandfileserver/fileserver/sfile/sf_drv.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_drv.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,8 +17,9 @@
 
 #include "sf_std.h"
 #include "sf_file_cache.h"
-
-
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_drvTraces.h"
+#endif
 //const TInt KMaxNotifierAttempts=4; // not used anywhere
 
 static TPtrC StripBackSlash(const TDesC& aName)
@@ -286,12 +287,12 @@
 	if (!aMount.IsDismounted() && !aMount.ProxyDriveDismounted())
 		{
 		aMount.SetDrive(this);
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMount, EF32TraceUidFileSys, DriveNumber());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT1, "drive %d", DriveNumber());
 		
         //-- actually, this is asking CMountCB to see if it belongs to the current media. 
         iReason = aMount.ReMount();
 
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMountRet, EF32TraceUidFileSys, iReason);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT1RET, "success %d", iReason);
 		
         if (iReason == KErrNone)	//	ReMount succeeded
 			{
@@ -327,13 +328,13 @@
     
     apMount = NULL;
 
-    TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+    OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
    
     //-- construct a new CmountCB object.
     //-- on return pMountsFs will be the pointer to the factory object of CFileSystem that produced this mount
     apMount = FSys().NewMountExL(this, &pMountsFs, aForceMount, aFsNameHash);
 
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, KErrNone, apMount);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTLRET, "r %d CMountCB %x", (TUint) KErrNone, (TUint) apMount);
 	__PRINT2(_L("TDrive::MountMediaL created mount:0x%x FileSys:0x%x"), apMount, pMountsFs);
 
     ASSERT(pMountsFs && apMount);
@@ -402,10 +403,10 @@
 */
 TInt TDrive::MountControl(TInt aLevel, TInt aOption, TAny* aParam)
     {
-	TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBMountControl, EF32TraceUidFileSys, DriveNumber(), aLevel, aOption, aParam);
+	OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMOUNTCONTROL, "drive %d aLevel %d aOption %x aParam %x", (TUint) DriveNumber(), (TUint) aLevel, (TUint) aOption, (TUint) aParam);
     TInt r = CurrentMount().MountControl(aLevel, aOption, aParam);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBMountControlRet, EF32TraceUidFileSys, r);
-
+	
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMOUNTCONTROLRET, "r %d", r);
 	return r;
     }
 
@@ -434,9 +435,9 @@
     //-- the caller will be suspended until aFreeSpaceRequired bytes is available or scanning process finishes
     {
         TUint64 freeSpaceReq = aFreeSpaceRequired;
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFreeSpace, EF32TraceUidFileSys, DriveNumber());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFREESPACE, "drive %d", DriveNumber());
         nRes = CurrentMount().RequestFreeSpace(freeSpaceReq);
-		TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBFreeSpaceRet, EF32TraceUidFileSys, nRes, I64LOW(freeSpaceReq), I64HIGH(freeSpaceReq));
+		OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFREESPACERET, "r %d FreeSpace %x:%x", (TUint) nRes, (TUint) I64HIGH(freeSpaceReq), (TUint) I64LOW(freeSpaceReq));
         if(nRes == KErrNone)
             {
             return (freeSpaceReq >= aFreeSpaceRequired) ? KErrNone : KErrDiskFull;
@@ -466,11 +467,10 @@
     nRes = CheckMount();
     if(nRes != KErrNone)
         return nRes;
-
     //-- 1. Try mount-specific request first. It won't block this call as CMountCB::VolumeL() can do if some background activity is going on the mount
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeSize, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMESIZE, "drive %d", DriveNumber());
     nRes = CurrentMount().MountedVolumeSize(aSize);
-	TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeSize, EF32TraceUidFileSys, nRes, I64LOW(aSize), I64HIGH(aSize));
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMESIZERET, "r %d aSize %x:%x", (TUint) nRes, (TUint) I64HIGH(aSize), (TUint) I64LOW(aSize));
     if(nRes == KErrNone)
         return nRes;
 
@@ -503,9 +503,9 @@
         return nRes;
 
     //-- 1. Try mount-specific request first. It won't block this call as CMountCB::VolumeL() can do 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCurrentFreeSpace, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCURRENTFREESPACE, "drive %d", DriveNumber());
     nRes = CurrentMount().GetCurrentFreeSpaceAvailable(aFreeDiskSpace);
-	TRACERET3(UTF::EBorder, UTraceModuleFileSys::ECMountCBCurrentFreeSpaceRet, EF32TraceUidFileSys, nRes, I64LOW(aFreeDiskSpace), I64HIGH(aFreeDiskSpace));
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCURRENTFREESPACERET, "r %d FreeSpace %x:%x", (TUint) nRes, (TUint) I64HIGH(aFreeDiskSpace), (TUint) I64LOW(aFreeDiskSpace));
     if(nRes == KErrNone)
         return nRes;
 
@@ -543,9 +543,9 @@
 	if(IsWriteProtected())
 		return(KErrAccessDenied);
 
-	TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2);
+	OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2);
 	TRAP(r,CurrentMount().FinaliseMountL(aOperation, aParam1, aParam2));
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount2Ret, EF32TraceUidFileSys, r);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT2RET, "r %d", r);
 	
 	// Pass FinaliseDrive notification down to media driver
 	TInt driveNumber = DriveNumber();
@@ -578,9 +578,10 @@
 	if(IsWriteProtected())
 		return(KErrAccessDenied);
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount1, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT1, "drive %d", DriveNumber());
 	TRAP(r,CurrentMount().FinaliseMountL());
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFinaliseMount1Ret, EF32TraceUidFileSys, r);
+	
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFINALISEMOUNT1RET, "r %d", r);
 	
     return r;
 	}
@@ -887,7 +888,6 @@
 
 	return KErrNone;
 	}
-
 void TDrive::DriveInfo(TDriveInfo& anInfo)
 //
 // Get the drive info.
@@ -900,10 +900,9 @@
 
 	if(iFSys)
 		{
-		TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDriveInfo, EF32TraceUidFileSys, &FSys(), DriveNumber());
+		OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDRIVEINFO, "this %x aDriveNumber %d", (TUint) &FSys(), (TUint) DriveNumber());
 		FSys().DriveInfo(anInfo,DriveNumber());
-		TRACE3(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDriveInfoRet, EF32TraceUidFileSys, 
-			anInfo.iType, anInfo.iDriveAtt, anInfo.iMediaAtt);
+		OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDRIVEINFORET, "type %d driveAtt %x mediaAtt %x", (TUint) anInfo.iType, (TUint) anInfo.iDriveAtt, (TUint) anInfo.iMediaAtt);
 		}
 
 	anInfo.iDriveAtt=Att();
@@ -923,12 +922,10 @@
 		aVolume.iUniqueID=m.iUniqueID;
 		aVolume.iSize=m.iSize;
 
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeL, EF32TraceUidFileSys, DriveNumber());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMEL, "drive %d", DriveNumber());
 		TRAP(r,m.VolumeL(aVolume))
-		TRACE7(UTF::EBorder, UTraceModuleFileSys::ECMountCBVolumeLRet, EF32TraceUidFileSys, 
-			r, aVolume.iUniqueID, I64LOW(aVolume.iSize), I64HIGH(aVolume.iSize),
-			I64LOW(aVolume.iFree), I64HIGH(aVolume.iFree), aVolume.iFileCacheFlags);
-
+		OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMELRETA, "r %d iSize %x:%x iFree %x:%x", (TUint) r, (TUint) I64HIGH(aVolume.iSize), (TUint) I64LOW(aVolume.iSize), (TUint) I64HIGH(aVolume.iFree), (TUint) I64LOW(aVolume.iFree));
+		OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBVOLUMELRETB, "iUniqueID %x iFileCacheFlags %x", (TUint) aVolume.iUniqueID, (TUint) aVolume.iFileCacheFlags);
 		}
 	return(r);
 	}
@@ -942,12 +939,11 @@
 	__CHECK_DRIVETHREAD(iDriveNumber);
 	aBuf=aName.AllocL();
 	TPtr volumeName=aBuf->Des();
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetVolumeL, EF32TraceUidFileSys, DriveNumber(), aName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETVOLUMEL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_EVOLUMENAME, "VolumeName %S", aName.Ptr(), aName.Length()<<1);
+	
 	CurrentMount().SetVolumeL(volumeName);
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetVolumeLRet, EF32TraceUidFileSys, KErrNone);
-
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETVOLUMELRET, "r %d", KErrNone);
 	delete &CurrentMount().VolumeName();
 	CurrentMount().SetVolumeName(aBuf);
 	}
@@ -982,14 +978,12 @@
 		return(KErrAccessDenied);
 	TParse newDirName;
 	newDirName.Set(aName,NULL,NULL);
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBMkDirL, EF32TraceUidFileSys, DriveNumber(), aName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRLYS_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	TRAP(r,CurrentMount().MkDirL(newDirName.FullName()))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBMkDirLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBMKDIRLRET, "r %d", r);
 	return(r);
 	}
-
 TInt TDrive::RmDir(const TDesC& aName)
 //
 // Remove a directory.
@@ -1006,11 +1000,10 @@
 		return(KErrPathNotFound);
 	if ((entry.iAtt&KEntryAttReadOnly) || IsWriteProtected())
 		return(KErrAccessDenied);
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBRmDirL, EF32TraceUidFileSys, DriveNumber(), aName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRLYS_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	TRAP(r,CurrentMount().RmDirL(aName))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRmDirLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRMDIRLRET, "r %d", r);
 	return(r);
 	}
 
@@ -1031,12 +1024,10 @@
 
     if (IsWriteProtected())
 		return(KErrAccessDenied);
-
-    //-- filesystems' CMountCB::DeleteL() implementations shall check the entry attributes themeselves. 
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteL, EF32TraceUidFileSys, DriveNumber(), aName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TRAP(r,CurrentMount().DeleteL(aName))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL1_RET, "r %d", r);
 	return r;
 	}
 
@@ -1107,11 +1098,11 @@
 	// remove from closed queue
 	LocateClosedFile(anOldName, EFalse);
 	LocateClosedFile(aNewName, EFalse);
-
-	TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBRenameL, EF32TraceUidFileSys, DriveNumber(), oldEntryName,newEntryName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMEL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELYS_EOLDNAME, "OldName %S", oldEntryName.Ptr(), oldEntryName.Length()<<1);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELYS_ENEWNAME, "NewName %S", newEntryName.Ptr(), newEntryName.Length()<<1);
 	TRAP(r,CurrentMount().RenameL(oldEntryName,newEntryName))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRenameLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRENAMELRET, "r %d", r);
 	return(r);
 	}
 
@@ -1145,11 +1136,11 @@
 	// remove from closed queue
 	LocateClosedFile(anOldName, EFalse);
 	LocateClosedFile(aNewName, EFalse);
-
-	TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBReplaceL, EF32TraceUidFileSys, DriveNumber(), anOldName, aNewName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL_EOLDNAME, "OldName %S", anOldName.Ptr(), anOldName.Length()<<1);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACEL_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 	TRAP(r,CurrentMount().ReplaceL(anOldName,aNewName))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReplaceLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREPLACELRET, "r %d", r);
 	return(r);
 	}
 
@@ -1179,14 +1170,10 @@
 //
 	{
 	FlushCachedFileInfoL();
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBEntryL, EF32TraceUidFileSys, DriveNumber(), aName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYL_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 	CurrentMount().EntryL(aName,anEntry);
-	TRACE5(UTF::EBorder, UTraceModuleFileSys::ECMountCBEntryLRet, EF32TraceUidFileSys, 
-		KErrNone, anEntry.iAtt, 
-		I64LOW(anEntry.iModified.Int64()), I64HIGH(anEntry.iModified.Int64()), 
-		anEntry.iSize);
-
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBENTRYLRET, "att %x modified %x:%x  size %x:%x", (TUint) anEntry.iAtt, (TUint) I64HIGH(anEntry.iModified.Int64()), (TUint) I64LOW(anEntry.iModified.Int64()), (TUint) I64HIGH(anEntry.FileSize()), (TUint) anEntry.FileSize());
 	}
 
 TInt TDrive::CheckAttributes(const TDesC& aName,TUint& aSetAttMask,TUint& aClearAttMask)
@@ -1224,12 +1211,10 @@
 	TTime nullTime(0);
 	if (aTime!=nullTime)
 		aSetAttMask|=KEntryAttModified;
-
-	TRACEMULT6(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetEntryL, EF32TraceUidFileSys, 
-		DriveNumber(), aName, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), aSetAttMask, aClearAttMask);
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYL, "drive %d aTime %x:%x  aSetAttMask %x aClearAttMask %x", (TUint) DriveNumber(), (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()), (TUint) aSetAttMask, (TUint) aClearAttMask);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYL_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 	TRAP(r,CurrentMount().SetEntryL(entryName,aTime,aSetAttMask,aClearAttMask))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBSetEntryLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSETENTRYLRET, "r %d", r);
 	return(r);
 	}
 
@@ -1365,12 +1350,11 @@
 		}
 	else
 		{
-		TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFileL, EF32TraceUidFileSys, &FSys(), DriveNumber());
-
+		OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFILEL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
         //-- construct CFileCB object, belonging to the corresponding mount
         pFile = aFileCB = CurrentMount().NewFileL();
 
-		TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFileLRet, EF32TraceUidFileSys, r, pFile);
+		OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFILELRET, "r %d CFileCB %x", (TUint) r, (TUint) pFile);
 		TDrive* createdDrive=!aRequest->SubstedDrive() ? this : aRequest->SubstedDrive();
 
     	HBufC* fileName = CreateFileNameL(aName);
@@ -1401,10 +1385,10 @@
 
 	if (openFile)
 		{
-		TRACEMULT5(UTF::EBorder, UTraceModuleFileSys::ECMountCBFileOpenL, EF32TraceUidFileSys, DriveNumber(), aName, aMode, (TUint) anOpen, (TUint) pFile);
+		OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENL, "drive %d aMode %x anOpen %d aFile %x", (TUint) DriveNumber(), (TUint) aMode, (TUint) anOpen, (TUint) pFile);
+		OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENL_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 		CurrentMount().FileOpenL(aName,aMode,anOpen,pFile);
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBFileOpenLRet, EF32TraceUidFileSys, KErrNone);
-
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFILEOPENLRET, "r %d", KErrNone);
 		// Delete on close may now be safely flagged if required.
 		// The file did not exist on the media prior to the
 		// CMountCB::FileOpenL() call for the case of a create.
@@ -1475,11 +1459,10 @@
 // Open a directory listing. Leave on error.
 //
 	{
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewDirL, EF32TraceUidFileSys, &FSys(), DriveNumber());
-
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWDIRL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
     CDirCB* pD = aDir = CurrentMount().NewDirL(); //-- construct CDirCB object, belonging to the corresponding mount
 
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewDirLRet, EF32TraceUidFileSys, KErrNone, pD);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWDIRLRET, "r %d CDirCB %x", (TUint) KErrNone, (TUint) pD);
 	pD->InitL(this);
 	// modify resource counter after initialisation to ensure correct cleanup
 	AddResource(CurrentMount());
@@ -1487,10 +1470,10 @@
 	pD->iUidType=aUidType;
 	Dirs->AddL(pD,ETrue);
 	aHandle=aSession->Handles().AddL(pD,ETrue);
-
-	TRACEMULT3(UTF::EBorder, UTraceModuleFileSys::ECMountCBDirOpenL, EF32TraceUidFileSys, DriveNumber(), aName, (TUint) pD);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENL, "drive %d aDir %x", (TUint) DriveNumber(), (TUint) pD);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENL_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	CurrentMount().DirOpenL(aName,pD);
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDirOpenLRet, EF32TraceUidFileSys, KErrNone);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDIROPENLRET, "r %d", KErrNone);
 	}
 
 TInt TDrive::DirOpen(CSessionFs* aSession,TInt& aHandle,const TDesC& aName,TUint anAtt,const TUidType& aUidType)
@@ -1549,13 +1532,11 @@
 	if (r!=KErrNone)
 		return(r);
 	TPtrC entryName(StripBackSlash(aName));
-
 	TRACETHREADID(aMessage);
-	TRACEMULT7(UTF::EBorder, UTraceModuleFileSys::ECMountCBReadFileSectionL, EF32TraceUidFileSys, 
-		DriveNumber(), aName, I64LOW(aPos), I64HIGH(aPos), (TUint) aTrg, aLength, I64LOW(threadId));
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONL, "drive %d clientThreadId %x aPos %x:%x aLength %d", (TUint) DriveNumber(), (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONL_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TRAP(r,ReadSectionL(entryName,aPos,aTrg,aLength,aMessage));
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReadFileSectionLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREADFILESECTIONLRET, "r %d", r);
 	if (r==KErrHidden)
 		r=KErrNotFound;	
 	else if (r==KErrPathHidden)
@@ -1587,9 +1568,9 @@
 		TRAP(r,FlushCachedFileInfoL());
 	if (r==KErrNone)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk1, EF32TraceUidFileSys, DriveNumber());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK1, "drive %d", DriveNumber());
 		r=CurrentMount().CheckDisk();
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk1Ret, EF32TraceUidFileSys, r);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK1RET, "r %d", r);
 		}
 	return(r);
 	}
@@ -1604,9 +1585,9 @@
 		TRAP(r,FlushCachedFileInfoL());
 	if (r==KErrNone)
 		{
-		TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2);
+		OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2);
 		r=CurrentMount().CheckDisk(aOperation, aParam1, aParam2);
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBCheckDisk2Ret, EF32TraceUidFileSys, r);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCHECKDISK2RET, "r %d", r);
 		}
 
 	return(r);
@@ -1628,10 +1609,9 @@
 	// Empty closed file queue
 	TClosedFileUtils::Remove(DriveNumber());
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive1, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE1, "drive %d", DriveNumber());
 	r = CurrentMount().ScanDrive();
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive1Ret, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE1RET, "r %d", r);
 	return r;
 	}
 
@@ -1655,10 +1635,9 @@
 	// Empty closed file queue
 	TClosedFileUtils::Remove(DriveNumber());
 
-	TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive2, EF32TraceUidFileSys, DriveNumber(), aOperation, aParam1, aParam2);
+	OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE2, "drive %d aOperation %d aParam1 %x aParam2 %x", (TUint) DriveNumber(), (TUint) aOperation, (TUint) aParam1, (TUint) aParam2);
 	r = CurrentMount().ScanDrive(aOperation, aParam1, aParam2);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBScanDrive2Ret, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBSCANDRIVE2RET, "r %d", r);
 	return r;
 	}
 
@@ -1672,11 +1651,11 @@
 	if (r!=KErrNone)
 		return(r);
 	TPtrC entryName(StripBackSlash(aName));
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetShortNameL, EF32TraceUidFileSys, DriveNumber(), entryName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ELONGNAME, "LongName %S", entryName.Ptr(), entryName.Length()<<1);
 	TRAP(r,CurrentMount().GetShortNameL(entryName,aShortName));
-	TRACERETMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetShortNameLRet, EF32TraceUidFileSys, r, aShortName);
-
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ESHORTNAME, "ShortName %S", aShortName.Ptr(), aShortName.Length()<<1);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETSHORTNAMEL_ECMOUNTCBGETSHORTNAMELRET, "r %d", r);
 	return(r);
 	}
 
@@ -1689,11 +1668,11 @@
 	if (r!=KErrNone)
 		return(r);
 	TPtrC entryName(StripBackSlash(aShortName));
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetLongNameL, EF32TraceUidFileSys, DriveNumber(), entryName);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL, "drive %d", DriveNumber());
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL_ESHORTNAME, "ShortName %S", entryName.Ptr(), entryName.Length()<<1);
 	TRAP(r,CurrentMount().GetLongNameL(entryName,aLongName));
-	TRACERETMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetLongNameLRet, EF32TraceUidFileSys, r, aLongName);
-
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMEL_ELONGNAME, "LongName %S", aLongName.Ptr(), aLongName.Length()<<1);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETLONGNAMELRET, "r %d", r);
 	return(r);
 	}
 
@@ -1857,22 +1836,18 @@
 		return(KErrNotReady);
 	TInt r;
 	CMountCB* pM=NULL;
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL1, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
 	TRAP(r,pM=FSys().NewMountL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL1RET, "r %d CMountCB %x", (TUint) r, (TUint) pM);
 	if(r!=KErrNone)
 		return(r);
 	pM->SetDrive(this);
-
-	TRACE4(UTF::EBorder, UTraceModuleFileSys::ECMountCBForceRemountDrive, EF32TraceUidFileSys, 
-		DriveNumber(), aMountInfo, aMountInfoMessageHandle, aFlags);
+	OstTraceExt4(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFORCEREMOUNTDRIVE, "drive %d aMountInfo %x aMountInfoMessageHandle %x aFlags %x", (TUint) DriveNumber(), (TUint) aMountInfo, (TUint) aMountInfoMessageHandle, (TUint) aFlags);
 	r=pM->ForceRemountDrive(aMountInfo,aMountInfoMessageHandle,aFlags);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBForceRemountDriveRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBFORCEREMOUNTDRIVERET, "r %d", r);
 	pM->Close();
 	return(r);
 	}
-
 TBool TDrive::IsExtensionMounted(CProxyDriveFactory* aFactory)
 //
 // return ETrue if extension mounted on the drive
@@ -1885,7 +1860,6 @@
 		}
 	return(EFalse);
 	}
-
 TInt TDrive::MountExtension(CProxyDriveFactory* aFactory,TBool aIsPrimary)
 //
 // Mount an extension
@@ -1909,7 +1883,7 @@
 	if(iFSys==NULL)
 		return(KErrNotReady);
 	TBool extSupported = iFSys->IsExtensionSupported();
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemIsExtensionSupported, EF32TraceUidFileSys, extSupported);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMISEXTENSIONSUPPORTED1, "%x r %d", (TUint) iFSys, (TUint) extSupported);
 	if(!extSupported)
 		return(KErrNotSupported);
 	if(IsExtensionMounted(aFactory))
@@ -1997,17 +1971,16 @@
 		return(KErrNotReady);
 	TInt r;
 	CMountCB* pM=NULL;
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL2, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
 	TRAP(r,pM=FSys().NewMountL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL2RET, "r %d CMountCB %x", (TUint) r, (TUint) pM);
 	if(r!=KErrNone)
 		return(r);
 	pM->SetDrive(this);
 
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECMountCBLock, EF32TraceUidFileSys, DriveNumber(), aStore);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBLOCK, "drive %d aStore %d", (TUint) DriveNumber(), (TUint) aStore);
 	r=pM->Lock(aOld,aNew,aStore);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBLockRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBLOCKRET, "r %d", r);
 	pM->Close();
 	return(r);
 	}
@@ -2023,9 +1996,9 @@
 		return(KErrNotReady);
 	TInt r;
 	CMountCB* pM=NULL;
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL3, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
 	TRAP(r,pM=FSys().NewMountL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL3RET, "r %d CMountCB %x", (TUint) r, (TUint) pM);
 	if(r!=KErrNone)
 		return(r);
 
@@ -2034,10 +2007,9 @@
 
 	pM->SetDrive(this);
 
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECMountCBUnlock, EF32TraceUidFileSys, DriveNumber(), aStore);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBUNLOCK, "drive %d aStore %d", (TUint) DriveNumber(), (TUint) aStore);
 	r=pM->Unlock(aPassword,aStore);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBUnlockRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBUNLOCKRET, "r %d", r);
 	pM->Close();
 	return(r);
 	}
@@ -2053,9 +2025,9 @@
 		return(KErrNotReady);
 	TInt r;
 	CMountCB* pM=NULL;
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL4, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
 	TRAP(r,pM=FSys().NewMountL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL4RET, "r %d CMountCB %x", (TUint) r, (TUint) pM);
 	if(r!=KErrNone)
 		return(r);
 	pM->SetDrive(this);
@@ -2069,10 +2041,9 @@
 	if (info.iMediaAtt & KMediaAttLocked)
 		UnlockDevice(aPassword, EFalse);
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBClearPassword, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCLEARPASSWORD, "drive %d", DriveNumber());
 	r=pM->ClearPassword(aPassword);
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBClearPasswordRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCLEARPASSWORDRET, "r %d", r);
 	pM->Close();
 	return(r);
 	}
@@ -2088,17 +2059,16 @@
 		return(KErrNotReady);
 	TInt r;
 	CMountCB* pM=NULL;
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountL, EF32TraceUidFileSys, &FSys(), DriveNumber());
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL5, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber());
 	TRAP(r,pM=FSys().NewMountL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewMountLRet, EF32TraceUidFileSys, r, pM);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWMOUNTL5RET, "r %d CMountCB %x", (TUint) r, (TUint) pM);
 	if(r!=KErrNone)
 		return(r);
 	pM->SetDrive(this);
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBErasePassword, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBERASEPASSWORD, "drive %d", DriveNumber());
 	r=pM->ErasePassword();
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBErasePasswordRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBERASEPASSWORDRET, "r %d", r);
 	pM->Close();
 	return(r);
 	}
@@ -2237,10 +2207,9 @@
 	if (!iCurrentMount)
 		return;
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDismounted, EF32TraceUidFileSys, DriveNumber());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDISMOUNTED, "drive %d", DriveNumber());
     iCurrentMount->Dismounted();
-	TRACE0(UTF::EBorder, UTraceModuleFileSys::ECMountCBDismountedRet, EF32TraceUidFileSys);
-
+	OstTrace0(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDISMOUNTEDRET, "");
 	iCurrentMount->Close();
 	iCurrentMount=NULL;
     }
@@ -2337,7 +2306,6 @@
 	}
 
 
-
 TInt TDrive::ControlIO(const RMessagePtr2& aMessage,TInt aCommand,TAny* aParam1,TAny* aParam2)
 //
 // General purpose test interface - .FSY specific.
@@ -2347,10 +2315,9 @@
 	if(r==KErrNone || (r==KErrInUse && iReason==KErrNone))
 		{
 		TRACETHREADID(aMessage);
-		TRACE5(UTF::EBorder, UTraceModuleFileSys::ECMountCBControlIO, EF32TraceUidFileSys, 
-			DriveNumber(), aCommand, aParam1, aParam2, I64LOW(threadId));
+		OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCONTROLIO, "drive %d aCommand %d aParam1 %x aParam2 %x clientThreadId %x", (TUint) DriveNumber(), (TUint) aCommand, (TUint) aParam1, (TUint) aParam2, (TUint) threadId);
 		r=CurrentMount().ControlIO(aMessage,aCommand,aParam1,aParam2);
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBControlIORet, EF32TraceUidFileSys, r);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBCONTROLIORET, "r %d", r);
 		}
 	return(r);
 	}
@@ -2567,11 +2534,10 @@
     {
     ASSERT(!(apLDFormatInfo && apVolFormatParam));  //-- these parameters are mutually exclusive
     
-    TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFormatL, EF32TraceUidFileSys, &FSys(), DriveNumber()); 
-
+    OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFORMATL, "this %x drive %d", (TUint) &FSys(), (TUint) DriveNumber()); 
     CFormatCB* pFormat = CurrentMount().NewFormatL(); 
 
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewFormatLRet, EF32TraceUidFileSys, KErrNone, pFormat); 
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWFORMATLRET, "r %d CFormatCB %x", (TUint) KErrNone, (TUint) pFormat); 
 	
     Formats->AddL(pFormat, ETrue); 
 	pFormat->InitL(this, aFmtMode); 
--- a/userlibandfileserver/fileserver/sfile/sf_ext.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_ext.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -15,9 +15,10 @@
 // 
 //
 
-
 #include "sf_std.h"
-
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_extTraces.h"
+#endif
 typedef CProxyDriveFactory*(*TExtensionNew)();
 typedef CExtProxyDriveFactory*(*TProxyDriveNew)();
 
@@ -297,12 +298,10 @@
 */
 CLocalProxyDrive* CLocalProxyDrive::New(CMountCB* aMount,TBusLocalDrive& aLocDrv)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveNew, EF32TraceUidProxyDrive, 
-		aMount, aMount->DriveNumber());
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVENEW, "aMount %x drive %d", (TUint) aMount, (TUint) aMount->DriveNumber());
 	CLocalProxyDrive* proxyDrive = new CLocalProxyDrive(aMount,aLocDrv);
 	
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveNewRet, EF32TraceUidProxyDrive, proxyDrive);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVENEWRET, "proxyDrive %x", proxyDrive);
 	return proxyDrive;
 	}
 
@@ -328,9 +327,8 @@
 */
 TInt CLocalProxyDrive::Initialise()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveInitialise, EF32TraceUidProxyDrive, this);
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveInitialiseRet, EF32TraceUidProxyDrive, KErrNone);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEINITIALISE, "this %x", this);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEINITIALISERET, "r %d", KErrNone);
 	return(KErrNone);
 	}
 
@@ -344,9 +342,8 @@
 */
 TInt CLocalProxyDrive::Dismounted()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveDismounted, EF32TraceUidProxyDrive, this);
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveDismountedRet, EF32TraceUidProxyDrive, KErrNone);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEDISMOUNTED, "this %x", this);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEDISMOUNTEDRET, "r %d", KErrNone);
 	return(KErrNone);
 	}
 
@@ -360,11 +357,9 @@
 */
 TInt CLocalProxyDrive::Enlarge(TInt aLength)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveEnlarge, EF32TraceUidProxyDrive, this, aLength);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEENLARGE, "this %x aLength %d", (TUint) this, (TUint) aLength);
 	TInt r = iLocDrv.Enlarge(aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveEnlargeRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEENLARGERET, "r %d", r);
 	return r;
 	}
 
@@ -382,11 +377,9 @@
 */
 TInt CLocalProxyDrive::ReduceSize(TInt aPos, TInt aLength)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveReduceSize, EF32TraceUidProxyDrive, this, aPos, aLength);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREDUCESIZE, "this %x aPos %x aLength %d", (TUint) this, (TUint) aPos, (TUint) aLength);
 	TInt r = iLocDrv.ReduceSize(aPos,aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveReduceSizeRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREDUCESIZERET, "r %d", r);
 	return r;
 	}
 
@@ -406,12 +399,9 @@
 TInt CLocalProxyDrive::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt aOffset, TInt aFlags)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE8(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead1, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aTrg, threadId, aOffset, aFlags);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD1, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iLocDrv.Read(aPos,aLength,aTrg,aThreadHandle,aOffset,aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead1Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD1RET, "r %d", r);
 	return r;
 	}
 
@@ -429,12 +419,9 @@
 TInt CLocalProxyDrive::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt anOffset)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE7(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aTrg, threadId, anOffset);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD2, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iLocDrv.Read(aPos,aLength,aTrg,aThreadHandle,anOffset);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD2RET, "r %d", r);
 	return r;
 	}
 
@@ -449,12 +436,9 @@
 */
 TInt CLocalProxyDrive::Read(TInt64 aPos,TInt aLength,TDes8& aTrg)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead3, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, &aTrg);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD3, "this %x aPos %x:%x aLength %d aTrg %x", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength, (TUint) &aTrg);
 	TInt r = iLocDrv.Read(aPos,aLength,aTrg);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveRead3Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEREAD3RET, "r %d", r);
 	return r;
 	}
 
@@ -474,13 +458,9 @@
 TInt CLocalProxyDrive::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt aOffset,TInt aFlags)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE8(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite1, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aSrc, threadId, aOffset, aFlags);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE1, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iLocDrv.Write(aPos,aLength,aSrc,aThreadHandle,aOffset,aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite1Ret, EF32TraceUidProxyDrive, r);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE1RET, "r %d", r);
 	return r;
 	}
 
@@ -499,12 +479,9 @@
 TInt CLocalProxyDrive::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt anOffset)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE7(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aSrc, threadId, anOffset);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE2, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iLocDrv.Write(aPos,aLength,aSrc,aThreadHandle,anOffset);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE2RET, "r %d", r);
 	return r;
 	}
 
@@ -519,12 +496,9 @@
 */
 TInt CLocalProxyDrive::Write(TInt64 aPos,const TDesC8& aSrc)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite3, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aSrc.Length(), &aSrc);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE3, "this %x aPos %x:%x aLength %d aSrc %x", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aSrc.Length(), (TUint) &aSrc);
 	TInt r = iLocDrv.Write(aPos,aSrc);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveWrite3Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEWRITE3RET, "r %d", r);
 	return r;
 	}
 	
@@ -538,11 +512,9 @@
 */
 TInt CLocalProxyDrive::Caps(TDes8& anInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveCaps, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECAPS, "this %x", this);
 	TInt r = iLocDrv.Caps(anInfo);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveCapsRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECAPSRET, "r %d", r);
 	return r;
 	}
 
@@ -556,12 +528,9 @@
 */
 TInt CLocalProxyDrive::Format(TFormatInfo& anInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveFormat1, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT1, "this %x", this);
 	TInt r = iLocDrv.Format(anInfo);
-
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveFormat1Ret, EF32TraceUidProxyDrive, 
-		r, anInfo.iFormatIsCurrent, anInfo.i512ByteSectorsFormatted, anInfo.iMaxBytesPerFormat);
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT1RET, "r %d iFormatIsCurrent %d i512ByteSectorsFormatted %d iMaxBytesPerFormat %d", (TUint) r, (TUint) anInfo.iFormatIsCurrent, (TUint) anInfo.i512ByteSectorsFormatted, (TUint) anInfo.iMaxBytesPerFormat);
 	return r;
 	}
 
@@ -576,12 +545,9 @@
 */
 TInt CLocalProxyDrive::Format(TInt64 aPos,TInt aLength)
 	{
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveFormat2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT2, "this %x aPos %x:%x aLength %d", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	TInt r = iLocDrv.Format(aPos,aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveFormat2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT2RET, "r %d", r);
 	return r;
 	}
 
@@ -596,11 +562,9 @@
 */
 TInt CLocalProxyDrive::SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveSetMountInfo, EF32TraceUidProxyDrive, this, aMountInfo, aMountInfoThreadHandle);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVESETMOUNTINFO, "this %x aMountInfo %x aMountInfoThreadHandle %d", (TUint) this, (TUint) aMountInfo, (TUint) aMountInfoThreadHandle);
 	TInt r = iLocDrv.SetMountInfo(aMountInfo,aMountInfoThreadHandle);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveSetMountInfoRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVESETMOUNTINFORET, "r %d", r);
 	return r;
 	}
 
@@ -614,11 +578,9 @@
 */
 TInt CLocalProxyDrive::ForceRemount(TUint aFlags)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveForceRemount, EF32TraceUidProxyDrive, this, aFlags);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORCEREMOUNT, "this %x aFlags %x", (TUint) this, (TUint) aFlags);
 	TInt r = iLocDrv.ForceRemount(aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveForceRemountRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEFORCEREMOUNTRET, "r %d", r);
 	return r;
 	}
 
@@ -635,11 +597,9 @@
 */
 TInt CLocalProxyDrive::ControlIO(const RMessagePtr2& /*aMessage*/,TInt aCommand,TAny* aParam1,TAny* aParam2)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveControlIO, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECONTROLIO, "this %x", this);
 	TInt r = iLocDrv.ControlIO(aCommand,aParam1,aParam2);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveControlIORet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECONTROLIORET, "r %d", r);
 	return r;
 	}
 	
@@ -654,11 +614,9 @@
 */
 TInt CLocalProxyDrive::Unlock(TMediaPassword &aPassword, TBool aStorePassword)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveUnlock, EF32TraceUidProxyDrive, this, aStorePassword);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEUNLOCK, "this %x aPassword %d", (TUint) this, (TUint) aStorePassword);
 	TInt r = iLocDrv.Unlock(aPassword,aStorePassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveUnlockRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEUNLOCKRET, "r %d", r);
 	return r;
 	}
 
@@ -674,11 +632,9 @@
 */
 TInt CLocalProxyDrive::Lock(TMediaPassword &aOldPassword, TMediaPassword &aNewPassword, TBool aStorePassword)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveLock, EF32TraceUidProxyDrive, this, aStorePassword);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVELOCK, "this %x aPassword %d", (TUint) this, (TUint) aStorePassword);
 	TInt r = iLocDrv.SetPassword(aOldPassword,aNewPassword,aStorePassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveLockRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVELOCKRET, "r %d", r);
 	return r;
 	}
 
@@ -692,11 +648,9 @@
 */
 TInt CLocalProxyDrive::Clear(TMediaPassword &aPassword)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveClear, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECLEAR, "this %x", this);
 	TInt r = iLocDrv.Clear(aPassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveClearRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVECLEARRET, "r %d", r);
 	return r;
 	}
 
@@ -707,11 +661,9 @@
 */
 TInt CLocalProxyDrive::ErasePassword()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveErasePassword, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEERASEPASSWORD, "this %x", this);
 	TInt r = iLocDrv.ErasePassword();
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveErasePasswordRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEERASEPASSWORDRET, "r %d", r);
 	return r;
 	}
 
@@ -721,17 +673,13 @@
 
 @param aPos    The position of the data which is being deleted.
 @param aLength The length of the data which is being deleted.
-
 @return System wide error code.
 */
 TInt CLocalProxyDrive::DeleteNotify(TInt64 aPos, TInt aLength)
 	{
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveDeleteNotify, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEDELETENOTIFY, "this %x aPos %x:%x aLength %d", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	TInt r = iLocDrv.DeleteNotify(aPos, aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveDeleteNotifyRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEDELETENOTIFYRET, "r %d", r);
 	return r;
 	}
 
@@ -745,20 +693,16 @@
 */	
 TInt CLocalProxyDrive::GetLastErrorInfo(TDes8 &aErrorInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveGetLastErrorInfo, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEGETLASTERRORINFO, "this %x", this);
 	TInt r = iLocDrv.GetLastErrorInfo(aErrorInfo);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveGetLastErrorInfoRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEGETLASTERRORINFORET, "r %d", r);
 	return r;
 	}
 
 
 TInt CLocalProxyDrive::GetInterface(TInt aInterfaceId,TAny*& aInterface,TAny* aInput)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveGetInterface, EF32TraceUidProxyDrive, 
-		this, aInterfaceId, aInput);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEGETINTERFACE, "this %x aInterfaceId %d aInput %x", (TUint) this, (TUint) aInterfaceId, (TUint) aInput);
 	TInt r;
 	switch(aInterfaceId)
 		{
@@ -776,8 +720,7 @@
 		default:
 			r= CProxyDrive::GetInterface(aInterfaceId,aInterface,aInput);
 		}
-
-	TRACERET2(UTF::EBorder, UTraceModuleProxyDrive::ECLocalProxyDriveGetInterfaceRet, EF32TraceUidProxyDrive, r, aInterface);
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECLOCALPROXYDRIVEGETINTERFACERET, "r %d aInterface %x", (TUint) r, (TUint) aInterface);
 	return r;
 	}
 
@@ -814,11 +757,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Initialise()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveInitialise, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEINITIALISE, "this %x", this);
 	TInt r = iProxy->Initialise();
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveInitialiseRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEINITIALISERET, "r %d", r);
 	return r;
 	}
 
@@ -830,11 +771,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Dismounted()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveDismounted, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEDISMOUNTED, "this %x", this);
 	TInt r = iProxy->Dismounted();
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveDismountedRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEDISMOUNTEDRET, "r %d", r);
 	return r;
 	}
 
@@ -847,11 +786,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Enlarge(TInt aLength)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveEnlarge, EF32TraceUidProxyDrive, this, aLength);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEENLARGE, "this %x aLength %d", (TUint) this, (TUint) aLength);
 	TInt r = iProxy->Enlarge(aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveEnlargeRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEENLARGERET, "r %d", r);
 	return r;
 	}
 
@@ -869,11 +806,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::ReduceSize(TInt aPos, TInt aLength)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveReduceSize, EF32TraceUidProxyDrive, this, aPos, aLength);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREDUCESIZE, "this %x aPos %x aLength %d", (TUint) this, (TUint) aPos, (TUint) aLength);
 	TInt r = iProxy->ReduceSize(aPos,aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveReduceSizeRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREDUCESIZERET, "r %d", r);
 	return r;
 	}
 
@@ -893,13 +828,9 @@
 EXPORT_C TInt CBaseExtProxyDrive::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt aOffset,TInt aFlags)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE8(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead1, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aTrg, threadId, aOffset, aFlags);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD1, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iProxy->Read(aPos,aLength,aTrg,aThreadHandle,aOffset,aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead1Ret, EF32TraceUidProxyDrive, r);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD1RET, "r %d", r);
 	return r;
 	}
 
@@ -918,12 +849,9 @@
 EXPORT_C TInt CBaseExtProxyDrive::Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aThreadHandle,TInt anOffset)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE7(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aTrg, threadId, anOffset);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD2, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iProxy->Read(aPos,aLength,aTrg,aThreadHandle,anOffset);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD2RET, "r %d", r);
 	return r;
 	}
 
@@ -939,12 +867,10 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Read(TInt64 aPos,TInt aLength,TDes8& aTrg)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead3, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, &aTrg);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD3, "this %x aPos %x:%x aLength %d aTrg %x", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength, (TUint) &aTrg);
+		
 	TInt r = iProxy->Read(aPos,aLength,aTrg);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveRead3Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD3RET, "r %d", r);
 	return r;
 	}
 
@@ -964,12 +890,9 @@
 EXPORT_C TInt CBaseExtProxyDrive::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt aOffset,TInt aFlags)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE8(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite1, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aSrc, threadId, aOffset, aFlags);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE1, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iProxy->Write(aPos,aLength,aSrc,aThreadHandle,aOffset,aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite1Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE1RET, "r %d", r);
 	return r;
 	}
 
@@ -988,12 +911,9 @@
 EXPORT_C TInt CBaseExtProxyDrive::Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aThreadHandle,TInt anOffset)
 	{
 	TRACETHREADIDH(aThreadHandle);
-	TRACE7(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aSrc, threadId, anOffset);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE2, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
 	TInt r = iProxy->Write(aPos,aLength,aSrc,aThreadHandle,anOffset);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE2RET, "r %d", r);
 	return r;
 	}
 
@@ -1008,12 +928,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Write(TInt64 aPos,const TDesC8& aSrc)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite3, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aSrc.Length(), &aSrc);
-
+	OstTraceExt5(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE3, "this %x aPos %x:%x aLength %d aSrc %x", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aSrc.Length(), (TUint) &aSrc);
 	TInt r = iProxy->Write(aPos,aSrc);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveWrite3Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE3RET, "r %d", r);
 	return r;
 	}
 
@@ -1027,11 +944,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Caps(TDes8& anInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveCaps, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECAPS, "this %x", this);
 	TInt r = iProxy->Caps(anInfo);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveCapsRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECAPSRET, "r %d", r);
 	return r;
 	}
 
@@ -1045,12 +960,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Format(TFormatInfo& anInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveFormat1, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT1, "this %x", this);
 	TInt r = iProxy->Format(anInfo);
-
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveFormat1Ret, EF32TraceUidProxyDrive, 
-		r, anInfo.iFormatIsCurrent, anInfo.i512ByteSectorsFormatted, anInfo.iMaxBytesPerFormat);
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT1RET, "r %d iFormatIsCurrent %d i512ByteSectorsFormatted %d iMaxBytesPerFormat %d", (TUint) r, (TUint) anInfo.iFormatIsCurrent, (TUint) anInfo.i512ByteSectorsFormatted, (TUint) anInfo.iMaxBytesPerFormat);
 	return r;
 	}
 
@@ -1065,12 +977,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Format(TInt64 aPos,TInt aLength)
 	{
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveFormat2, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT2, "this %x aPos %x:%x aLength %d", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	TInt r = iProxy->Format(aPos,aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveFormat2Ret, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT2RET, "r %d", r);
 	return r;
 	}
 
@@ -1085,11 +994,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::SetMountInfo(const TDesC8* aMountInfo,TInt aMountInfoThreadHandle)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveSetMountInfo, EF32TraceUidProxyDrive, this, aMountInfo, aMountInfoThreadHandle);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVESETMOUNTINFO, "this %x aMountInfo %x aMountInfoThreadHandle %x", (TUint) this, (TUint) aMountInfo, (TUint) aMountInfoThreadHandle);
 	TInt r = iProxy->SetMountInfo(aMountInfo,aMountInfoThreadHandle);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveSetMountInfoRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVESETMOUNTINFORET, "r %d", r);
 	return r;
 	}
 
@@ -1103,11 +1010,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::ForceRemount(TUint aFlags)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveForceRemount, EF32TraceUidProxyDrive, this, aFlags);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORCEREMOUNT, "this %x aFlags%x", (TUint) this, (TUint) aFlags);
 	TInt r = iProxy->ForceRemount(aFlags);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveForceRemountRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEFORCEREMOUNTRET, "r %d", r);
 	return r;
 	}
 
@@ -1122,11 +1027,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Unlock(TMediaPassword &aPassword, TBool aStorePassword)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveUnlock, EF32TraceUidProxyDrive, this, aStorePassword);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEUNLOCK, "this %x aPassword %d", (TUint) this, (TUint) aStorePassword);
 	TInt r = iProxy->Unlock(aPassword,aStorePassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveUnlockRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEUNLOCKRET, "r %d", r);
 	return r;
 	}
 
@@ -1142,11 +1045,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Lock(TMediaPassword &aOldPassword, TMediaPassword &aNewPassword, TBool aStorePassword)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveLock, EF32TraceUidProxyDrive, this, aStorePassword);
-
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVELOCK, "this %x aPassword %d", (TUint) this, (TUint) aStorePassword);
 	TInt r = iProxy->Lock(aOldPassword,aNewPassword,aStorePassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveLockRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVELOCKRET, "r %d", r);
 	return r;
 	}
 
@@ -1160,11 +1061,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::Clear(TMediaPassword &aPassword)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveClear, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECLEAR, "this %x", this);
 	TInt r = iProxy->Clear(aPassword);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveClearRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECLEARRET, "r %d", r);
 	return r;
 	}
 
@@ -1175,11 +1074,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::ErasePassword()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveErasePassword, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEERASEPASSWORD, "this %x", this);
 	TInt r = iProxy->ErasePassword();
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveErasePasswordRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEERASEPASSWORDRET, "r %d", r);
 	return r;
 	}
 
@@ -1196,11 +1093,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::ControlIO(const RMessagePtr2& aMessage,TInt aCommand,TAny* aParam1,TAny* aParam2)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveControlIO, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECONTROLIO, "this %x", this);
 	TInt r = iProxy->ControlIO(aMessage,aCommand,aParam1,aParam2);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveControlIORet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVECONTROLIORET, "r %d", r);
 	return r;
 	}
 
@@ -1216,9 +1111,8 @@
 */	
 EXPORT_C TInt CBaseExtProxyDrive::GetInterface(TInt aInterfaceId,TAny*& aInterface,TAny* aInput)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveGetInterface, EF32TraceUidProxyDrive, 
-		this, aInterfaceId, aInput);
-
+	OstTraceExt3(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEGETINTERFACE, "this %x aInterfaceId %d aInput %x", (TUint) this, (TUint) aInterfaceId, (TUint) aInput);
+		
 	TInt r;
 	if (aInterfaceId==EGetLocalDrive)
 		{
@@ -1226,8 +1120,7 @@
 		}
 	else	
 		r = CProxyDrive::GetInterface(aInterfaceId,aInterface,aInput);
-
-	TRACERET2(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveGetInterfaceRet, EF32TraceUidProxyDrive, r, aInterface);
+	OstTraceExt2(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEGETINTERFACERET, "r %d aInterface %x", (TUint) r, (TUint) aInterface);
 	return r;
 	}	
 
@@ -1241,11 +1134,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::GetLastErrorInfo(TDes8 &aErrorInfo)
 	{
-	TRACE1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveGetLastErrorInfo, EF32TraceUidProxyDrive, this);
-
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEGETLASTERRORINFO, "this %x", this);
 	TInt r = iProxy->GetLastErrorInfo(aErrorInfo);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveGetLastErrorInfoRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEGETLASTERRORINFORET, "r %d", r);
 	return r;
 	}
 
@@ -1261,12 +1152,9 @@
 */
 EXPORT_C TInt CBaseExtProxyDrive::DeleteNotify(TInt64 aPos, TInt aLength)
     {
-	TRACE4(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveDeleteNotify, EF32TraceUidProxyDrive, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt4(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEDELETENOTIFY, "this %x aPos %x:%x aLength %d", (TUint) this, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
     TInt r = iProxy->DeleteNotify(aPos, aLength);
-
-	TRACERET1(UTF::EBorder, UTraceModuleProxyDrive::ECBaseExtProxyDriveDeleteNotifyRet, EF32TraceUidProxyDrive, r);
+	OstTrace1(TRACE_DRIVE, PROXYDRIVE_ECBASEEXTPROXYDRIVEDELETENOTIFYRET, "r %d", r);
 	return r;
     }
 
@@ -1339,7 +1227,7 @@
 		return(aConcreteDrive);
 
 	TBool extSupported = drive.FSys().IsExtensionSupported();
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemIsExtensionSupported, EF32TraceUidProxyDrive, extSupported);
+	OstTraceExt2(TRACE_DRIVE, FSYS_ECFILESYSTEMISEXTENSIONSUPPORTED2, "%x r %d", (TUint) &drive.FSys(), (TUint) extSupported);
 	if(!extSupported)
 		{
 		delete(aConcreteDrive);
--- a/userlibandfileserver/fileserver/sfile/sf_file.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_file.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -16,7 +16,9 @@
 #include "sf_std.h"
 #include "sf_file_cache.h"
 #include "cl_std.h"
-
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_fileTraces.h"
+#endif
 #if defined(_DEBUG) || defined(_DEBUG_RELEASE)
 
 TInt OutputTraceInfo(CFsRequest* aRequest,TCorruptNameRec* aNameRec)
@@ -241,7 +243,7 @@
     TUint32 mode=aRequest->Message().Int1();
 	if (anOpen==EFileCreate || anOpen==EFileReplace)
 		{
-		r = CheckDiskSpace(0, aRequest);
+		r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
 		if(r != KErrNone)
             return r;
         
@@ -601,7 +603,7 @@
 	{
 	__PRINT(_L("TFsFileTemp::DoRequestL(CFsRequest* aRequest)"));
     
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 	
@@ -1494,11 +1496,9 @@
 	r=share->CheckMount();
 	if (r!=KErrNone)
 		return(r);
-
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileCBFlushDataL, EF32TraceUidFileSys, &share->File());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBFLUSHDATAL1, "this %x", &share->File());
 	TRAP(r,share->File().FlushDataL());
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileCBFlushDataLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBFLUSHDATAL1RET, "r %d", r);
 	return(r);
 	}
 
@@ -1652,7 +1652,7 @@
 	{
 	__PRINT(_L("TFsFileSetAtt::DoRequestL(CSessionFs* aSession)"));
     
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -1667,11 +1667,9 @@
     TUint setAttMask=(TUint)(aRequest->Message().Int0());
 	TUint clearAttMask=(TUint)aRequest->Message().Int1();
 	ValidateAtts(share->File().Att(),setAttMask,clearAttMask);
-
-	TRACE5(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryL, EF32TraceUidFileSys, &share->File(), 0, 0, setAttMask,clearAttMask);
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL1, "this %x aSetAttMask %x aClearAttMask %x", (TUint) &share->File(), (TUint) setAttMask, (TUint) clearAttMask);
 	TRAP(r,share->File().SetEntryL(TTime(0),setAttMask,clearAttMask))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL1RET, "r %d", r);
 	return(r);
 	}
 
@@ -1717,7 +1715,7 @@
 	{
 	__PRINT(_L("TFsFileSetModified::DoRequestL(CFsRequest* aRequest)"));
     
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -1733,11 +1731,9 @@
 	TTime time;
 	TPtr8 t((TUint8*)&time,sizeof(TTime));
 	aRequest->ReadL(KMsgPtr0,t);
-
-	TRACE5(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryL, EF32TraceUidFileSys, &share->File(), 0, 0, KEntryAttModified,0);
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL2, "this %x aSetAttMask %x aClearAttMask %x", (TUint) &share->File(), (TUint) KEntryAttModified, (TUint) 0);
 	TRAP(r,share->File().SetEntryL(time,KEntryAttModified,0))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL2RET, "r %d", r);
 	return(r);
 	}
 
@@ -1757,7 +1753,7 @@
 	{
 	__PRINT(_L("TFsFileSet::DoRequestL(CFsRequest* aRequest)"));
 
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -1782,10 +1778,9 @@
 	TUint clearAttMask=(TUint)aRequest->Message().Int2();
 	ValidateAtts(share->File().Att(),setAttMask,clearAttMask);//	Validate attributes
 
-	TRACE5(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryL, EF32TraceUidFileSys, &share->File(), 0, 0, setAttMask,clearAttMask);
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL3, "this %x aSetAttMask %x aClearAttMask %x", (TUint) &share->File(), (TUint) setAttMask, (TUint) clearAttMask);
 	TRAP(r,share->File().SetEntryL(time,setAttMask,clearAttMask))
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetEntryLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBSETENTRYL3RET, "r %d", r);
 	return(r);
 	}
 
@@ -1869,7 +1864,7 @@
 	{
 	__PRINT(_L("TFsFileRename::DoRequestL(CFsRequest* aRequest)"));
 
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -1887,12 +1882,10 @@
 
 	TPtrC filePath = aRequest->Dest().FullName().Mid(2);
 	CFileCB& file = share->File();
-
-	TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECFileCBRenameL, EF32TraceUidFileSys, 
-		(TUint) &file, filePath);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBRENAMEL, "this %x", (TUint) &file);
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECFILECBRENAMELYS_EFILENAME, "FileName %S", filePath.Ptr(), filePath.Length()<<1);
 	TRAP(r,file.RenameL(filePath));
-	TRACERETMULT1(UTF::EBorder, UTraceModuleFileSys::ECFileCBRenameLRet, EF32TraceUidFileSys, r);
-
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBRENAMELRET, "r %d", r);
 	// Re-write the file's folded name & re-calculate the hash
 	if (r == KErrNone)
 		{
@@ -2337,10 +2330,11 @@
 		FileCache()->Close();
 	if (iBody && iBody->iDeleteOnClose)
 		{
-		TRACEMULT2(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteL, EF32TraceUidFileSys, DriveNumber(), FileName());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL2, "drive %d", DriveNumber());
+		OstTraceData(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL2_EFILENAME, "FileName %S", FileName().Ptr(), FileName().Length()<<1);
 		TInt r;
 		TRAP(r, iMount->DeleteL(FileName()));
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBDeleteLRet, EF32TraceUidFileSys, r);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBDELETEL2RET, "r %d", r);
 		}
 
 	if(iMount)
@@ -2958,32 +2952,25 @@
 void CFileCB::ReadL(TInt64 aPos,TInt& aLength,TDes8* aDes,const RMessagePtr2& aMessage, TInt aOffset)
 	{
 	TRACETHREADID(aMessage);
-	TRACE7(UTF::EBorder, UTraceModuleFileSys::ECFileCBReadL, EF32TraceUidFileSys, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aDes, threadId, aOffset);
-
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECFILECBREADLA, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	iBody->iExtendedFileInterface->ReadL(aPos,aLength,aDes,aMessage,aOffset);
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileCBReadLRet, EF32TraceUidFileSys, KErrNone);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBREADLRET, "r %d", KErrNone);
 	}
 
 void CFileCB::WriteL(TInt64 aPos,TInt& aLength,const TDesC8* aDes,const RMessagePtr2& aMessage, TInt aOffset)
 	{
 	TRACETHREADID(aMessage);
-	TRACE7(UTF::EBorder, UTraceModuleFileSys::ECFileCBWriteL, EF32TraceUidFileSys, 
-		this, I64LOW(aPos), I64HIGH(aPos), aLength, aDes, threadId, aOffset);
-
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECFILECBWRITEL, "this %x clientThreadId %x aPos %x:%x aLength %d", (TUint) this, (TUint) threadId, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	iBody->iExtendedFileInterface->WriteL(aPos,aLength,aDes,aMessage,aOffset);
-
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileCBWriteLRet, EF32TraceUidFileSys, KErrNone);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBWRITELRET, "r %d", KErrNone);
 	}
 
 void CFileCB::SetSizeL(TInt64 aSize)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetSizeL, EF32TraceUidFileSys, this, I64LOW(aSize), I64HIGH(aSize));
-
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECFILECBSETSIZEL, "this %x aSize %x:%x", (TUint) this, (TUint) I64HIGH(aSize), (TUint) I64LOW(aSize));
 	iBody->iExtendedFileInterface->SetSizeL(aSize);
-
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileCBSetSizeLRet, EF32TraceUidFileSys, KErrNone);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBSETSIZELRET, "r %d", KErrNone);
 	}
 
 TBool CFileCB::ExtendedFileInterfaceSupported()
@@ -3029,12 +3016,9 @@
 
 TInt CFileCB::GetInterfaceTraced(TInt aInterfaceId, TAny*& aInterface, TAny* aInput)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleFileSys::ECFileCBGetInterface, EF32TraceUidFileSys, aInterfaceId, aInput);
-
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILECBGETINTERFACE, "aInterfaceId %d aInput %x", (TUint) aInterfaceId, (TUint) aInput);
 	TInt r = GetInterface(aInterfaceId, aInterface, aInput);
-
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFileCBGetInterfaceRet, EF32TraceUidFileSys, r, aInterface);
-
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFILECBGETINTERFACERET, "r %d aInterface %x", (TUint) r, (TUint) aInterface);
 	return r;
 	}
 
@@ -3115,11 +3099,9 @@
 		r=share->CheckMount();
 		if (r!=KErrNone)
 			return(r);
-
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileCBFlushDataL, EF32TraceUidFileSys, &share->File());
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBFLUSHDATAL2, "this %x", &share->File());
 		TRAP(r,share->File().FlushDataL());
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileCBFlushDataLRet, EF32TraceUidFileSys, r);
-
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILECBFLUSHDATAL2RET, "r %d", r);
 		if(r!=KErrNone)
 			return(r);
 		}
@@ -3698,4 +3680,3 @@
 
 
 
-
--- a/userlibandfileserver/fileserver/sfile/sf_file_cache.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_file_cache.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -32,6 +32,10 @@
 #include "sf_cache_client.h"
 #include "sf_file_cache_defs.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_file_cacheTraces.h"
+#endif
+
 
 // disables flushing of stale cachelines before each write
 #define LAZY_WRITE
@@ -1996,11 +2000,11 @@
 			// However if the write error is to the bootsector remounting will always fail because the boot
 			// sector will have changed and hence the disk is useless.
 			// 
-			TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMount, EF32TraceUidFileSys, DriveNumber());
+			OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT2, "drive %d", DriveNumber());
 
 			TInt remountSuccess = iDrive->ReMount(*iMount);
 
-			TRACE1(UTF::EBorder, UTraceModuleFileSys::ECMountCBReMountRet, EF32TraceUidFileSys, remountSuccess);
+			OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBREMOUNT2RET, "success %d", remountSuccess);
 			if (!remountSuccess)
 				continue;
 			
--- a/userlibandfileserver/fileserver/sfile/sf_fmt.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_fmt.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,6 +17,10 @@
 
 #include "sf_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_fmtTraces.h"
+#endif
+
 LOCAL_C CFormatCB* GetFormatFromHandle(TInt aHandle,CSessionFs* aSession)
 //
 // Get the format control block from aHandle
@@ -466,9 +470,11 @@
 	TPtr8 pStep((TUint8*)&format->CurrentStep(),sizeof(TInt));
 	aRequest->ReadL(KMsgPtr0,pStep);
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFormatCBDoFormatStepL, EF32TraceUidFileSys, format);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFORMATCBDOFORMATSTEPL, "this %x", format);
+
 	TRAP(r,format->DoFormatStepL());
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECFormatCBDoFormatStepLRet, EF32TraceUidFileSys, r, format->CurrentStep());
+
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECFORMATCBDOFORMATSTEPLRET, "r %d  iCurrentStep %d", r, (TUint) format->CurrentStep());
 
 	if (r==KErrNone)
 		aRequest->WriteL(KMsgPtr0,pStep);
--- a/userlibandfileserver/fileserver/sfile/sf_main.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_main.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -26,9 +26,6 @@
 #endif
 #include "d32btrace.h"
 
-// define this macro to enable tracing very early on in the boot sequence
-//#define __ENABLE_TRACE__
-
 #ifdef __EPOC32__
 _LIT(KStartupExeSysBinName,"Z:\\Sys\\Bin\\ESTART.EXE");
 #else
@@ -286,35 +283,6 @@
 	User::SetCritical(User::ESystemCritical);
 
 	TInt r;
-#ifdef SYMBIAN_FTRACE_ENABLE
-	r = User::LoadLogicalDevice(_L("D_FTRACE"));	
-	__PRINT1(_L("User::LoadLogicalDevice(D_FTRACE) returns %d"),r);
-	__ASSERT_ALWAYS(r==KErrNone || r==KErrAlreadyExists,Fault(ETraceLddLoadFailure));
-
-	r = TheFtrace.Open(EOwnerProcess);
-	__ASSERT_ALWAYS(r==KErrNone || r==KErrAlreadyExists,Fault(ETraceLddLoadFailure));
-#endif
-
-#if defined (__ENABLE_TRACE__)
-		{
-		RBTrace trace;
-		
-		trace.Open();
-		
-//		trace.SetMode(RBTrace::EEnable + RBTrace::EFreeRunning);
-		trace.SetFilter(BTrace::EThreadIdentification,1);
-
-		trace.SetFilter(UTF::EBorder,1);
-		trace.SetFilter(UTF::EError,1);
-
-		trace.SetFilter2(EF32TraceUidEfsrv,1);
-//		trace.SetFilter2(EF32TraceUidFileSys,1);
-//		trace.SetFilter2(EF32TraceUidProxyDrive,1);
-
-		trace.Close();	
-		}
-
-#endif
 
 //
 // Load the file system's device driver
--- a/userlibandfileserver/fileserver/sfile/sf_mnt.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_mnt.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -15,6 +15,10 @@
 
 #include "sf_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_mntTraces.h"
+#endif
+
 
 
 
@@ -369,12 +373,11 @@
 
 TInt CMountCB::GetInterfaceTraced(TInt aInterfaceId, TAny*& aInterface, TAny* aInput)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetInterface, EF32TraceUidFileSys, 
-		DriveNumber(), aInterfaceId, aInput);
+	OstTraceExt3(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETINTERFACE, "drive %d aInterfaceId %d aInput %x", (TUint) DriveNumber(), (TUint) aInterfaceId, (TUint) aInput);
 
 	TInt r = GetInterface(aInterfaceId, aInterface, aInput);
 
-	TRACERET2(UTF::EBorder, UTraceModuleFileSys::ECMountCBGetInterfaceRet, EF32TraceUidFileSys, r, aInterface);
+	OstTraceExt2(TRACE_FILESYSTEM, FSYS_ECMOUNTCBGETINTERFACERET, "r %d aInterface %x", (TUint) r, (TUint) aInterface);
 
 	return r;
 	}
--- a/userlibandfileserver/fileserver/sfile/sf_nbs.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_nbs.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -22,7 +22,7 @@
 	{
 	__PRINT(_L("TFsMkDir::DoRequestL(CFsRequest* aRequest)"));
 
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -143,7 +143,7 @@
 //
 	{
 	__PRINT(_L("TFsRename::DoRequestL(CFsRequest* aRequest)"));
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 	
@@ -182,7 +182,7 @@
 	{
 	__PRINT(_L("TFsReplace::DoRequestL(CFsRequest* aRequest)"));
 
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -261,7 +261,7 @@
 	{
 	__PRINT(_L("TFsSetEntry::DoRequestL(CFsRequest* aRequest)"));
 
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
@@ -892,7 +892,7 @@
 //	create the private path unless it already exists
 //
 	{
-    TInt ret = CheckDiskSpace(0, aRequest);
+    TInt ret = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(ret != KErrNone)
         return ret;
 
--- a/userlibandfileserver/fileserver/sfile/sf_plugin_shim.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_plugin_shim.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -703,11 +703,6 @@
 	TPckgBuf<TInt> reply;
 	args.Set(3,&reply);
 
-	// copy session pointer
-	RLocalMessage message = iMessage;
-	message.SetFunction(aFunction);
-	message.SetArgs(args);
-
 	TInt err = Dispatch(aFunction, args);
 	if (err == KErrNone)
 		*aReply = reply();
--- a/userlibandfileserver/fileserver/sfile/sf_raw.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_raw.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -18,6 +18,10 @@
 #include "sf_std.h"
 #include "sf_file_cache.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_rawTraces.h"
+#endif
+
 LOCAL_C CRawDiskCB* GetRawDiskFromHandle(TInt aHandle, CSessionFs* aSession)
 //
 // Get the rawdisk control block from aHandle
@@ -112,10 +116,11 @@
 	const TAny* pDes=aRequest->Message().Ptr0();
 
 	TRACETHREADID(aRequest->Message());
-	TRACE7(UTF::EBorder, UTraceModuleFileSys::ECMountCBRawReadL, EF32TraceUidFileSys, 
-		aRequest->DriveNumber(), I64LOW(pos), I64HIGH(pos), length, pDes, 0, I64LOW(threadId));
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRAWREADL, "drive %d clientThreadId %x aPos %x:%x aLength %d", (TUint) aRequest->DriveNumber(), (TUint) threadId, (TUint) I64HIGH(pos), (TUint) I64LOW(pos), (TUint) length);
+
 	TRAP(r,rawDisk->Mount().RawReadL(pos,length,pDes,0,aRequest->Message()));
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRawReadLRet, EF32TraceUidFileSys, r);
+
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRAWREADLRET, "r %d", r);
 
 	return(r);
 	}
@@ -159,10 +164,11 @@
 	const TAny* pDes=aRequest->Message().Ptr0();
 
 	TRACETHREADID(aRequest->Message());
-	TRACE7(UTF::EBorder, UTraceModuleFileSys::ECMountCBRawWriteL, EF32TraceUidFileSys, 
-		aRequest->DriveNumber(), I64LOW(pos), I64HIGH(pos), length, pDes, 0, I64LOW(threadId));
+	OstTraceExt5(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRAWWRITEL, "drive %d clientThreadId %x aPos %x:%x aLength %d", (TUint) aRequest->DriveNumber(), (TUint) threadId, (TUint) I64HIGH(pos), (TUint) I64LOW(pos), (TUint) length);
+
 	TRAP(r,rawDisk->Mount().RawWriteL(pos,length,pDes,0,aRequest->Message()));
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECMountCBRawWriteLRet, EF32TraceUidFileSys, r);
+
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECMOUNTCBRAWWRITELRET, "r %d", r);
 
 	rawDisk->SetChanged();
 	return(r);
--- a/userlibandfileserver/fileserver/sfile/sf_std.h	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_std.h	Fri Jun 11 15:02:23 2010 +0300
@@ -34,7 +34,6 @@
 #include "sf_func.h"
 #include <F32plugin.h>
 #include "f32trace.h"
-#include <utraceefile.h>
 
 #define __PRINT1TEMP_ALWAYS(t,a) {{TBuf<KMaxFileName>temp(a);RDebug::Print(t,&temp);}}
 #define __PRINT2TEMP_ALWAYS(t,a,b) {{TBuf<KMaxFileName>temp(b);RDebug::Print(t,a,&temp);}}
@@ -144,6 +143,13 @@
 //-- absolute maximum file size that file server supports
 const TUint64 KMaxSupportedFileSize = KMaxTUint64;
 
+//-- this is a speculative value of a min. amount of free space on the volume necessary to create a file, directory etc.
+//-- it is used mostly in "reserve drive space" functionality, which is, actually, fundamentally flawed.
+//-- the problem is that the file server can't know exactly how much space is required to create some fs object on the volume, 
+//-- so, it has to guess. This is a default "sector size" value; the file system can round it up internally to its cluster size if any.
+const TInt KMinFsCreateObjTreshold = KDefaultVolumeBlockSize;
+
+
 //__DATA_CAGING__
 const TUint SHA1_LBLOCK=16;
 const TUint SHA1_HASH=20;
@@ -1705,7 +1711,6 @@
 extern HBufC* TheDriveNames[];
 extern TDrive TheDrives[KMaxDrives];
 extern TFileName TheDefaultPath;
-extern RFTrace TheFtrace;
 
 extern SCapabilitySet AllCapabilities;
 extern SCapabilitySet DisabledCapabilities;
@@ -1839,10 +1844,6 @@
 
 typedef TPckgBuf<TMediaPswdReplyNotifyInfoV1> TMediaPswdReplyNotifyInfoV1Buf;
 
-#if defined(__WINS__)
- TInt MapWindowsFileName(TDes& aBuffer,const TDesC& aFileName);
-#endif
-
 enum TDllFindMethod {EFindInPath, EFindInSystemLibs, EFindInSystemBin, EFindExhausted};
 
 //---------------------------------------------------------------------------------------------------------------------
--- a/userlibandfileserver/fileserver/sfile/sf_svr.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_svr.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -590,7 +590,7 @@
 // Set the volume name.
 //
 	{
-    TInt r = CheckDiskSpace(0, aRequest);
+    TInt r = CheckDiskSpace(KMinFsCreateObjTreshold, aRequest);
     if(r != KErrNone)
         return r;
 
--- a/userlibandfileserver/fileserver/sfile/sf_sys.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_sys.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -18,9 +18,13 @@
 #include "sf_std.h"
 #include <e32uid.h>
 #include "sf_file_cache.h"
-#include <kernel\localise.h>
+#include <kernel/localise.h>
 #include <f32file.h>
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "sf_sysTraces.h"
+#endif
+
 typedef CFileSystem*(*TFileSystemNew)();
 extern CProxyDriveFactory* GetExtension(const TDesC& aName);
 
@@ -39,8 +43,8 @@
 */
 EXPORT_C CFileSystem::CFileSystem()
 	{
-	TRACE0(UTF::EBorder, UTraceModuleFileSys::ECFileSystemConstructor, EF32TraceUidFileSys);
-	TRACE0(UTF::EBorder, UTraceModuleFileSys::ECFileSystemConstructorReturn, EF32TraceUidFileSys);
+	OstTrace0(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMCONSTRUCTOR, "");
+	OstTrace0(TRACE_FILESYSTEM,FILESYS_ECFILESYSTEMCONSTRUCTORRETURN, "");
 	}
 
 /**
@@ -48,8 +52,8 @@
 */
 EXPORT_C CFileSystem::~CFileSystem()
 	{
-	TRACE0(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDestructor, EF32TraceUidFileSys);
-	TRACE0(UTF::EBorder, UTraceModuleFileSys::ECFileSystemDestructorReturn, EF32TraceUidFileSys);
+	OstTrace0(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDESTRUCTOR, "");
+	OstTrace0(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMDESTRUCTORRETURN, "");
 	}
 
 /**
@@ -266,22 +270,25 @@
 //
 	{
 
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemInstall, EF32TraceUidFileSys, aSys);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMINSTALL, "this %x", aSys);
+
 	TInt r=aSys->Install();
-	TRACERETMULT2(UTF::EBorder, UTraceModuleFileSys::ECFileSystemInstallRet, EF32TraceUidFileSys, r, aSys->Name());
+
+	OstTraceData(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMINSTALLYS_EFILESYSTEMNAME, "FileSystemName %S", aSys->Name().Ptr(), aSys->Name().Length()<<1);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMINSTALLRET, "r %d", r);
 
 	__PRINT1TEMP(_L("InstallFileSystem %S"),aSys->Name());
 	if (r==KErrNone)
 		{TRAP(r,FileSystems->AddL(aSys,ETrue))}
 	if (r!=KErrNone)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemRemove, EF32TraceUidFileSys, aSys);
-#ifdef SYMBIAN_FTRACE_ENABLE
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMREMOVE1, "this %x", aSys);
+#ifdef OST_TRACE_COMPILER_IN_USE
 		TInt r = 
 #endif
 			aSys->Remove();
 		
-		TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemRemoveRet, EF32TraceUidFileSys, r);
+		OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMREMOVE1RET, "r %d", r);
 		}
 	if (r==KErrNone)
 		aSys->SetLibrary(aLib);
@@ -320,9 +327,9 @@
 	if (!f)
 		return KErrCorrupt;
 	
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNew, EF32TraceUidFileSys, lib.Handle());
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEW, "handle %x", lib.Handle());
 	CFileSystem* pS=(*f)();
-	TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemNewRet, EF32TraceUidFileSys, pS);
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMNEWRET, "fileSystem %x", pS);
 	if (!pS)
 		return KErrNoMemory;
 	TInt r=InstallFileSystem(pS,lib);
@@ -374,9 +381,12 @@
 			return KErrInUse;
 		}
 	
-    TRACE1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemRemove, EF32TraceUidFileSys, pF);
+    OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMREMOVE2, "this %x", pF);
+
 	TInt r=pF->Remove();
-	TRACERET1(UTF::EBorder, UTraceModuleFileSys::ECFileSystemRemoveRet, EF32TraceUidFileSys, r);
+
+	OstTrace1(TRACE_FILESYSTEM, FSYS_ECFILESYSTEMREMOVE2RET, "r %d", r);
+
 	if (r!=KErrNone)
 		return(r);
 	
--- a/userlibandfileserver/fileserver/sfile/sf_utl.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfile/sf_utl.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -1067,6 +1067,8 @@
 	if(KReservedSpace == 0 || KDriveNumber == EDriveZ)
 	    return KErrNone;
 
+    ASSERT(aThreshold);
+
     //-- if the drive has a reserved space, take it into account
 	CSessionFs* session=aRequest->Session(); 
 
@@ -1074,8 +1076,7 @@
         aThreshold += KReservedSpace;
 
     //-- ask the corresponding file system if there is aThreshold bytes available.
-    //-- for some reason it's required to be strictly > than aThreshold
-    return aRequest->Drive()->RequestFreeSpaceOnMount(aThreshold+1);
+    return aRequest->Drive()->RequestFreeSpaceOnMount(aThreshold);
 	}								
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfile/traces/OstTraceDefinitions.h	Fri Jun 11 15:02:23 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfile/traces/fixed_id.definitions	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,740 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_BORDER=0x42
+[GROUP]TRACE_DRIVE=0x41
+[GROUP]TRACE_FILESYSTEM=0x40
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRCLOSE=0x124
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRCLOSERETURN=0x125
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN1=0x11e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN1RETURN=0x120
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN1_EDIRNAME=0x11f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN2=0x121
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN2RETURN=0x123
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIROPEN2_EDIRNAME=0x122
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD1=0x126
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD1RETURN=0x127
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD2=0x128
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD2RETURN=0x129
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD3=0x12a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD3RETURN=0x12b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD4=0x12c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EDIRREAD4RETURN=0x12d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCLIENT=0x1b1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN1=0x1b2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN2=0x1b3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN3=0x1b4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCREATOR=0x1b8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCREATORRETURN1=0x1b9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCREATORRETURN2=0x1ba
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMCREATORRETURN3=0x1bb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMSERVER=0x1b5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMSERVERRETURN1=0x1b6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64ADOPTFROMSERVERRETURN2=0x1b7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64CREATE=0x1a7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64CREATERETURN=0x1a9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64CREATE_EFILENAME=0x1a8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64LOCK=0x1d2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64LOCKRETURN=0x1d3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64OPEN=0x1a4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64OPENRETURN=0x1a6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64OPEN_EFILENAME=0x1a5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ10=0x1be
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ10RETURN=0x1bf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ11=0x1c2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ11RETURN=0x1c3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ12=0x1d8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ12RETURN=0x1d9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ13=0x1dc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ13RETURN=0x1dd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ14=0x1d6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ14RETURN=0x1d7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ15=0x1c0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ15RETURN=0x1c1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ16=0x1da
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ16RETURN=0x1db
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ8=0x1bc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64READ8RETURN=0x1bd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64REPLACE=0x1aa
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64REPLACERETURN=0x1ac
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64REPLACE_EFILENAME=0x1ab
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SEEK2=0x1cc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SEEK2RETURN=0x1cd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SETSIZE2=0x1d0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SETSIZE2RETURN=0x1d1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SIZE2=0x1ce
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64SIZE2RETURN=0x1cf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64TEMP=0x1ad
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64TEMPRETURN=0x1b0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64TEMP_EDIRNAME=0x1ae
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64TEMP_EFILENAME=0x1af
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64UNLOCK=0x1d4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64UNLOCKRETURN=0x1d5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE11=0x1ca
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE11RETURN=0x1cb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE12=0x1e4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE12RETURN=0x1e5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE13=0x1c4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE13RETURN=0x1c5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE14=0x1de
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE14RETURN=0x1df
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE15=0x1c6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE15RETURN=0x1c7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE16=0x1e0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE16RETURN=0x1e1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE7=0x1c8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE7RETURN=0x1c9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE8=0x1e2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILE64WRITE8RETURN=0x1e3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPT=0x12e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCLIENT=0x135
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCLIENTRETURN1=0x136
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCLIENTRETURN2=0x137
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCLIENTRETURN3=0x138
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCREATOR=0x139
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCREATORRETURN1=0x13a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCREATORRETURN2=0x13b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMCREATORRETURN3=0x13c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMSERVER=0x132
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMSERVERRETURN1=0x133
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTFROMSERVERRETURN2=0x134
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTRETURN1=0x12f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTRETURN2=0x130
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEADOPTRETURN3=0x131
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEATT=0x18d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEATTRETURN=0x18e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEBLOCKMAPA=0x1a1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEBLOCKMAPB=0x1a2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEBLOCKMAPRETURN=0x1a3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECHANGEMODE=0x198
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECHANGEMODERETURN=0x199
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECLAMP=0x19f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECLAMPRETURN=0x1a0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECLOSE=0x153
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECLOSERETURN=0x154
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECREATE=0x155
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECREATERETURN=0x157
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILECREATE_EFILENAME=0x156
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDRIVE=0x19d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDRIVERETURN=0x19e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDUPLICATE=0x13d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDUPLICATERETURN1=0x13e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDUPLICATERETURN2=0x13f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEDUPLICATERETURN3=0x140
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFLUSH1=0x185
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFLUSH1RETURN=0x186
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFLUSH2=0x187
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFLUSH2RETURN=0x188
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFULLNAME=0x14d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFULLNAMERETURN=0x14f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEFULLNAME_EFILENAME=0x14e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEGETNAME=0x14a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEGETNAMERETURN=0x14c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEGETNAME_EFILENAME=0x14b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILELOCK=0x17f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILELOCKRETURN=0x180
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEMODIFIED=0x191
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEMODIFIEDRETURN=0x192
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEOPEN=0x150
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEOPENRETURN=0x152
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEOPEN_EFILENAME=0x151
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD1=0x15f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD1RETURN=0x160
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD2=0x161
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD2RETURN=0x162
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD3=0x167
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD3RETURN=0x168
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD4=0x169
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD4RETURN=0x16a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD5=0x163
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD5RETURN=0x164
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD6=0x165
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD6RETURN=0x166
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD7=0x16b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD7RETURN=0x16c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD9=0x16d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREAD9RETURN=0x16e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILERENAME=0x19a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILERENAMERETURN=0x19c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILERENAME_ENEWNAME=0x19b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREPLACE=0x158
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREPLACERETURN=0x15a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEREPLACE_EFILENAME=0x159
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESEEK1=0x183
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESEEK1RETURN=0x184
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETA=0x195
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETATT=0x18f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETATTRETURN=0x190
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETB=0x196
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETMODIFIED=0x193
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETMODIFIEDRETURN=0x194
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETRETURN=0x197
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETSIZE1=0x18b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESETSIZE1RETURN=0x18c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESIZE=0x189
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILESIZERETURN=0x18a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETEMP=0x15b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETEMPRETURN=0x15e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETEMP_EDIRNAME=0x15c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETEMP_EFILENAME=0x15d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOCLIENT=0x144
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOCLIENTRETURN1=0x145
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOCLIENTRETURN2=0x146
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOCLIENTRETURN3=0x147
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOPROCESS=0x148
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOPROCESSRETURN=0x149
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOSERVER=0x141
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOSERVERRETURN1=0x142
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILETRANSFERTOSERVERRETURN2=0x143
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEUNLOCK=0x181
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEUNLOCKRETURN=0x182
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE1=0x16f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE10=0x17d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE10RETURN=0x17e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE1RETURN=0x170
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE2=0x171
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE2RETURN=0x172
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE3=0x177
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE3RETURN=0x178
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE4=0x179
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE4RETURN=0x17a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE5=0x173
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE5RETURN=0x174
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE6=0x17b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE6RETURN=0x17c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE9=0x175
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFILEWRITE9RETURN=0x176
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDCOMPOSITEMOUNT=0xfe
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDCOMPOSITEMOUNTRETURN=0x100
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDCOMPOSITEMOUNT_EFILESYSTEMNAME=0xff
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDEXTENSION=0x3b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDEXTENSIONRETURN=0x3d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDEXTENSION_EEXTENSIONNAME=0x3c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDFILESYSTEM=0x17
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDFILESYSTEMRETURN=0x19
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSADDFILESYSTEM_EFILENAME=0x18
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSALLOWDISMOUNT=0x10d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSALLOWDISMOUNTRETURN=0x10e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSATT=0xa0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSATTRETURN=0xa2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSATT_EFILENAME=0xa1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCHECKDISK=0xc1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCHECKDISKRETURN=0xc3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCHECKDISK_EDIRNAME=0xc2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCLEARPASSWORD=0xec
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCLEARPASSWORDRETURN=0xed
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCLOSE=0x11c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCLOSERETURN=0x11d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCONNECT=0xc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCONNECTRETURN=0xd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCREATEPRIVATEPATH=0x13
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSCREATEPRIVATEPATHRETURN=0x14
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDELETE=0x95
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDELETERETURN=0x97
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDELETE_EFILENAME=0x96
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTEXTENSION=0x41
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTEXTENSIONRETURN=0x43
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTEXTENSION_EEXTENSIONNAME=0x42
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTFILESYSTEM=0x32
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTFILESYSTEMRETURN=0x34
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDISMOUNTFILESYSTEM_EFILESYSTEMNAME=0x33
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVE=0x5f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVELIST1=0x5b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVELIST1RETURN=0x5c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVELIST2=0x5d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVELIST2RETURN=0x5e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVERETURN=0x60
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVETOCHAR=0x1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSDRIVETOCHARRETURN=0x2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSENTRY=0xac
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSENTRYRETURN=0xae
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSENTRY_EFILENAME=0xad
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSERASEPASSWORD=0xee
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSERASEPASSWORDRETURN=0xef
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSEXTENSIONNAME=0x47
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSEXTENSIONNAMERETURN=0x49
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSEXTENSIONNAME_EEXTENSIONNAME=0x48
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMNAME=0x35
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMNAMERETURN=0x37
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMNAME_EFILESYSTEMNAME=0x36
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMNAME_ESUPPORTEDFILESYSTEMNAME=0x39
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMSUBTYPE=0x119
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMSUBTYPERETURN=0x11b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFILESYSTEMSUBTYPE_EFILESYSTEMNAME=0x11a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFINALISEDRIVE=0xf5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFINALISEDRIVERETURN=0xf6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFINALISEDRIVES=0xf7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFINALISEDRIVESRETURN1=0xf8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSFINALISEDRIVESRETURN2=0xf9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR1=0x85
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR1RETURN=0x87
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR1_EDIRNAME=0x86
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR2=0x88
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR2RETURN=0x8a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR2_EDIRNAME=0x89
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR3=0x8b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR3RETURN=0x8d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDIR3_EDIRNAME=0x8c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDRIVENAME=0xe2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDRIVENAMERETURN=0xe4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETDRIVENAME_EDRIVENAME=0xe3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETLONGNAME=0xcb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETLONGNAMERETURN=0xce
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETLONGNAME_ELONGNAME=0xcd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETLONGNAME_ESHORTNAME=0xcc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETMEDIASERIALNUMBER=0x73
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETMEDIASERIALNUMBERRETURN=0x74
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETMEDIASERIALNUMBER_ESERIALNUMBER=0x75
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETNOTIFYUSER=0xd2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETNOTIFYUSERRETURN=0xd3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETRESERVEACCESS=0x103
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETRESERVEACCESSRETURN=0x104
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSHORTNAME=0xc7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSHORTNAMERETURN=0xca
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSHORTNAME_ELONGNAME=0xc8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSHORTNAME_ESHORTNAME=0xc9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSYSTEMDRIVE=0x5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSYSTEMDRIVECHAR=0x8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSYSTEMDRIVECHARRETURN=0x9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSYSTEMDRIVERETURN1=0x6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSGETSYSTEMDRIVERETURN2=0x7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSINITIALISEPROPERTIESFILE=0x113
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSINITIALISEPROPERTIESFILERETURN=0x114
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEINROM=0xd6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEINROMRETURN=0xd8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEINROM_EFILENAME=0xd7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEOPEN=0xcf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEOPENRETURN=0xd1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISFILEOPEN_EFILENAME=0xd0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISROMADDRESS=0x3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISROMADDRESSRETURN=0x4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME1=0xd9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME1RETURN=0xdb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME1_EFILENAME=0xda
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME2=0xdc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME2RETURN=0xde
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME2_EFILENAME=0xdd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME3=0xdf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME3RETURN=0xe1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSISVALIDNAME3_EFILENAME=0xe0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSLOCKDRIVE=0xe8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSLOCKDRIVERETURN=0xe9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIR=0x7c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIRALL=0x7f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIRALLRETURN=0x81
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIRALL_EDIRNAME=0x80
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIRRETURN=0x7e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMKDIR_EDIRNAME=0x7d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMODIFIED=0xa6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMODIFIEDRETURN=0xa8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMODIFIED_EFILENAME=0xa7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTEXTENSION=0x3e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTEXTENSIONRETURN=0x40
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTEXTENSION_EEXTENSIONNAME=0x3f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM1=0x1d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM1RETURN=0x1f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM1_EFILESYSTEMNAME=0x1e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM2=0x20
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM2RETURN=0x22
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM2_EFILESYSTEMNAME=0x21
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM3=0x23
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM3RETURN=0x26
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM3_EEXTENSIONNAME=0x24
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM3_EFILESYSTEMNAME=0x25
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM4=0x27
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM4RETURN=0x2a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM4_EEXTENSIONNAME=0x29
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEM4_EFILESYSTEMNAME=0x28
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1=0x2b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1RETURN=0x2d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1_EFILESYSTEMNAME=0x2c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2=0x2e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2RETURN=0x31
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EEXTENSIONNAME=0x30
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EFILESYSTEMNAME=0x2f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGE1=0x4c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGE1RETURN=0x4d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGE2=0x4e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGE2RETURN=0x50
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGE2_EDIRNAME=0x4f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGECANCEL1=0x51
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGECANCEL1RETURN=0x52
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGECANCEL2=0x53
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYCHANGECANCEL2RETURN=0x54
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACE=0x55
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACECANCEL1=0x57
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACECANCEL1RETURN=0x58
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACECANCEL2=0x59
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACECANCEL2RETURN=0x5a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISKSPACERETURN=0x56
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNT=0x107
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNTCANCEL1=0x109
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNTCANCEL1RETURN=0x10a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNTCANCEL2=0x10b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNTCANCEL2RETURN=0x10c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSNOTIFYDISMOUNTRETURN=0x108
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE1=0x8e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE1RETURN=0x90
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE1_EFILEPATH=0x8f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE2=0x91
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE2RETURN=0x94
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE2_EFILENAME=0x92
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPARSE2_ERELATED=0x93
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPRIVATEPATH=0x10
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPRIVATEPATHRETURN=0x12
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSPRIVATEPATH_EDIRNAME=0x11
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSQUERYVOLUMEINFOEXT=0x115
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSQUERYVOLUMEINFOEXTRETURN=0x116
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION=0xb2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTIONRETURN1=0xb4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTIONRETURN2=0xb5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTIONRETURN3=0xb6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION_EFILENAME=0xb3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION_RESERVED=0xb7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION_RESERVED_EFILENAME=0xb8
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION_RESERVED_RETURN1=0xb9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREADFILESECTION_RESERVED_RETURN2=0xba
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREALNAME=0x6f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREALNAMERETURN=0x72
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREALNAME_EFILENAME1=0x70
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREALNAME_EFILENAME2=0x71
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRELEASERESERVEACCESS=0x105
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRELEASERESERVEACCESSRETURN=0x106
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOUNTDRIVE=0x4a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOUNTDRIVERETURN=0x4b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEEXTENSION=0x44
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEEXTENSIONRETURN=0x46
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEEXTENSION_EEXTENSIONNAME=0x45
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEFILESYSTEM=0x1a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEFILESYSTEMRETURN=0x1c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREMOVEFILESYSTEM_EFILESYSTEMNAME=0x1b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRENAME=0x98
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRENAMERETURN=0x9b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRENAME_ENEWNAME=0x9a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRENAME_EOLDNAME=0x99
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREPLACE=0x9c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREPLACERETURN=0x9f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREPLACE_ENEWNAME=0x9e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSREPLACE_EOLDNAME=0x9d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESERVEDRIVESPACE=0x101
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESERVEDRIVESPACERETURN=0x102
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNT=0xbf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNTMARKEND=0xbd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNTMARKENDRETURN=0xbe
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNTMARKSTART=0xbb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNTMARKSTARTRETURN=0xbc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRESOURCECOUNTRETURN=0xc0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRMDIR=0x82
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRMDIRRETURN=0x84
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSRMDIR_EDIRNAME=0x83
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSCANDRIVE=0xc4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSCANDRIVERETURN=0xc6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSCANDRIVE_EDIRNAME=0xc5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSESSIONPATH=0x76
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSESSIONPATHRETURN=0x77
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSESSIONPATH_EDIRNAME=0x78
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETATT=0xa3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETATTRETURN=0xa5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETATT_EFILENAME=0xa4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETDRIVENAME=0xe5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETDRIVENAMERETURN=0xe7
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETDRIVENAME_EDRIVENAME=0xe6
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETENTRY=0xaf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETENTRYRETURN=0xb1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETENTRY_EFILENAME=0xb0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETLOCALDRIVEMAPPING=0xf2
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETLOCALDRIVEMAPPINGRETURN=0xf4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETLOCALDRIVEMAPPING_ELOCALDRIVEMAPPING=0xf3
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETMODIFIED=0xa9
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETMODIFIEDRETURN=0xab
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETMODIFIED_EFILENAME=0xaa
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETNOTIFYCHANGE=0x111
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETNOTIFYCHANGERETURN=0x112
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETNOTIFYUSER=0xd4
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETNOTIFYUSERRETURN=0xd5
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSESSIONPATH=0x79
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSESSIONPATHRETURN=0x7b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSESSIONPATH_EDIRNAME=0x7a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSESSIONTOPRIVATE=0xe
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSESSIONTOPRIVATERETURN=0xf
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSTARTUPCONFIGURATION=0x10f
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSTARTUPCONFIGURATIONRETURN=0x110
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSUBST=0x6c
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSUBSTRETURN=0x6e
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSUBST_EDIRNAME=0x6d
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSYSTEMDRIVE=0xa
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETSYSTEMDRIVERETURN=0xb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETVOLUMELABEL=0x66
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETVOLUMELABELRETURN=0x68
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSETVOLUMELABEL_EVOLUMENAME=0x67
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSTARTUPINITCOMPLETE=0xf0
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSTARTUPINITCOMPLETERETURN=0xf1
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSUBST=0x69
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSUBSTRETURN=0x6b
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSUBST_EDIRNAME=0x6a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSUPPORTEDFILESYSTEMNAME=0x38
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSUPPORTEDFILESYSTEMNAMERETURN=0x3a
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSWAPFILESYSTEM=0xfa
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSWAPFILESYSTEMRETURN=0xfd
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSWAPFILESYSTEM_ENEWNAME=0xfc
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSSWAPFILESYSTEM_EOLDNAME=0xfb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSUNLOCKDRIVE=0xea
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSUNLOCKDRIVERETURN=0xeb
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVERSION=0x15
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVERSIONRETURN=0x16
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUME1=0x61
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUME1RETURNA=0x62
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUME1RETURNB=0x63
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUME2=0x64
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUME2RETURN=0x65
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUMEIOPARAM=0x117
+[TRACE]TRACE_BORDER[0x42]_EFSRV_EFSVOLUMEIOPARAMRETURN=0x118
+[TRACE]TRACE_DRIVE[0x41]_FSYS_ECFILESYSTEMISEXTENSIONSUPPORTED2=0x5f
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECAPS=0x45
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECAPSRET=0x46
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECLEAR=0x53
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECLEARRET=0x54
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECONTROLIO=0x57
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVECONTROLIORET=0x58
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEDELETENOTIFY=0x5d
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEDELETENOTIFYRET=0x5e
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEDISMOUNTED=0x33
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEDISMOUNTEDRET=0x34
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEENLARGE=0x35
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEENLARGERET=0x36
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEERASEPASSWORD=0x55
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEERASEPASSWORDRET=0x56
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORCEREMOUNT=0x4d
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORCEREMOUNTRET=0x4e
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT1=0x47
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT1RET=0x48
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT2=0x49
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEFORMAT2RET=0x4a
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEGETINTERFACE=0x59
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEGETINTERFACERET=0x5a
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEGETLASTERRORINFO=0x5b
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEGETLASTERRORINFORET=0x5c
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEINITIALISE=0x31
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEINITIALISERET=0x32
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVELOCK=0x51
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVELOCKRET=0x52
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD1=0x39
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD1RET=0x3a
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD2=0x3b
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD2RET=0x3c
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD3=0x3d
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREAD3RET=0x3e
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREDUCESIZE=0x37
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEREDUCESIZERET=0x38
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVESETMOUNTINFO=0x4b
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVESETMOUNTINFORET=0x4c
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEUNLOCK=0x4f
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEUNLOCKRET=0x50
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE1=0x3f
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE1RET=0x40
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE2=0x41
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE2RET=0x42
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE3=0x43
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECBASEEXTPROXYDRIVEWRITE3RET=0x44
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECAPS=0x17
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECAPSRET=0x18
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECLEAR=0x27
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECLEARRET=0x28
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECONTROLIO=0x21
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVECONTROLIORET=0x22
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEDELETENOTIFY=0x2b
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEDELETENOTIFYRET=0x2c
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEDISMOUNTED=0x5
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEDISMOUNTEDRET=0x6
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEENLARGE=0x7
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEENLARGERET=0x8
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEERASEPASSWORD=0x29
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEERASEPASSWORDRET=0x2a
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORCEREMOUNT=0x1f
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORCEREMOUNTRET=0x20
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT1=0x19
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT1RET=0x1a
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT2=0x1b
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEFORMAT2RET=0x1c
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEGETINTERFACE=0x2f
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEGETINTERFACERET=0x30
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEGETLASTERRORINFO=0x2d
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEGETLASTERRORINFORET=0x2e
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEINITIALISE=0x3
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEINITIALISERET=0x4
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVELOCK=0x25
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVELOCKRET=0x26
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVENEW=0x1
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVENEWRET=0x2
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD1=0xb
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD1RET=0xc
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD2=0xd
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD2RET=0xe
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD3=0xf
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREAD3RET=0x10
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREDUCESIZE=0x9
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEREDUCESIZERET=0xa
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVESETMOUNTINFO=0x1d
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVESETMOUNTINFORET=0x1e
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEUNLOCK=0x23
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEUNLOCKRET=0x24
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE1=0x11
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE1RET=0x12
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE2=0x13
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE2RET=0x14
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE3=0x15
+[TRACE]TRACE_DRIVE[0x41]_PROXYDRIVE_ECLOCALPROXYDRIVEWRITE3RET=0x16
+[TRACE]TRACE_FILESYSTEM[0x40]_FILESYS_ECFILESYSTEMCONSTRUCTORRETURN=0x91
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBREADL1=0x5
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBREADL1RET=0x6
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBREADL2=0x1
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBREADL2RET=0x2
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBSTORELONGENTRYNAMEL=0x3
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECDIRCBSTORELONGENTRYNAMELRET=0x4
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBFLUSHDATAL1=0x6e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBFLUSHDATAL1RET=0x6f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBFLUSHDATAL2=0x84
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBFLUSHDATAL2RET=0x85
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBGETINTERFACE=0x82
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBGETINTERFACERET=0x83
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBREADLA=0x7c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBREADLRET=0x7d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBRENAMEL=0x76
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBRENAMELRET=0x78
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBRENAMELYS_EFILENAME=0x77
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL1=0x70
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL1RET=0x71
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL2=0x72
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL2RET=0x73
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL3=0x74
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETENTRYL3RET=0x75
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETSIZEL=0x80
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBSETSIZELRET=0x81
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBWRITEL=0x7e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILECBWRITELRET=0x7f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMCONSTRUCTOR=0x90
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMDESTRUCTOR=0x92
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMDESTRUCTORRETURN=0x93
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMDRIVEINFO=0x17
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMDRIVEINFORET=0x18
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMINSTALL=0x94
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMINSTALLRET=0x96
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMINSTALLYS_EFILESYSTEMNAME=0x95
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMISEXTENSIONSUPPORTED1=0x57
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEW=0x99
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWDIRL=0x3b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWDIRLRET=0x3c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWFILEL=0x36
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWFILELRET=0x37
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWFORMATL=0x6c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWFORMATLRET=0x6d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL=0x9
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL1=0x53
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL1RET=0x54
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL2=0x58
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL2RET=0x59
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL3=0x5c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL3RET=0x5d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL4=0x60
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL4RET=0x61
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL5=0x64
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTL5RET=0x65
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWMOUNTLRET=0xa
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMNEWRET=0x9a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMREMOVE1=0x97
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMREMOVE1RET=0x98
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMREMOVE2=0x9b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFILESYSTEMREMOVE2RET=0x9c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFORMATCBDOFORMATSTEPL=0x88
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECFORMATCBDOFORMATSTEPLRET=0x89
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCHECKDISK1=0x43
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCHECKDISK1RET=0x44
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCHECKDISK2=0x45
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCHECKDISK2RET=0x46
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCLEARPASSWORD=0x62
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCLEARPASSWORDRET=0x63
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCONTROLIO=0x6a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCONTROLIORET=0x6b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCURRENTFREESPACE=0x11
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBCURRENTFREESPACERET=0x12
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL1=0x25
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL1_EFILENAME=0x26
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL1_RET=0x27
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL2=0x79
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL2RET=0x7b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDELETEL2_EFILENAME=0x7a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDIROPENL=0x3d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDIROPENLRET=0x3f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDIROPENL_EDIRNAME=0x3e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDISMOUNTED=0x68
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBDISMOUNTEDRET=0x69
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBENTRYL=0x30
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBENTRYLRET=0x32
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBENTRYL_EFILEPATH=0x31
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBERASEPASSWORD=0x66
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBERASEPASSWORDRET=0x67
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFILEOPENL=0x38
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFILEOPENLRET=0x3a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFILEOPENL_EFILENAME=0x39
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFINALISEMOUNT1=0x15
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFINALISEMOUNT1RET=0x16
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFINALISEMOUNT2=0x13
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFINALISEMOUNT2RET=0x14
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFORCEREMOUNTDRIVE=0x55
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFORCEREMOUNTDRIVERET=0x56
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFREESPACE=0xd
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBFREESPACERET=0xe
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETINTERFACE=0x8a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETINTERFACERET=0x8b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETLONGNAMEL=0x4f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETLONGNAMELRET=0x52
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETLONGNAMEL_ELONGNAME=0x51
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETLONGNAMEL_ESHORTNAME=0x50
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETSHORTNAMEL=0x4b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETSHORTNAMEL_ECMOUNTCBGETSHORTNAMELRET=0x4e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETSHORTNAMEL_ELONGNAME=0x4c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBGETSHORTNAMEL_ESHORTNAME=0x4d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBLOCK=0x5a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBLOCKRET=0x5b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBMKDIRL=0x1f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBMKDIRLRET=0x21
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBMKDIRLYS_EDIRNAME=0x20
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBMOUNTCONTROL=0xb
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBMOUNTCONTROLRET=0xc
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRAWREADL=0x8c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRAWREADLRET=0x8d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRAWWRITEL=0x8e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRAWWRITELRET=0x8f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREADFILESECTIONL=0x40
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREADFILESECTIONLRET=0x42
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREADFILESECTIONL_EFILENAME=0x41
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREMOUNT1=0x7
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREMOUNT1RET=0x8
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREMOUNT2=0x86
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREMOUNT2RET=0x87
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRENAMEL=0x28
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRENAMELRET=0x2b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRENAMELYS_ENEWNAME=0x2a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRENAMELYS_EOLDNAME=0x29
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREPLACEL=0x2c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREPLACELRET=0x2f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREPLACEL_ENEWNAME=0x2e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBREPLACEL_EOLDNAME=0x2d
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRMDIRL=0x22
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRMDIRLRET=0x24
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBRMDIRLYS_EDIRNAME=0x23
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSCANDRIVE1=0x47
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSCANDRIVE1RET=0x48
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSCANDRIVE2=0x49
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSCANDRIVE2RET=0x4a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSETENTRYL=0x33
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSETENTRYLRET=0x35
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSETENTRYL_EFILEPATH=0x34
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSETVOLUMEL=0x1c
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBSETVOLUMELRET=0x1e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBUNLOCK=0x5e
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBUNLOCKRET=0x5f
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBVOLUMEL=0x19
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBVOLUMELRETA=0x1a
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBVOLUMELRETB=0x1b
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBVOLUMESIZE=0xf
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_ECMOUNTCBVOLUMESIZERET=0x10
+[TRACE]TRACE_FILESYSTEM[0x40]_FSYS_EVOLUMENAME=0x1d
--- a/userlibandfileserver/fileserver/sfsrv/cl_cli.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_cli.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,13 +17,9 @@
 
 #include "cl_std.h"
 #include <f32fsys.h>
-
-
-
-
-
-
-
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_cliTraces.h"
+#endif
 EFSRV_EXPORT_C TBool RFs::IsValidDrive(TInt aDrive)
 /**
 Tests whether the specified drive number is valid.
@@ -97,7 +93,7 @@
 
 	if (aDrive==KDefaultDrive)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsDriveToChar, MODULEUID, aDrive);
+		OstTrace1(TRACE_BORDER, EFSRV_EFSDRIVETOCHAR, "aDrive %d", aDrive);
 		RFs fs;
 		TFileName path;
 		TInt r=fs.Connect();
@@ -108,7 +104,7 @@
 		if (r!=KErrNone)
 			return(r);
 		aChar=path[0];
-		TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsDriveToCharReturn, MODULEUID, KErrNone, aChar);
+		OstTraceExt2(TRACE_BORDER, EFSRV_EFSDRIVETOCHARRETURN, "r %d aChar %x", (TUint) KErrNone, (TUint) aChar);
 		return(KErrNone);
 		}
 	if (!IsValidDrive(aDrive))
@@ -129,14 +125,12 @@
 @return True, if the address is in ROM; false, if not.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsIsRomAddress, MODULEUID, aPtr);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISROMADDRESS, "aPtr %x", aPtr);
 	TBool res;
 	TInt r=User::IsRomAddress(res,aPtr); // Only returns error on WINS
 	if (r!=KErrNone)
 		res=EFalse;
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsIsRomAddressReturn, MODULEUID, res);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISROMADDRESSRETURN, "r %d", res);
 	return(res);
 	}
 
@@ -166,19 +160,18 @@
  */
 EFSRV_EXPORT_C TDriveNumber RFs::GetSystemDrive()
     {
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsGetSystemDrive, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSGETSYSTEMDRIVE, "");
     TInt drive;
 	TInt err = RProperty::Get(TSecureId(KFileServerUidValue), KSystemDriveKey, drive);
     if(err==KErrNone)
         {
         if((drive>=EDriveA) && (drive<=EDriveZ))
             {
-			TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsGetSystemDriveReturn, MODULEUID, drive);
+			OstTrace1(TRACE_BORDER, EFSRV_EFSGETSYSTEMDRIVERETURN1, "r %d", drive);
             return static_cast<TDriveNumber>(drive);
             }
         }
-
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsGetSystemDriveReturn, MODULEUID, EDriveC);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETSYSTEMDRIVERETURN2, "r %d", EDriveC);
     return EDriveC;
 	}
     
@@ -193,11 +186,9 @@
 */
 EFSRV_EXPORT_C TChar RFs::GetSystemDriveChar()
 	{
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsGetSystemDriveChar, MODULEUID);
-
+	OstTrace0(TRACE_BORDER, EFSRV_EFSGETSYSTEMDRIVECHAR, "");
 	TInt r = 'A' + GetSystemDrive();
-
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsGetSystemDriveCharReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETSYSTEMDRIVECHARRETURN, "RFs::GetSystemDriveChar() r %x", (char) r);
 	return r;
 	}
 
@@ -217,10 +208,9 @@
 */
 EFSRV_EXPORT_C TInt RFs::SetSystemDrive(TDriveNumber aSystemDrive)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsSetSystemDrive, MODULEUID, Handle(), aSystemDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETSYSTEMDRIVE, "sess %x aSystemDrive %d", (TUint) Handle(), (TUint) aSystemDrive);
     TInt r = SendReceive(EFsSetSystemDrive, TIpcArgs(aSystemDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetSystemDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSYSTEMDRIVERETURN, "r %d", r);
 	return r;
 	}
 
@@ -247,11 +237,10 @@
         error codes.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsConnect, MODULEUID, aMessageSlots);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCONNECT, "aMessageSlots %d", aMessageSlots);
 	_LIT(KFileServerName,"!FileServer");
 	TInt r = CreateSession(KFileServerName,Version(),aMessageSlots);
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFsConnectReturn, MODULEUID, r, Handle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSCONNECTRETURN, "r %d sess %x", (TUint) r, (TUint) Handle());
 	return r;
 	}
 
@@ -275,10 +264,9 @@
         error codes.
 */
 	{	
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsSetSessionToPrivate, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETSESSIONTOPRIVATE, "sess %x  aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TInt r = SendReceive(EFsSessionToPrivate,TIpcArgs(aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetSessionToPrivateReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSESSIONTOPRIVATERETURN, "r %d", r);
 	return r;
 	}
 
@@ -294,10 +282,10 @@
 @param aPath On successful return, contains the private path for a process.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsPrivatePath, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPRIVATEPATH, "sess %x", Handle());
 	TInt r = SendReceive(EFsPrivatePath,TIpcArgs(&aPath));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsPrivatePathReturn, MODULEUID, r, aPath);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSPRIVATEPATH_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPRIVATEPATHRETURN, "r %d", r);
 	return r;
 	}
 
@@ -318,10 +306,9 @@
         error codes.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsCreatePrivatePath, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSCREATEPRIVATEPATH, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TInt r = SendReceive(EFsCreatePrivatePath,TIpcArgs(aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsCreatePrivatePathReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCREATEPRIVATEPATHRETURN, "r %d", r);
 	return r;
 	}	
 
@@ -335,11 +322,9 @@
 @return The client side version number.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsVersion, MODULEUID, Handle());
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSVERSION, "sess %x", Handle());
 	TVersion r = TVersion(KF32MajorVersionNumber,KF32MinorVersionNumber,KF32BuildVersionNumber);
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFsVersionReturn, MODULEUID, r.iMajor, r.iMinor, r.iBuild);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSVERSIONRETURN, "iMajor %d iMinor %d iBuild %d", (TUint) r.iMajor, (TUint) r.iMinor, (TUint) r.iBuild);
 	return r;
 	}
 
@@ -364,7 +349,8 @@
 @see RFs::MountFileSystem        
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsAddFileSystem, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDFILESYSTEM, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSADDFILESYSTEM_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	RLoader loader;
 	TInt r = loader.Connect();
 	if (r==KErrNone)
@@ -372,8 +358,7 @@
 		r = loader.SendReceive(ELoadFileSystem, TIpcArgs(0, &aFileName, 0));
 		loader.Close();
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsAddFileSystemReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDFILESYSTEMRETURN, "r %d", r);
 	return r;
 	}
 
@@ -395,10 +380,10 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRemoveFileSystem, MODULEUID, Handle(), aFileSystemName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEFILESYSTEM, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREMOVEFILESYSTEM_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsRemoveFileSystem,TIpcArgs(&aFileSystemName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRemoveFileSystemReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEFILESYSTEMRETURN, "r %d", r);
 	return r;
 	}
 
@@ -423,10 +408,10 @@
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem1, MODULEUID, Handle(), aFileSystemName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM1, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM1_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsMountFileSystem,TIpcArgs(&aFileSystemName,aDrive,NULL,EFalse));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -454,16 +439,14 @@
 
 @return KErrNone if successful, otherwise one of the other system-wide error codes.
 @capability DiskAdmin
-
 @see RFs::AddFileSystem
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem2, MODULEUID, Handle(), aFileSystemName, aDrive, aIsSync);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM2, "sess %x aDrive %d aIsSync %d", (TUint) Handle(), (TUint) aDrive, (TUint) aIsSync);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM2_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsMountFileSystem,TIpcArgs(&aFileSystemName,aDrive,NULL,aIsSync));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -489,11 +472,11 @@
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem3, MODULEUID, Handle(), aFileSystemName, aExtensionName, aDrive);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM3, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM3_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM3_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsMountFileSystem,TIpcArgs(&aFileSystemName,aDrive,&aExtensionName,EFalse));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM3RETURN, "r %d", r);
 	return r;
 	}
 
@@ -528,10 +511,11 @@
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem4, MODULEUID, Handle(), aFileSystemName, aExtensionName, aDrive, aIsSync);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM4, "sess %x aDrive %d aIsSync %d", (TUint) Handle(), (TUint) aDrive, (TUint) aIsSync);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM4_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM4_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	TInt r = SendReceive(EFsMountFileSystem,TIpcArgs(&aFileSystemName,aDrive,&aExtensionName,aIsSync));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystem4Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEM4RETURN, "r %d", r);
 	return r;
 	}
 
@@ -560,12 +544,12 @@
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystemAndScan1, MODULEUID, Handle(), aFileSystemName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN1, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN1_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	aIsMountSuccess=EFalse;
 	TPckg<TInt> pckg(aIsMountSuccess);
 	TInt r = SendReceive(EFsMountFileSystemScan,TIpcArgs(&aFileSystemName,aDrive,NULL,&pckg));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystemAndScan1Return, MODULEUID, r, aIsMountSuccess);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN1RETURN, "r %d aIsMountSuccess %d", (TUint) r, (TUint) aIsMountSuccess);
 	return r;
 	}
 
@@ -598,14 +582,13 @@
 @see RFs::FileSystemName
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystemAndScan2, MODULEUID, 
-		Handle(), aFileSystemName, aExtensionName, aDrive, aIsMountSuccess);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN2, "sess %x aDrive %d aIsMountSuccess %d", (TUint) Handle(), (TUint) aDrive, (TUint) aIsMountSuccess);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	aIsMountSuccess=EFalse;
 	TPckg<TInt> pckg(aIsMountSuccess);
 	TInt r = SendReceive(EFsMountFileSystemScan,TIpcArgs(&aFileSystemName,aDrive,&aExtensionName,&pckg));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFsMountFileSystemAndScan2Return, MODULEUID, r, aIsMountSuccess);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTFILESYSTEMANDSCAN2RETURN, "r %d aIsMountSuccess %d", (TUint) r, (TUint) aIsMountSuccess);
 	return r;
 	}
 
@@ -632,10 +615,10 @@
 @see RFs::FileSystemName 		
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsDismountFileSystem, MODULEUID, Handle(), aFileSystemName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSDISMOUNTFILESYSTEM, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDISMOUNTFILESYSTEM_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsDismountFileSystem,TIpcArgs(&aFileSystemName,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDismountFileSystemReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTFILESYSTEMRETURN, "r %d", r);
 	return r;
 	}
 
@@ -661,12 +644,11 @@
 */
 EFSRV_EXPORT_C TInt RFs::FileSystemName(TDes& aName,TInt aDrive) const
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemName, MODULEUID, Handle(), aDrive);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSFILESYSTEMNAME, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	//-- ipc argument "-1" here is to indicate legacy FileSystemName() API
     TInt r = SendReceive(EFsFileSystemName,TIpcArgs(&aName, aDrive, -1)); 
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemNameReturn, MODULEUID, r, aName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSFILESYSTEMNAME_EFILESYSTEMNAME, "FileSystemName %S", aName.Ptr(), aName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSFILESYSTEMNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -701,12 +683,11 @@
     {
 	if(aFsEnumerator < 0)
         return KErrArgument; //-- see RFs::FileSystemName(). "-1" is a reserved value
-
-    TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemName, MODULEUID, Handle(), aDrive);
+    OstTraceExt2(TRACE_BORDER, EFSRV_EFSSUPPORTEDFILESYSTEMNAME, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
     
     TInt r = SendReceive(EFsFileSystemName,TIpcArgs(&aName, aDrive, aFsEnumerator));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemNameReturn, MODULEUID, r, aName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSFILESYSTEMNAME_ESUPPORTEDFILESYSTEMNAME, "SupportedFileSystemName %S", aName.Ptr(), aName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSUPPORTEDFILESYSTEMNAMERETURN, "r %d", r);
 	return r;
     }
 
@@ -723,7 +704,8 @@
 @return KErrNone, if successful; otherwise one of the other system wide error codes.
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsAddExtension, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDEXTENSION, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSADDEXTENSION_EEXTENSIONNAME, "ExtensionName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	RLoader loader;
 	TInt r = loader.Connect();
 	if (r==KErrNone)
@@ -731,8 +713,7 @@
 		r = loader.SendReceive(ELoadFSExtension, TIpcArgs(0, &aFileName, 0));
 		loader.Close();
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsAddExtensionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDEXTENSIONRETURN, "r %d", r);
 	return r;
 	}
 
@@ -756,10 +737,10 @@
 @see RFs::ExtensionName
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsMountExtension, MODULEUID, Handle(), aExtensionName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTEXTENSION, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTEXTENSION_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	TInt r = SendReceive(EFsMountExtension,TIpcArgs(&aExtensionName,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountExtensionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTEXTENSIONRETURN, "r %d", r);
 	return r;
 	}
 
@@ -780,10 +761,10 @@
 */
 EFSRV_EXPORT_C TInt RFs::DismountExtension(const TDesC& aExtensionName,TInt aDrive)
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsDismountExtension, MODULEUID, Handle(), aExtensionName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSDISMOUNTEXTENSION, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDISMOUNTEXTENSION_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	TInt r = SendReceive(EFsDismountExtension,TIpcArgs(&aExtensionName,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDismountExtensionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTEXTENSIONRETURN, "r %d", r);
 	return r;
 	}
 
@@ -800,10 +781,10 @@
         otrherwise one of the other system-wide error codes.
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRemoveExtension, MODULEUID, Handle(), aExtensionName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEEXTENSION, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREMOVEEXTENSION_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	TInt r = SendReceive(EFsRemoveExtension,TIpcArgs(&aExtensionName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRemoveExtensionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEEXTENSIONRETURN, "r %d", r);
 	return r;
 	}
 
@@ -823,10 +804,10 @@
         KErrNotFound if the extension name is not found;
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsExtensionName, MODULEUID, Handle(), aExtensionName, aDrive, aPos);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSEXTENSIONNAME, "sess %x aDrive %d aPos %x", (TUint) Handle(), (TUint) aDrive, (TUint) aPos);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSEXTENSIONNAME_EEXTENSIONNAME, "ExtensionName %S", aExtensionName.Ptr(), aExtensionName.Length()<<1);
 	TInt r = SendReceive(EFsExtensionName,TIpcArgs(&aExtensionName,aDrive,aPos));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsExtensionNameReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSEXTENSIONNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -850,10 +831,9 @@
         the other system wide error codes.
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFsRemountDrive, MODULEUID, Handle(), aDrive, aMountInfo, aFlags);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSREMOUNTDRIVE, "sess %x aDrive %d aMountInfo %x aFlags %x", (TUint) Handle(), aDrive, (TUint) aMountInfo, (TUint) aFlags);
 	TInt r = SendReceive(EFsRemountDrive,TIpcArgs(aDrive,aMountInfo,aFlags));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRemountDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOUNTDRIVERETURN, "r %d", r);
 	return r;
 	}
 
@@ -899,7 +879,7 @@
 
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChange1, MODULEUID, Handle(), aType, &aStat);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGE1, "sess %x aType %x status %x", (TUint) Handle(), (TUint) aType, (TUint) &aStat);
 	aStat=KRequestPending;
 	// for backward compatibility
 	TNotifyType type = (aType == 0 ? ENotifyEntry : aType);
@@ -907,7 +887,7 @@
 	//This call is to synchronise with the file server when this functions stack varibles can go out of scope
 	SendReceive(EFsSynchroniseDriveThread, TIpcArgs(-1));		
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChange1Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGE1RETURN, "");
 	}
 
 
@@ -966,7 +946,8 @@
 
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChange2, MODULEUID, Handle(), (TUint) aType, (TUint) &aStat, aPathName);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGE2, "sess %x aType %x status %x", (TUint) Handle(), (TUint) aType, (TUint) &aStat);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGE2_EDIRNAME, "Dir %S", aPathName.Ptr(), aPathName.Length()<<1);
 	aStat=KRequestPending;
 	// for backward compatibility
 	TNotifyType type = (aType == 0 ? ENotifyEntry : aType);
@@ -974,7 +955,7 @@
 	//This call is to synchronise with the file server when this functions stack varibles can go out of scope
 	SendReceive(EFsSynchroniseDriveThread, TIpcArgs(-1));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChange2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGE2RETURN, "");
 	}
 
 
@@ -991,10 +972,10 @@
 
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChangeCancel1, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGECANCEL1, "sess %x", Handle());
 	RSessionBase::SendReceive(EFsNotifyChangeCancel);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChangeCancel1Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGECANCEL1RETURN, "");
 	}
 
 
@@ -1015,11 +996,11 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChangeCancel2, MODULEUID, Handle(), &aStat);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGECANCEL2, "sess %x status %x", (TUint) Handle(), (TUint) &aStat);
 	if (aStat==KRequestPending)			//	May be better to ASSERT this?
 		SendReceive(EFsNotifyChangeCancelEx,TIpcArgs(&aStat));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyChangeCancel2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYCHANGECANCEL2RETURN, "");
 	}
 
 
@@ -1070,8 +1051,8 @@
 @see TDriveNumber
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpace, MODULEUID, 
-		Handle(), I64LOW(aThreshold),I64HIGH(aThreshold), aDrive,(TUint) &aStat);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACE, "sess %x aThreshold %x:%x aDrive %d status %x", (TUint) Handle(), (TUint) I64HIGH(aThreshold), (TUint) I64LOW(aThreshold), (TUint) aDrive, (TUint) &aStat);
+		
 	aStat=KRequestPending;
 	TPtrC8 tBuf((TUint8*)&aThreshold,sizeof(TInt64));
 	RSessionBase::SendReceive(EFsNotifyDiskSpace,TIpcArgs(&tBuf,aDrive,&aStat), aStat);
@@ -1081,7 +1062,7 @@
 	SendReceive(EFsSynchroniseDriveThread, TIpcArgs(aDrive));
 
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpaceReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACERETURN, "");
 	}
 
 
@@ -1098,12 +1079,12 @@
 			 notification request.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpaceCancel1, MODULEUID, Handle(), &aStat);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACECANCEL1, "sess %x status %x", (TUint) Handle(), (TUint) &aStat);
 	
 	if(aStat==KRequestPending)
 		SendReceive(EFsNotifyDiskSpaceCancel,TIpcArgs(&aStat));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpaceCancel1Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACECANCEL1RETURN, "");
 	}
 
 
@@ -1117,10 +1098,10 @@
 Outstanding requests complete with KErrCancel.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpaceCancel2, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACECANCEL2, "sess %x", Handle());
 	SendReceive(EFsNotifyDiskSpaceCancel,TIpcArgs(NULL));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDiskSpaceCancel2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISKSPACECANCEL2RETURN, "");
 	}
 
 
@@ -1146,10 +1127,9 @@
 @return KErrNone, successful, otherwise one of the other system-wide error codes.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsDriveList1, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDRIVELIST1, "sess %x", Handle());
 	TInt r = SendReceive(EFsDriveList,TIpcArgs(&aList, KDriveAttExclude|KDriveAttRemote|KDriveAttHidden));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDriveList1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDRIVELIST1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1180,10 +1160,9 @@
 		KErrArgument, If aFlags contains an invalid attribute combination.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsDriveList2, MODULEUID, Handle(), aFlags);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSDRIVELIST2, "sess %x aFlags %x", (TUint) Handle(), (TUint) aFlags);
 	TInt r = SendReceive(EFsDriveList,TIpcArgs(&aList,aFlags));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDriveList2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDRIVELIST2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1213,12 +1192,10 @@
 @see RFs::Volume
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsDrive, MODULEUID, Handle(), aDrive);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSDRIVE, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TPckg<TDriveInfo> m(anInfo);
 	TInt r = SendReceive(EFsDrive,TIpcArgs(&m,aDrive));
-
-	TRACERET4(UTF::EBorder, UTraceModuleEfsrv::EFsDriveReturn, MODULEUID, r, anInfo.iDriveAtt, anInfo.iMediaAtt, anInfo.iType);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSDRIVERETURN, "r %d driveAtt %x mediaAtt %x type %x", r, (TUint) anInfo.iDriveAtt, (TUint) anInfo.iMediaAtt, (TUint) anInfo.iType);
 	return r;
 	}
 
@@ -1250,13 +1227,11 @@
 @see RFs::Drive
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsVolume1, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSVOLUME1, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TPckg<TVolumeInfo> v(aVol);
     TInt r = SendReceive(EFsVolume,TIpcArgs(&v,aDrive,NULL));
-
-	TRACE7(UTF::EBorder, UTraceModuleEfsrv::EFsVolume1Return, MODULEUID, 
-		r, aVol.iUniqueID, I64LOW(aVol.iSize), I64HIGH(aVol.iSize),
-		I64LOW(aVol.iFree), I64HIGH(aVol.iFree), aVol.iFileCacheFlags);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSVOLUME1RETURNA, "r %d iSize %x:%x iFree %x:%x", (TUint) r, (TUint) I64HIGH(aVol.iSize), (TUint) I64LOW(aVol.iSize), (TUint) I64HIGH(aVol.iFree), (TUint) I64LOW(aVol.iFree));
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSVOLUME1RETURNB, "iUniqueID %x iFileCacheFlags %x", (TUint) aVol.iUniqueID, (TUint) aVol.iFileCacheFlags);
 	return r;
 	}
 
@@ -1279,12 +1254,12 @@
 */
 EFSRV_EXPORT_C void RFs::Volume(TVolumeInfo& aVol,TInt aDrive, TRequestStatus& aStat) const
     {
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsVolume2, MODULEUID, Handle(), aDrive, &aStat);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSVOLUME2, "sess %x aDrive %d status %x", (TUint) Handle(), (TUint) aDrive, (TUint) &aStat);
 	TPckg<TVolumeInfo> v(aVol);
     aStat=KRequestPending;
     RSessionBase::SendReceive(EFsVolume,TIpcArgs(&v,aDrive,&aStat), aStat);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsVolume2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSVOLUME2RETURN, "");
     }
 
 
@@ -1314,12 +1289,11 @@
 @see RFs::Volume
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsSetVolumeLabel, MODULEUID, 
-		Handle(), aName, aDrive);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETVOLUMELABEL, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+		
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETVOLUMELABEL_EVOLUMENAME, "VolumeName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = SendReceive(EFsSetVolume,TIpcArgs(&aName,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetVolumeLabelReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETVOLUMELABELRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1350,10 +1324,10 @@
 @see RFs::Drive
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsSubst, MODULEUID, Handle(), aPath, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSUBST, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSUBST_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsSubst,TIpcArgs(&aPath,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSubstReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSUBSTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1402,10 +1376,10 @@
 @capability Dependent If aPath is /Resource then Tcb capability is required.
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsSetSubst, MODULEUID, Handle(), aPath, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETSUBST, "sess %x aPath %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETSUBST_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsSetSubst,TIpcArgs(&aPath,aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetSubstReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSUBSTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1433,10 +1407,11 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRealName, MODULEUID, Handle(), aName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREALNAME, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREALNAME_EFILENAME1, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = SendReceive(EFsRealName,TIpcArgs(&aName,&aResult));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRealNameReturn, MODULEUID, r, aResult);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREALNAME_EFILENAME2, "FileName %S", aResult.Ptr(), aResult.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREALNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -1460,10 +1435,10 @@
 */
 EFSRV_EXPORT_C TInt RFs::GetMediaSerialNumber(TMediaSerialNumber& aSerialNum, TInt aDrive)
     {
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsGetMediaSerialNumber, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSGETMEDIASERIALNUMBER, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
     TInt r = SendReceive(EFsGetMediaSerialNumber, TIpcArgs(&aSerialNum, aDrive));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetMediaSerialNumberReturn, MODULEUID, r, aSerialNum);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETMEDIASERIALNUMBERRETURN, "r %d", r);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETMEDIASERIALNUMBER_ESERIALNUMBER, "SerialNum %x", aSerialNum.Ptr(), aSerialNum.Length());
 	return r;
     }
 
@@ -1485,10 +1460,10 @@
         system-wide error codes.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsSessionPath, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSESSIONPATH, "sess %x", Handle());
 	TInt r = SendReceive(EFsSessionPath,TIpcArgs(&aPath));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsSessionPathReturn, MODULEUID, r, aPath);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSESSIONPATHRETURN, "r %d", r);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSESSIONPATH_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	return r;
 	}
 
@@ -1526,10 +1501,10 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsSetSessionPath, MODULEUID, Handle(), aPath);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSESSIONPATH, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETSESSIONPATH_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsSetSessionPath,TIpcArgs(&aPath));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetSessionPathReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSESSIONPATHRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1603,10 +1578,10 @@
 */
 EFSRV_EXPORT_C TInt RFs::MkDir(const TDesC& aPath)
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsMkDir, MODULEUID, Handle(), aPath);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMKDIR, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMKDIR_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsMkDir,TIpcArgs(&aPath,NULL));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMkDirReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMKDIRRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1653,10 +1628,10 @@
 */
 EFSRV_EXPORT_C TInt RFs::MkDirAll(const TDesC& aPath)
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsMkDirAll, MODULEUID, Handle(), aPath);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMKDIRALL, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMKDIRALL_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsMkDir,TIpcArgs(&aPath,TRUE));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMkDirAllReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMKDIRALLRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1707,10 +1682,10 @@
 @see CFileMan
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRmDir, MODULEUID, Handle(), aPath);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRMDIR, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSRMDIR_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = SendReceive(EFsRmDir,TIpcArgs(&aPath));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRmDirReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRMDIRRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1825,9 +1800,8 @@
 @see TEntryKey
 */
 	{
-	TRACEMULT6(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir1, MODULEUID, 
-		Handle(), aName, aUidType[0].iUid, aUidType[1].iUid, aUidType[2].iUid, aKey);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSGETDIR1, "sess %x aUidType0 %x aUidType1 %x aUidType2 %x aKey %x", (TUint) Handle(), (TUint) aUidType[0].iUid, (TUint) aUidType[1].iUid, (TUint) aUidType[2].iUid, (TUint) aKey);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETDIR1_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	RDir d;
 	TRAPD(r,GetDirL(aName,aUidType,aKey,aFileList,d))
 	d.Close();
@@ -1836,8 +1810,7 @@
 		delete aFileList;
 		aFileList=NULL;
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETDIR1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1883,8 +1856,8 @@
 @see TEntryKey
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir2, MODULEUID, Handle(), aName, anAttMask, aKey);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSGETDIR2, "sess %x anAttMask %x aKey %x", (TUint) Handle(), (TUint) anAttMask, (TUint) aKey);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETDIR2_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	RDir d;
 	if ((aKey&0xff)==ESortByUid)
 		anAttMask|=KEntryAttAllowUid;
@@ -1895,8 +1868,7 @@
 		delete aFileList;
 		aFileList=NULL;
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETDIR2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1949,8 +1921,8 @@
 @see TEntryKey
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir3, MODULEUID, Handle(), aName, anAttMask, aKey);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSGETDIR3, "sess %x anAttMask %x aKey %x", (TUint) Handle(), (TUint) anAttMask, (TUint) aKey);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETDIR3_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 	RDir d;
 	if (aKey&ESortByUid)
 		anAttMask|=KEntryAttAllowUid;
@@ -1963,8 +1935,7 @@
 		delete aDirList;
 		aDirList=NULL;
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsGetDir3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETDIR3RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2011,13 +1982,13 @@
         system-wide error codes.
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsParse1, MODULEUID, Handle(), aName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPARSE1, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSPARSE1_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 	TFileName session_path;
 	TInt r = SessionPath(session_path);
 	if (r==KErrNone)
 		r = aParse.Set(aName, NULL, &session_path);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsParse1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPARSE1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2066,13 +2037,14 @@
         system-wide error codes.
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsParse2, MODULEUID, Handle(), aName, aRelated);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPARSE2, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSPARSE2_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSPARSE2_ERELATED, "Related %S", aRelated.Ptr(), aRelated.Length()<<1);
 	TFileName session_path;
 	TInt r = SessionPath(session_path);
 	if (r==KErrNone)
 		r = aParse.Set(aName, &aRelated, &session_path);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsParse2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPARSE2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2105,10 +2077,10 @@
 @see CFileMan        
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsDelete, MODULEUID, Handle(), aName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDELETE, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDELETE_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = SendReceive(EFsDelete,TIpcArgs(&aName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDeleteReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDELETERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2167,15 +2139,15 @@
 @see CFileMan        
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsRename, MODULEUID, Handle(), anOldName, aNewName);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRENAME, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSRENAME_EOLDNAME, "OldName %S", anOldName.Ptr(), anOldName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSRENAME_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 	TInt r;
 	if (anOldName.Length() <= 0 || aNewName.Length() <= 0 )
 		r = KErrBadName;
 	else
 		r = SendReceive(EFsRename,TIpcArgs(&anOldName,&aNewName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRenameReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRENAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2226,10 +2198,11 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsReplace, MODULEUID, Handle(), anOldName, aNewName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREPLACE, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREPLACE_EOLDNAME, "OldName %S", anOldName.Ptr(), anOldName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREPLACE_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 	TInt r = SendReceive(EFsReplace,TIpcArgs(&anOldName,&aNewName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsReplaceReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREPLACERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2256,14 +2229,13 @@
 @see KEntryAttNormal
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsAtt, MODULEUID, Handle(), aName);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSATT, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSATT_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TEntry e;
 	TInt r=Entry(aName,e);
 	if (r==KErrNone)
 		aVal=e.iAtt;
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFsAttReturn, MODULEUID, r, aVal);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSATTRETURN, "r %d aVal %x", (TUint) r, (TUint) aVal);
 	return r;
 	}
 
@@ -2303,12 +2275,10 @@
 
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsSetAtt, MODULEUID, 
-		Handle(), aName, aSetAttMask, aClearAttMask);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSSETATT, "sess %x aSetAttMask %x aClearAttMask %x", (TUint) Handle(), (TUint) aSetAttMask, (TUint) aClearAttMask);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETATT_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
  	TInt r = SetEntry(aName,TTime(0),aSetAttMask,aClearAttMask);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetAttReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETATTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2336,14 +2306,13 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsModified, MODULEUID, Handle(), aName);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMODIFIED, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMODIFIED_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TEntry e;
 	TInt r=Entry(aName,e);
 	if (r==KErrNone)
 		aTime=e.iModified;
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFsModifiedReturn, MODULEUID, r, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()));
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSMODIFIEDRETURN, "r %d aTime %x:%x ", (TUint) r, (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
 	return r;
 	}
 
@@ -2370,11 +2339,10 @@
 
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsSetModified, MODULEUID, Handle(), aName, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()) );
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSSETMODIFIED, "sess %x aTime %x:%x ", (TUint) Handle(), (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()) );
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETMODIFIED_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = SetEntry(aName,aTime,KEntryAttModified,0);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetModifiedReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETMODIFIEDRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2403,14 +2371,11 @@
 					  readable with AllFiles capability or if <n> matches the process' SID.
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsEntry, MODULEUID, Handle(), aName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSENTRY, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSENTRY_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TPckg<TEntry> e(anEntry);
 	TInt r = SendReceive(EFsEntry,TIpcArgs(&aName,&e));
-
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFsEntryReturn, MODULEUID, 
-		r, anEntry.iAtt, 
-		I64LOW(anEntry.iModified.Int64()), I64HIGH(anEntry.iModified.Int64()), 
-		anEntry.iSize);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSENTRYRETURN, "r %d att %x modified %x:%x  size %d", (TUint) r, (TUint) anEntry.iAtt, (TUint) I64HIGH(anEntry.iModified.Int64()), (TUint) I64LOW(anEntry.iModified.Int64()), (TUint) anEntry.iSize);
 	return r;
 	}
 
@@ -2450,16 +2415,12 @@
 @see KEntryAttVolume
 */
 	{
-	TRACEMULT6(UTF::EBorder, UTraceModuleEfsrv::EFsSetEntry, MODULEUID, 
-		Handle(), aName, 
-		I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), 
-		aSetAttMask, aClearAttMask);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSSETENTRY, "sess %x aTime %x:%x  aSetAttMask %x aClearAttMask %x", (TUint) Handle(), (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()), (TUint) aSetAttMask, (TUint) aClearAttMask);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETENTRY_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	__ASSERT_ALWAYS((aSetAttMask&aClearAttMask)==0,Panic(EAttributesIllegal));
 	TPtrC8 timeBuf((TUint8*)&aTime,sizeof(TTime));
 	TInt r = SendReceive(EFsSetEntry,TIpcArgs(&aName,&timeBuf,aSetAttMask,aClearAttMask));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetEntryReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETENTRYRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2496,15 +2457,14 @@
 */
 EFSRV_EXPORT_C TInt RFs::ReadFileSection(const TDesC& aName,TInt64 aPos,TDes8& aDes,TInt aLength) const
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSection, MODULEUID, 
-		Handle(), aName, I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSREADFILESECTION, "sess %x aPos %x:%x aLength %d", (TUint) Handle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), aLength);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREADFILESECTION_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 #ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
 	if(aPos > KMaxTInt)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSectionReturn, MODULEUID, KErrTooBig);
+		OstTrace1(TRACE_BORDER, EFSRV_EFSREADFILESECTIONRETURN1, "r %d", KErrTooBig);
 		return KErrTooBig;
 		}
 	if((aPos + aLength) > KMaxTInt)
@@ -2517,7 +2477,7 @@
 	else
 		{
 		aDes.Zero();
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSectionReturn, MODULEUID, KErrNone);
+		OstTrace1(TRACE_BORDER, EFSRV_EFSREADFILESECTIONRETURN2, "r %d", KErrNone);
 		return(KErrNone);
 		}
 		
@@ -2533,19 +2493,17 @@
 		TPckgC<TInt64> pkPos(aPos);
 		r = SendReceive(EFsReadFileSection|KIpcArgSlot2Desc,TIpcArgs(&aDes,&aName,&pkPos,aLength));
 		}
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSectionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREADFILESECTIONRETURN3, "r %d", r);
 	return r;
 	}
 /**
 Maintained for BC
-
 @internalTechnology
 */
 EFSRV_EXPORT_C TInt RFs::ReadFileSection_RESERVED(const TDesC& aName,TInt aPos,TDes8& aDes,TInt aLength) const
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSection, MODULEUID, 
-		Handle(), aName, aPos, 0, aLength);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSREADFILESECTION_RESERVED, "sess %x aPos %x aLength %d", (TUint) Handle(), (TUint) aPos, aLength);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREADFILESECTION_RESERVED_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 	if (aLength)	//	Number of characters to read
@@ -2555,15 +2513,14 @@
 	else
 		{
 		aDes.Zero();
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSectionReturn, MODULEUID, KErrNone);
+		OstTrace1(TRACE_BORDER, EFSRV_EFSREADFILESECTION_RESERVED_RETURN1, "r %d", KErrNone);
 		return(KErrNone);
 		}
 		
 	__ASSERT_ALWAYS(aDes.MaxLength()>=aLength,Panic(EBadLength));
 		
 	TInt r = SendReceive(EFsReadFileSection,TIpcArgs(&aDes,&aName,aPos,aLength));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsReadFileSectionReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREADFILESECTION_RESERVED_RETURN2, "r %d", r);
 	return r;
 	}
 
@@ -2578,11 +2535,11 @@
 to the file server, and before any resources are opened.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCountMarkStart, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRESOURCECOUNTMARKSTART, "sess %x", Handle());
 	
 	RSessionBase::SendReceive(EFsResourceCountMarkStart);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCountMarkStartReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSRESOURCECOUNTMARKSTARTRETURN, "");
 	}
 
 
@@ -2597,11 +2554,10 @@
        count checking is not equal to the number of resources closed.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCountMarkEnd, MODULEUID, Handle());
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRESOURCECOUNTMARKEND, "sess %x", Handle());
 	RSessionBase::SendReceive(EFsResourceCountMarkEnd);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCountMarkEndReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSRESOURCECOUNTMARKENDRETURN, "");
 	}
 
 
@@ -2618,14 +2574,12 @@
 @return The number of resources currently open.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCount, MODULEUID, Handle());
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRESOURCECOUNT, "sess %x", Handle());
 	TInt count;
 	TPckg<TInt> pckg(count);
 	SendReceive(EFsResourceCount,TIpcArgs(&pckg));
 	TInt r = *(TInt*)pckg.Ptr();
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsResourceCountReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRESOURCECOUNTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2664,10 +2618,10 @@
 */
 EFSRV_EXPORT_C TInt RFs::CheckDisk(const TDesC& aDrive) const
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsCheckDisk, MODULEUID, Handle(), aDrive);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCHECKDISK, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSCHECKDISK_EDIRNAME, "Dir %S", aDrive.Ptr(), aDrive.Length()<<1);
 	TInt r = SendReceive(EFsCheckDisk,TIpcArgs(&aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsCheckDiskReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCHECKDISKRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2714,10 +2668,10 @@
 Therefore, do not treat ScanDrive on removable media as a generic "disk repair utility".
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsScanDrive, MODULEUID, Handle(), aDrive);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSCANDRIVE, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSCANDRIVE_EDIRNAME, "Dir %S", aDrive.Ptr(), aDrive.Length()<<1);
 	TInt r = SendReceive(EFsScanDrive,TIpcArgs(&aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsScanDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSCANDRIVERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2746,10 +2700,11 @@
 					  have the relevant SID capability AllFiles is required
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetShortName, MODULEUID, Handle(), aLongName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETSHORTNAME, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETSHORTNAME_ELONGNAME, "LongName %S", aLongName.Ptr(), aLongName.Length()<<1);
 	TInt r = SendReceive(EFsGetShortName,TIpcArgs(&aLongName,&aShortName));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetShortNameReturn, MODULEUID, r, aShortName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETSHORTNAME_ESHORTNAME, "ShortName %S", aShortName.Ptr(), aShortName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETSHORTNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2778,10 +2733,11 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetLongName, MODULEUID, Handle(), aShortName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETLONGNAME, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETLONGNAME_ESHORTNAME, "ShortName %S", aShortName.Ptr(), aShortName.Length()<<1);
 	TInt r = SendReceive(EFsGetLongName,TIpcArgs(&aShortName,&aLongName));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetLongNameReturn, MODULEUID, r, aLongName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETLONGNAME_ELONGNAME, "LongName %S", aLongName.Ptr(), aLongName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETLONGNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -2814,11 +2770,11 @@
 @see RFs::Replace
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsIsFileOpen, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISFILEOPEN, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSISFILEOPEN_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	TPckg<TBool> b(anAnswer);
 	TInt r = SendReceive(EFsIsFileOpen,TIpcArgs(&aFileName,&b));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFsIsFileOpenReturn, MODULEUID, r, anAnswer);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSISFILEOPENRETURN, "r %d anAnswer %d", (TUint) r, (TUint) anAnswer);
 	return r;
 	}
 
@@ -2850,14 +2806,12 @@
 @return True if notification in effect, false if not.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsGetNotifyUser, MODULEUID, Handle());
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETNOTIFYUSER, "sess %x", Handle());
 	TInt notifyUser;
 	TPckg<TInt> pckgNotify(notifyUser);
 	SendReceive(EFsGetNotifyUser,TIpcArgs(&pckgNotify));
 	TBool r = notifyUser;
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsGetNotifyUserReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETNOTIFYUSERRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2874,10 +2828,10 @@
               EFalse, for no notification.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsSetNotifyUser, MODULEUID, Handle(), aValue);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETNOTIFYUSER, "sess %x aValue %d", (TUint) Handle(), (TUint) aValue);
 	SendReceive(EFsSetNotifyUser,TIpcArgs(aValue));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsSetNotifyUserReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSSETNOTIFYUSERRETURN, "");
 	}
 
 
@@ -2907,8 +2861,8 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsIsFileInRom, MODULEUID, Handle(), aFileName);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISFILEINROM, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSISFILEINROM_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	TPckgBuf<TUint8*> start;
 
 	TUint8* r;
@@ -2917,7 +2871,7 @@
 	else
 		r = start();
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsIsFileInRomReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISFILEINROMRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2957,7 +2911,8 @@
 */
 EFSRV_EXPORT_C TBool RFs::IsValidName(const TDesC& aFileName) const
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName1, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISVALIDNAME1, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSISVALIDNAME1_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	TBool returnInvalidChar=EFalse;
 	TPckg<TBool> bPckg(returnInvalidChar);
 	TBool b;
@@ -2965,7 +2920,7 @@
 		b = EFalse;
 	else
 		b = ETrue;
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName1Return, MODULEUID, b);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISVALIDNAME1RETURN, "r %d", b);
 	return b;
 	}
 
@@ -3008,7 +2963,8 @@
 */
 EFSRV_EXPORT_C TBool RFs::IsValidName(const TDesC& aFileName,TText& aBadChar) const
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName2, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISVALIDNAME2, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSISVALIDNAME2_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 	TBool returnInvalidChar=ETrue;
 	TPckg<TBool> boolPckg(returnInvalidChar);
 	TPckg<TText> textPckg(aBadChar);
@@ -3017,7 +2973,7 @@
 		b = EFalse;
 	else 
 		b = ETrue;
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName2Return, MODULEUID, b, aBadChar);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSISVALIDNAME2RETURN, "r %d aBadChar %x", (TUint) b, (TUint) aBadChar);
 	return b;
 	}
 /**
@@ -3066,14 +3022,15 @@
 */
 EFSRV_EXPORT_C TBool RFs::IsValidName(const TDesC& aName, TNameValidParam& aParam )
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName3, MODULEUID, Handle(), aName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSISVALIDNAME3, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSISVALIDNAME3_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TPckg<TNameValidParam> paramPckg(aParam);
 	TBool b;
 	if (SendReceive(EFsIsValidName,TIpcArgs(&aName,NULL,NULL,&paramPckg))!=KErrNone)
 		b = EFalse;
 	else
 		b = ETrue;
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsIsValidName3Return, MODULEUID, b, aParam.ErrorCode());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSISVALIDNAME3RETURN, "r %d err %d", (TUint) b, (TUint) aParam.ErrorCode());
 	return b;
 	}
 
@@ -3099,10 +3056,10 @@
 @see TDriveNumber
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsGetDriveName, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSGETDRIVENAME, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TInt r = SendReceive(EFsGetDriveName,TIpcArgs(aDrive,&aDriveName));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsGetDriveNameReturn, MODULEUID, r, aDriveName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSGETDRIVENAME_EDRIVENAME, "DriveName %S", aDriveName.Ptr(), aDriveName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETDRIVENAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3130,10 +3087,10 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsSetDriveName, MODULEUID, Handle(), aDrive, aDriveName);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETDRIVENAME, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSETDRIVENAME_EDRIVENAME, "DriveName %S", aDriveName.Ptr(), aDriveName.Length()<<1);
 	TInt r = SendReceive(EFsSetDriveName,TIpcArgs(aDrive,&aDriveName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetDriveNameReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETDRIVENAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3164,10 +3121,9 @@
 
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsLockDrive, MODULEUID, Handle(), aDrv, aStore);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSLOCKDRIVE, "sess %x aDrv %d aStore %d", (TUint) Handle(), (TUint) aDrv, (TUint) aStore);
 	TInt r = SendReceive(EFsLockDrive,TIpcArgs(aDrv,&aOld,&aNew,aStore));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsLockDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSLOCKDRIVERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3196,10 +3152,9 @@
 
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsUnlockDrive, MODULEUID, Handle(), aDrive, aStore);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSUNLOCKDRIVE, "sess %x aDrv %d aStore %d", (TUint) Handle(), (TUint) aDrive, (TUint) aStore);
 	TInt r = SendReceive(EFsUnlockDrive,TIpcArgs(aDrive,&aPassword,aStore));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsUnlockDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSUNLOCKDRIVERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3225,10 +3180,9 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsClearPassword, MODULEUID, Handle(), aDrv);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSCLEARPASSWORD, "sess %x aDrv %d", (TUint) Handle(), (TUint) aDrv);
 	TInt r = SendReceive(EFsClearPassword,TIpcArgs(aDrv,&aPswd));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsClearPasswordReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCLEARPASSWORDRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3253,10 +3207,9 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsErasePassword, MODULEUID, Handle(), aDrv);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSERASEPASSWORD, "sess %x aDrv %d", (TUint) Handle(), (TUint) aDrv);
 	TInt r = SendReceive(EFsErasePassword,TIpcArgs(aDrv));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsErasePasswordReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSERASEPASSWORDRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3273,11 +3226,11 @@
 // Notify file server that startup initialisation has been completed
 //
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsStartupInitComplete, MODULEUID, Handle(), &aStat);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSTARTUPINITCOMPLETE, "sess %x status %x", (TUint) Handle(), (TUint) &aStat);
 	aStat=KRequestPending;
 	RSessionBase::SendReceive(EFsStartupInitComplete,aStat);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsStartupInitCompleteReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSSTARTUPINITCOMPLETERETURN, "");
 	}
 
 
@@ -3288,11 +3241,11 @@
 // Set the local drive mapping
 //
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsSetLocalDriveMapping, MODULEUID, Handle(), aMapping);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETLOCALDRIVEMAPPING, "sess %x", Handle());
+	
+	OstTraceData( TRACE_BORDER, EFSRV_EFSSETLOCALDRIVEMAPPING_ELOCALDRIVEMAPPING, "aMapping %{int32[]}", aMapping.Ptr(), aMapping.Length());
 	TInt r = SendReceive(EFsSetLocalDriveMapping,TIpcArgs(&aMapping));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetLocalDriveMappingReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETLOCALDRIVEMAPPINGRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3314,10 +3267,9 @@
 */
 EFSRV_EXPORT_C TInt RFs::FinaliseDrive(TInt aDriveNo, TFinaliseDrvMode aMode) const
     {
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsFinaliseDrive, MODULEUID, Handle(), aDriveNo, aMode);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSFINALISEDRIVE, "sess %x aDriveNo %d aMode %d", (TUint) Handle(), (TUint) aDriveNo, (TUint) aMode);
     TInt r = SendReceive(EFsFinaliseDrive,TIpcArgs(aDriveNo, (TInt)aMode));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsFinaliseDriveReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSFINALISEDRIVERETURN, "r %d", r);
 	return r;
     }
 
@@ -3333,7 +3285,7 @@
 */
 EFSRV_EXPORT_C TInt RFs::FinaliseDrives()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsFinaliseDrives, MODULEUID, Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_EFSFINALISEDRIVES, "sess %x", Handle());
 	TInt nRes;
 	TDriveList driveList;
 	TDriveInfo driveInfo;
@@ -3341,7 +3293,7 @@
 	nRes=DriveList(driveList);
 	if(nRes != KErrNone)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsFinaliseDrivesReturn, MODULEUID, nRes);
+		OstTrace1(TRACE_BORDER, EFSRV_EFSFINALISEDRIVESRETURN1, "r %d", nRes);
 	    return nRes; //-- unable to obtain drives list
 		}
 	
@@ -3363,7 +3315,7 @@
 	    }
 	
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsFinaliseDrivesReturn, MODULEUID, KErrNone);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSFINALISEDRIVESRETURN2, "r %d", KErrNone);
 	return 	KErrNone;
 	}
 
@@ -3390,10 +3342,11 @@
 @capability DiskAdmin
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsSwapFileSystem, MODULEUID, Handle(), aOldFileSystemName, aNewFileSystemName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSWAPFILESYSTEM, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSWAPFILESYSTEM_EOLDNAME, "OldName %S", aOldFileSystemName.Ptr(), aOldFileSystemName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSSWAPFILESYSTEM_ENEWNAME, "NewName %S", aNewFileSystemName.Ptr(), aNewFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsSwapFileSystem,TIpcArgs(&aNewFileSystemName,aDrive,&aOldFileSystemName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSwapFileSystemReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSWAPFILESYSTEMRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3418,11 +3371,10 @@
 @capability DiskAdmin
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EFsAddCompositeMount, MODULEUID, 
-		Handle(), aFileSystemName, aLocalDriveToMount, aCompositeDrive, aSync);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSADDCOMPOSITEMOUNT, "sess %x aLocalDriveToMount %d aCompositeDrive %d aSync %d", (TUint) Handle(), aLocalDriveToMount, aCompositeDrive, aSync);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSADDCOMPOSITEMOUNT_EFILESYSTEMNAME, "FileSystemName %S", aFileSystemName.Ptr(), aFileSystemName.Length()<<1);
 	TInt r = SendReceive(EFsAddCompositeMount,TIpcArgs(&aFileSystemName,aLocalDriveToMount,aCompositeDrive,aSync));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsAddCompositeMountReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDCOMPOSITEMOUNTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3461,10 +3413,9 @@
         any of the possible error return codes from TDrive::Volume()
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsReserveDriveSpace, MODULEUID, Handle(), aDriveNo, aSpace);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSRESERVEDRIVESPACE, "sess %x aDriveNo %d aSpace %d", (TUint) Handle(), (TUint) aDriveNo, (TUint) aSpace);
 	TInt r = SendReceive(EFsReserveDriveSpace, TIpcArgs(aDriveNo, aSpace));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsReserveDriveSpaceReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRESERVEDRIVESPACERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3482,10 +3433,9 @@
         KErrPermissionDenied if the drive has no spare reserved space
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsGetReserveAccess, MODULEUID, Handle(), aDriveNo);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSGETRESERVEACCESS, "sess %x aDriveNo %d", (TUint) Handle(), (TUint) aDriveNo);
 	TInt r = SendReceive(EFsGetReserveAccess, TIpcArgs(aDriveNo));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsGetReserveAccessReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSGETRESERVEACCESSRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3499,10 +3449,9 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsReleaseReserveAccess, MODULEUID, Handle(), aDriveNo);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSRELEASERESERVEACCESS, "sess %x aDriveNo %d", (TUint) Handle(), (TUint) aDriveNo);
 	TInt r = SendReceive(EFsReleaseReserveAccess, TIpcArgs(aDriveNo));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsReleaseReserveAccessReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSRELEASERESERVEACCESSRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3559,7 +3508,7 @@
 */
 EFSRV_EXPORT_C void RFs::NotifyDismount(TInt aDrive, TRequestStatus& aStat, TNotifyDismountMode aMode /*=EFsDismountRegisterClient*/) const
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismount, MODULEUID, Handle(), aDrive, &aStat, aMode);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNT, "sess %x aDrive %d status %x aMode %d", (TUint) Handle(), aDrive, (TUint) &aStat, (TInt) aMode);
 	aStat = KRequestPending;
 	RSessionBase::SendReceive(EFsNotifyDismount, TIpcArgs(aDrive,aMode,&aStat), aStat);
 	// This call is to synchronise with the driver thread as the corresponding cancel function (NotifyDismountCancel)
@@ -3567,7 +3516,7 @@
 	// This call guarantees that the notify request has been added to queue.
 	SendReceive(EFsSynchroniseDriveThread, TIpcArgs(aDrive));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismountReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNTRETURN, "");
 	}
 
 
@@ -3582,12 +3531,12 @@
 */
 EFSRV_EXPORT_C void RFs::NotifyDismountCancel(TRequestStatus& aStat) const
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismountCancel1, MODULEUID, Handle(), &aStat);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNTCANCEL1, "sess %x status %x", (TUint) Handle(), (TUint) &aStat);
 	
 	if (aStat == KRequestPending)
 		SendReceive(EFsNotifyDismountCancel, TIpcArgs(&aStat));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismountCancel1Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNTCANCEL1RETURN, "");
 	}
 
 
@@ -3599,11 +3548,10 @@
 */
 EFSRV_EXPORT_C void RFs::NotifyDismountCancel() const
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismountCancel2, MODULEUID, Handle());
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNTCANCEL2, "sess %x", Handle());
 	SendReceive(EFsNotifyDismountCancel, TIpcArgs(NULL));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsNotifyDismountCancel2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSNOTIFYDISMOUNTCANCEL2RETURN, "");
 	}
 
 
@@ -3623,10 +3571,9 @@
 */
 EFSRV_EXPORT_C TInt RFs::AllowDismount(TInt aDrive) const
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsAllowDismount, MODULEUID, Handle(), aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSALLOWDISMOUNT, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TInt r = SendReceive(EFsAllowDismount, TIpcArgs(aDrive));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsAllowDismountReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSALLOWDISMOUNTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3647,10 +3594,9 @@
 @return KErrNone if successful, KErrPermissionDenied if called outside estart
 */
     {
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFsSetStartupConfiguration, MODULEUID, Handle(), aCommand, aParam1, aParam2);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFSSETSTARTUPCONFIGURATION, "sess %x aCommand %d aParam1 %x aParam2 %x", (TUint) Handle(), aCommand, (TUint) aParam1, (TUint) aParam2);
     TInt r = SendReceive(EFsSetStartupConfiguration, TIpcArgs(aCommand,aParam1,aParam2));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetStartupConfigurationReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETSTARTUPCONFIGURATIONRETURN, "r %d", r);
 	return r;
     }
 
@@ -3670,10 +3616,9 @@
 @see RFs::NotifyChange
  */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsSetNotifyChange, MODULEUID, Handle(), aNotifyChange);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSSETNOTIFYCHANGE, "sess %x aNotifyChange %d", (TUint) Handle(), (TUint) aNotifyChange);
 	TInt r = SendReceive(EFsSetSessionFlags, TIpcArgs(aNotifyChange ? EFsSessionNotifyChange: 0, aNotifyChange ? 0 : EFsSessionNotifyChange));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsSetNotifyChangeReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSSETNOTIFYCHANGERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3707,10 +3652,9 @@
 @capability KDiskAdmin
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsInitialisePropertiesFile, MODULEUID, Handle(), aPtr.Ptr(), aPtr.Length());
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSINITIALISEPROPERTIESFILE, "sess %x filePtr %x fileLen %d", (TUint) Handle(), (TUint) aPtr.Ptr(), (TUint) aPtr.Length());
 	TInt r = SendReceive(EFsInitialisePropertiesFile, TIpcArgs(aPtr.Ptr(), aPtr.Length(), ETrue));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsInitialisePropertiesFileReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSINITIALISEPROPERTIESFILERETURN, "r %d", r);
 	return r;
 	}
 
@@ -3729,10 +3673,9 @@
 @see TVolumeIOParamInfo
  */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsQueryVolumeInfoExt, MODULEUID, Handle(), aDrive, aCommand);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSQUERYVOLUMEINFOEXT, "sess %x aDrive %d aCommand %d", (TUint) Handle(), (TUint) aDrive, (TUint) aCommand);
 	TInt r = SendReceive(EFsQueryVolumeInfoExt, TIpcArgs(aDrive, aCommand, &aInfo));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsQueryVolumeInfoExtReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSQUERYVOLUMEINFOEXTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3751,8 +3694,7 @@
 @return KErrNone if successful; otherwise, another system wide error code is returned.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFsVolumeIOParam, MODULEUID, Handle(), aDrive);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSVOLUMEIOPARAM, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 	TInt r = KErrNone;
 
 	if (!IsValidDrive(aDrive))
@@ -3765,9 +3707,8 @@
 		if (r == KErrNone)
 			aParamInfo = infoPckg();
 		}
-
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFsVolumeIOParamReturn, MODULEUID, 
-		r, aParamInfo.iBlockSize, aParamInfo.iClusterSize, aParamInfo.iRecReadBufSize, aParamInfo.iRecWriteBufSize);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFSVOLUMEIOPARAMRETURN, "r %d iBlockSize %d iClusterSize %d iRecReadBufSize %d iRecWriteBufSize %d", (TUint) r, (TUint) aParamInfo.iBlockSize, (TUint) aParamInfo.iClusterSize, (TUint) aParamInfo.iRecReadBufSize, (TUint) aParamInfo.iRecWriteBufSize);
+		
 	return r;
 	}
 
@@ -3796,7 +3737,7 @@
 */
 EFSRV_EXPORT_C TInt RFs::FileSystemSubType(TInt aDrive, TDes& aName) const
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemSubType, MODULEUID, Handle(), aDrive, aName);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSFILESYSTEMSUBTYPE, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
 
 	TInt r = KErrNone;
 
@@ -3810,8 +3751,11 @@
 		if (r == KErrNone || r == KErrNotSupported)
 			aName = namePckg();
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsFileSystemSubTypeReturn, MODULEUID, r);
+	
+	OstTraceData(TRACE_BORDER, EFSRV_EFSFILESYSTEMSUBTYPE_EFILESYSTEMNAME, "FileSystemName %S", aName.Ptr(), aName.Length()<<1);
+
+	OstTrace1(TRACE_BORDER, EFSRV_EFSFILESYSTEMSUBTYPERETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -3894,14 +3838,21 @@
 	return SendReceive(EFsDismountProxyDrive,TIpcArgs(aProxyDriveNumber));
 	}
 
+
+/**
+Closes the file server session.
+
+NB This function was added to support tracing and was not present in earlier versions of Symbian OS.
+For this reason no extra funcitonality should be added to this function.
+
+*/
 EFSRV_EXPORT_C void RFs::Close()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFsClose, MODULEUID, Handle());
-	RFTRACE_CLOSE;
+	OstTrace1(TRACE_BORDER, EFSRV_EFSCLOSE, "sess %x", Handle());
 
 	RSessionBase::Close();
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFsCloseReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFSCLOSERETURN, "");
 	}
 
 
--- a/userlibandfileserver/fileserver/sfsrv/cl_dir.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_dir.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,6 +17,10 @@
 
 #include "cl_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_dirTraces.h"
+#endif
+
 
 
 
@@ -48,13 +52,14 @@
 
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::EDirOpen1, MODULEUID,
-		Session().Handle(), aName, aUidType[0].iUid, aUidType[1].iUid, aUidType[2].iUid);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EDIROPEN1, "sess %x aUidType0 %x aUidType1 %x aUidType2 %x", (TUint) Session().Handle(), (TUint) aUidType[0].iUid, (TUint) aUidType[1].iUid, (TUint) aUidType[2].iUid);
+	OstTraceData(TRACE_BORDER, EFSRV_EDIROPEN1_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 
 	TPckgC<TUidType> pckgUid(aUidType);
 	TInt r = CreateSubSession(aFs,EFsDirOpen,TIpcArgs(&aName,KEntryAttAllowUid,&pckgUid));
 
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EDirOpen1Return, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIROPEN1RETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
+
 	return r;
 	}
 
@@ -92,13 +97,15 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EDirOpen2, MODULEUID, Session().Handle(), aName, anAttMask);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIROPEN2, "sess %x anAttMask %x", (TUint) Session().Handle(), (TUint) anAttMask);
+	OstTraceData(TRACE_BORDER, EFSRV_EDIROPEN2_EDIRNAME, "Dir %S", aName.Ptr(), aName.Length()<<1);
 
 	TUidType uidType(TUid::Null(),TUid::Null(),TUid::Null());
 	TPckgC<TUidType> pckgUid(uidType);
 	TInt r = CreateSubSession(aFs,EFsDirOpen,TIpcArgs(&aName,anAttMask,&pckgUid));
 
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EDirOpen2Return, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIROPEN2RETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
+
 	return r;
 	}
 
@@ -112,11 +119,11 @@
 it completed successfully or not.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EDirClose, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIRCLOSE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	CloseSubSession(EFsDirSubClose);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EDirCloseReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EDIRCLOSERETURN, "");
 	}
 
 
@@ -140,12 +147,13 @@
         (e.g. KErrCorrupt, KErrNoMemory etc).
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EDirRead1, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIRREAD1, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	anArray.iCount=KCountNeeded;
 	TInt r = SendReceive(EFsDirReadPacked,TIpcArgs(&anArray.iBuf));
 
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EDirRead1Return, MODULEUID, r, anArray.Count());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIRREAD1RETURN, "r %d count %d", (TUint) r, (TUint) anArray.Count());
+
 	return r;
 	}
 
@@ -171,12 +179,12 @@
                (e.g. KErrCorrupt, KErrNoMemory etc).
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EDirRead2, MODULEUID, Session().Handle(), SubSessionHandle(), &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EDIRREAD2, "sess %x subs %x status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) &aStatus);
 
 	anArray.iCount=KCountNeeded;
 	RSubSessionBase::SendReceive(EFsDirReadPacked,TIpcArgs(&anArray.iBuf),aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EDirRead2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EDIRREAD2RETURN, "");
 	}
 
 
@@ -194,12 +202,13 @@
         codes.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EDirRead3, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EDIRREAD3, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	TPckg<TEntry> e(anEntry);
 	TInt r = SendReceive(EFsDirReadOne,TIpcArgs(&e));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EDirRead3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EDIRREAD3RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -218,9 +227,9 @@
                error codes.
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EDirRead4, MODULEUID, Session().Handle(), SubSessionHandle(), &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EDIRREAD4, "sess %x subs %x status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) &aStatus);
 
 	RSubSessionBase::SendReceive(EFsDirReadOne,TIpcArgs(&anEntry),aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EDirRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EDIRREAD4RETURN, "");
 	}
--- a/userlibandfileserver/fileserver/sfsrv/cl_file.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_file.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -16,7 +16,9 @@
 //
 
 #include "cl_std.h"
-
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_fileTraces.h"
+#endif
 static _LIT_SECURITY_POLICY_S1(KFileServerPolicy,KFileServerUidValue,ECapabilityTCB);
 
 EFSRV_EXPORT_C TInt RFile::Adopt(RFs& aFs, TInt aHandle)
@@ -34,26 +36,23 @@
 */
 	{
 
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileAdopt, MODULEUID, aFs.Handle(), aHandle);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEADOPT, "sess %x subs %x", (TUint) aFs.Handle(), (TUint) aHandle);
 	// duplicate the sub-session handle; don't panic if it's invalid.
 	RFile file;
 	TInt r = file.CreateSubSession(aFs, EFsFileDuplicate, TIpcArgs(aHandle, EFalse));
 	if (r == KErrArgument)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptReturn, MODULEUID, KErrBadHandle);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTRETURN1, "r %d", KErrBadHandle);
 		return KErrBadHandle;
 		}
 	else if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTRETURN2, "r %d", r);
 		return r;
 		}
 	// adopt the duplicated handle
 	r = CreateAutoCloseSubSession(aFs, EFsFileAdopt, TIpcArgs(file.SubSessionHandle(), KFileAdopt32));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEADOPTRETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -77,19 +76,16 @@
         error codes.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServer, MODULEUID, aFsHandle, aFileHandle);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEADOPTFROMSERVER, "sess %x subs %x", (TUint) aFsHandle, (TUint) aFileHandle);
 	RFs fs;
 	TInt r = fs.SetReturnedHandle(aFsHandle, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServerReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTFROMSERVERRETURN1, "r %d", r);
 		return r;
 		}
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(aFileHandle, KFileAdopt32));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServerReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEADOPTFROMSERVERRETURN2, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -130,7 +126,7 @@
 	else
 		r = KErrArgument;
 
-#ifdef SYMBIAN_FTRACE_ENABLE
+#ifdef OST_TRACE_COMPILER_IN_USE
 	TInt handle = NULL;
 	if (aFsHandleIndex == 0)
 		handle = aMsg.Int0();
@@ -140,12 +136,12 @@
 		handle = aMsg.Int2();
 	else if (aFsHandleIndex == 3)
 		handle = aMsg.Int3();
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClient, MODULEUID, handle, fileHandle, aFsHandleIndex, aFileHandleIndex);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEADOPTFROMCLIENT, "sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d ", (TUint) handle, (TUint) fileHandle, (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 #endif
 
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTFROMCLIENTRETURN1, "r %d", r);
 		return r;
 		}
 
@@ -155,14 +151,12 @@
 	r = fs.Open(aMsg, aFsHandleIndex, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTFROMCLIENTRETURN2, "r %d", r);
 		return r;
 		}
 
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle, KFileAdopt32));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEADOPTFROMCLIENTRETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -193,11 +187,10 @@
 
 	TInt r = User::GetTIntParameter(aFileHandleIndex,  fileHandle);
 
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreator, MODULEUID, fileHandle, aFsHandleIndex, aFileHandleIndex);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEADOPTFROMCREATOR, "subs %x aFsHandleIndex %d aFileHandleIndex %d", (TUint) fileHandle, (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTFROMCREATORRETURN1, "r %d", r);
 		return r;
 		}
 
@@ -208,14 +201,12 @@
 	r = fs.Open(aFsHandleIndex, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEADOPTFROMCREATORRETURN2, "r %d", r);
 		return r;
 		}
 
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle, KFileAdopt32));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEADOPTFROMCREATORRETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -237,8 +228,7 @@
 */
 EFSRV_EXPORT_C TInt RFile::Duplicate(const RFile& aFile, TOwnerType aType)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileDuplicate, MODULEUID, aFile.Session().Handle(), aFile.SubSessionHandle(), aType);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEDUPLICATE, "sess %x subs %x aType %d", (TUint) aFile.Session().Handle(), (TUint) aFile.SubSessionHandle(), (TUint) aType);
 	RFs fs;
 	fs.SetHandle(aFile.Session().Handle());
 
@@ -247,7 +237,7 @@
 	TInt r = fs.Duplicate(RThread(), aType);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileDuplicateReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEDUPLICATERETURN1, "r %d", r);
 		return r;
 		}
 	
@@ -256,15 +246,14 @@
 	r = aFile.DuplicateHandle(dupSubSessionHandle);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileDuplicateReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILEDUPLICATERETURN2, "r %d", r);
 		return r;
 		}
 
 	// adopt the duplicated sub-session handle
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(dupSubSessionHandle, KFileDuplicate));
 
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileDuplicateReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEDUPLICATERETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -321,11 +310,10 @@
 */
 EFSRV_EXPORT_C TInt RFile::TransferToServer(TIpcArgs& aIpcArgs, TInt aFsHandleIndex, TInt aFileHandleIndex) const
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToServer, MODULEUID, Session().Handle(), SubSessionHandle(), aFsHandleIndex, aFileHandleIndex);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILETRANSFERTOSERVER, "sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 	if ((aFsHandleIndex < 0) || (aFsHandleIndex > (KMaxMessageArguments-2)))
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToServerReturn, MODULEUID,  (TUint) KErrArgument);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOSERVERRETURN1, "r %d",  (TUint) KErrArgument);
 		return KErrArgument;
 		}
 
@@ -336,8 +324,7 @@
 		aIpcArgs.Set(aFsHandleIndex, Session());
 		aIpcArgs.Set(aFileHandleIndex, dupSubSessionHandle);
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToServerReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOSERVERRETURN2, "r %d", r);
 	return r;
 	}
 
@@ -368,11 +355,10 @@
 */
 EFSRV_EXPORT_C TInt RFile::TransferToClient(const RMessage2& aMsg, TInt aFileHandleIndex) const
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToClient, MODULEUID, Session().Handle(), SubSessionHandle(), aFileHandleIndex);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILETRANSFERTOCLIENT, "sess %x subs %x aFileHandleIndex %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFileHandleIndex);
 	if (TUint(aFileHandleIndex) >= TUint(KMaxMessageArguments))
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToClientReturn, MODULEUID,  (TUint) KErrArgument);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOCLIENTRETURN1, "r %d",  (TUint) KErrArgument);
 		return KErrArgument;
 		}
 
@@ -383,14 +369,13 @@
 
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToClientReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOCLIENTRETURN2, "r %d", r);
 		return r;
 		}
 
 	aMsg.Complete(Session());
 	
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToClientReturn, MODULEUID, r);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOCLIENTRETURN3, "r %d", r);
 	return r;
 	}
 
@@ -423,8 +408,7 @@
 // NB slot 0 is reserved for the command line
 EFSRV_EXPORT_C TInt RFile::TransferToProcess(RProcess& aProcess, TInt aFsHandleIndex, TInt aFileHandleIndex) const
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToProcess, MODULEUID, Session().Handle(), SubSessionHandle(), aFsHandleIndex, aFileHandleIndex);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILETRANSFERTOPROCESS, "sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 	TInt dupSubSessionHandle;
 	TInt r = DuplicateHandle(dupSubSessionHandle);
 
@@ -433,9 +417,7 @@
 	
 	if (r == KErrNone)
 		r = aProcess.SetParameter(aFileHandleIndex, dupSubSessionHandle);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileTransferToProcessReturn, MODULEUID, r);
-
+	OstTrace1(TRACE_BORDER, EFSRV_EFILETRANSFERTOPROCESSRETURN, "r %d", r);
 	return r;
 	}
 
@@ -455,12 +437,10 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileName, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEGETNAME, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TInt r = SendReceive(EFsFileName, TIpcArgs(&aName));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFileNameReturn, MODULEUID, r, aName);
-
+	OstTraceData(TRACE_BORDER, EFSRV_EFILEGETNAME_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEGETNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -480,12 +460,10 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileFullName, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEFULLNAME, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TInt r = SendReceive(EFsFileFullName, TIpcArgs(&aName));
-
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFileFullNameReturn, MODULEUID, r, aName);
-
+	OstTraceData(TRACE_BORDER, EFSRV_EFILEFULLNAME_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEFULLNAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -540,13 +518,11 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileOpen, MODULEUID, aFs.Handle(), aMode, aName);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEOPEN, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILEOPEN_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	aMode &= ~EFileBigFile;
 	TInt r = CreateSubSession(aFs,EFsFileOpen,TIpcArgs(&aName,aMode));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileOpenReturn, MODULEUID, r, SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEOPENRETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -564,22 +540,11 @@
 no-operation.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileClose, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILECLOSE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	
-#if defined (SYMBIAN_FTRACE_ENABLE) && defined(__DLL__)
-	// Need to close the handle to the trace LDD if this is an auto-close subsession
-	// as these close their parent session by calling RHandleBase::Close(), i.e. they
-	// bypass RFs::Close() which would normally be responsible for closing the LDD
-	TInt h = Session().Handle() ^ CObjectIx::ENoClose;
-	if ( h != NULL && (!(h & CObjectIx::ENoClose)) ) 
-		{
-		RFTRACE_CLOSE;
-		}
-#endif
-
 	CloseSubSession(EFsFileSubClose);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileCloseReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILECLOSERETURN, "");
 	}
 
 
@@ -623,13 +588,10 @@
 */
 	{
 	aMode &= ~EFileBigFile;
-
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileCreate, MODULEUID, aFs.Handle(), aMode, aName);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILECREATE, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILECREATE_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = CreateSubSession(aFs,EFsFileCreate,TIpcArgs(&aName,aMode));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileCreateReturn, MODULEUID, r, SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILECREATERETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -680,10 +642,11 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileReplace, MODULEUID, aFs.Handle(), aMode, aName);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREPLACE, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILEREPLACE_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	aMode &= ~EFileBigFile;
 	TInt r = CreateSubSession(aFs,EFsFileReplace,TIpcArgs(&aName,aMode));
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileReplaceReturn, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREPLACERETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -717,10 +680,13 @@
 					  SID then AllFiles capability is required.
 */
 	{
-   	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileTemp, MODULEUID, aFs.Handle(), aPath, aMode);
+   	OstTraceExt2(TRACE_BORDER, EFSRV_EFILETEMP, "sess %x aMode %x", (TUint) aFs.Handle(), (TUint) aMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILETEMP_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	aMode &= ~EFileBigFile;
 	TInt r = CreateSubSession(aFs,EFsFileTemp,TIpcArgs(&aPath,aMode,&aName));
-	TRACERETMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileTempReturn, MODULEUID, r, SubSessionHandle(), aName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILETEMP_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILETEMPRETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
+	
 	return r;
 	}
 
@@ -748,12 +714,9 @@
 @see TDesC8::Length
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileRead1, MODULEUID, Session().Handle(), SubSessionHandle(), aDes.MaxLength());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEREAD1, "sess %x subs %x desmaxlen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aDes.MaxLength());
 	TInt r = SendReceive(EFsFileRead,TIpcArgs(&aDes,aDes.MaxLength(),I64LOW(KCurrentPosition64)));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead1Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREAD1RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -787,11 +750,10 @@
 @see TDesC8::Length       
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileRead2, MODULEUID, Session().Handle(), SubSessionHandle(), aDes.MaxLength(), &aStatus);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEREAD2, "sess %x subs %x maxdeslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aDes.MaxLength());
     RSubSessionBase::SendReceive(EFsFileRead,TIpcArgs(&aDes,aDes.MaxLength(),I64LOW(KCurrentPosition64)),aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEREAD2RETURN, "");
 	}
 
 
@@ -826,8 +788,7 @@
         codes.
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileRead1, MODULEUID, Session().Handle(), SubSessionHandle(), aLength);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEREAD5, "sess %x subs %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aLength);
 	if (aLength==0)
 		{
 		aDes.Zero();
@@ -838,9 +799,7 @@
 		return(KErrOverflow);
 		}
 	TInt r = SendReceive(EFsFileRead,TIpcArgs(&aDes,aLength,I64LOW(KCurrentPosition64)));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead1Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREAD5RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -880,8 +839,7 @@
                otherwise one of the other system-wide error codes.
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileRead2, MODULEUID, Session().Handle(), SubSessionHandle(), aLength, &aStatus);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEREAD6, "sess %x subs %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aLength);
 	if (aLength==0)
 		{
 		aDes.Zero();
@@ -897,8 +855,7 @@
 		}
 		
 	RSubSessionBase::SendReceive(EFsFileRead,TIpcArgs(&aDes,aLength,I64LOW(KCurrentPosition64)),aStatus);
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEREAD6RETURN, "");
 	}
 
 
@@ -932,14 +889,11 @@
 @panic FSCLIENT 19 if aPos is negative.        
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.MaxLength());
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEREAD3, "sess %x subs %x aPos %x maxdeslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.MaxLength());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 
 	TInt r = SendReceive(EFsFileRead,TIpcArgs(&aDes,aDes.MaxLength(),aPos));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREAD3RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -979,12 +933,11 @@
 @panic FSCLIENT 19 if aPos is negative.        
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.MaxLength(), &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEREAD4, "sess %x subs %x aPos %x maxdeslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.MaxLength());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	RSubSessionBase::SendReceive(EFsFileRead,TIpcArgs(&aDes,aDes.MaxLength(),aPos),aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEREAD4RETURN, "");
 	}
 
 
@@ -1026,8 +979,7 @@
 @panic FSCLIENT 19 if aPos is negative.        
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEREAD7, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	if (aLength==0)
 		{
@@ -1040,9 +992,7 @@
 		}
 		
 	TInt r = SendReceive(EFsFileRead,TIpcArgs(&aDes,aLength,aPos));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEREAD7RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -1091,8 +1041,7 @@
 @panic FSCLIENT 19 if aPos is negative.                       
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength, &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEREAD9, "sess %x subs %x aPos %x maxlen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	if (aLength==0)
 		{
@@ -1109,8 +1058,7 @@
 		}
 		
 	RSubSessionBase::SendReceive(EFsFileRead,TIpcArgs(&aDes,aLength,aPos),aStatus);
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEREAD9RETURN, "");
 	}
 
 
@@ -1162,9 +1110,9 @@
         codes.
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1, MODULEUID, Session().Handle(), SubSessionHandle(), aDes.Length());
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEWRITE1, "sess %x subs %x deslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aDes.Length());
 	TInt r = SendReceive(EFsFileWrite,TIpcArgs(&aDes,aDes.Length(),I64LOW(KCurrentPosition64)));
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEWRITE1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1189,10 +1137,9 @@
                otherwise one of the other system-wide error codes.
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2, MODULEUID, Session().Handle(), SubSessionHandle(), aDes.Length(), &aStatus);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEWRITE2, "sess %x subs %x deslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aDes.Length());
 	RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aDes.Length(),I64LOW(KCurrentPosition64)),aStatus);
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEWRITE2RETURN, "");
 	}
 
 
@@ -1219,12 +1166,10 @@
        of the descriptor aDes.  
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1, MODULEUID, Session().Handle(), SubSessionHandle(), aLength);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEWRITE5, "sess %x subs %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aLength);
 	__ASSERT_DEBUG(aDes.Length()>=aLength,Panic(EBadLength));
 	TInt r = SendReceive(EFsFileWrite,TIpcArgs(&aDes,aLength,I64LOW(KCurrentPosition64)));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEWRITE5RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1257,11 +1202,10 @@
 
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2, MODULEUID, Session().Handle(), SubSessionHandle(), aLength, &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEWRITE9, "sess %x subs %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aLength);
 		
 	RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aLength,I64LOW(KCurrentPosition64)),aStatus);
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEWRITE9RETURN, "");
 	}
 
 
@@ -1291,12 +1235,10 @@
 @panic FSCLIENT 19 if aPos is negative.                       
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.Length());
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEWRITE3, "sess %x subs %x aPos %x len %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.Length());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	TInt r = SendReceive(EFsFileWrite,TIpcArgs(&aDes,aDes.Length(),aPos));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEWRITE3RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1331,11 +1273,10 @@
 @panic FSCLIENT 19 if aPos is negative.                       
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.Length(), &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEWRITE4, "sess %x subs %x aPos %x deslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.Length());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aDes.Length(),aPos),aStatus);
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEWRITE4RETURN, "");
 	}
 
 
@@ -1365,12 +1306,10 @@
 @panic FSCLIENT 19 if aPos is negative.                       
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1, MODULEUID, Session().Handle(), SubSessionHandle(), aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEWRITE6, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	TInt r = SendReceive(EFsFileWrite,TIpcArgs(&aDes,aLength,aPos));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEWRITE6RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1408,11 +1347,10 @@
 @panic FSCLIENT 19 if aPos is negative.                       
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength, &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEWRITE10, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aLength,aPos),aStatus);
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEWRITE10RETURN, "");
 	}
 
 
@@ -1446,13 +1384,10 @@
 
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileLock, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILELOCK, "RFile::Lock() sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
-
 	TInt r = SendReceive(EFsFileLock,TIpcArgs(aPos,aLength));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileLockReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILELOCKRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1480,12 +1415,10 @@
 @panic FSCLIENT 19 if aPos is negative. 
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileUnLock, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEUNLOCK, "RFile::UnLock() sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	TInt r = SendReceive(EFsFileUnLock,TIpcArgs(aPos,aLength));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileUnLockReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEUNLOCKRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1529,15 +1462,13 @@
         codes.
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileSeek, MODULEUID, Session().Handle(), SubSessionHandle(), aMode, aPos, 0);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILESEEK1, "sess %x subs %x aMode %x aPos %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aMode, (TUint) aPos);
 	TInt64 newPos = aPos;
 	TPckg<TInt64>  pkNewPos(newPos);
 	TInt r = SendReceive(EFsFileSeek|KIpcArgSlot2Desc,TIpcArgs(aPos,aMode,&pkNewPos));
 	if(KErrNone == r)
 		aPos = I64LOW(newPos);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSeekReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILESEEK1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1559,11 +1490,9 @@
         codes.
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileFlush, MODULEUID, Session().Handle(), SubSessionHandle(), NULL);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEFLUSH1, "sess %x subs %x status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) NULL);
 	TInt r = RSubSessionBase::SendReceive(EFsFileFlush);
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileFlushReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEFLUSH1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1585,11 +1514,9 @@
                otherwise one of the other system-wide error codes.
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileFlush, MODULEUID, Session().Handle(), SubSessionHandle(), &aStatus);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEFLUSH2, "sess %x subs %x status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) &aStatus);
 	RSubSessionBase::SendReceive(EFsFileFlush, aStatus);
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileFlushReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILEFLUSH2RETURN, "");
 	}
 
 
@@ -1605,8 +1532,7 @@
         codes.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileSize, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILESIZE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TInt64 size = aSize;
 	TPckg<TInt64> pkSize(size);
 	TInt r = SendReceive(EFsFileSize|KIpcArgSlot0Desc,TIpcArgs(&pkSize));
@@ -1617,8 +1543,7 @@
 	if (size > KMaxTInt)
 		return (KErrTooBig);
 #endif
-
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileSizeReturn, MODULEUID, r, aSize);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILESIZERETURN, "r %d aSize %d", (TUint) r, (TUint) aSize);
 	return r;
 	}
 
@@ -1650,11 +1575,9 @@
 
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileSetSize, MODULEUID, Session().Handle(), SubSessionHandle(), aSize, 0);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILESETSIZE1, "sess %x subs %x aSize %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aSize);
 	TInt r = SendReceive(EFsFileSetSize,TIpcArgs(aSize));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSetSizeReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILESETSIZE1RETURN, "r %d", r);
 	return r;
 	}
 
@@ -1675,13 +1598,11 @@
 @see KEntryAttNormal        
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileAtt, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEATT, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TPtr8 a((TUint8*)&aVal,sizeof(TUint));
 	
 	TInt r = SendReceive(EFsFileAtt,TIpcArgs(&a));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileAttReturn, MODULEUID, r, aVal);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEATTRETURN, "r %d aVal %x", (TUint) r, (TUint) aVal);
 	return r;
 	}
 
@@ -1718,13 +1639,11 @@
 @panic FSCLIENT 21 if the same attribute bit is set in both bitmasks.
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileSetAtt, MODULEUID, Session().Handle(), SubSessionHandle(), aSetAttMask, aClearAttMask);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILESETATT, "sess %x subs %x aSetAttMask %x aClearAttMask %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aSetAttMask, (TUint) aClearAttMask);
 	__ASSERT_ALWAYS((aSetAttMask&aClearAttMask)==0,Panic(EAttributesIllegal));
 
 	TInt r = SendReceive(EFsFileSetAtt,TIpcArgs(aSetAttMask,aClearAttMask));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSetAttReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILESETATTRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1741,12 +1660,10 @@
         codes.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileModified, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEMODIFIED, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TPtr8 t((TUint8*)&aTime,sizeof(TTime));
 	TInt r = SendReceive(EFsFileModified,TIpcArgs(&t));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileModifiedReturn, MODULEUID, r, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()));
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILEMODIFIEDRETURN, "r %d aTime %x:%x ", (TUint) r, (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
 	return r;
 	}
 
@@ -1770,12 +1687,10 @@
         codes.
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileSetModified, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()));
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILESETMODIFIED, "sess %x subs %x aTime %x:%x ", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
 	TPtrC8 t((TUint8*)&aTime,sizeof(TTime));
 	TInt r = SendReceive(EFsFileSetModified,TIpcArgs(&t));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSetModifiedReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILESETMODIFIEDRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1806,14 +1721,12 @@
 @see RFile::SetAtt
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileSet, MODULEUID, 
-		Session().Handle(), SubSessionHandle(), I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), aMask, aVal);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILESETA, "sess %x subs %x aSetAttMask %x aClearAttMask %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aMask, (TUint) aVal);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILESETB, "aTime %x:%x ", (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
 	__ASSERT_ALWAYS((aVal&aMask)==0,Panic(EAttributesIllegal));
 	TPtrC8 t((TUint8*)&aTime,sizeof(TTime));
 	TInt r = SendReceive(EFsFileSet,TIpcArgs(&t,aMask,aVal));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSetReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILESETRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1842,13 +1755,11 @@
 
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileChangeMode, MODULEUID, Session().Handle(), SubSessionHandle(), aNewMode);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILECHANGEMODE, "sess %x subs %x aNewMode %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aNewMode);
 	if (aNewMode!=EFileShareExclusive && aNewMode!=EFileShareReadersOnly)
 		return(KErrArgument);
 	TInt r = SendReceive(EFsFileChangeMode,TIpcArgs(aNewMode));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileChangeModeReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILECHANGEMODERETURN, "r %d", r);
 	return r;
 	}
 
@@ -1894,11 +1805,10 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileRename, MODULEUID, Session().Handle(), SubSessionHandle(), aNewName);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILERENAME, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFILERENAME_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 	TInt r = SendReceive(EFsFileRename,TIpcArgs(&aNewName));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileRenameReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILERENAMERETURN, "r %d", r);
 	return r;
 	}
 
@@ -1921,13 +1831,11 @@
 @see RFs::Drive
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileDrive, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEDRIVE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TPckg<TInt> pki(aDriveNumber);
 	TPckg<TDriveInfo> pkdi(aDriveInfo);
 	TInt r = SendReceive(EFsFileDrive,TIpcArgs(&pki,&pkdi));
-
-	TRACERET4(UTF::EBorder, UTraceModuleEfsrv::EFileDriveReturn, MODULEUID, r, aDriveInfo.iDriveAtt, aDriveInfo.iMediaAtt, aDriveInfo.iType);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILEDRIVERETURN, "r %d driveAtt %x mediaAtt %x type %x", (TUint) r, (TUint) aDriveInfo.iDriveAtt, (TUint) aDriveInfo.iMediaAtt, (TUint) aDriveInfo.iType);
 	return r;
 	}
 
@@ -1944,12 +1852,10 @@
 @see RFs::Unclamp
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileClamp, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILECLAMP, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TPckg<RFileClamp> pkHandle(aHandle);
 	TInt r = SendReceive(EFsFileClamp,TIpcArgs(& pkHandle));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileClampReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILECLAMPRETURN, "r %d", r);
 	return r;
 	}
 
@@ -1979,9 +1885,8 @@
 */
 EFSRV_EXPORT_C TInt RFile::BlockMap(SBlockMapInfo& aInfo, TInt64& aStartPos, TInt64 aEndPos, TInt aBlockMapUsage) const
 	{
-	TRACE7(UTF::EBorder, UTraceModuleEfsrv::EFileBlockMap, MODULEUID, 
-		Session().Handle(), SubSessionHandle(), I64LOW(aStartPos), I64HIGH(aEndPos), I64LOW(aEndPos), I64HIGH(aEndPos), aBlockMapUsage);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILEBLOCKMAPA, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILEBLOCKMAPB, "RFile::BlockMap() aStartPos %x:%x aEndPos %x:%x aBlockMapusage %d", (TUint) I64HIGH(aStartPos), (TUint) I64LOW(aStartPos), (TUint) I64HIGH(aEndPos), (TUint) I64LOW(aEndPos), (TUint) aBlockMapUsage);
 	SBlockMapArgs args;
 	args.iStartPos = aStartPos;
 	args.iEndPos = aEndPos;
@@ -1990,8 +1895,7 @@
  	TInt r = SendReceive(EFsBlockMap, TIpcArgs(&pkInfo, &pkArgs, aBlockMapUsage));
 	if(r==KErrNone)
 		aStartPos = args.iStartPos;
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileBlockMapReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILEBLOCKMAPRETURN, "r %d", r);
 	return r;
 	}
 
@@ -2044,11 +1948,12 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Open(RFs& aFs,const TDesC& aName,TUint aFileMode)
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileOpen, MODULEUID, aFs.Handle(), aFileMode, aName);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64OPEN, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aFileMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILE64OPEN_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	
 	TInt r = CreateSubSession(aFs,EFsFileOpen,TIpcArgs(&aName,aFileMode|EFileBigFile));
 	
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileOpenReturn, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64OPENRETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2093,11 +1998,10 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Create(RFs& aFs,const TDesC& aName,TUint aFileMode)
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileCreate, MODULEUID, aFs.Handle(), aFileMode, aName);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64CREATE, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aFileMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILE64CREATE_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = CreateSubSession(aFs,EFsFileCreate,TIpcArgs(&aName,aFileMode|EFileBigFile));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileCreateReturn, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64CREATERETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2148,11 +2052,10 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Replace(RFs& aFs,const TDesC& aName,TUint aFileMode)
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileReplace, MODULEUID, aFs.Handle(), aFileMode, aName);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64REPLACE, "sess %x mode %x", (TUint) aFs.Handle(), (TUint) aFileMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILE64REPLACE_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
 	TInt r = CreateSubSession(aFs,EFsFileReplace,TIpcArgs(&aName,aFileMode|EFileBigFile));
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileReplaceReturn, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64REPLACERETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2189,9 +2092,12 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Temp(RFs& aFs,const TDesC& aPath,TFileName& aName,TUint aFileMode)
 	{
-   	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileTemp, MODULEUID, aFs.Handle(), aPath, aFileMode);
+   	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64TEMP, "sess %x aMode %x", (TUint) aFs.Handle(), (TUint) aFileMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILE64TEMP_EDIRNAME, "Dir %S", aPath.Ptr(), aPath.Length()<<1);
 	TInt r = CreateSubSession(aFs,EFsFileTemp,TIpcArgs(&aPath,aFileMode|EFileBigFile,&aName));
-	TRACERETMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileTempReturn, MODULEUID, r, SubSessionHandle(), aName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFILE64TEMP_EFILENAME, "FileName %S", aName.Ptr(), aName.Length()<<1);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64TEMPRETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
+	
 	return r;
 	}
 
@@ -2243,7 +2149,7 @@
 	else
 		r = KErrArgument;
 
-#ifdef SYMBIAN_FTRACE_ENABLE
+#ifdef OST_TRACE_COMPILER_IN_USE
 	TInt handle = NULL;
 	if (aFsHandleIndex == 0)
 		handle = aMsg.Int0();
@@ -2253,31 +2159,27 @@
 		handle = aMsg.Int2();
 	else if (aFsHandleIndex == 3)
 		handle = aMsg.Int3();
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClient, MODULEUID, handle, fileHandle, aFsHandleIndex, aFileHandleIndex);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCLIENT, "sess %x subs %x aFsHandleIndex %d aFileHandleIndex %d ", (TUint) handle, (TUint) fileHandle, (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 #endif
-
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCLIENTRETURN1, "r %d", r);
 		return r;
 		}
-
 	// Duplicates the file server (RFs) session handle identified by an 
 	// existing handle contained in the message slot at index aFsHandleIndex
 	RFs fs;
 	r = fs.Open(aMsg, aFsHandleIndex, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCLIENTRETURN2, "r %d", r);
 		return r;
 		}
 
 	//return CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle));
 	// Slot 1: Indicate Large File Supportis required.
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle, KFileAdopt64));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromClientReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCLIENTRETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2311,22 +2213,19 @@
 */
 EFSRV_EXPORT_C TInt RFile64::AdoptFromServer(TInt aFsHandle, TInt aFileHandle)
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServer, MODULEUID, aFsHandle, aFileHandle);
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMSERVER, "sess %x subs %x", (TUint) aFsHandle, (TUint) aFileHandle);
 	RFs fs;
 	TInt r = fs.SetReturnedHandle(aFsHandle, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServerReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMSERVERRETURN1, "r %d", r);
 		return r;
 		}
 
 	//return(CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(aFileHandle)));
 	// Slot 1: Indicate Large File Supportis required.
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(aFileHandle, KFileAdopt64));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromServerReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMSERVERRETURN2, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2368,11 +2267,10 @@
 	TInt fileHandle;
 	TInt r = User::GetTIntParameter(aFileHandleIndex,  fileHandle);
 
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreator, MODULEUID, fileHandle, aFsHandleIndex, aFileHandleIndex);
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCREATOR, "subs %x aFsHandleIndex %d aFileHandleIndex %d", (TUint) fileHandle, (TUint) aFsHandleIndex, (TUint) aFileHandleIndex);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCREATORRETURN1, "r %d", r);
 		return r;
 		}
 
@@ -2383,16 +2281,14 @@
 	r = fs.Open(aFsHandleIndex, KFileServerPolicy);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCREATORRETURN2, "r %d", r);
 		return r;
 		}
 
 	//return(CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle)));
 	// Slot 1: Indicate Large File Supportis required.
 	r = CreateAutoCloseSubSession(fs, EFsFileAdopt, TIpcArgs(fileHandle, KFileAdopt64));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileAdoptFromCreatorReturn, MODULEUID, r, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILE64ADOPTFROMCREATORRETURN3, "r %d sess %x subs %x", (TUint) r, (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	return r;
 	}
 
@@ -2431,8 +2327,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Read(TInt64 aPos, TDes8& aDes) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aDes.MaxLength());
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64READ8, "RFile::Read() sess %x subs %x aPos %x:%x maxdeslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aDes.MaxLength());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 
 	TInt r;
@@ -2445,9 +2340,7 @@
 		TPckgC<TInt64> pkPos(aPos);
  		r = SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.MaxLength(),&pkPos));
 		}
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64READ8RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -2491,8 +2384,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Read(TInt64 aPos, TDes8& aDes, TRequestStatus& aStatus) const
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aDes.MaxLength(), &aStatus);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64READ10, "RFile::Read() sess %x subs %x aPos %x:%x maxlen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aDes.MaxLength());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	if (!(I64HIGH(aPos+1)))
 		{
@@ -2503,8 +2395,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		RSubSessionBase::SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.MaxLength(),&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64READ10RETURN, "");
 	}
 
 
@@ -2550,8 +2441,7 @@
 */    	
 EFSRV_EXPORT_C TInt RFile64::Read(TInt64 aPos, TDes8& aDes, TInt aLength) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64READ15, "RFile::Read() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	if (aLength==0)
 		{
@@ -2573,9 +2463,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		r = SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos));
 		}
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64READ15RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -2628,8 +2516,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Read(TInt64 aPos, TDes8& aDes, TInt aLength,TRequestStatus& aStatus) const
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aLength, &aStatus);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64READ11, "RFile::Read() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	if (aLength==0)
 		{
@@ -2654,8 +2541,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		RSubSessionBase::SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64READ11RETURN, "");
 	}
 
 
@@ -2687,8 +2573,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Write(TInt64 aPos, const TDesC8& aDes)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aDes.Length());
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64WRITE13, "RFile::Write() sess %x subs %x aPos %x:%x deslen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aDes.Length());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 
 	TInt r;
@@ -2701,8 +2586,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		r = SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.Length(),&pkPos));
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64WRITE13RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2740,8 +2624,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Write(TInt64 aPos, const TDesC8& aDes,TRequestStatus& aStatus)
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4, MODULEUID, Session().Handle(), SubSessionHandle(), aDes.Length(), &aStatus);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64WRITE15, "RFile::Write() sess %x subs %x pos %x:%x len %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aDes.Length());
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 	if (!(I64HIGH(aPos+1)))
@@ -2753,8 +2636,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		RSubSessionBase::SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.Length(),&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64WRITE15RETURN, "");
 	}
 
 
@@ -2786,8 +2668,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Write(TInt64 aPos, const TDesC8& aDes,TInt aLength)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1, MODULEUID, Session().Handle(), SubSessionHandle(), aLength);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64WRITE7, "RFile::Write() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 	TInt r;
@@ -2800,8 +2681,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		r = SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos));
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64WRITE7RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2841,8 +2721,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Write(TInt64 aPos, const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus)
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aLength, &aStatus);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64WRITE11, "RFile::Write() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 	if (!(I64HIGH(aPos+1)))
@@ -2854,8 +2733,7 @@
 		TPckgC<TInt64> pkPos(aPos);
 		RSubSessionBase::SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64WRITE11RETURN, "");
 	}
 
 
@@ -2902,13 +2780,11 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Seek(TSeek aMode, TInt64& aPos) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileSeek, MODULEUID, Session().Handle(), SubSessionHandle(), aMode, aPos, 0);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64SEEK2, "RFile::Seek() sess %x subs %x aMode %x aPos %x:%x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aMode, (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos));
 	TPckgC<TInt64> pkOffset(aPos);
 	TPckg<TInt64> pkNewPos(aPos);
  	TInt r = SendReceive(EFsFileSeek|KIpcArgSlot0Desc|KIpcArgSlot2Desc,TIpcArgs(&pkOffset,aMode,&pkNewPos));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSeekReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64SEEK2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -2930,12 +2806,10 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Size(TInt64& aSize) const
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFileSize2, MODULEUID, Session().Handle(), SubSessionHandle());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64SIZE2, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 	TPckg<TInt64> pkSize(aSize);
 	TInt r = SendReceive(EFsFileSize|KIpcArgSlot0Desc,TIpcArgs(&pkSize));
-
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFileSize2Return, MODULEUID, r, I64LOW(aSize), I64HIGH(aSize));
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFILE64SIZE2RETURN, "r %d aSize %x:%x", (TUint) r, (TUint) I64HIGH(aSize), (TUint) I64LOW(aSize));
 	return r;
 	}
 
@@ -2971,12 +2845,10 @@
 */
 EFSRV_EXPORT_C TInt RFile64::SetSize(TInt64 aSize)
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EFileSetSize, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aSize), I64HIGH(aSize));
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64SETSIZE2, "sess %x subs %x aSize %x:%x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aSize), (TUint) I64LOW(aSize));
 	TPckgC<TInt64> pkSize(aSize);
 	TInt r = SendReceive(EFsFileSetSize|KIpcArgSlot0Desc, TIpcArgs(&pkSize));
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileSetSizeReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64SETSIZE2RETURN, "r %d", r);
 	return r;
 	}
 
@@ -3013,8 +2885,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Lock(TInt64 aPos, TInt64 aLength) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileLock, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64LOCK, "RFile::Lock() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	TPckgC<TInt64> pkPos(aPos);
 	TPckgC<TInt64> pkLength(aLength);
@@ -3029,7 +2900,7 @@
 		r = SendReceive(EFsFileLock|KIpcArgSlot0Desc,TIpcArgs(&pkPos, I64LOW(aLength)));
 	else 
 		r = SendReceive(EFsFileLock|KIpcArgSlot0Desc|KIpcArgSlot1Desc,TIpcArgs(&pkPos, &pkLength));
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileLockReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64LOCKRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3060,8 +2931,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::UnLock(TInt64 aPos, TInt64 aLength) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileUnLock, MODULEUID, Session().Handle(), SubSessionHandle(), I64LOW(aPos), I64HIGH(aPos), aLength);
-
+	OstTraceExt5(TRACE_BORDER, EFSRV_EFILE64UNLOCK, "RFile::UnLock() sess %x subs %x aPos %x:%x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) I64HIGH(aPos), (TUint) I64LOW(aPos), (TUint) aLength);
 	__ASSERT_ALWAYS(aPos>=0,Panic(EPosNegative));
 	
 	TPckgC<TInt64> pkPos(aPos);
@@ -3078,7 +2948,7 @@
 	else 
 		r = SendReceive(EFsFileUnLock|KIpcArgSlot0Desc|KIpcArgSlot1Desc,TIpcArgs(&pkPos, &pkLength));
 	
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileUnLockReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64UNLOCKRETURN, "r %d", r);
 	return r;
 	}
 
@@ -3122,8 +2992,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Read(TUint aPos,TDes8& aDes) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.MaxLength());
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64READ14, "sess %x subs %x aPos %x maxlen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.MaxLength());
 	TInt r;
 	if(!(aPos + 1))
 		{
@@ -3135,9 +3004,7 @@
 		TPckgC<TInt64> pkPos(pos);
  		r = SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.MaxLength(),&pkPos));
 		}
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64READ14RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -3186,8 +3053,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Read(TUint aPos,TDes8& aDes,TRequestStatus& aStatus) const
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.MaxLength(), &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64READ12, "sess %x subs %x aPos %x maxlen %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.MaxLength());
 	if(!(aPos + 1))
 		{
 		RSubSessionBase::SendReceive(EFsFileRead,TIpcArgs(&aDes,aDes.MaxLength(),aPos),aStatus);
@@ -3198,8 +3064,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		RSubSessionBase::SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.MaxLength(),&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64READ12RETURN, "");
 	}
 
 
@@ -3251,8 +3116,7 @@
 */    
 EFSRV_EXPORT_C TInt RFile64::Read(TUint aPos,TDes8& aDes,TInt aLength) const
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileRead3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64READ16, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	if (aLength==0)
 		{
 		aDes.Zero();
@@ -3274,9 +3138,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		r = SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos));
 		}
-
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileRead3Return, MODULEUID, r, aDes.Length());
-
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFILE64READ16RETURN, "r %d len %d", (TUint) r, (TUint) aDes.Length());
 	return r;
 	}
 
@@ -3335,8 +3197,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Read(TUint aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileRead4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength, &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64READ13, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	if (aLength==0)
 		{
 		aDes.Zero();
@@ -3361,8 +3222,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		RSubSessionBase::SendReceive(EFsFileRead|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos),aStatus);
 		}
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileRead4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64READ13RETURN, "");
 	}
 
 
@@ -3400,8 +3260,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Write(TUint aPos,const TDesC8& aDes)
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.Length());
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64WRITE14, "sess %x subs %x aPos %x len %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.Length());
 	TInt r;
 	if(!(aPos + 1))
 		{
@@ -3413,8 +3272,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		r = SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.Length(),&pkPos));
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64WRITE14RETURN, "r %d", r);
 	return r;
 	}
 
@@ -3458,8 +3316,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Write(TUint aPos,const TDesC8& aDes,TRequestStatus& aStatus)
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aDes.Length(), &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64WRITE16, "sess %x subs %x pos %x len %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aDes.Length());
 	if(!(aPos + 1))
 		{
 		RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aDes.Length(),aPos),aStatus);
@@ -3470,7 +3327,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		RSubSessionBase::SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aDes.Length(),&pkPos),aStatus);
 		}
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite4Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64WRITE16RETURN, "");
 	}
 
 
@@ -3508,8 +3365,7 @@
 */
 EFSRV_EXPORT_C TInt RFile64::Write(TUint aPos,const TDesC8& aDes,TInt aLength)
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1, MODULEUID, Session().Handle(), SubSessionHandle(), aLength);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64WRITE8, "sess %x subs %x aPos %x aLength %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	TInt r;
 	if(!(aPos + 1))
 		{
@@ -3521,8 +3377,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		r = SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos));
 		}
-
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFileWrite1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFILE64WRITE8RETURN, "r %d", r);
 	return r;
 	}
 
@@ -3569,8 +3424,7 @@
 */
 EFSRV_EXPORT_C void RFile64::Write(TUint aPos,const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus)
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2, MODULEUID, Session().Handle(), SubSessionHandle(), aPos, 0, aLength, &aStatus);
-
+	OstTraceExt4(TRACE_BORDER, EFSRV_EFILE64WRITE12, "sess %x subs %x aPos %x len %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aPos, (TUint) aLength);
 	if(!(aPos + 1))
 		{
 		RSubSessionBase::SendReceive(EFsFileWrite,TIpcArgs(&aDes,aLength,aPos),aStatus);
@@ -3581,7 +3435,7 @@
 		TPckgC<TInt64> pkPos(pos);
 		RSubSessionBase::SendReceive(EFsFileWrite|KIpcArgSlot2Desc,TIpcArgs(&aDes,aLength,&pkPos),aStatus);
 		}
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFileWrite2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFILE64WRITE12RETURN, "");
 	}
 #else
 EFSRV_EXPORT_C TInt RFile64::Open(RFs& /*aFs*/,const TDesC& /*aName*/,TUint /*aFileMode*/)
--- a/userlibandfileserver/fileserver/sfsrv/cl_fman.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_fman.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -15,21 +15,10 @@
 
 #include "cl_std.h"
 
-#define RETURNIFERROR(a,b,t)  					\
-	{											\
-	if ((a=b)!=KErrNone)						\
-		{										\
-		if(iStatus)								\
-			User::RequestComplete(iStatus,a);	\
-		TInt _t = t;							\
-		if (_t)	{TRACE1(UTF::EBorder, t, MODULEUID, a);}	\
-		return(a);								\
-		}										\
-	}
-
-#define RETURNIFERRORD(a,b,t)  		 			\
-	TInt a; 									\
-	RETURNIFERROR(a,b,t)
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_fmanTraces.h"
+#endif
+
 
 const TUint KRecurseFlag	=	0x40000000;
 const TUint KScanDownFlag	=	0x20000000;
@@ -528,14 +517,14 @@
 @return Newly created CFileMan object.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManNewL1, MODULEUID, aFs.Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANNEWL1, "sess %x", aFs.Handle());
 
 	CFileMan* fileMan=new(ELeave) CFileMan(aFs);
 	CleanupStack::PushL(fileMan);
 	fileMan->CFileBase::ConstructL();
 	CleanupStack::Pop();
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManNewL1Return, MODULEUID, fileMan);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANNEWL1RETURN, "CFileMan* %x", fileMan);
 	return fileMan;
 	}
 
@@ -552,7 +541,7 @@
 @return Newly created CFileMan object.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::ECFileManNewL2, MODULEUID, aFs.Handle(), anObserver);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANNEWL2, "sess %x anObserver %x", (TUint) aFs.Handle(), (TUint) anObserver);
 
 	CFileMan* fileMan=new(ELeave) CFileMan(aFs);
 	CleanupStack::PushL(fileMan);
@@ -560,7 +549,7 @@
 	CleanupStack::Pop();
 	fileMan->SetObserver(anObserver);
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManNewL2Return, MODULEUID, fileMan);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANNEWL2RETURN, "CFileMan* %x", fileMan);
 	return fileMan;
 	}
 
@@ -576,9 +565,9 @@
 	}
 CFileMan::~CFileMan()
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManDestructor, MODULEUID, this);
-
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::ECFileManDestructorReturn, MODULEUID);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANDESTRUCTOR, "this %x", this);
+
+	OstTrace0(TRACE_BORDER, EFSRV_ECFILEMANDESTRUCTORRETURN, "");
 	}
 
 
@@ -589,7 +578,7 @@
 @return The action which CFileMan is carrying out.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCurrentAction, MODULEUID, this);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCURRENTACTION, "this %x", this);
 
 	TAction action = ENone;
 
@@ -628,7 +617,7 @@
 		Panic(EFManUnknownAction);
 		}
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCurrentActionReturn, MODULEUID, action);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCURRENTACTIONRETURN, "action %d", action);
 	return (action);
 	}
 
@@ -646,11 +635,12 @@
                 the current CFileMan operation
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManGetCurrentTarget, MODULEUID, this);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTTARGET, "this %x", this);
 
 	GetSrcAndTrg(iTmpParse, aTrgName);
 
-	TRACEMULT1(UTF::EBorder, UTraceModuleEfsrv::ECFileManGetCurrentTargetReturn, MODULEUID, aTrgName);
+	OstTrace0(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTTARGETRETURN, "");
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTTARGET_EFILENAME, "FileName %S", aTrgName.Ptr(), aTrgName.Length()<<1);
 	}
 
 
@@ -667,13 +657,14 @@
                 CFileMan operation.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManGetCurrentSource, MODULEUID, this);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTSOURCE, "this %x", this);
 
     TPtrC fullPath(FullPath());
 	iTmpParse.Set(CurrentEntry().iName, &fullPath, NULL);
 	aSrcName = iTmpParse.FullName();
 
-	TRACEMULT1(UTF::EBorder, UTraceModuleEfsrv::ECFileManGetCurrentSourceReturn, MODULEUID, aSrcName);
+	OstTrace0(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTSOURCERETURN, "");
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANGETCURRENTSOURCE_EFILENAME, "FileName %S", aSrcName.Ptr(), aSrcName.Length()<<1);
 	}
 
 void CFileMan::GetSrcAndTrg(TParse& aSrcName,TFileName& aTrgName)
@@ -734,7 +725,7 @@
 @return The number of bytes transferred.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::ECFileManBytesTransferredByCopyStep, MODULEUID, this, iBytesTransferred);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANBYTESTRANSFERREDBYCOPYSTEP, "this %x BytesTransferred %d", (TUint) this, (TUint) iBytesTransferred);
 
 	return(iBytesTransferred);
 	}
@@ -904,8 +895,9 @@
 
 */
 	{
-	TRACEMULT8(UTF::EBorder, UTraceModuleEfsrv::ECFileManAttribs1, MODULEUID,
-		(TUint) this, aName, aSetMask, aClearMask, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), aSwitches, (TUint) &aStatus);
+	OstTraceExt5(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS1A, "this %x aSetMask %x aClearMask %x aSwitches %d status %x", (TUint) this, (TUint) aSetMask, (TUint) aClearMask, (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS1B, "aTime %x:%x ", (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS1A_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -918,7 +910,8 @@
 		r = Attribs(aName,aSetMask,aClearMask,aTime,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManAttribs1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -974,8 +967,9 @@
 
 */
 	{
-	TRACEMULT7(UTF::EBorder, UTraceModuleEfsrv::ECFileManAttribs2, MODULEUID,
-		(TUint) this, aName, aSetMask, aClearMask, I64LOW(aTime.Int64()), I64HIGH(aTime.Int64()), aSwitches);
+	OstTraceExt4(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS2A, "this %x aSetMask %x aClearMask %x aSwitches %x", (TUint) this, (TUint) aSetMask, (TUint) aClearMask, (TUint) aSwitches);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS2B, "aTime %x:%x ", (TUint) I64HIGH(aTime.Int64()), (TUint) I64LOW(aTime.Int64()));
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS2A_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 
 	TInt ret;
 	if (iSwitches&KFManBusyFlag)
@@ -985,7 +979,15 @@
 	else
 		{
 		SetFlags(aSwitches&EOverWrite,aSwitches&ERecurse,ETrue,EFalse);
-		RETURNIFERRORD(r,iFs.Parse(aName,iSrcFile),UTraceModuleEfsrv::ECFileManAttribs2Return);
+		TInt r;
+		if ((r = iFs.Parse(aName,iSrcFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS2RETURN1, "r %d", r);
+			return r;
+			}
+
 		iSetMask=aSetMask;
 		iClearMask=aClearMask;
 		iTime=aTime;
@@ -997,7 +999,8 @@
 		DoSynchronize(r);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManAttribs2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANATTRIBS2RETURN2, "r %d", ret);
+
 	return(ret);
 	}
 
@@ -1037,8 +1040,9 @@
 
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy1, MODULEUID,
-		(TUint) this, anOld, aNew, aSwitches, (TUint) &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_ECFILEMANCOPY1, "this %x aSwitches %x status %x", (TUint) this, (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY1_EOLDNAME, "OldName %S", anOld.Ptr(), anOld.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY1_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -1049,7 +1053,8 @@
 		r = Copy(anOld,aNew,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY1RETURN, "r %d", r);
+
 	return(r);
 	}
 
@@ -1089,6 +1094,31 @@
 including any directories in the path specified by aNew which do not
 already exist.
 
+If the source (anOld) is a FILE and the recursive operation is set,
+then all the files with the same name as anOld in the source directory
+including those in subdirectories will be copied to the destination.
+
+For example, the initial directory structure is as follows:
+C:\dir1\file.txt
+C:\dir1\subdirA\file.txt
+C:\dir1\subdirB\file.txt
+
+@code
+CFileMan* fm(CFileMan::NewL(iFs));	// Where iFs is an RFs handle
+fm->Copy(_L("C:\\dir1\\file.txt"), _L("C:\\dir2\\file.txt"), CFileMan::ERecurse);
+// OR without specifying the filename in aNew:
+fm->Copy(_L("C:\\dir1\\file.txt"), _L("C:\\dir2\\"), CFileMan::ERecurse);
+@endcode
+
+Because of the recursive behaviour, the final directory structure after
+either one of the copy operations above will be as follows:
+C:\dir1\file.txt
+C:\dir1\subdirA\file.txt
+C:\dir1\subdirB\file.txt
+C:\dir2\file.txt
+C:\dir2\subdirA\file.txt
+C:\dir2\subdirB\file.txt
+
 If recursive operation is not set, only the matching files located in
 the single directory specified in anOld are copied.
 No intermediate directories will be created; if any directories in
@@ -1122,13 +1152,13 @@
  1.2	If there is no file to operate on i.e. if source directory is empty, the
  	function will do nothing and return error code KErrNotFound.
 
- 2. Files can be copied across drives.
-
- 3. Open files can be copied if they have been opened using
-      the EFileShareReadersOnly file share mode.
-
- 4. Read-only, hidden and system files can be copied and
-   the source file's attributes are preserved in the target file.
+ 2.	Files can be copied across drives.
+
+ 3.	Open files can be copied if they have been opened using
+	the EFileShareReadersOnly file share mode.
+
+ 4.	Read-only, hidden and system files can be copied and
+	the source file's attributes are preserved in the target file.
 
 @param anOld     Path indicating the file(s) to be copied.
                  Any path components which are not specified here will be
@@ -1153,21 +1183,38 @@
 
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy2, MODULEUID, (TUint) this, anOld, aNew, aSwitches);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANCOPY2, "this %x aSwitches %d", (TUint) this, (TUint) aSwitches);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY2_EOLDNAME, "OldName %S", anOld.Ptr(), anOld.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY2_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 	if (iSwitches&KFManBusyFlag)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy2Return, MODULEUID, KErrInUse);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY2RETURN1, "r %d", KErrInUse);
 		return(KErrInUse);
 		}
 	SetFlags(aSwitches&EOverWrite,aSwitches&ERecurse,ETrue,EFalse);
-	RETURNIFERRORD(r,iFs.Parse(anOld,iSrcFile),UTraceModuleEfsrv::ECFileManCopy2Return);
-	RETURNIFERROR(r,iFs.Parse(aNew,_L("*"),iTrgFile),UTraceModuleEfsrv::ECFileManCopy2Return);
+	TInt r;
+	if ((r = iFs.Parse(anOld,iSrcFile)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY2RETURN2, "r %d", r);
+		return r;
+		}
+
+	if ((r = iFs.Parse(aNew,_L("*"),iTrgFile)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY2RETURN3, "r %d", r);
+		return r;
+		}
+
 	CheckForDirectory();
 
 	if((iSwitches&KRecurseFlag) && iTrgFile.DriveAndPath().MatchF(iSrcFile.FullName()) != KErrNotFound)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy2Return, MODULEUID, KErrArgument);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY2RETURN4, "r %d", KErrArgument);
 		return(KErrArgument);
 		}
 
@@ -1178,7 +1225,8 @@
 	TInt ret=(r==KErrNone) ? iLastError : r;
 	DoSynchronize(r);
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY2RETURN5, "r %d", ret);
+
 	return(ret);
 	}
 
@@ -1218,7 +1266,8 @@
 @see KNullDesC
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::ECFileManDelete1, MODULEUID, (TUint) this, aName, aSwitches, (TUint) &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_ECFILEMANDELETE1, "this %x aSwitches %x status %x", (TUint) this, (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANDELETE1_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -1231,7 +1280,8 @@
 		r = Delete(aName,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManDelete1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANDELETE1RETURN, "r %d", r);
+
 	return(r);
 	}
 
@@ -1278,7 +1328,8 @@
 @see KNullDesC
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::ECFileManDelete2, MODULEUID, (TUint) this, aName, aSwitches);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANDELETE2, "this %x aSwitches %d", (TUint) this, (TUint) aSwitches);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANDELETE2_EFILEPATH, "FilePath %S", aName.Ptr(), aName.Length()<<1);
 
 	TInt ret;
 	if (iSwitches&KFManBusyFlag)
@@ -1288,7 +1339,15 @@
 	else
 		{
 		SetFlags(aSwitches&EOverWrite,aSwitches&ERecurse,ETrue,EFalse);
-		RETURNIFERRORD(r,iFs.Parse(aName,iSrcFile),UTraceModuleEfsrv::ECFileManDelete2Return);
+		TInt r;
+		if ((r = iFs.Parse(aName,iSrcFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANDELETE2RETURN1, "() r %d", r);
+			return r;
+			}
+
 		iAction = EInternalDelete;
 		iMatchEntry=KEntryAttHidden|KEntryAttMatchExclude|KEntryAttDir;
 	//	Exclude directories and system files - include hidden files
@@ -1298,7 +1357,8 @@
 		DoSynchronize(r);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManDelete2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANDELETE2RETURN2, "() r %d", ret);
+
 	return(ret);
 	}
 
@@ -1342,8 +1402,9 @@
 
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove1, MODULEUID,
-		(TUint) this, anOld, aNew, aSwitches, (TUint) &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_ECFILEMANMOVE1, "this %x aSwitches %x status %x", (TUint) this, (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANMOVE1_EOLDNAME, "OldName %S", anOld.Ptr(), anOld.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANMOVE1_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -1356,7 +1417,8 @@
 		r = Move(anOld,aNew,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -1393,7 +1455,7 @@
   recursively by default and moves both the last directory level and all of its content.
   Notice that no trailing backslash ("\") implies moving files recursively automatically.
 
-For example, if the directory level "b" contains the files F1,F2 and F3, then:
+For example, if the directory level "b" contains the files F1, F2 and F3, then:
 @code
 CFileMan* fm(CFileMan::NewL(iFs)); // Where iFs is an RFs handle
 ...
@@ -1421,7 +1483,7 @@
 0 is passed as an argument, the operation behaves the same way as by passing
 CFileMan::ERecurse flag.
 
-for example:
+For example:
 @code
 CFileMan* fm(CFileMan::NewL(iFs)); // Where iFs is an RFs handle
 ...
@@ -1436,6 +1498,31 @@
 fm->Move(_L("C:\\a\\b"), _L("C:\\x\\y\\"), CFileMan::ERecurse);
 @endcode
 
+If the source (anOld) is a FILE and the recursive operation is set,
+then all the files with the same name as anOld in the source directory
+including those in subdirectories will be moved to the destination.
+
+For example, the initial directory structure is as follows:
+C:\src\file.txt
+C:\src\subdirA\file.txt
+C:\src\subdirB\file.txt
+
+@code
+CFileMan* fm(CFileMan::NewL(iFs));	// Where iFs is an RFs handle
+fm->Move(_L("C:\\src\\file.txt"), _L("C:\\dest\\file.txt"), CFileMan::ERecurse);
+// OR without specifying the filename in aNew:
+fm->Move(_L("C:\\src\\file.txt"), _L("C:\\dest\\"), CFileMan::ERecurse);
+@endcode
+
+Because of the recursive behaviour, the final directory structure after
+either one of the move operations above will be as follows:
+C:\src\
+C:\src\subdirA\
+C:\src\subdirB\
+C:\dest\file.txt
+C:\dest\subdirA\file.txt
+C:\dest\subdirB\file.txt
+
 Notes:
 
 -# Read-only, hidden and system files can be moved and the source file's
@@ -1443,7 +1530,7 @@
    be moved. Attempting to move an open file will return an error for
    that file, as retrieved by CFileBase::GetLastError().
 
-@param anOld	 Path indicating the files to be moved. May be either a full path, or
+@param anOld	 Path indicating the directory/files to be moved. May be either a full path, or
 				 relative to the session path. Note that if you specify a directory level,
 				 then the behaviour of the move operation is sensitive to the presence
 				 (or absence) of a trailing backslash ("\") character. Any path components
@@ -1471,20 +1558,36 @@
 @see CFileBase::GetLastError()
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove2, MODULEUID,
-		(TUint) this, anOld, aNew, aSwitches);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANMOVE2, "this %x aSwitches %d", (TUint) this, (TUint) aSwitches);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANMOVE2_EOLDNAME, "OldName %S", anOld.Ptr(), anOld.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANMOVE2_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 
 	if (iSwitches&KFManBusyFlag)
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove2Return, MODULEUID, KErrInUse);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE2RETURN1, "r %d", KErrInUse);
 		return(KErrInUse);
 		}
 
 	iNumberOfFilesProcessed = 0;
 
-	RETURNIFERRORD(r,iFs.Parse(anOld,iSrcFile),UTraceModuleEfsrv::ECFileManMove2Return);
-	RETURNIFERROR(r,iFs.Parse(aNew,_L("*"),iTrgFile),UTraceModuleEfsrv::ECFileManMove2Return);
+	TInt r;
+	if ((r = iFs.Parse(anOld,iSrcFile)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE2RETURN2, "r %d", r);
+		return r;
+		}
+
+	if ((r = iFs.Parse(aNew,_L("*"),iTrgFile)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE2RETURN3, "r %d", r);
+		return r;
+		}
+
 
 	TInt ret = KErrNone;
 	TBool aComplete = EFalse;
@@ -1503,7 +1606,7 @@
 			{
 			User::RequestComplete(iStatus, ret);
 			}
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove2Return, MODULEUID, ret);
+		OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE2RETURN4, "r %d", ret);
 		return(ret);
 		}
 
@@ -1518,7 +1621,8 @@
 	ret = (r==KErrNone) ? iLastError : r;
 	DoSynchronize(r);
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManMove2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANMOVE2RETURN5, "r %d", ret);
+
 	return(ret);
 	}
 
@@ -1865,8 +1969,9 @@
 
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::ECFileManRename1, MODULEUID,
-		(TUint) this, aName, aNewName, aSwitches, (TUint) &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_ECFILEMANRENAME1, "this %x aSwitches %x status %x", (TUint) this, (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRENAME1_EOLDNAME, "OldName %S", aName.Ptr(), aName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRENAME1_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -1879,7 +1984,8 @@
 		r = Rename(aName,aNewName,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManRename1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRENAME1RETURN, "r %d", r);
+
 	return(r);
 	}
 
@@ -2045,8 +2151,9 @@
 
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::ECFileManRename2, MODULEUID,
-		(TUint) this, aName, aNewName, aSwitches);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANRENAME2, "this %x aSwitches %d", (TUint) this, (TUint) aSwitches);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRENAME2_EOLDNAME, "OldName %S", aName.Ptr(), aName.Length()<<1);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRENAME2_ENEWNAME, "NewName %S", aNewName.Ptr(), aNewName.Length()<<1);
 
 	TInt ret;
 	if (iSwitches&KFManBusyFlag)
@@ -2056,8 +2163,22 @@
 	else
 		{
 		SetFlags(aSwitches&EOverWrite,EFalse,ETrue,EFalse);
-		RETURNIFERRORD(r,iFs.Parse(aName,iSrcFile),UTraceModuleEfsrv::ECFileManRename2Return);
-		RETURNIFERROR(r,iFs.Parse(aNewName,_L("*"),iTrgFile),UTraceModuleEfsrv::ECFileManRename2Return);
+		TInt r;
+		if ((r = iFs.Parse(aName,iSrcFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRENAME2RETURN1, "r %d", r);
+			return r;
+			}
+
+		if ((r = iFs.Parse(aNewName,_L("*"),iTrgFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRENAME2RETURN2, "r %d", r);
+			return r;
+			}
 
 		iAction = EInternalRename;
 		iMatchEntry=KEntryAttMaskSupported;
@@ -2067,7 +2188,8 @@
 		DoSynchronize(r);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManRename2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRENAME2RETURN3, "r %d", ret);
+
 	return(ret);
 	}
 
@@ -2097,7 +2219,8 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::ECFileManRmDir1, MODULEUID, (TUint) this, aDirName, (TUint) &aStatus);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECFILEMANRMDIR1, "this %x status %x", (TUint) this, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRMDIR1_EDIRNAME, "Dir %S", aDirName.Ptr(), aDirName.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -2110,7 +2233,8 @@
 		r = RmDir(aDirName);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManRmDir1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRMDIR1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -2145,7 +2269,8 @@
 
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::ECFileManRmDir2, MODULEUID, (TUint) this, aDirName);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRMDIR2, "this %x", (TUint) this);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANRMDIR2_EDIRNAME, "Dir %S", aDirName.Ptr(), aDirName.Length()<<1);
 
 	TInt ret;
 	if (iSwitches&KFManBusyFlag)
@@ -2155,7 +2280,15 @@
 	else
 		{
 		SetFlags(ETrue,ETrue,EFalse,EFalse);
-		RETURNIFERRORD(r,iFs.Parse(aDirName,iTrgFile),UTraceModuleEfsrv::ECFileManRmDir2Return);
+		TInt r;
+		if ((r = iFs.Parse(aDirName,iTrgFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRMDIR2RETURN1, "r %d", r);
+			return r;
+			}
+
 		iSrcFile.Set(iTrgFile.DriveAndPath(),NULL,NULL);
 		iAction = EInternalRmDir;
 		iMatchEntry=KEntryAttMaskSupported;
@@ -2165,7 +2298,8 @@
 		ret = (r!=KErrNone) ? iLastError : KErrNone;
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManRmDir2Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANRMDIR2RETURN2, "r %d", ret);
+
 	return ret;
 	}
 
@@ -2563,8 +2697,8 @@
 @capability Dependent If the path for aNew begins with /Resource then Tcb capability is required.
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy3, MODULEUID,
-		(TUint) this, anOld.SubSessionHandle(), aNew, aSwitches);
+	OstTraceExt3(TRACE_BORDER, EFSRV_ECFILEMANCOPY3, "this %x anOldSubs %x aSwitches %x", (TUint) this, (TUint) anOld.SubSessionHandle(), (TUint) aSwitches);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY3_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 	TInt ret;
 	if (iSwitches&KFManBusyFlag)
@@ -2586,11 +2720,23 @@
 		iSwitches|= KCopyFromHandle;
 
 		TInt r;
-		RETURNIFERROR(r, iFs.Parse(aNew, iTrgFile),UTraceModuleEfsrv::ECFileManCopy3Return);
+		if ((r = iFs.Parse(aNew, iTrgFile)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY3RETURN1, "r %d", r);
+			return r;
+			}
 
 		// Need to duplicate the RFile handle so that any threads owned
 		// by this process can use it - i.e. the worker thread
-		RETURNIFERROR(r, iSrcFileHandle.Duplicate(anOld, EOwnerProcess),UTraceModuleEfsrv::ECFileManCopy3Return);
+		if ((r = iSrcFileHandle.Duplicate(anOld, EOwnerProcess)) != KErrNone)
+			{
+			if(iStatus)
+				User::RequestComplete(iStatus,r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY3RETURN2, "r %d", r);
+			return r;
+			}
 
 		iAction = EInternalCopyFromHandle;
 		iNumberOfFilesProcessed = 0;
@@ -2599,7 +2745,8 @@
 		DoSynchronize(r);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy3Return, MODULEUID, ret);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY3RETURN3, "r %d", ret);
+
 	return(ret);
 	}
 
@@ -2635,8 +2782,8 @@
 @capability Dependent If the path for aNew begins with /Resource then Tcb capability is required.
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy4, MODULEUID,
-		(TUint) this, anOld.SubSessionHandle(), aNew, aSwitches, (TUint) &aStatus);
+	OstTraceExt4(TRACE_BORDER, EFSRV_ECFILEMANCOPY4, "this %x anOldSubs %x aSwitches %dstatus %x", (TUint) this, (TUint) anOld.SubSessionHandle(), (TUint) aSwitches, (TUint) &aStatus);
+	OstTraceData(TRACE_BORDER, EFSRV_ECFILEMANCOPY4_ENEWNAME, "NewName %S", aNew.Ptr(), aNew.Length()<<1);
 
 	TInt r;
 	if (iSwitches&KFManBusyFlag)
@@ -2649,7 +2796,8 @@
 		r = Copy(anOld,aNew,aSwitches);
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECFileManCopy4Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_ECFILEMANCOPY4RETURN, "r %d", r);
+
 	return(r);
 	}
 
@@ -2711,8 +2859,21 @@
 	{
 	TInt64 rem;
 #endif
-	RETURNIFERRORD(r,aSrcFile.Size(rem),EFalse);
-	RETURNIFERROR(r, aDstFile.SetSize(rem),EFalse);
+	TInt r;
+	if ((r = aSrcFile.Size(rem)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		return r;
+		}
+
+
+	if ((r = aDstFile.SetSize(rem)) != KErrNone)
+		{
+		if(iStatus)
+			User::RequestComplete(iStatus,r);
+		return r;
+		}
 
 	HBufC8* bufPtr = NULL;
 	bufPtr = AllocateBuffer(rem);
--- a/userlibandfileserver/fileserver/sfsrv/cl_fmt.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_fmt.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,6 +17,10 @@
 
 #include "cl_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_fmtTraces.h"
+#endif
+
 
 
 
@@ -48,12 +52,14 @@
 
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFormat1Open, MODULEUID, aFs.Handle(), aName, aFormatMode);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFORMAT1OPEN, "sess %x aFormatMode %x", (TUint) aFs.Handle(), (TUint) aFormatMode);
+	OstTraceData(TRACE_BORDER, EFSRV_EFORMAT1OPEN_EDRIVENAME, "DriveName %S", aName.Ptr(), aName.Length()<<1);
 
 	TPtr8 c((TUint8*)&aCount,sizeof(TUint),sizeof(TUint));
 	TInt r = CreateSubSession(aFs,EFsFormatOpen,TIpcArgs(&aName,aFormatMode,&c));
 
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFormatOpen1Return, MODULEUID, r, SubSessionHandle(), aCount);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFORMATOPEN1RETURN, "r %d subs %x aCount %d", (TUint) r, (TUint) SubSessionHandle(), (TUint) aCount);
+
 	return r;
 	}
 
@@ -86,7 +92,8 @@
 @capability DiskAdmin
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFormat2Open, MODULEUID, aFs.Handle(), aName, aFormatMode, TUint(&aInfo));
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFORMAT2OPEN, "sess %x aFormatMode %x aInfo %x", (TUint) aFs.Handle(), (TUint) aFormatMode, (TUint) TUint(&aInfo));
+	OstTraceData(TRACE_BORDER, EFSRV_EFORMAT2OPEN_EDRIVENAME, "DriveName %S", aName.Ptr(), aName.Length()<<1);
 
 	TInt size = sizeof(TUint)+aInfo.Length();
 	TUint8* buf = new TUint8[size];
@@ -106,7 +113,8 @@
 		delete[] buf;
 		}
 
-	TRACERET3(UTF::EBorder, UTraceModuleEfsrv::EFormatOpen2Return, MODULEUID, r, SubSessionHandle(), aCount);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFORMATOPEN2RETURN, "r %d subs %x aCount %d", (TUint) r, (TUint) SubSessionHandle(), (TUint) aCount);
+
 	return r;
 	}
 
@@ -122,11 +130,11 @@
 it completed successfully or not.
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFormatClose, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFORMATCLOSE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	CloseSubSession(EFsFormatSubClose);
 	
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFormatCloseReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFORMATCLOSERETURN, "");
 	}
 
 
@@ -152,12 +160,13 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EFormatNext1, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFORMATNEXT1, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	TPckg<TInt> e(aStep);
 	TInt r = SendReceive(EFsFormatNext,TIpcArgs(&e));
 
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFormatNext1Return, MODULEUID, r, aStep);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFORMATNEXT1RETURN, "r %d aStep %d", (TUint) r, (TUint) aStep);
+
 	return r;
 	}
 
@@ -187,9 +196,9 @@
 
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFormatNext2, MODULEUID, Session().Handle(), SubSessionHandle(), &aStatus);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFORMATNEXT2, "sess %x subs %x status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) &aStatus);
 
 	SendReceive(EFsFormatNext,TIpcArgs(&aStep),aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EFormatNext2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EFORMATNEXT2RETURN, "");
 	}
--- a/userlibandfileserver/fileserver/sfsrv/cl_main.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_main.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,12 +17,16 @@
 
 #include "cl_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_mainTraces.h"
+#endif
+
 GLDEF_C void Panic(TClientPanic aPanic)
 //
 // Panic the current client with a file server client side panic.
 //
 	{
-	TRACE1(UTF::EPanic, UTraceModuleEfsrv::EPanic, MODULEUID, aPanic);
+	OstTrace1(TRACE_PANIC, EFSRV_EPANIC, "%d", aPanic);
 
 	User::Panic(_L("FSCLIENT panic"),aPanic);
 	}
--- a/userlibandfileserver/fileserver/sfsrv/cl_plugin.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_plugin.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -17,6 +17,10 @@
 
 #include "cl_std.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_pluginTraces.h"
+#endif
+
  
 EXPORT_C TInt RFs::AddPlugin(const TDesC& aFileName) const
 /**
@@ -31,7 +35,8 @@
 @capability DiskAdmin
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsAddPlugin, MODULEUID, Handle(), aFileName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDPLUGIN, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSADDPLUGIN_EFILENAME, "FileName %S", aFileName.Ptr(), aFileName.Length()<<1);
 
 	RLoader loader;
 	TInt r = loader.Connect();
@@ -41,7 +46,8 @@
 		loader.Close();
 		}
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsAddPluginReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSADDPLUGINRETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -60,11 +66,13 @@
 @capability DiskAdmin
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsRemovePlugin, MODULEUID, Handle(), aPluginName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEPLUGIN, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSREMOVEPLUGIN_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsRemovePlugin,TIpcArgs(&aPluginName));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsRemovePluginReturn, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSREMOVEPLUGINRETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -95,11 +103,13 @@
 @capability DiskAdmin      
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin1, MODULEUID, Handle(), aPluginName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN1, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN1_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsMountPlugin,TIpcArgs(&aPluginName,KPluginAutoAttach,KPluginAutoLocate));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -131,11 +141,13 @@
 @capability DiskAdmin      
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin2, MODULEUID, Handle(), aPluginName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN2, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN2_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsMountPlugin,TIpcArgs(&aPluginName,aDrive,KPluginAutoLocate));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN2RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -175,11 +187,13 @@
 @capability DiskAdmin        
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin3, MODULEUID, Handle(), aPluginName, aDrive, aPos);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN3, "sess %x aDrive %d aPos %x", (TUint) Handle(), (TUint) aDrive, (TUint) aPos);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN3_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsMountPlugin,TIpcArgs(&aPluginName,aDrive,aPos));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsMountPlugin3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSMOUNTPLUGIN3RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -200,11 +214,13 @@
 @capability DiskAdmin       
 */
 	{
-	TRACEMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin1, MODULEUID, Handle(), aPluginName);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN1, "sess %x", Handle());
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN1_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsDismountPlugin,TIpcArgs(&aPluginName,KPluginAutoAttach,KPluginAutoLocate));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -233,11 +249,13 @@
 @capability DiskAdmin       
 */
 	{
-	TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin2, MODULEUID, Handle(), aPluginName, aDrive);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN2, "sess %x aDrive %d", (TUint) Handle(), (TUint) aDrive);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN2_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsDismountPlugin,TIpcArgs(&aPluginName,aDrive,KPluginAutoLocate));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN2RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -269,11 +287,13 @@
 @capability DiskAdmin      
 */
 	{
-	TRACEMULT4(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin3, MODULEUID, Handle(), aPluginName, aDrive, aPos);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN3, "sess %x aDrive %d aPos %x", (TUint) Handle(), (TUint) aDrive, (TUint) aPos);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN3_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
 
 	TInt r = SendReceive(EFsDismountPlugin,TIpcArgs(&aPluginName,aDrive,aPos));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EFsDismountPlugin3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EFSDISMOUNTPLUGIN3RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -293,11 +313,14 @@
         KErrNotFound if the plugin name is not found;
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EFsPluginName, MODULEUID, Handle(), aDrive, aPos);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EFSPLUGINNAME, "sess %x aDrive %d aPos %x", (TUint) Handle(), (TUint) aDrive, (TUint) aPos);
 
 	TInt r = SendReceive(EFsPluginName,TIpcArgs(&aPluginName,aDrive,aPos));
 
-	TRACERETMULT2(UTF::EBorder, UTraceModuleEfsrv::EFsPluginName, MODULEUID, r, aPluginName);
+	OstTraceData(TRACE_BORDER, EFSRV_EFSPLUGINNAME_EPLUGINNAME, "PluginName %S", aPluginName.Ptr(), aPluginName.Length()<<1);
+
+	OstTrace1(TRACE_BORDER, EFSRV_EFSPLUGINNAMERETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -313,11 +336,12 @@
 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EPluginOpen, MODULEUID, aFs.Handle(), aPos);
+	OstTraceExt2(TRACE_BORDER, EFSRV_EPLUGINOPEN, "sess %x aPos %x", (TUint) aFs.Handle(), (TUint) aPos);
 
 	TInt r = CreateSubSession(aFs,EFsPluginOpen,TIpcArgs(aPos,0,0));
 
-	TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EPluginOpenReturn, MODULEUID, r, SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EPLUGINOPENRETURN, "r %d subs %x", (TUint) r, (TUint) SubSessionHandle());
+
 	return r;
 	}
 
@@ -328,11 +352,11 @@
 Closes a plugin 
 */
 	{
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::EPluginClose, MODULEUID, Session().Handle(), SubSessionHandle());
+	OstTraceExt2(TRACE_BORDER, EFSRV_EPLUGINCLOSE, "sess %x subs %x", (TUint) Session().Handle(), (TUint) SubSessionHandle());
 
 	CloseSubSession(EFsPluginSubClose);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EPluginCloseReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EPLUGINCLOSERETURN, "");
 	}
 
 EXPORT_C void RPlugin::DoRequest(TInt aReqNo, TRequestStatus& aStatus) const
@@ -345,12 +369,12 @@
 @param aStatus: status of the request
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest1, MODULEUID, Session().Handle(), SubSessionHandle(), aReqNo, &aStatus);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST1, "sess %x subs %x aReqNo %d status %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aReqNo, (TUint) &aStatus);
 
 	aStatus=KRequestPending;
 	SendReceive(EFsPluginDoRequest, TIpcArgs(aReqNo, NULL, NULL), aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest1Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST1RETURN, "");
 	}
 
 EXPORT_C void RPlugin::DoRequest(TInt aReqNo, TRequestStatus& aStatus, TDes8& a1) const
@@ -364,12 +388,12 @@
 @param a1: returning value from plugin
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest2, MODULEUID, Session().Handle(), SubSessionHandle(), aReqNo, &aStatus, &a1);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST2, "sess %x subs %x aReqNo %d status %x a1 %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aReqNo, (TUint) &aStatus, (TUint) &a1);
 
 	aStatus=KRequestPending;
 	SendReceive(EFsPluginDoRequest, TIpcArgs(aReqNo, &a1, NULL), aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest2Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST2RETURN, "");
 	}
 
 EXPORT_C void RPlugin::DoRequest(TInt aReqNo, TRequestStatus& aStatus, TDes8& a1, TDes8& a2) const
@@ -382,12 +406,12 @@
 @param a2: 2nd returning value from plugin
 */
 	{
-	TRACE6(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest3, MODULEUID, Session().Handle(), SubSessionHandle(), aReqNo, &aStatus, &a1, &a2);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST3, "sess %x subs %x aReqNo %d a1 %x a2 %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aReqNo, (TUint) &a1, (TUint) &a2);
 
 	aStatus=KRequestPending;
 	SendReceive(EFsPluginDoRequest, TIpcArgs(aReqNo, &a1, &a2), aStatus);
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EPluginDoRequest3Return, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EPLUGINDOREQUEST3RETURN, "");
 	}
 
 EXPORT_C TInt RPlugin::DoControl(TInt aFunction) const
@@ -399,11 +423,12 @@
 @param	aFunction: The operation to be handled
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl1, MODULEUID, Session().Handle(), SubSessionHandle(), aFunction);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL1, "sess %x subs %x aFunction %d", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFunction);
 
 	TInt r = SendReceive(EFsPluginDoControl,TIpcArgs(aFunction,0,0));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl1Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL1RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -417,11 +442,12 @@
 @param	a1: returned buffer from plugin on completion of the request
 */
 	{
-	TRACE4(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl2, MODULEUID, Session().Handle(), SubSessionHandle(), aFunction, &a1);
+	OstTraceExt4(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL2, "sess %x subs %x aFunction %d a1 %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFunction, (TUint) &a1);
 
 	TInt r = SendReceive(EFsPluginDoControl,TIpcArgs(aFunction,&a1,0));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl2Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL2RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -436,11 +462,12 @@
 @param  a2: 2nd returned buffer from plugin on completion of the request
 */
 	{
-	TRACE5(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl3, MODULEUID, Session().Handle(), SubSessionHandle(), aFunction, &a1, &a2);
+	OstTraceExt5(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL3, "sess %x subs %x aFunction %d a1 %x a2 %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aFunction, (TUint) &a1, (TUint) &a2);
 
 	TInt r = SendReceive(EFsPluginDoControl,TIpcArgs(aFunction,&a1,&a2));
 
-	TRACERET1(UTF::EBorder, UTraceModuleEfsrv::EPluginDoControl3Return, MODULEUID, r);
+	OstTrace1(TRACE_BORDER, EFSRV_EPLUGINDOCONTROL3RETURN, "r %d", r);
+
 	return r;
 	}
 
@@ -453,10 +480,10 @@
 @param	aReqMask: the bit mask for the operation to be cancelled
 */
 	{
-	TRACE3(UTF::EBorder, UTraceModuleEfsrv::EPluginDoCancel, MODULEUID, Session().Handle(), SubSessionHandle(), aReqMask);
+	OstTraceExt3(TRACE_BORDER, EFSRV_EPLUGINDOCANCEL, "sess %x subs %x aReqMask %x", (TUint) Session().Handle(), (TUint) SubSessionHandle(), (TUint) aReqMask);
 
 	SendReceive(EFsPluginDoCancel,TIpcArgs(KMaxTInt,aReqMask,0));
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::EPluginDoCancelReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_EPLUGINDOCANCELRETURN, "");
 	}
 
--- a/userlibandfileserver/fileserver/sfsrv/cl_scan.cpp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_scan.cpp	Fri Jun 11 15:02:23 2010 +0300
@@ -16,6 +16,10 @@
 #include "cl_std.h"
 #include "cl_scan.h"
 
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "cl_scanTraces.h"
+#endif
+
 const TInt KDirStackGranularity=8;
 
 /** Replace long names in path and filename with their sohrter version (if exists). Optionally appends
@@ -115,13 +119,13 @@
 @return A pointer to the new directory scan object.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNewLC, MODULEUID, aFs.Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANNEWLC, "sess %x", aFs.Handle());
 
 	CDirScan* scan=new(ELeave) CDirScan(aFs);
 	CleanupStack::PushL(scan);
 	scan->iStack=CDirStack::NewL();
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNewLCReturn, MODULEUID, scan);
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANNEWLCRETURN, "CDirScan* %x", scan);
 	return scan;
 	}
 
@@ -137,12 +141,12 @@
 @return A pointer to the new directory scan object.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNewL, MODULEUID, aFs.Handle());
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANNEWL, "sess %x", aFs.Handle());
 
 	CDirScan* scan=CDirScan::NewLC(aFs);
 	CleanupStack::Pop();
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNewLReturn, MODULEUID, scan);
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANNEWLRETURN, "CDirScan* %x", scan);
 	return scan;
 	}
 
@@ -156,11 +160,11 @@
 Frees all resources owned by the object, prior to its destruction.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanDestructor, MODULEUID, this);
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANDESTRUCTOR, "this %x", this);
 
 	delete iStack;
 
-	TRACE0(UTF::EBorder, UTraceModuleEfsrv::ECDirScanDestructorReturn, MODULEUID);
+	OstTrace0(TRACE_BORDER, EFSRV_ECDIRSCANDESTRUCTORRETURN, "");
 	}
 
 
@@ -214,13 +218,13 @@
 @param aScanDir       The direction of the scan. The default is downwards.
 */
 	{
-	TRACEMULT5(UTF::EBorder, UTraceModuleEfsrv::ECDirScanSetScanDataL, MODULEUID, (TUint) 
-		this, aMatchName, anEntryAttMask, anEntrySortKey, (TUint) aScanDir);
+	OstTraceExt4(TRACE_BORDER, EFSRV_ECDIRSCANSETSCANDATAL, "this %x anEntryAttMask %x anEntrySortKey %d aScanDir %d", (TUint) this, (TUint) anEntryAttMask, (TUint) anEntrySortKey, (TUint) aScanDir);
+	OstTraceData(TRACE_BORDER, EFSRV_ECDIRSCANSETSCANDATAL_EFILEPATH, "FilePath %S", aMatchName.Ptr(), aMatchName.Length()<<1);
 
 	TInt r = Fs().Parse(aMatchName,iFullPath);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanSetScanDataLReturn, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANSETSCANDATALRETURN1, "r %d", r);
 		User::Leave(r);
 		}
 
@@ -234,7 +238,7 @@
 	if (aScanDir==EScanDownTree)
 		iFullPath.PopDir();
 
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanSetScanDataLReturn, MODULEUID, KErrNone);
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANSETSCANDATALRETURN2, "r %d", KErrNone);
 	}
 
 void CDirScan::UpdateAbbreviatedPath()
@@ -278,15 +282,14 @@
                    no more directories in the structure.
 */
 	{
-	TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNextL, MODULEUID, this);
+	OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANNEXTL, "this %x", this);
 
 	if (iScanDir==EScanUpTree)
 		ScanUpTreeL(aDirEntries);
 	else
 		ScanDownTreeL(aDirEntries);
 
-	TRACE2(UTF::EBorder, UTraceModuleEfsrv::ECDirScanNextLReturn, MODULEUID, 
-		KErrNone, aDirEntries ? (*aDirEntries).Count() : 0);
+	OstTraceExt2(TRACE_BORDER, EFSRV_ECDIRSCANNEXTLRETURN, "r %d DirEntries %d", (TUint) KErrNone, (TUint) aDirEntries ? (*aDirEntries).Count() : 0);
 	}
 
 void CDirScan::ScanUpTreeL(CDir*& aDirEntries)
@@ -337,7 +340,7 @@
 			}
 		if (r != KErrNone)
 			{
-			TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE1, "r %d", r);
 			User::LeaveIfError(r);
 			}
 
@@ -355,7 +358,7 @@
 		else if (r != KErrNone)
 			{
 			iScanning = EFalse;
-			TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE2, "r %d", r);
 			User::Leave(r);
 			}
 		
@@ -393,7 +396,7 @@
 	TInt r = Fs().GetDir(iFullPath.FullName(),iEntryAttMask,iEntrySortMask,aDirEntries);
 	if (r != KErrNone)
 		{
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE3, "r %d", r);
 		User::Leave(r);
 		}
 	}
@@ -425,7 +428,7 @@
 	r=iFullPath.AddDir(dirName);
 	if (r==KErrGeneral)	//	Adding dirName makes iFullPath>256 characters
 		{
-		TRACE1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, KErrTooBig);
+		OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE4, "r %d", KErrTooBig);
 		User::Leave(KErrTooBig);
 		}
 
@@ -447,7 +450,7 @@
 									   iEntrySortMask,dirList);
 		if (r != KErrNone)
 			{
-			TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE5, "r %d", r);
 			User::Leave(r);
 			}
 		iStack->PushL(*dirList);
@@ -464,7 +467,7 @@
 	else
 		{
 		iScanning = EFalse;
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE6, "r %d", r);
 		User::Leave(r);
 		}
 	}
@@ -568,7 +571,7 @@
 	if (r!=KErrNone)
 		{
 		delete nextLevel;
-		TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+		OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE7, "r %d", r);
 		User::Leave(r);
 		}
 	}
@@ -706,7 +709,7 @@
 		TInt r = iFs->GetOpenFileList(iScanPos,iEntryListPos,theId,array);
 		if (r != KErrNone)
 			{
-			TRACERET1(UTF::EBorder, UTraceModuleEfsrv::ECDirScanLeave, MODULEUID, r);
+			OstTrace1(TRACE_BORDER, EFSRV_ECDIRSCANLEAVE8, "r %d", r);
 			User::Leave(r);
 			}
 		TInt count=array.Count();
--- a/userlibandfileserver/fileserver/sfsrv/cl_std.h	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/sfsrv/cl_std.h	Fri Jun 11 15:02:23 2010 +0300
@@ -26,7 +26,6 @@
 #include <f32ver.h>
 #include <e32svr.h>
 #include <f32plugin.h>
-#include <utraceefsrv.h>
 #include "f32trace.h"
 
 enum TClientPanic
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfsrv/efsrv.mmh	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,63 @@
+// Copyright (c) 1996-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:
+// f32\group\efsrv.mmp
+// efsrv.dll File Server client-side library
+// 
+//
+
+/**
+ @file
+*/
+
+
+
+USERINCLUDE		../ftrace
+
+USERINCLUDE		../sfsrv/traces
+
+SOURCEPATH		../sfsrv
+SOURCE			 cl_cdir.cpp cl_cli.cpp cl_debug.cpp cl_dir.cpp
+SOURCE			 cl_drive.cpp cl_entry.cpp cl_file.cpp cl_find.cpp
+SOURCE			 cl_fman.cpp cl_fmt.cpp cl_fraw.cpp cl_ftext.cpp
+SOURCE			 cl_main.cpp cl_parse.cpp cl_scan.cpp cl_insecure.cpp
+SOURCE			 cl_plugin.cpp cl_blockmap.cpp cl_clamp.cpp
+SOURCE			 cl_shim.cpp
+SOURCE			 cl_notification.cpp
+SOURCEPATH	../group
+DOCUMENT		 release.txt
+
+TARGETTYPE		dll
+
+DEFFILE			 efsrv.def
+
+USERINCLUDE	../inc
+#ifdef SYMBIAN_OLD_EXPORT_LOCATION
+SYSTEMINCLUDE	../inc
+#endif
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+LIBRARY			 euser.lib hal.lib
+
+START WINS
+BASEADDRESS		0x66000000
+END
+
+UID		0x1000008d 0x100039e4
+VENDORID 0x70000001
+CAPABILITY	All
+
+unpagedcode
+
+SMPSAFE
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfsrv/efsrv.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 1996-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:
+// f32/sfsrv/efsrv.mmp
+// efsrv.dll File Server client-side library
+// 
+//
+
+/**
+ @file
+*/
+
+
+TARGET			efsrv.dll
+
+#include "f32.mmh"  	// Generic definitions for the whole f32 component
+
+// By default, tracepoints are compiled in to UDEB version only
+#ifdef SYMBIAN_TRACE_SYSTEM_INCLUDE
+	macro SYMBIAN_FTRACE_ENABLE_UDEB
+//	macro SYMBIAN_FTRACE_ENABLE_UREL
+#endif
+
+
+#include "efsrv.mmh"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfsrv/traces/OstTraceDefinitions.h	Fri Jun 11 15:02:23 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/sfsrv/traces/fixed_id.definitions	Fri Jun 11 15:02:23 2010 +0300
@@ -0,0 +1,646 @@
+#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt.
+[GROUP]TRACE_BORDER=0x40
+[GROUP]TRACE_PANIC=0x41
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANDESTRUCTOR=0x273
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANDESTRUCTORRETURN=0x274
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE1=0x27b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE2=0x27c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE3=0x27d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE4=0x27e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE5=0x27f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE6=0x280
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE7=0x281
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANLEAVE8=0x282
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEWL=0x271
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEWLC=0x26f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEWLCRETURN=0x270
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEWLRETURN=0x272
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEXTL=0x279
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANNEXTLRETURN=0x27a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANSETSCANDATAL=0x275
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANSETSCANDATALRETURN1=0x277
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANSETSCANDATALRETURN2=0x278
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECDIRSCANSETSCANDATAL_EFILEPATH=0x276
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS1A=0x1f5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS1A_EFILEPATH=0x1f7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS1B=0x1f6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS1RETURN=0x1f8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS2A=0x1f9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS2A_EFILEPATH=0x1fb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS2B=0x1fa
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS2RETURN1=0x1fc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANATTRIBS2RETURN2=0x1fd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANBYTESTRANSFERREDBYCOPYSTEP=0x1f4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY1=0x1fe
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY1RETURN=0x201
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY1_ENEWNAME=0x200
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY1_EOLDNAME=0x1ff
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2=0x202
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2RETURN1=0x205
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2RETURN2=0x206
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2RETURN3=0x207
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2RETURN4=0x208
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2RETURN5=0x209
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2_ENEWNAME=0x204
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY2_EOLDNAME=0x203
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY3=0x22e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY3RETURN1=0x230
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY3RETURN2=0x231
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY3RETURN3=0x232
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY3_ENEWNAME=0x22f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY4=0x233
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY4RETURN=0x235
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCOPY4_ENEWNAME=0x234
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCURRENTACTION=0x1ec
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANCURRENTACTIONRETURN=0x1ed
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE1=0x20a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE1RETURN=0x20c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE1_EFILEPATH=0x20b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE2=0x20d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE2RETURN1=0x20f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE2RETURN2=0x210
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDELETE2_EFILEPATH=0x20e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDESTRUCTOR=0x1ea
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANDESTRUCTORRETURN=0x1eb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTSOURCE=0x1f1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTSOURCERETURN=0x1f2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTSOURCE_EFILENAME=0x1f3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTTARGET=0x1ee
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTTARGETRETURN=0x1ef
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANGETCURRENTTARGET_EFILENAME=0x1f0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE1=0x211
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE1RETURN=0x214
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE1_ENEWNAME=0x213
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE1_EOLDNAME=0x212
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2=0x215
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2RETURN1=0x218
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2RETURN2=0x219
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2RETURN3=0x21a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2RETURN4=0x21b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2RETURN5=0x21c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2_ENEWNAME=0x217
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANMOVE2_EOLDNAME=0x216
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANNEWL1=0x1e6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANNEWL1RETURN=0x1e7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANNEWL2=0x1e8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANNEWL2RETURN=0x1e9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME1=0x21d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME1RETURN=0x220
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME1_ENEWNAME=0x21f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME1_EOLDNAME=0x21e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2=0x221
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2RETURN1=0x224
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2RETURN2=0x225
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2RETURN3=0x226
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2_ENEWNAME=0x223
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRENAME2_EOLDNAME=0x222
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR1=0x227
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR1RETURN=0x229
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR1_EDIRNAME=0x228
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR2=0x22a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR2RETURN1=0x22c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR2RETURN2=0x22d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_ECFILEMANRMDIR2_EDIRNAME=0x22b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRCLOSE=0x124
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRCLOSERETURN=0x125
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN1=0x11e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN1RETURN=0x120
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN1_EDIRNAME=0x11f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN2=0x121
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN2RETURN=0x123
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIROPEN2_EDIRNAME=0x122
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD1=0x126
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD1RETURN=0x127
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD2=0x128
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD2RETURN=0x129
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD3=0x12a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD3RETURN=0x12b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD4=0x12c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EDIRREAD4RETURN=0x12d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCLIENT=0x1b1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN1=0x1b2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN2=0x1b3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCLIENTRETURN3=0x1b4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCREATOR=0x1b8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCREATORRETURN1=0x1b9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCREATORRETURN2=0x1ba
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMCREATORRETURN3=0x1bb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMSERVER=0x1b5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMSERVERRETURN1=0x1b6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64ADOPTFROMSERVERRETURN2=0x1b7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64CREATE=0x1a7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64CREATERETURN=0x1a9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64CREATE_EFILENAME=0x1a8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64LOCK=0x1d2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64LOCKRETURN=0x1d3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64OPEN=0x1a4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64OPENRETURN=0x1a6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64OPEN_EFILENAME=0x1a5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ10=0x1be
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ10RETURN=0x1bf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ11=0x1c2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ11RETURN=0x1c3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ12=0x1d8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ12RETURN=0x1d9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ13=0x1dc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ13RETURN=0x1dd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ14=0x1d6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ14RETURN=0x1d7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ15=0x1c0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ15RETURN=0x1c1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ16=0x1da
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ16RETURN=0x1db
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ8=0x1bc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64READ8RETURN=0x1bd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64REPLACE=0x1aa
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64REPLACERETURN=0x1ac
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64REPLACE_EFILENAME=0x1ab
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SEEK2=0x1cc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SEEK2RETURN=0x1cd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SETSIZE2=0x1d0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SETSIZE2RETURN=0x1d1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SIZE2=0x1ce
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64SIZE2RETURN=0x1cf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64TEMP=0x1ad
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64TEMPRETURN=0x1b0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64TEMP_EDIRNAME=0x1ae
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64TEMP_EFILENAME=0x1af
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64UNLOCK=0x1d4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64UNLOCKRETURN=0x1d5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE11=0x1ca
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE11RETURN=0x1cb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE12=0x1e4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE12RETURN=0x1e5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE13=0x1c4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE13RETURN=0x1c5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE14=0x1de
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE14RETURN=0x1df
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE15=0x1c6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE15RETURN=0x1c7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE16=0x1e0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE16RETURN=0x1e1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE7=0x1c8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE7RETURN=0x1c9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE8=0x1e2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILE64WRITE8RETURN=0x1e3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPT=0x12e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCLIENT=0x135
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCLIENTRETURN1=0x136
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCLIENTRETURN2=0x137
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCLIENTRETURN3=0x138
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCREATOR=0x139
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCREATORRETURN1=0x13a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCREATORRETURN2=0x13b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMCREATORRETURN3=0x13c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMSERVER=0x132
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMSERVERRETURN1=0x133
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTFROMSERVERRETURN2=0x134
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTRETURN1=0x12f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTRETURN2=0x130
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEADOPTRETURN3=0x131
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEATT=0x18d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEATTRETURN=0x18e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEBLOCKMAPA=0x1a1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEBLOCKMAPB=0x1a2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEBLOCKMAPRETURN=0x1a3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECHANGEMODE=0x198
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECHANGEMODERETURN=0x199
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECLAMP=0x19f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECLAMPRETURN=0x1a0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECLOSE=0x153
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECLOSERETURN=0x154
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECREATE=0x155
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECREATERETURN=0x157
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILECREATE_EFILENAME=0x156
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDRIVE=0x19d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDRIVERETURN=0x19e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDUPLICATE=0x13d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDUPLICATERETURN1=0x13e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDUPLICATERETURN2=0x13f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEDUPLICATERETURN3=0x140
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFLUSH1=0x185
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFLUSH1RETURN=0x186
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFLUSH2=0x187
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFLUSH2RETURN=0x188
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFULLNAME=0x14d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFULLNAMERETURN=0x14f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEFULLNAME_EFILENAME=0x14e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEGETNAME=0x14a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEGETNAMERETURN=0x14c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEGETNAME_EFILENAME=0x14b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILELOCK=0x17f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILELOCKRETURN=0x180
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEMODIFIED=0x191
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEMODIFIEDRETURN=0x192
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEOPEN=0x150
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEOPENRETURN=0x152
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEOPEN_EFILENAME=0x151
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD1=0x15f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD1RETURN=0x160
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD2=0x161
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD2RETURN=0x162
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD3=0x167
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD3RETURN=0x168
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD4=0x169
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD4RETURN=0x16a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD5=0x163
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD5RETURN=0x164
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD6=0x165
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD6RETURN=0x166
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD7=0x16b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD7RETURN=0x16c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD9=0x16d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREAD9RETURN=0x16e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILERENAME=0x19a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILERENAMERETURN=0x19c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILERENAME_ENEWNAME=0x19b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREPLACE=0x158
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREPLACERETURN=0x15a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEREPLACE_EFILENAME=0x159
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESEEK1=0x183
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESEEK1RETURN=0x184
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETA=0x195
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETATT=0x18f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETATTRETURN=0x190
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETB=0x196
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETMODIFIED=0x193
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETMODIFIEDRETURN=0x194
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETRETURN=0x197
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETSIZE1=0x18b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESETSIZE1RETURN=0x18c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESIZE=0x189
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILESIZERETURN=0x18a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETEMP=0x15b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETEMPRETURN=0x15e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETEMP_EDIRNAME=0x15c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETEMP_EFILENAME=0x15d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOCLIENT=0x144
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOCLIENTRETURN1=0x145
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOCLIENTRETURN2=0x146
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOCLIENTRETURN3=0x147
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOPROCESS=0x148
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOPROCESSRETURN=0x149
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOSERVER=0x141
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOSERVERRETURN1=0x142
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILETRANSFERTOSERVERRETURN2=0x143
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEUNLOCK=0x181
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEUNLOCKRETURN=0x182
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE1=0x16f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE10=0x17d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE10RETURN=0x17e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE1RETURN=0x170
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE2=0x171
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE2RETURN=0x172
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE3=0x177
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE3RETURN=0x178
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE4=0x179
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE4RETURN=0x17a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE5=0x173
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE5RETURN=0x174
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE6=0x17b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE6RETURN=0x17c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE9=0x175
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFILEWRITE9RETURN=0x176
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMAT1OPEN=0x236
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMAT1OPEN_EDRIVENAME=0x237
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMAT2OPEN=0x239
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMAT2OPEN_EDRIVENAME=0x23a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATCLOSE=0x23c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATCLOSERETURN=0x23d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATNEXT1=0x23e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATNEXT1RETURN=0x23f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATNEXT2=0x240
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATNEXT2RETURN=0x241
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATOPEN1RETURN=0x238
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFORMATOPEN2RETURN=0x23b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDCOMPOSITEMOUNT=0xfe
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDCOMPOSITEMOUNTRETURN=0x100
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDCOMPOSITEMOUNT_EFILESYSTEMNAME=0xff
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDEXTENSION=0x3b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDEXTENSIONRETURN=0x3d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDEXTENSION_EEXTENSIONNAME=0x3c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDFILESYSTEM=0x17
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDFILESYSTEMRETURN=0x19
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDFILESYSTEM_EFILENAME=0x18
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDPLUGIN=0x242
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDPLUGINRETURN=0x244
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSADDPLUGIN_EFILENAME=0x243
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSALLOWDISMOUNT=0x10d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSALLOWDISMOUNTRETURN=0x10e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSATT=0xa0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSATTRETURN=0xa2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSATT_EFILENAME=0xa1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCHECKDISK=0xc1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCHECKDISKRETURN=0xc3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCHECKDISK_EDIRNAME=0xc2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCLEARPASSWORD=0xec
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCLEARPASSWORDRETURN=0xed
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCLOSE=0x11c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCLOSERETURN=0x11d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCONNECT=0xc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCONNECTRETURN=0xd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCREATEPRIVATEPATH=0x13
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSCREATEPRIVATEPATHRETURN=0x14
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDELETE=0x95
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDELETERETURN=0x97
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDELETE_EFILENAME=0x96
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTEXTENSION=0x41
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTEXTENSIONRETURN=0x43
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTEXTENSION_EEXTENSIONNAME=0x42
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTFILESYSTEM=0x32
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTFILESYSTEMRETURN=0x34
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTFILESYSTEM_EFILESYSTEMNAME=0x33
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN1=0x251
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN1RETURN=0x253
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN1_EPLUGINNAME=0x252
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN2=0x254
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN2RETURN=0x256
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN2_EPLUGINNAME=0x255
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN3=0x257
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN3RETURN=0x259
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDISMOUNTPLUGIN3_EPLUGINNAME=0x258
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVE=0x5f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVELIST1=0x5b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVELIST1RETURN=0x5c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVELIST2=0x5d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVELIST2RETURN=0x5e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVERETURN=0x60
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVETOCHAR=0x1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSDRIVETOCHARRETURN=0x2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSENTRY=0xac
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSENTRYRETURN=0xae
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSENTRY_EFILENAME=0xad
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSERASEPASSWORD=0xee
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSERASEPASSWORDRETURN=0xef
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSEXTENSIONNAME=0x47
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSEXTENSIONNAMERETURN=0x49
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSEXTENSIONNAME_EEXTENSIONNAME=0x48
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMNAME=0x35
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMNAMERETURN=0x37
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMNAME_EFILESYSTEMNAME=0x36
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMNAME_ESUPPORTEDFILESYSTEMNAME=0x39
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMSUBTYPE=0x119
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMSUBTYPERETURN=0x11b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFILESYSTEMSUBTYPE_EFILESYSTEMNAME=0x11a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFINALISEDRIVE=0xf5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFINALISEDRIVERETURN=0xf6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFINALISEDRIVES=0xf7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFINALISEDRIVESRETURN1=0xf8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSFINALISEDRIVESRETURN2=0xf9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR1=0x85
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR1RETURN=0x87
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR1_EDIRNAME=0x86
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR2=0x88
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR2RETURN=0x8a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR2_EDIRNAME=0x89
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR3=0x8b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR3RETURN=0x8d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDIR3_EDIRNAME=0x8c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDRIVENAME=0xe2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDRIVENAMERETURN=0xe4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETDRIVENAME_EDRIVENAME=0xe3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETLONGNAME=0xcb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETLONGNAMERETURN=0xce
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETLONGNAME_ELONGNAME=0xcd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETLONGNAME_ESHORTNAME=0xcc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETMEDIASERIALNUMBER=0x73
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETMEDIASERIALNUMBERRETURN=0x74
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETMEDIASERIALNUMBER_ESERIALNUMBER=0x75
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETNOTIFYUSER=0xd2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETNOTIFYUSERRETURN=0xd3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETRESERVEACCESS=0x103
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETRESERVEACCESSRETURN=0x104
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSHORTNAME=0xc7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSHORTNAMERETURN=0xca
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSHORTNAME_ELONGNAME=0xc8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSHORTNAME_ESHORTNAME=0xc9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSYSTEMDRIVE=0x5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSYSTEMDRIVECHAR=0x8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSYSTEMDRIVECHARRETURN=0x9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSYSTEMDRIVERETURN1=0x6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSGETSYSTEMDRIVERETURN2=0x7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSINITIALISEPROPERTIESFILE=0x113
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSINITIALISEPROPERTIESFILERETURN=0x114
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEINROM=0xd6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEINROMRETURN=0xd8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEINROM_EFILENAME=0xd7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEOPEN=0xcf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEOPENRETURN=0xd1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISFILEOPEN_EFILENAME=0xd0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISROMADDRESS=0x3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISROMADDRESSRETURN=0x4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME1=0xd9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME1RETURN=0xdb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME1_EFILENAME=0xda
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME2=0xdc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME2RETURN=0xde
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME2_EFILENAME=0xdd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME3=0xdf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME3RETURN=0xe1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSISVALIDNAME3_EFILENAME=0xe0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSLOCKDRIVE=0xe8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSLOCKDRIVERETURN=0xe9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIR=0x7c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIRALL=0x7f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIRALLRETURN=0x81
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIRALL_EDIRNAME=0x80
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIRRETURN=0x7e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMKDIR_EDIRNAME=0x7d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMODIFIED=0xa6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMODIFIEDRETURN=0xa8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMODIFIED_EFILENAME=0xa7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTEXTENSION=0x3e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTEXTENSIONRETURN=0x40
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTEXTENSION_EEXTENSIONNAME=0x3f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM1=0x1d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM1RETURN=0x1f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM1_EFILESYSTEMNAME=0x1e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM2=0x20
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM2RETURN=0x22
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM2_EFILESYSTEMNAME=0x21
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM3=0x23
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM3RETURN=0x26
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM3_EEXTENSIONNAME=0x24
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM3_EFILESYSTEMNAME=0x25
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM4=0x27
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM4RETURN=0x2a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM4_EEXTENSIONNAME=0x29
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEM4_EFILESYSTEMNAME=0x28
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1=0x2b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1RETURN=0x2d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN1_EFILESYSTEMNAME=0x2c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2=0x2e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2RETURN=0x31
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EEXTENSIONNAME=0x30
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTFILESYSTEMANDSCAN2_EFILESYSTEMNAME=0x2f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN1=0x248
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN1RETURN=0x24a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN1_EPLUGINNAME=0x249
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN2=0x24b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN2RETURN=0x24d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN2_EPLUGINNAME=0x24c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN3=0x24e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN3RETURN=0x250
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSMOUNTPLUGIN3_EPLUGINNAME=0x24f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGE1=0x4c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGE1RETURN=0x4d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGE2=0x4e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGE2RETURN=0x50
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGE2_EDIRNAME=0x4f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGECANCEL1=0x51
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGECANCEL1RETURN=0x52
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGECANCEL2=0x53
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYCHANGECANCEL2RETURN=0x54
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACE=0x55
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACECANCEL1=0x57
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACECANCEL1RETURN=0x58
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACECANCEL2=0x59
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACECANCEL2RETURN=0x5a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISKSPACERETURN=0x56
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNT=0x107
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNTCANCEL1=0x109
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNTCANCEL1RETURN=0x10a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNTCANCEL2=0x10b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNTCANCEL2RETURN=0x10c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSNOTIFYDISMOUNTRETURN=0x108
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE1=0x8e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE1RETURN=0x90
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE1_EFILEPATH=0x8f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE2=0x91
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE2RETURN=0x94
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE2_EFILENAME=0x92
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPARSE2_ERELATED=0x93
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPLUGINNAME=0x25a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPLUGINNAMERETURN=0x25c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPLUGINNAME_EPLUGINNAME=0x25b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPRIVATEPATH=0x10
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPRIVATEPATHRETURN=0x12
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSPRIVATEPATH_EDIRNAME=0x11
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSQUERYVOLUMEINFOEXT=0x115
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSQUERYVOLUMEINFOEXTRETURN=0x116
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION=0xb2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTIONRETURN1=0xb4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTIONRETURN2=0xb5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTIONRETURN3=0xb6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION_EFILENAME=0xb3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION_RESERVED=0xb7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION_RESERVED_EFILENAME=0xb8
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION_RESERVED_RETURN1=0xb9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREADFILESECTION_RESERVED_RETURN2=0xba
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREALNAME=0x6f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREALNAMERETURN=0x72
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREALNAME_EFILENAME1=0x70
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREALNAME_EFILENAME2=0x71
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRELEASERESERVEACCESS=0x105
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRELEASERESERVEACCESSRETURN=0x106
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOUNTDRIVE=0x4a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOUNTDRIVERETURN=0x4b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEEXTENSION=0x44
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEEXTENSIONRETURN=0x46
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEEXTENSION_EEXTENSIONNAME=0x45
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEFILESYSTEM=0x1a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEFILESYSTEMRETURN=0x1c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEFILESYSTEM_EFILESYSTEMNAME=0x1b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEPLUGIN=0x245
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEPLUGINRETURN=0x247
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREMOVEPLUGIN_EPLUGINNAME=0x246
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRENAME=0x98
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRENAMERETURN=0x9b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRENAME_ENEWNAME=0x9a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRENAME_EOLDNAME=0x99
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREPLACE=0x9c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREPLACERETURN=0x9f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREPLACE_ENEWNAME=0x9e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSREPLACE_EOLDNAME=0x9d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESERVEDRIVESPACE=0x101
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESERVEDRIVESPACERETURN=0x102
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNT=0xbf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNTMARKEND=0xbd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNTMARKENDRETURN=0xbe
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNTMARKSTART=0xbb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNTMARKSTARTRETURN=0xbc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRESOURCECOUNTRETURN=0xc0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRMDIR=0x82
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRMDIRRETURN=0x84
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSRMDIR_EDIRNAME=0x83
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSCANDRIVE=0xc4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSCANDRIVERETURN=0xc6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSCANDRIVE_EDIRNAME=0xc5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSESSIONPATH=0x76
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSESSIONPATHRETURN=0x77
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSESSIONPATH_EDIRNAME=0x78
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETATT=0xa3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETATTRETURN=0xa5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETATT_EFILENAME=0xa4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETDRIVENAME=0xe5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETDRIVENAMERETURN=0xe7
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETDRIVENAME_EDRIVENAME=0xe6
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETENTRY=0xaf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETENTRYRETURN=0xb1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETENTRY_EFILENAME=0xb0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETLOCALDRIVEMAPPING=0xf2
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETLOCALDRIVEMAPPINGRETURN=0xf4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETLOCALDRIVEMAPPING_ELOCALDRIVEMAPPING=0xf3
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETMODIFIED=0xa9
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETMODIFIEDRETURN=0xab
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETMODIFIED_EFILENAME=0xaa
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETNOTIFYCHANGE=0x111
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETNOTIFYCHANGERETURN=0x112
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETNOTIFYUSER=0xd4
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETNOTIFYUSERRETURN=0xd5
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSESSIONPATH=0x79
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSESSIONPATHRETURN=0x7b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSESSIONPATH_EDIRNAME=0x7a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSESSIONTOPRIVATE=0xe
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSESSIONTOPRIVATERETURN=0xf
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSTARTUPCONFIGURATION=0x10f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSTARTUPCONFIGURATIONRETURN=0x110
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSUBST=0x6c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSUBSTRETURN=0x6e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSUBST_EDIRNAME=0x6d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSYSTEMDRIVE=0xa
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETSYSTEMDRIVERETURN=0xb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETVOLUMELABEL=0x66
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETVOLUMELABELRETURN=0x68
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSETVOLUMELABEL_EVOLUMENAME=0x67
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSTARTUPINITCOMPLETE=0xf0
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSTARTUPINITCOMPLETERETURN=0xf1
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSUBST=0x69
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSUBSTRETURN=0x6b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSUBST_EDIRNAME=0x6a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSUPPORTEDFILESYSTEMNAME=0x38
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSUPPORTEDFILESYSTEMNAMERETURN=0x3a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSWAPFILESYSTEM=0xfa
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSWAPFILESYSTEMRETURN=0xfd
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSWAPFILESYSTEM_ENEWNAME=0xfc
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSSWAPFILESYSTEM_EOLDNAME=0xfb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSUNLOCKDRIVE=0xea
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSUNLOCKDRIVERETURN=0xeb
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVERSION=0x15
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVERSIONRETURN=0x16
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUME1=0x61
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUME1RETURNA=0x62
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUME1RETURNB=0x63
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUME2=0x64
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUME2RETURN=0x65
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUMEIOPARAM=0x117
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EFSVOLUMEIOPARAMRETURN=0x118
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINCLOSE=0x25f
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINCLOSERETURN=0x260
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCANCEL=0x26d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCANCELRETURN=0x26e
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL1=0x267
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL1RETURN=0x268
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL2=0x269
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL2RETURN=0x26a
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL3=0x26b
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOCONTROL3RETURN=0x26c
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST1=0x261
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST1RETURN=0x262
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST2=0x263
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST2RETURN=0x264
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST3=0x265
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINDOREQUEST3RETURN=0x266
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINOPEN=0x25d
+[TRACE]TRACE_BORDER[0x40]_EFSRV_EPLUGINOPENRETURN=0x25e
+[TRACE]TRACE_PANIC[0x41]_EFSRV_EPANIC=0x1
--- a/userlibandfileserver/fileserver/shostmassstorage/base_f32_shostmassstorage.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/shostmassstorage/base_f32_shostmassstorage.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "USB Host Mass Storage Server"
 
 component	base_f32_shostmassstorage
--- a/userlibandfileserver/fileserver/shostmassstorage/client/hostmsclient.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/shostmassstorage/client/hostmsclient.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-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"
@@ -30,7 +30,7 @@
 
 LIBRARY		efsrv.lib euser.lib hal.lib usbdescriptors.lib usbdi_utils.lib
 
-CAPABILITY ALL
+CAPABILITY TCB  ProtServ DiskAdmin AllFiles PowerMgmt CommDD NetworkControl WriteDeviceData
 
 //MACRO _USBMS_DEBUG_PRINT_
 
--- a/userlibandfileserver/fileserver/shostmassstorage/server/hostmsserver.mmp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/shostmassstorage/server/hostmsserver.mmp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-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"
@@ -62,7 +62,7 @@
 BASEADDRESS		0x61000000 
 END
 
-CAPABILITY ALL -Tcb
+CAPABILITY AllFiles CommDD
 
 UID		0 0x10286A83 
 
--- a/userlibandfileserver/fileserver/smassstorage/base_f32_smassstorage.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/smassstorage/base_f32_smassstorage.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "USB Mass Storage File System"
 
 component	base_f32_smassstorage
--- a/userlibandfileserver/fileserver/srofs/base_f32_srofs.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/srofs/base_f32_srofs.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "ROFS File System"
 
 component	base_f32_srofs
--- a/userlibandfileserver/fileserver/srom/base_f32_srom.mrp	Thu May 27 14:17:14 2010 +0300
+++ b/userlibandfileserver/fileserver/srom/base_f32_srom.mrp	Fri Jun 11 15:02:23 2010 +0300
@@ -1,18 +1,3 @@
-#
-# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-# All rights reserved.
-# This component and the accompanying materials are made available
-# under the terms of "Eclipse Public License v1.0"
-# which accompanies this distribution, and is available
-# at the URL "http://www.eclipse.org/legal/epl-v10.html".
-#
-# Initial Contributors:
-# Nokia Corporation - initial contribution.
-#
-# Contributors:
-#
-# Description: 
-#
 # component name "ROM File System"
 
 component	base_f32_srom