sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef __D_SHAREDCHUNK_H__ sl@0: #define __D_SHAREDCHUNK_H__ sl@0: sl@0: #include sl@0: #ifndef __KERNEL_MODE__ sl@0: #include sl@0: #endif sl@0: sl@0: _LIT(KSharedChunkLddName,"D_SHAREDCHUNK"); sl@0: sl@0: enum TCreateFlags sl@0: { sl@0: ESingle = 0x00, sl@0: EMultiple = 0x01, sl@0: EOwnsMemory = 0x02, sl@0: EBadType = 0x80, sl@0: ECreateFlagsMask = 0xff sl@0: }; sl@0: sl@0: enum TCacheAttribute sl@0: { sl@0: /** CPU cached */ sl@0: ECached = 0, sl@0: /** Non CPU cached */ sl@0: ENotCached = 1 sl@0: }; sl@0: sl@0: enum TCommitType sl@0: { sl@0: ENonContiguous = 0x00, sl@0: EContiguous = 0x01, sl@0: ECommitTypeMask = 0x0f sl@0: }; sl@0: sl@0: class RSharedChunkLdd : public RBusLogicalChannel sl@0: { sl@0: public: sl@0: enum TControl sl@0: { sl@0: ECreateChunk, sl@0: EGetChunkHandle, sl@0: ECommitMemory, sl@0: ECloseChunk, sl@0: ECacheAttribute, sl@0: EContiguousAttribute, sl@0: ECloseChunkHandle sl@0: }; sl@0: sl@0: sl@0: #ifndef __KERNEL_MODE__ sl@0: public: sl@0: inline TInt Open() sl@0: { return DoCreate(KSharedChunkLddName,TVersion(),KNullUnit,NULL,NULL,EOwnerProcess,ETrue); } sl@0: inline TInt CreateChunk(TInt aSize, TAny** aKernelAddress=0) sl@0: { return DoControl(ECreateChunk,(TAny*)aSize,aKernelAddress); } sl@0: inline TInt GetChunkHandle(RChunk& aChunk) sl@0: { return aChunk.SetReturnedHandle(DoControl(EGetChunkHandle)); } sl@0: inline TInt CommitMemory(TInt aOffset, TInt aSize) sl@0: { return DoControl(ECommitMemory,(TAny*)aOffset,(TAny*)aSize); } sl@0: inline TInt CloseChunk() sl@0: { return DoControl(ECloseChunk); } sl@0: inline TInt GetCacheAttribute() sl@0: {return DoControl(ECacheAttribute);} sl@0: inline TBool GetContiguousAttribute() sl@0: {return DoControl(EContiguousAttribute);} sl@0: inline TInt CloseChunkHandle(RChunk aChunk) sl@0: { return DoControl(ECloseChunkHandle,(TAny*)aChunk.Handle()); } sl@0: #endif sl@0: }; sl@0: sl@0: sl@0: #endif