diff -r 000000000000 -r c40eb8fe8501 wlan_bearer/wlanldd/wlan_common/osa_common/inc/osachunk.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlan_bearer/wlanldd/wlan_common/osa_common/inc/osachunk.h Tue Feb 02 02:03:13 2010 +0200 @@ -0,0 +1,129 @@ +/* +* 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 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: WlanChunk declaration +* +*/ + +/* +* %version: 6 % +*/ + +#ifndef WLANCHUNK_H +#define WLANCHUNK_H + +#include "wlanobject.h" + +#include "osalist.h" +#include "osachunkbase.h" + +class RWlanHeap; + +/** + * Memory chunk allocation management object. + * + * Management of memory is based on buddy system, where righ hand side (rhs) + * and left hand side (lhs) memory links are coalesced (if they are free) to + * the current link to be freed. Allocation size is always alinged to + * allocation unit, which equals to the size of cache line. The pointer + * returned to the caller is also aligned to the allocation unit. + * + */ +class WlanChunk : + public DBase, public WlanObject, public MWlanOsaChunkBase + { +public: + + /** + * ctor + * NOTE: call IsValid() member from super class + * to validate object after ctor + * + * @since S60 v3.2 + * @param aStartOfBuf start of buffer + * @param aEndOfBuf 1 past end of buffer + * @param aAllocationUnit allocation unit size in bytes + */ + WlanChunk( TUint8* aStartOfBuf, TUint8* aEndOfBuf, TInt aAllocationUnit ); + + /** + * Destructor. + * + * @since S60 v3.2 + */ + virtual ~WlanChunk(); + +// from base class MWlanOsaChunkBase + + /** + * From MWlanOsaChunkBase. + * Memory allocation. Correct alignment guaranteed + * + * @since S60 v3.2 + * @param aSize size of the buffer to be allocated in bytes. + * Must be positive otherwise the allocation fails + * @param aZeroStamp zero stamp memory or not + * @return begin of the allocated memory, NULL upon failure + */ + virtual void* Alloc( TInt aSize, TBool aZeroStamp ); + + /** + * From MWlanOsaChunkBase. + * Releases memory allocated by the Alloc method + * + * @since S60 v3.2 + * @param aPtr begin of the buffer to be freed + */ + virtual void Free( void* aPtr ); + + /** + * From MWlanOsaChunkBase. + * Returns the maximum free link size + * + * @since S60 v3.2 + * @return maximum free link size + */ + virtual TInt MaxFreeLinkSize() const; + + /** + * From MWlanOsaChunkBase. + * Evaluates is chunk in use or not, + * meaning is memory allocated from there or not + * + * @since S60 v3.2 + * @return ETrue for unused chunk any other for used chunk + */ + virtual TBool IsInUse() const; + + /** + * From MWlanOsaChunkBase. + * Returns the size of the memory chunk meta header in bytes + * + * @since S60 v3.2 + * @return size of the memory chunk meta header + */ + virtual TInt HeaderSize() const; + + + // Prohibit copy constructor. + WlanChunk( const WlanChunk& ); + // Prohibit assigment operator. + WlanChunk& operator= ( const WlanChunk& ); + +private: // data + + RWlanHeap* iHeap; + + }; + +#endif // WLANCHUNK_H