108 { |
112 { |
109 TPckgBuf<TInt> count; |
113 TPckgBuf<TInt> count; |
110 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetProcessCount, TIpcArgs(&count))); |
114 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetProcessCount, TIpcArgs(&count))); |
111 |
115 |
112 TInt requestedCount = count(); |
116 TInt requestedCount = count(); |
|
117 |
113 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyProcessData)); |
118 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyProcessData)); |
114 TPtr8 bufferPtr(buffer->Des()); |
119 TPtr8 bufferPtr(buffer->Des()); |
115 |
120 |
116 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetProcesses, TIpcArgs(&count, &bufferPtr))); |
121 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetProcesses, TIpcArgs(&count, &bufferPtr))); |
117 aProcesses.Reset(); |
122 aProcesses.Reset(); |
118 |
123 |
119 TInt receivedCount = Min(count(), requestedCount); |
124 TInt receivedCount = Min(count(), requestedCount); |
120 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyProcessData)) |
125 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyProcessData)) |
121 { |
126 { |
122 TPckgBuf<TMemSpyProcessData> data; |
127 TPckgBuf<TMemSpyProcessData> data; |
123 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyProcessData)); |
128 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyProcessData)); |
124 aProcesses.AppendL(CMemSpyApiProcess::NewLC(data())); |
129 aProcesses.AppendL(CMemSpyApiProcess::NewLC(data())); |
125 } |
130 } |
147 aValue = arg2(); |
152 aValue = arg2(); |
148 |
153 |
149 return error; |
154 return error; |
150 } |
155 } |
151 |
156 |
|
157 EXPORT_C void RMemSpySession::NotifyEvent(TRequestStatus &aStatus) |
|
158 { |
|
159 SendReceive(EMemSpyClientServerOpNotifyEvent | KMemSpyOpFlagsAsyncOperation, |
|
160 TIpcArgs(), aStatus); |
|
161 } |
|
162 |
|
163 EXPORT_C void RMemSpySession::CancelEventNotificationL() |
|
164 { |
|
165 User::LeaveIfError(SendReceive(EMemSpyClientServerOpCancelEventNotification)); |
|
166 } |
|
167 |
152 EXPORT_C TInt RMemSpySession::EndProcessL( TProcessId aId, TMemSpyEndType aType ) |
168 EXPORT_C TInt RMemSpySession::EndProcessL( TProcessId aId, TMemSpyEndType aType ) |
153 { |
169 { |
154 TPckgBuf<TProcessId> arg1( aId ); |
170 TPckgBuf<TProcessId> arg1( aId ); |
155 TPckgBuf<TMemSpyEndType> arg2( aType ); |
171 TPckgBuf<TMemSpyEndType> arg2( aType ); |
156 TIpcArgs args( &arg1, &arg2 ); |
172 TIpcArgs args( &arg1, &arg2 ); |
177 TPckgBuf<TInt> count; |
193 TPckgBuf<TInt> count; |
178 TPckgBuf<TProcessId> pid(aProcessId); |
194 TPckgBuf<TProcessId> pid(aProcessId); |
179 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetThreadCount, TIpcArgs(&count, &pid))); |
195 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetThreadCount, TIpcArgs(&count, &pid))); |
180 |
196 |
181 TInt requestedCount = count(); |
197 TInt requestedCount = count(); |
|
198 |
182 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyThreadData)); |
199 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyThreadData)); |
183 TPtr8 bufferPtr(buffer->Des()); |
200 TPtr8 bufferPtr(buffer->Des()); |
184 |
201 |
185 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetThreads, TIpcArgs(&count, &bufferPtr, &pid))); |
202 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetThreads, TIpcArgs(&count, &bufferPtr, &pid))); |
186 aThreads.Reset(); |
203 aThreads.Reset(); |
187 |
204 |
188 TInt receivedCount = Min(count(), requestedCount); |
205 TInt receivedCount = Min(count(), requestedCount); |
189 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyThreadData)) |
206 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyThreadData)) |
190 { |
207 { |
191 TPckgBuf<TMemSpyThreadData> data; |
208 TPckgBuf<TMemSpyThreadData> data; |
192 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyThreadData)); |
209 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyThreadData)); |
193 aThreads.AppendL(CMemSpyApiThread::NewLC(data())); |
210 aThreads.AppendL(CMemSpyApiThread::NewLC(data())); |
194 } |
211 } |
316 { |
333 { |
317 TPckgBuf<TInt> count; |
334 TPckgBuf<TInt> count; |
318 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectCount, TIpcArgs(&count) )); |
335 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectCount, TIpcArgs(&count) )); |
319 |
336 |
320 TInt requestedCount = count(); |
337 TInt requestedCount = count(); |
|
338 |
321 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyKernelObjectData)); |
339 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyKernelObjectData)); |
322 TPtr8 bufferPtr(buffer->Des()); |
340 TPtr8 bufferPtr(buffer->Des()); |
323 |
341 |
324 TIpcArgs args( &count, &bufferPtr ); |
342 TIpcArgs args( &count, &bufferPtr ); |
325 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjects, args )); |
343 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjects, args )); |
326 |
344 |
327 aKernelObjects.Reset(); |
345 aKernelObjects.Reset(); |
328 |
346 |
329 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyKernelObjectData)) |
347 TInt receivedCount = Min(count(), requestedCount); |
|
348 |
|
349 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyKernelObjectData)) |
330 { |
350 { |
331 TPckgBuf<TMemSpyKernelObjectData> data; |
351 TPckgBuf<TMemSpyKernelObjectData> data; |
332 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyKernelObjectData)); |
352 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyKernelObjectData)); |
333 aKernelObjects.AppendL(CMemSpyApiKernelObject::NewLC(data())); |
353 aKernelObjects.AppendL(CMemSpyApiKernelObject::NewLC(data())); |
334 } |
354 } |
348 TPckgBuf<TInt> count; |
368 TPckgBuf<TInt> count; |
349 TPckgBuf<TMemSpyDriverContainerType> type(aForContainer); |
369 TPckgBuf<TMemSpyDriverContainerType> type(aForContainer); |
350 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectItemCount, TIpcArgs(&count, &type) )); |
370 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectItemCount, TIpcArgs(&count, &type) )); |
351 |
371 |
352 TInt requestedCount = count(); |
372 TInt requestedCount = count(); |
|
373 |
353 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyDriverHandleInfoGeneric)); |
374 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyDriverHandleInfoGeneric)); |
354 TPtr8 bufferPtr(buffer->Des()); |
375 TPtr8 bufferPtr(buffer->Des()); |
355 |
376 |
356 TIpcArgs args( &count, &type, &bufferPtr ); |
377 TIpcArgs args( &count, &type, &bufferPtr ); |
357 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectItems, args )); |
378 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetKernelObjectItems, args )); |
358 |
379 |
359 aKernelObjectItems.Reset(); |
380 aKernelObjectItems.Reset(); |
360 |
381 |
361 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyDriverHandleInfoGeneric)) |
382 TInt receivedCount = Min(count(), requestedCount); |
|
383 |
|
384 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyDriverHandleInfoGeneric)) |
362 { |
385 { |
363 TPckgBuf<TMemSpyDriverHandleInfoGeneric> data; |
386 TPckgBuf<TMemSpyDriverHandleInfoGeneric> data; |
364 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyDriverHandleInfoGeneric)); |
387 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyDriverHandleInfoGeneric)); |
365 aKernelObjectItems.AppendL( CMemSpyApiKernelObjectItem::NewLC( data() ) ); |
388 aKernelObjectItems.AppendL( CMemSpyApiKernelObjectItem::NewLC( data() ) ); |
366 } |
389 } |
378 { |
401 { |
379 TPckgBuf<TInt> count; |
402 TPckgBuf<TInt> count; |
380 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetMemoryTrackingCycleCount, TIpcArgs(&count) )); |
403 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetMemoryTrackingCycleCount, TIpcArgs(&count) )); |
381 |
404 |
382 TInt requestedCount = count(); |
405 TInt requestedCount = count(); |
|
406 |
383 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyMemoryTrackingCycleData)); |
407 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyMemoryTrackingCycleData)); |
384 TPtr8 bufferPtr(buffer->Des()); |
408 TPtr8 bufferPtr(buffer->Des()); |
385 |
409 |
386 TIpcArgs args( &count, &bufferPtr ); |
410 TIpcArgs args( &count, &bufferPtr ); |
387 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetMemoryTrackingCycles, args )); |
411 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetMemoryTrackingCycles, args )); |
388 |
412 |
389 aCycles.Reset(); |
413 aCycles.Reset(); |
390 |
414 |
391 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyMemoryTrackingCycleData)) |
415 TInt receivedCount = Min(count(), requestedCount); |
|
416 |
|
417 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyMemoryTrackingCycleData)) |
392 { |
418 { |
393 TPckgBuf<TMemSpyMemoryTrackingCycleData> data; |
419 TPckgBuf<TMemSpyMemoryTrackingCycleData> data; |
394 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyMemoryTrackingCycleData)); |
420 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyMemoryTrackingCycleData)); |
395 aCycles.AppendL(CMemSpyApiMemoryTrackingCycle::NewLC(data())); |
421 aCycles.AppendL(CMemSpyApiMemoryTrackingCycle::NewLC(data())); |
396 } |
422 } |
406 |
432 |
407 |
433 |
408 //Heap specific operations |
434 //Heap specific operations |
409 |
435 |
410 EXPORT_C CMemSpyApiHeap* RMemSpySession::GetHeapL() |
436 EXPORT_C CMemSpyApiHeap* RMemSpySession::GetHeapL() |
411 { |
437 { |
412 CMemSpyApiHeap* aHeap; |
|
413 |
|
414 HBufC8* buffer = HBufC8::NewLC( sizeof(TMemSpyHeapData) ); |
438 HBufC8* buffer = HBufC8::NewLC( sizeof(TMemSpyHeapData) ); |
415 TPtr8 bufferPtr(buffer->Des()); |
439 TPtr8 bufferPtr(buffer->Des()); |
416 TIpcArgs args( &bufferPtr ); |
440 TIpcArgs args( &bufferPtr ); |
417 |
441 |
418 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetHeap, args )); |
442 User::LeaveIfError(SendReceive( EMemSpyClientServerOpGetHeap, args )); |
419 |
443 |
420 TPckgBuf<TMemSpyHeapData> data; |
444 TPckgBuf<TMemSpyHeapData> data; |
421 data.Copy(bufferPtr.Ptr(), sizeof(TMemSpyHeapData)); |
445 data.Copy(bufferPtr.Ptr(), sizeof(TMemSpyHeapData)); |
422 aHeap = CMemSpyApiHeap::NewL( data() ); |
446 CMemSpyApiHeap* heap = CMemSpyApiHeap::NewL( data() ); |
423 |
447 |
424 CleanupStack::PopAndDestroy(buffer); |
448 CleanupStack::PopAndDestroy(buffer); |
425 |
449 |
426 return aHeap; |
450 return heap; |
427 } |
451 } |
428 |
452 |
429 EXPORT_C CMemSpyApiHeap* RMemSpySession::GetHeap() |
453 EXPORT_C CMemSpyApiHeap* RMemSpySession::GetHeap() |
430 { |
454 { |
431 CMemSpyApiHeap *result = NULL; |
455 CMemSpyApiHeap *result = NULL; |
439 { |
463 { |
440 TPckgBuf<TInt> count; |
464 TPckgBuf<TInt> count; |
441 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComCategoryCount, TIpcArgs(&count))); |
465 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComCategoryCount, TIpcArgs(&count))); |
442 |
466 |
443 TInt requestedCount = count(); |
467 TInt requestedCount = count(); |
|
468 |
444 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComCategoryData)); |
469 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComCategoryData)); |
445 TPtr8 bufferPtr(buffer->Des()); |
470 TPtr8 bufferPtr(buffer->Des()); |
446 |
471 |
447 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComCategories, TIpcArgs(&count, &bufferPtr))); |
472 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComCategories, TIpcArgs(&count, &bufferPtr))); |
448 aCategories.Reset(); |
473 aCategories.Reset(); |
449 |
474 |
450 TInt receivedCount = Min(count(), requestedCount); |
475 TInt receivedCount = Min(count(), requestedCount); |
451 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyEComCategoryData)) |
476 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyEComCategoryData)) |
452 { |
477 { |
453 TPckgBuf<TMemSpyEComCategoryData> data; |
478 TPckgBuf<TMemSpyEComCategoryData> data; |
454 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComCategoryData)); |
479 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComCategoryData)); |
455 aCategories.AppendL(CMemSpyApiEComCategory::NewLC(data())); |
480 aCategories.AppendL(CMemSpyApiEComCategory::NewLC(data())); |
456 } |
481 } |
463 TPckgBuf<TInt> count; |
488 TPckgBuf<TInt> count; |
464 TPckgBuf<TUid> category(aCategory); |
489 TPckgBuf<TUid> category(aCategory); |
465 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComInterfaceCount, TIpcArgs(&count, &category))); |
490 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComInterfaceCount, TIpcArgs(&count, &category))); |
466 |
491 |
467 TInt requestedCount = count(); |
492 TInt requestedCount = count(); |
|
493 |
468 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComInterfaceData)); |
494 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComInterfaceData)); |
469 TPtr8 bufferPtr(buffer->Des()); |
495 TPtr8 bufferPtr(buffer->Des()); |
470 |
496 |
471 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComInterfaces, TIpcArgs(&count, &category, &bufferPtr))); |
497 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComInterfaces, TIpcArgs(&count, &category, &bufferPtr))); |
472 aInterfaces.Reset(); |
498 aInterfaces.Reset(); |
473 |
499 |
474 TInt receivedCount = Min(count(), requestedCount); |
500 TInt receivedCount = Min(count(), requestedCount); |
475 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyEComInterfaceData)) |
501 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyEComInterfaceData)) |
476 { |
502 { |
477 TPckgBuf<TMemSpyEComInterfaceData> data; |
503 TPckgBuf<TMemSpyEComInterfaceData> data; |
478 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComInterfaceData)); |
504 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComInterfaceData)); |
479 aInterfaces.AppendL(CMemSpyApiEComInterface::NewLC(data())); |
505 aInterfaces.AppendL(CMemSpyApiEComInterface::NewLC(data())); |
480 } |
506 } |
487 TPckgBuf<TInt> count; |
513 TPckgBuf<TInt> count; |
488 TPckgBuf<TUid> interface(aInterface); |
514 TPckgBuf<TUid> interface(aInterface); |
489 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComImplementationCount, TIpcArgs(&count, &interface))); |
515 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComImplementationCount, TIpcArgs(&count, &interface))); |
490 |
516 |
491 TInt requestedCount = count(); |
517 TInt requestedCount = count(); |
|
518 |
492 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComImplementationData)); |
519 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEComImplementationData)); |
493 TPtr8 bufferPtr(buffer->Des()); |
520 TPtr8 bufferPtr(buffer->Des()); |
494 |
521 |
495 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComImplementations, TIpcArgs(&count, &interface, &bufferPtr))); |
522 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetEComImplementations, TIpcArgs(&count, &interface, &bufferPtr))); |
496 aImplementations.Reset(); |
523 aImplementations.Reset(); |
497 |
524 |
498 TInt receivedCount = Min(count(), requestedCount); |
525 TInt receivedCount = Min(count(), requestedCount); |
499 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyEComImplementationData)) |
526 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyEComImplementationData)) |
500 { |
527 { |
501 TPckgBuf<TMemSpyEComImplementationData> data; |
528 TPckgBuf<TMemSpyEComImplementationData> data; |
502 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComImplementationData)); |
529 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEComImplementationData)); |
503 aImplementations.AppendL(CMemSpyApiEComImplementation::NewLC(data())); |
530 aImplementations.AppendL(CMemSpyApiEComImplementation::NewLC(data())); |
504 } |
531 } |
510 { |
537 { |
511 TPckgBuf<TInt> count; |
538 TPckgBuf<TInt> count; |
512 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroupCount, TIpcArgs(&count))); |
539 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroupCount, TIpcArgs(&count))); |
513 |
540 |
514 TInt requestedCount = count(); |
541 TInt requestedCount = count(); |
|
542 |
515 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEngineWindowGroupDetails)); |
543 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyEngineWindowGroupDetails)); |
516 TPtr8 bufferPtr(buffer->Des()); |
544 TPtr8 bufferPtr(buffer->Des()); |
517 |
545 |
518 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroups, TIpcArgs(&count, &bufferPtr))); |
546 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetWindowGroups, TIpcArgs(&count, &bufferPtr))); |
519 aGroups.Reset(); |
547 aGroups.Reset(); |
520 |
548 |
521 TInt receivedCount = Min(count(), requestedCount); |
549 TInt receivedCount = Min(count(), requestedCount); |
522 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyEngineWindowGroupDetails)) |
550 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyEngineWindowGroupDetails)) |
523 { |
551 { |
524 TPckgBuf<TMemSpyEngineWindowGroupDetails> data; |
552 TPckgBuf<TMemSpyEngineWindowGroupDetails> data; |
525 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEngineWindowGroupDetails)); |
553 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyEngineWindowGroupDetails)); |
526 aGroups.AppendL(CMemSpyApiWindowGroup::NewLC(data())); |
554 aGroups.AppendL(CMemSpyApiWindowGroup::NewLC(data())); |
527 } |
555 } |
528 CleanupStack::Pop(aGroups.Count()); |
556 CleanupStack::Pop(aGroups.Count()); |
529 CleanupStack::PopAndDestroy(buffer); |
557 CleanupStack::PopAndDestroy(buffer); |
530 } |
558 } |
531 |
559 |
|
560 EXPORT_C void RMemSpySession::SwitchToWindowGroupL( TInt aId ) |
|
561 { |
|
562 TPckgBuf<TInt> id( aId ); |
|
563 TIpcArgs args(&id); |
|
564 User::LeaveIfError(SendReceive(EMemSpyClientServerOpSwitchToWindowGroup, args)); |
|
565 } |
|
566 |
532 EXPORT_C void RMemSpySession::DumpKernelHeap() |
567 EXPORT_C void RMemSpySession::DumpKernelHeap() |
533 { |
568 { |
534 SendReceive( EMemSpyClientServerOpDumpKernelHeap ); |
569 SendReceive( EMemSpyClientServerOpDumpKernelHeap ); |
535 } |
570 } |
536 |
571 |
887 { |
922 { |
888 TPckgBuf<TInt> count; |
923 TPckgBuf<TInt> count; |
889 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServerCount, TIpcArgs(&count))); |
924 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServerCount, TIpcArgs(&count))); |
890 |
925 |
891 TInt requestedCount = count(); |
926 TInt requestedCount = count(); |
|
927 |
|
928 if( requestedCount < 0 ) |
|
929 requestedCount = 0; |
|
930 |
892 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyServerData)); |
931 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyServerData)); |
893 TPtr8 bufferPtr(buffer->Des()); |
932 TPtr8 bufferPtr(buffer->Des()); |
894 |
933 |
895 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServers, TIpcArgs(&count, &bufferPtr))); |
934 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServers, TIpcArgs(&count, &bufferPtr))); |
896 aServers.Reset(); |
935 aServers.Reset(); |
911 TPckgBuf<TInt> count; |
950 TPckgBuf<TInt> count; |
912 TPckgBuf<TSortType> sort( aSortType ); |
951 TPckgBuf<TSortType> sort( aSortType ); |
913 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServerCount, TIpcArgs(&count))); |
952 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetServerCount, TIpcArgs(&count))); |
914 |
953 |
915 TInt requestedCount = count(); |
954 TInt requestedCount = count(); |
|
955 |
916 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyServerData)); |
956 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyServerData)); |
917 TPtr8 bufferPtr(buffer->Des()); |
957 TPtr8 bufferPtr(buffer->Des()); |
918 |
958 |
919 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetSortedServers, TIpcArgs(&count, &bufferPtr, &sort))); |
959 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetSortedServers, TIpcArgs(&count, &bufferPtr, &sort))); |
920 aServers.Reset(); |
960 aServers.Reset(); |
921 |
961 |
922 TInt receivedCount = Min(count(), requestedCount); |
962 TInt receivedCount = Min(count(), requestedCount); |
923 for(TInt i=0, offset = 0; i<requestedCount; i++, offset+=sizeof(TMemSpyServerData)) |
963 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyServerData)) |
924 { |
964 { |
925 TPckgBuf<TMemSpyServerData> data; |
965 TPckgBuf<TMemSpyServerData> data; |
926 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyServerData)); |
966 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyServerData)); |
927 aServers.AppendL(CMemSpyApiServer::NewLC(data())); |
967 aServers.AppendL(CMemSpyApiServer::NewLC(data())); |
928 } |
968 } |
935 TPckgBuf<TBool> detailed( aDetailed ); |
975 TPckgBuf<TBool> detailed( aDetailed ); |
936 TIpcArgs args( &detailed ); |
976 TIpcArgs args( &detailed ); |
937 User::LeaveIfError( SendReceive( EMemSpyClientServerOpServerListOutputGeneric, args ) ); |
977 User::LeaveIfError( SendReceive( EMemSpyClientServerOpServerListOutputGeneric, args ) ); |
938 } |
978 } |
939 |
979 |
|
980 // Chunks |
|
981 |
|
982 EXPORT_C void RMemSpySession::GetChunksL(RArray<CMemSpyApiChunk*> &aChunks, TSortType aSortType) |
|
983 { |
|
984 TPckgBuf<TInt> count; |
|
985 TPckgBuf<TSortType> sort( aSortType ); |
|
986 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetChunksCount, TIpcArgs(&count))); |
|
987 |
|
988 TInt requestedCount = count(); |
|
989 |
|
990 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyChunkData)); |
|
991 TPtr8 bufferPtr(buffer->Des()); |
|
992 |
|
993 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetSortedChunks, TIpcArgs(&count, &bufferPtr, &sort))); |
|
994 aChunks.Reset(); |
|
995 |
|
996 TInt receivedCount = Min(count(), requestedCount); |
|
997 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyChunkData)) |
|
998 { |
|
999 TPckgBuf<TMemSpyChunkData> data; |
|
1000 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyChunkData)); |
|
1001 aChunks.AppendL(CMemSpyApiChunk::NewLC(data())); |
|
1002 } |
|
1003 CleanupStack::Pop(aChunks.Count()); |
|
1004 CleanupStack::PopAndDestroy(buffer); |
|
1005 } |
|
1006 |
|
1007 EXPORT_C void RMemSpySession::ChunkListOutputL() |
|
1008 { |
|
1009 User::LeaveIfError(SendReceive(EMemSpyClientServerOpChunkListOutput)); |
|
1010 } |
|
1011 |
|
1012 // RAM info |
|
1013 EXPORT_C void RMemSpySession::IsAknIconCacheConfigurable( TBool& aValue ) |
|
1014 { |
|
1015 TPckgBuf<TBool> arg( aValue ); |
|
1016 TIpcArgs args( &arg ); |
|
1017 |
|
1018 User::LeaveIfError(SendReceive( EMemSpyClientServerOpIsAknIconCacheConfigurable, args )); |
|
1019 |
|
1020 aValue = arg(); |
|
1021 } |
|
1022 |
|
1023 EXPORT_C void RMemSpySession::SetAknIconCacheStatusL( TBool aEnabled, TInt64& aValue ) |
|
1024 { |
|
1025 TPckgBuf<TBool> arg1( aEnabled ); |
|
1026 TPckgBuf<TInt64> arg2( aValue ); |
|
1027 TIpcArgs args( &arg1, &arg2 ); |
|
1028 |
|
1029 User::LeaveIfError(SendReceive( EMemSpyClientServerOpSetAknIconCacheStatus, args )); |
|
1030 |
|
1031 aValue=arg2(); |
|
1032 } |
|
1033 |
|
1034 // Code Segments |
|
1035 EXPORT_C void RMemSpySession::GetCodeSegmentsL(RArray<CMemSpyApiCodeSegment*> &aCodeSegments, TSortType aSortType) |
|
1036 { |
|
1037 TPckgBuf<TInt> count; |
|
1038 TPckgBuf<TSortType> sort( aSortType ); |
|
1039 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetCodeSegmentsCount, TIpcArgs(&count))); |
|
1040 |
|
1041 TInt requestedCount = count(); |
|
1042 |
|
1043 HBufC8* buffer = HBufC8::NewLC(requestedCount * sizeof(TMemSpyCodeSegmentData)); |
|
1044 TPtr8 bufferPtr(buffer->Des()); |
|
1045 |
|
1046 User::LeaveIfError(SendReceive(EMemSpyClientServerOpGetSortedCodeSegments, TIpcArgs(&count, &bufferPtr, &sort))); |
|
1047 aCodeSegments.Reset(); |
|
1048 |
|
1049 TInt receivedCount = Min(count(), requestedCount); |
|
1050 for(TInt i=0, offset = 0; i<receivedCount; i++, offset+=sizeof(TMemSpyCodeSegmentData)) |
|
1051 { |
|
1052 TPckgBuf<TMemSpyCodeSegmentData> data; |
|
1053 data.Copy(bufferPtr.Ptr()+offset, sizeof(TMemSpyCodeSegmentData)); |
|
1054 aCodeSegments.AppendL(CMemSpyApiCodeSegment::NewLC(data())); |
|
1055 } |
|
1056 CleanupStack::Pop(aCodeSegments.Count()); |
|
1057 CleanupStack::PopAndDestroy(buffer); |
|
1058 } |
|
1059 |
|
1060 EXPORT_C void RMemSpySession::CodeSegmentsListOutputL() |
|
1061 { |
|
1062 User::LeaveIfError(SendReceive(EMemSpyClientServerOpCodeSegmentsOutput)); |
|
1063 } |
|
1064 |