59 bRet = GetIntFromConfig(_L("MBufMgrTest06"), _L("Offset"), aOffset); |
59 bRet = GetIntFromConfig(_L("MBufMgrTest06"), _L("Offset"), aOffset); |
60 if (!bRet) |
60 if (!bRet) |
61 { |
61 { |
62 return EFail; |
62 return EFail; |
63 } |
63 } |
|
64 TBool forceSmallBuf = EFalse; |
|
65 bRet = GetIntFromConfig(_L("MBufMgrTest06"), _L("ForceSmallBuf"), forceSmallBuf); |
64 Log(_L(" ------- Chain & Desc LENGTH = %d --"), aLength); |
66 Log(_L(" ------- Chain & Desc LENGTH = %d --"), aLength); |
65 Log(_L(" ------- OFFSET where to Split = %d --"), aOffset); |
67 Log(_L(" ------- OFFSET where to Split = %d --"), aOffset); |
66 if ( (aLength > 1000) ||(aLength <0) || |
68 if ( (aLength > 1000) ||(aLength <0) || |
67 (aOffset > aLength) || (aOffset <0) ) |
69 (aOffset > aLength) || (aOffset <0) ) |
68 { |
70 { |
77 |
79 |
78 //-------------- substep 1 -------------------- |
80 //-------------- substep 1 -------------------- |
79 Log(_L(" 01 Creating CMBufManager and installing active scheduler:")); |
81 Log(_L(" 01 Creating CMBufManager and installing active scheduler:")); |
80 CleanupStack::PushL( iActSch = new(ELeave) CActiveScheduler ); |
82 CleanupStack::PushL( iActSch = new(ELeave) CActiveScheduler ); |
81 CActiveScheduler::Install(iActSch); |
83 CActiveScheduler::Install(iActSch); |
82 CreateInstanceMBufMgrL(KMBufDefaultHeapSize); |
84 |
|
85 enum { KBigBuf = 256, KSmallBuf = 128 }; |
|
86 if(forceSmallBuf) |
|
87 { |
|
88 RArray<TCommsBufPoolCreateInfo> createInfoArray; |
|
89 |
|
90 TCommsBufPoolCreateInfo createInfo; |
|
91 createInfo.iBufSize = KSmallBuf; |
|
92 createInfo.iInitialBufs = 128; |
|
93 createInfo.iGrowByBufs = 64; |
|
94 createInfo.iMinFreeBufs = 40; |
|
95 createInfo.iCeiling = 410; |
|
96 createInfoArray.AppendL(createInfo); |
|
97 |
|
98 createInfo.iBufSize = KBigBuf; |
|
99 createInfo.iInitialBufs = 3; |
|
100 createInfo.iGrowByBufs = 1; |
|
101 createInfo.iMinFreeBufs = 1; |
|
102 createInfo.iCeiling = 3; |
|
103 createInfoArray.AppendL(createInfo); |
|
104 |
|
105 CreateInstanceMBufMgrL(createInfoArray); |
|
106 |
|
107 createInfoArray.Close(); |
|
108 } |
|
109 else |
|
110 { |
|
111 CreateInstanceMBufMgrL(KMBufDefaultHeapSize); |
|
112 } |
|
113 |
83 CleanupClosePushL(iBufPond); |
114 CleanupClosePushL(iBufPond); |
84 |
115 |
85 //-------------- substep 2 -------------------- |
116 //-------------- substep 2 -------------------- |
86 Log(_L(" 02 Allocating two descriptors (Des1 & Des2):")); |
117 Log(_L(" 02 Allocating two descriptors (Des1 & Des2):")); |
87 TBuf8<1000> *aDes1, *aDes2; |
118 TBuf8<1000> *aDes1, *aDes2; |
109 __CFLOG_CLOSE; |
140 __CFLOG_CLOSE; |
110 __CFLOG_DELETE; |
141 __CFLOG_DELETE; |
111 #endif |
142 #endif |
112 User::Leave(EFail); |
143 User::Leave(EFail); |
113 } |
144 } |
|
145 |
|
146 if(forceSmallBuf) |
|
147 { |
|
148 for(RMBuf* buf = aChain1.First(); buf; buf = buf->Next()) |
|
149 { |
|
150 if(buf->Size() != KBigBuf) |
|
151 { |
|
152 Log(_L("-- initial chain should be composed of %d buf, found %d buf"), KBigBuf, buf->Size()); |
|
153 User::Leave(EFail); |
|
154 } |
|
155 } |
|
156 } |
114 |
157 |
115 //-------------- substep 6 -------------------- |
158 //-------------- substep 6 -------------------- |
116 Log(_L(" 06 Copy in Des1 into Chain1:")); |
159 Log(_L(" 06 Copy in Des1 into Chain1:")); |
117 aChain1.CopyIn(*aDes1); |
160 aChain1.CopyIn(*aDes1); |
118 |
161 |
156 __CFLOG_CLOSE; |
199 __CFLOG_CLOSE; |
157 __CFLOG_DELETE; |
200 __CFLOG_DELETE; |
158 #endif |
201 #endif |
159 User::Leave(EFail); |
202 User::Leave(EFail); |
160 } |
203 } |
|
204 |
|
205 if(forceSmallBuf) |
|
206 { |
|
207 if(!aChain2.First() || aChain2.First()->Size() != KSmallBuf || |
|
208 !aChain2.First()->Next() || aChain2.First()->Next()->Size() != KSmallBuf) |
|
209 { |
|
210 Log(_L("-- split chain should start with two %d buf"), KSmallBuf); |
|
211 User::Leave(EFail); |
|
212 } |
|
213 } |
161 |
214 |
162 //-------------- substep 9 -------------------- |
215 //-------------- substep 9 -------------------- |
163 Log(_L(" 09 Copy out Chain1 into Des2:")); |
216 Log(_L(" 09 Copy out Chain1 into Des2:")); |
164 aChain1.CopyOut(*aDes2); |
217 aChain1.CopyOut(*aDes2); |
165 |
218 |
182 aDes2->SetLength(aLength); |
235 aDes2->SetLength(aLength); |
183 |
236 |
184 //-------------- substep 12 -------------------- |
237 //-------------- substep 12 -------------------- |
185 Log(_L(" 12 Copy out the whole Chain2 into Des2 at offset = OFFSET")); |
238 Log(_L(" 12 Copy out the whole Chain2 into Des2 at offset = OFFSET")); |
186 TPtr8 dest((TUint8*)aDes2->Ptr() + aOffset, aLength-aOffset, aLength - aOffset); |
239 TPtr8 dest((TUint8*)aDes2->Ptr() + aOffset, aLength-aOffset, aLength - aOffset); |
187 aChain1.CopyOut(dest); |
240 aChain2.CopyOut(dest); |
188 |
241 |
189 //-------------- substep 13 -------------------- |
242 //-------------- substep 13 -------------------- |
190 Log(_L(" 13 Compare the content of Des1 & Des2:")); |
243 Log(_L(" 13 Compare the content of Des1 & Des2:")); |
191 if(aDes1->Compare(*aDes2)) |
244 if(aDes1->Compare(*aDes2)) |
192 { |
245 { |