--- 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
};