--- a/libraries/memoryaccess/memoryaccess.h Fri Jul 09 10:11:55 2010 +0100
+++ b/libraries/memoryaccess/memoryaccess.h Mon Jul 26 17:19:00 2010 +0100
@@ -305,23 +305,26 @@
};
typedef TPckgBuf<TCondVarKernelInfo> TCondVarKernelInfoBuf;
-class TCodeSegKernelInfo
+class TCodeSegKernelInfoBase
{
public:
TUint32 iRunAddress;
TInt iSize;
TFileName8 iFileName;
};
-typedef TPckgBuf<TCodeSegKernelInfo> TCodeSegKernelInfoBuf;
-class TTomsciCodeSegKernelInfo : public TCodeSegKernelInfo
+// We don't really need a base class, it's just for BC reasons
+class TCodeSegKernelInfo : public TCodeSegKernelInfoBase
{
public:
TUint8* iAddressOfKernelObject;
TFullName8 iName;
TInt iAccessCount;
TInt iDepCount;
+ TBool iXip;
};
+typedef TPckgBuf<TCodeSegKernelInfo> TCodeSegKernelInfoBuf;
+
class TProp
{
@@ -451,6 +454,7 @@
EControlPropertyNotify,
EControlPropertyNotifyCancel,
EControlSubscribeToProperty,
+ EControlAcquireCodeSegMutexAndFilterCodesegsForProcess,
ENumRequests, // Add new commands above this line
};
public:
@@ -492,6 +496,7 @@
TInt GetObjectInfoByHandle (TObjectType aObjectType, TInt aThreadId, TInt aObjectHandle, TDes8& aObjectInfoBuf);
//Wait on the kernel's code seg mutex
TInt AcquireCodeSegMutex();
+ TInt AcquireCodeSegMutexAndFilterCodesegsForProcess(TUint aProcessId);
//Signal the kernel's code seg mutex
TInt ReleaseCodeSegMutex();
//Get info about the next code seg. Call repeatedly to iterate all code segs. Call AcquireCodeSegMutex before calling.
@@ -683,6 +688,8 @@
}
inline TInt RMemoryAccess::AcquireCodeSegMutex()
{ return DoControl(EControlAcquireCodeSegMutex, NULL, NULL); }
+inline TInt RMemoryAccess::AcquireCodeSegMutexAndFilterCodesegsForProcess(TUint aProcessId)
+ { return DoControl(EControlAcquireCodeSegMutexAndFilterCodesegsForProcess, (TAny*)aProcessId); }
inline TInt RMemoryAccess::ReleaseCodeSegMutex()
{ return DoControl(EControlReleaseCodeSegMutex, NULL, NULL); }
inline TInt RMemoryAccess::GetNextCodeSegInfo(TDes8& aCodeSegInfoBuf)