diff -r 000000000000 -r 96e5fb8b040d kerneltest/e32test/lffs/bf_execute.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kerneltest/e32test/lffs/bf_execute.cpp Thu Dec 17 09:24:54 2009 +0200 @@ -0,0 +1,116 @@ +// Copyright (c) 2001-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: +// Thread for executing benchmark test threads +// +// + +/** + @file bf_execute.cpp +*/ + +#include +#include +#include +#include "bf_raw.h" + +GLREF_D TUint32 Count; +GLREF_D TTestInfo TestInfo; ///< Data passed to exector thread + +GLREF_D TBusLocalDrive drive; +GLREF_D TLocalDriveCapsV2Buf driveInfo; +GLREF_D HBufC8* writeBuffer; +GLREF_D HBufC8* readBuffer; + +GLREF_D TBool StopTest; + +GLREF_D TInt mainThreadHandle; + +_LIT( KPanicCat, "bf_raw" ); + +GLDEF_C TInt BmWrite(TAny*) + /** + * Performs writes continuously + */ + { + TPtrC8 wd( writeBuffer->Des().Ptr(), TestInfo.iLength ); + while( !StopTest ) + { + TInt r = drive.Write( TestInfo.iOffset, wd ); + if( KErrNone != r ) + { + User::Panic( KPanicCat, r ); + } + ++Count; + } + return KErrNone; + } + + +GLDEF_C TInt BmWriteThread(TAny*) + /** + * Performs writes continuously, telling device driver that a thread + * read is required + */ + { + TAny* p = writeBuffer; + while( !StopTest ) + { + TInt r = drive.Write( TestInfo.iOffset, TestInfo.iLength, p, mainThreadHandle, 0 ); + if( KErrNone != r ) + { + User::Panic( KPanicCat, r ); + } + ++Count; + } + return KErrNone; + } + + +GLDEF_C TInt BmRead(TAny*) + /** + * Performs reads continously + */ + { + TPtr8 rd = readBuffer->Des(); + while( !StopTest ) + { + TInt r = drive.Read( TestInfo.iOffset, TestInfo.iLength, rd ); + if( KErrNone != r ) + { + User::Panic( KPanicCat, r ); + } + ++Count; + } + return KErrNone; + } + +GLDEF_C TInt BmReadThread(TAny*) + /** + * Performs reads continously, telling device driver that a thread + * write is required + */ + { + TPtr8 des = readBuffer->Des(); + TAny* p = &des; + while( !StopTest ) + { + TInt r = drive.Read( TestInfo.iOffset, TestInfo.iLength, p, mainThreadHandle, 0 ); + if( KErrNone != r ) + { + User::Panic( KPanicCat, r ); + } + ++Count; + } + return KErrNone; + }