Esempio n. 1
0
        void InitializeHeader32()
        {
            memHeader32 = (SharedMemoryHeader32 *)fullView.Pointer;
                        #if DEBUG
            // '~DBG'
            memHeader32->Magic = 0x7e444247;
                        #else
            // '~SM1'
            memHeader32->Magic = 0x7e534d31;
                        #endif
            memHeader32->TotalLength = profilerOptions.SharedMemorySize;
            memHeader32->NativeToManagedBufferOffset = Align(sizeof(SharedMemoryHeader32));
            memHeader32->ThreadDataOffset            = Align(memHeader32->NativeToManagedBufferOffset + bufferSize);
            memHeader32->ThreadDataLength            = threadDataSize;
            memHeader32->HeapOffset                  = Align(memHeader32->ThreadDataOffset + threadDataSize);
            memHeader32->HeapLength                  = profilerOptions.SharedMemorySize - memHeader32->HeapOffset;
            memHeader32->ProcessorFrequency          = GetProcessorFrequency();
            memHeader32->DoNotProfileDotnetInternals = profilerOptions.DoNotProfileDotNetInternals;
            memHeader32->CombineRecursiveFunction    = profilerOptions.CombineRecursiveFunction;
            memHeader32->TrackEvents                 = profilerOptions.TrackEvents;

            if ((Int32)(fullView.Pointer + memHeader32->HeapOffset) % 8 != 0)
            {
                throw new DataMisalignedException("Heap is not aligned properly: " + ((Int32)(fullView.Pointer + memHeader32->HeapOffset)).ToString(CultureInfo.InvariantCulture) + "!");
            }
        }
Esempio n. 2
0
		void InitializeHeader32()
		{
			memHeader32 = (SharedMemoryHeader32*)fullView.Pointer;
			#if DEBUG
			// '~DBG'
			memHeader32->Magic = 0x7e444247;
			#else
			// '~SM1'
			memHeader32->Magic = 0x7e534d31;
			#endif
			memHeader32->TotalLength = profilerOptions.SharedMemorySize;
			memHeader32->NativeToManagedBufferOffset = Align(sizeof(SharedMemoryHeader32));
			memHeader32->ThreadDataOffset = Align(memHeader32->NativeToManagedBufferOffset + bufferSize);
			memHeader32->ThreadDataLength = threadDataSize;
			memHeader32->HeapOffset = Align(memHeader32->ThreadDataOffset + threadDataSize);
			memHeader32->HeapLength = profilerOptions.SharedMemorySize - memHeader32->HeapOffset;
			memHeader32->ProcessorFrequency = GetProcessorFrequency();
			memHeader32->DoNotProfileDotnetInternals = profilerOptions.DoNotProfileDotNetInternals;
			memHeader32->CombineRecursiveFunction = profilerOptions.CombineRecursiveFunction;
			memHeader32->TrackEvents = profilerOptions.TrackEvents;
			
			if ((Int32)(fullView.Pointer + memHeader32->HeapOffset) % 8 != 0) {
				throw new DataMisalignedException("Heap is not aligned properly: " + ((Int32)(fullView.Pointer + memHeader32->HeapOffset)).ToString(CultureInfo.InvariantCulture) + "!");
			}
		}