ProfilerControl (Compact 2013)
3/28/2014
This structure is used by the ProfileStartEx function.
Syntax
typedef struct ProfilerControl {
DWORD dwVersion;
DWORD dwOptions;
DWORD dwReserved;
union {
struct {
DWORD dwUSecInterval;
} Kernel;
struct {
DWORD dwProcessorType;
DWORD dwControlSize;
BYTE bHardwareSpecificSettings[0];
} OEM;
};
} ProfilerControl;
Members
- dwVersion
Version of the structure. Set to 1.
dwOptions
Profile flags. The following table shows possible values for this member.Value
Description
PROFILE_BUFFER
Records samples to a buffer.
Use with PROFILE_OBJCALL for object call profiling, or by itself for Monte Carlo profiling.
PROFILE_CELOG
Writes each profiler hit to CeLogData() as an event with ID CELID_MONTECARLO_HIT and data CEL_MONTECARLO_HIT.
You can use this flag with both Monte Carlo (sampled) style profiling and system call profiling (PROFILE_OBJCALL), but not with kernel call profiling (PROFILE_KCALL).
To use this flag, you must separately start CeLog data collection.
When you call ProfileStart with PROFILE_CELOG to collect profiler hits in the CeLog data stream, the profiler automatically changes the CeLog zones to enable profiling-related events and disables all events not related to profiling.
When the profiler stops, the profiler returns the CeLog zones to their original settings. This guarantees collection of the profiling data and removes non profiling-related events from the log. Thus, the performance impact of CeLog on the system is minimized, and the chance of losing data due to collecting data faster than it can be flushed is reduced.
For more information, see CeLogData.
PROFILE_CONTINUE
Starts the profiler timer (starts/resumes the profiler sampling).
Before using this flag, call the ProfileStartEx function with the PROFILE_STARTPAUSED flag set.
This is valid only if the profiler is paused; for example, if ProfileStartEx was previously called with PROFILE_PAUSE or PROFILE_STARTPAUSED set.
PROFILE_KCALL
KCALL profiling records kernel calls.
PROFILE_OBJCALL
Records object calls.
PROFILE_PAUSE
Stops the profiler timer (pauses the profiler sampling).
Call ProfileStartEx with the PROFILE_STARTPAUSED flag before using this flag.
This is valid only if the profiler is running; for example, if ProfileStartEx was previously called without PROFILE_PAUSE or PROFILE_STARTPAUSED set.
PROFILE_STARTPAUSED
Begins profiling with the profiler timer off.
Profiler control variables are initialized, but the timer is not activated, so no profiling samples are made.
Use this flag simultaneously with PROFILE_BUFFER or PROFILE_OBJCALL.
Sampling does not begin until ProfileStartEx is called again with the PROFILE_RESUME flag set.
PROFILE_TICK
Causes the profiler to record a sample on every tick interrupt (SYSINTR_NOP or SYSINTR_RESCHEDULE) when collecting Monte Carlo data.
If the OAL does not support profiling, the kernel will automatically select this option.
If the OAL supports profiling, you can use this flag to force Monte Carlo profiling to ignore the OAL profiling implementation and use the tick interrupt to record profiler samples.
- dwReserved
Reserved; set to 0 (zero).
dwUSecInterval
Interval, in microseconds, for each profile interrupt or sample. This can be changed, depending on the device implementation.This value is valid when not using PROFILE_OEMDEFINED.
dwProcessorType
Type of processor expected. Values for this field have not yet been defined so this field should be set to zero.This value is valid only when using PROFILE_OEMDEFINED.
dwControlSize
OEM-defined data. See the documentation for your board support package (BSP) to determine the value of this field.This value is valid only when using PROFILE_OEMDEFINED.
bHardwareSpecifcSettings
OEM-defined data. See the documentation for your BSP to determine the value of this field.This value is valid only when using PROFILE_OEMDEFINED.
Remarks
You can use ProfilerControl to expose control over custom profiling for a BSP.
Requirements
Header |
profiler.h |
See Also
Reference
Kernel Structures
ProfileStartEx