--- a/memspy/Driver/Kernel/Source/SubChannels/MemSpyDriverLogChanBase.cpp Fri Aug 27 11:37:29 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +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 "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 "MemSpyDriverLogChanBase.h"
-
-// System includes
-#include <u32hal.h>
-#include <kernel.h>
-#include <memspy/driver/memspydriverobjectsshared.h>
-
-// Shared includes
-#include "MemSpyDriverOpCodes.h"
-#include "MemSpyDriverObjectsInternal.h"
-
-// User includes
-#include "MemSpyDriverUtils.h"
-#include "MemSpyDriverDevice.h"
-#include "MemSpyDriverOSAdaption.h"
-#include "MemSpyDriverXferBuffer.h"
-
-
-
-DMemSpyDriverLogChanBase::DMemSpyDriverLogChanBase( DMemSpyDriverDevice& aDevice, DThread& aThread )
-: iDevice( aDevice ), iClientThread( aThread )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::DMemSpyDriverLogChanBase() - this: 0x%08x", this ));
- }
-
-
-DMemSpyDriverLogChanBase::~DMemSpyDriverLogChanBase()
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::~DMemSpyDriverLogChanBase() - START - this: 0x%08x", this ));
-
- NKern::ThreadEnterCS();
-
- if ( iTempObj != NULL )
- {
- Kern::SafeClose( iTempObj, NULL );
- }
-
- delete iXferBuffer;
-
- NKern::ThreadLeaveCS();
-
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::~DMemSpyDriverLogChanBase() - END - this: 0x%08x", this ));
- }
-
-
-TInt DMemSpyDriverLogChanBase::BaseConstruct( TInt aTransferBufferSize )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::BaseConstruct() - START - this: 0x%08x, aTransferBufferSize: %d", this, aTransferBufferSize ));
- TInt ret = KErrNone;
- //
- if ( aTransferBufferSize != 0 )
- {
- iXferBuffer = new DMemSpyDriverXferBuffer( iDevice, iClientThread );
- if ( !iXferBuffer )
- {
- ret = KErrNoMemory;
- }
- else
- {
- ret = iXferBuffer->Construct( aTransferBufferSize );
- if ( ret != KErrNone )
- {
- delete iXferBuffer;
- iXferBuffer = NULL;
- }
- }
- }
- //
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::BaseConstruct() - END - this: 0x%08x, aTransferBufferSize: %d, size: %d", this, aTransferBufferSize, iXferBuffer ? iXferBuffer->Size() : 0 ));
- return ret;
- }
-
-
-TInt DMemSpyDriverLogChanBase::Construct()
- {
- const TInt baseErr = BaseConstruct();
- return baseErr;
- }
-
-
-TInt DMemSpyDriverLogChanBase::Request( TInt /*aFunction*/, TAny* /*a1*/, TAny* /*a2*/ )
- {
- return KErrNone;
- }
-
-
-
-
-
-
-
-DMemSpyDriverDevice& DMemSpyDriverLogChanBase::MemSpyDevice()
- {
- return iDevice;
- }
-
-
-DMemSpySuspensionManager& DMemSpyDriverLogChanBase::SuspensionManager()
- {
- return MemSpyDevice().SuspensionManager();
- }
-
-
-
-
-
-
-
-
-
-
-TInt DMemSpyDriverLogChanBase::OpenTempObject( TUint aId, TObjectType aType, TBool aAllowDeadObjects )
- {
- __ASSERT_DEBUG( aType == EProcess || aType == EThread, MemSpyDriverUtils::Fault( __LINE__ ) );
- __ASSERT_DEBUG( !iTempObj, MemSpyDriverUtils::Fault( __LINE__ ) );
-
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - START - aId: %d, aType: %d, aAllowDeadObjects: %d", aId, aType, aAllowDeadObjects ));
- DObjectCon* pC = Kern::Containers()[ aType ];
- NKern::ThreadEnterCS();
- pC->Wait();
- iTempObj = (aType == EProcess) ? (DObject*) Kern::ProcessFromId( aId ) : (DObject*) Kern::ThreadFromId( aId );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - kernel obj from id returned: 0x%08x %O", iTempObj, iTempObj ));
- //
- TBool openedOkay = EFalse;
- TInt r = KErrNone;
- //
- if ( iTempObj )
- {
- r = iTempObj->Open();
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - open returned: %d", r ));
- //
- if ( r == KErrNone )
- {
- openedOkay = ETrue;
- if ( aType == EProcess )
- {
- // Check the process is still alive
- DProcess* process = (DProcess*) iTempObj;
- const TExitType exitType = OSAdaption().DProcess().GetExitType( *process );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - process exitType: %d", exitType ));
-
- if ( !aAllowDeadObjects && exitType != EExitPending )
- {
- r = KErrDied;
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - PROCESS IS DEAD!" ));
- }
- }
- else if ( aType == EThread )
- {
- // Check the thread is still alive
- DThread* thread = (DThread*) iTempObj;
- const TExitType exitType = OSAdaption().DThread().GetExitType( *thread );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - thread exitType: %d", exitType ));
-
- if ( !aAllowDeadObjects && exitType != EExitPending )
- {
- r = KErrDied;
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - THREAD IS DEAD!" ));
- }
- }
- }
-
- }
- else if ( !iTempObj )
- {
- r = KErrNotFound;
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - ENTITY NOT FOUND!" ));
- }
- //
- pC->Signal();
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - signalled container..." ));
- NKern::ThreadLeaveCS();
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - left CS..." ));
- //
- if ( r != KErrNone && iTempObj )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - ERROR CASE - closing temp object (r: %d, openedOkay: %d)...", r, openedOkay ));
- //
- if ( openedOkay )
- {
- CloseTempObject();
- }
- else
- {
- NKern::SafeSwap( NULL, (TAny*&) iTempObj );
- }
- //
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - ERROR CASE - closed temp object" ));
- }
- //
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenTempObject() - END - r: %d", r ));
- return r;
- }
-
-
-void DMemSpyDriverLogChanBase::CloseTempObject()
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::CloseTempObject() - START - iTempObj: 0x%08x %O", iTempObj, iTempObj ));
-
- __ASSERT_DEBUG( iTempObj, MemSpyDriverUtils::Fault( __LINE__ ) );
- if ( iTempObj )
- {
- NKern::ThreadEnterCS();
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::CloseTempObject() - in CS..." ));
- //
- Kern::SafeClose( iTempObj, NULL );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::CloseTempObject() - done safe close..." ));
- //
- NKern::ThreadLeaveCS();
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::CloseTempObject() - left CS" ));
- }
-
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::CloseTempObject() - END" ));
- }
-
-
-DThread& DMemSpyDriverLogChanBase::TempObjectAsThread()
- {
- __ASSERT_DEBUG( iTempObj, MemSpyDriverUtils::Fault( __LINE__ ) );
- DThread* ret = (DThread*) iTempObj;
- return *ret;
- }
-
-
-DProcess& DMemSpyDriverLogChanBase::TempObjectAsProcess()
- {
- __ASSERT_DEBUG( iTempObj, MemSpyDriverUtils::Fault( __LINE__ ) );
- DProcess* ret = (DProcess*) iTempObj;
- return *ret;
- }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RMemSpyMemStreamWriter DMemSpyDriverLogChanBase::OpenXferStream()
- {
- __ASSERT_ALWAYS( iXferBuffer, MemSpyDriverUtils::Fault( __LINE__ ) );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - this: 0x%08x, xferSize: %d", this, iXferBuffer->Size() ) );
- RMemSpyMemStreamWriter ret( *iXferBuffer );
- return ret;
- }
-
-
-TInt DMemSpyDriverLogChanBase::OpenXferStream( RMemSpyMemStreamWriter& aWriter, TInt aRequiredSize )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - START - this: 0x%08x, xferSize: %d, aRequiredSize: %d", this, iXferBuffer->Size(), aRequiredSize ) );
- __ASSERT_ALWAYS( iXferBuffer, MemSpyDriverUtils::Fault( __LINE__ ) );
-
- TInt err = KErrNone;
-
- // Never make the buffer smaller - but we will make it bigger if needs be.
- if ( aRequiredSize > iXferBuffer->Size() )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - Need to grow Xfer buffer..." ));
- err = iXferBuffer->EnsureCapacity( aRequiredSize );
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - grow result: %d", err ));
- }
- //
- if ( err == KErrNone )
- {
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - creating writer... with xfer buffer size: %d", iXferBuffer->Size() ));
- aWriter = RMemSpyMemStreamWriter( *iXferBuffer );
- }
- //
- TRACE( Kern::Printf("DMemSpyDriverLogChanBase::OpenXferStream() - END - this: 0x%08x, xferSize: %d, aRequiredSize: %d", this, iXferBuffer->Size(), aRequiredSize ) );
- return err;
- }
-
-
-
-
-
-DMemSpyDriverOSAdaption& DMemSpyDriverLogChanBase::OSAdaption()
- {
- return iDevice.OSAdaption();
- }
-