kernel/eka/include/drivers/dma_hai.h
changeset 247 d8d70de2bd36
parent 139 95f71bcdcdb7
--- a/kernel/eka/include/drivers/dma_hai.h	Tue Jul 06 15:50:07 2010 +0300
+++ b/kernel/eka/include/drivers/dma_hai.h	Wed Aug 18 11:08:29 2010 +0300
@@ -172,11 +172,13 @@
 	{
 friend class DmaChannelMgr;
 
-// The following two friend declarations will become obsolete once that
-// functionality is owned and provided by the controller class instead of the
-// request class. (TDmac::iFreeHdr could then also be made private.)
-friend TInt DDmaRequest::ExpandDesList(TInt, TInt&, SDmaDesHdr*&, SDmaDesHdr*&);
-friend void DDmaRequest::FreeDesList(TInt&, SDmaDesHdr*&, SDmaDesHdr*&);
+// The following friend declaration will become obsolete once header
+// pool manipulation functionality is owned and provided by the controller
+// class instead of the request class.
+// (TDmac::iFreeHdr could then also be made private.)
+friend class DDmaRequest;
+
+friend class TSkelDmac;
 
 protected:
 	/** Data required for creating a new instance. */
@@ -848,7 +850,7 @@
 	virtual void DoCancelAll();
 	virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr);
 
-private:
+protected:
 	enum {EIdle = 0, ETransferring} iState;
 	};
 
@@ -864,7 +866,7 @@
 	virtual void DoCancelAll();
 	virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr);
 
-private:
+protected:
 	enum {EIdle = 0, ETransferring, ETransferringLast} iState;
 	};
 
@@ -881,7 +883,7 @@
 	virtual void DoUnlink(SDmaDesHdr& aHdr);
 	virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aCompletedHdr);
 
-private:
+protected:
 	enum {EIdle = 0, ETransferring} iState;
 	};
 
@@ -894,19 +896,26 @@
 */
 class TDmaAsymSgChannel : public TDmaChannel
 	{
+public:
+	TDmaAsymSgChannel();
+
 private:
 	virtual void DoQueue(const DDmaRequest& aReq);
 	virtual void DoCancelAll();
 	virtual void DoUnlink(SDmaDesHdr& aHdr);
 	virtual void DoDfc(const DDmaRequest& aCurReq, SDmaDesHdr*& aSrcCompletedHdr,
 					   SDmaDesHdr*& aDstCompletedHdr);
+	virtual void SetNullPtr(const DDmaRequest& aReq);
+	virtual void ResetNullPtr();
 
-private:
+protected:
 	SDmaDesHdr* iSrcCurHdr;	  // source fragment being transferred or NULL
 	SDmaDesHdr** iSrcNullPtr; // Pointer to NULL pointer following last source fragment
 	SDmaDesHdr* iDstCurHdr;	  // destination fragment being transferred or NULL
 	SDmaDesHdr** iDstNullPtr; // Pointer to NULL pointer following last destination fragment
 	enum {EIdle = 0, ETransferring} iState;
+
+	__DMA_DECLARE_VIRTUAL_INVARIANT
 	};