ProfilerControl

ProfilerControl (Compact 2013)

3/28/2014

This structure is used by the ProfileStartEx function.


typedef struct ProfilerControl {
  DWORD dwVersion;
  DWORD dwOptions;
  DWORD dwReserved;
  union {
    struct {
      DWORD dwUSecInterval;
    } Kernel;
    struct {
      DWORD dwProcessorType;
      DWORD dwControlSize;
      BYTE bHardwareSpecificSettings[0];
    } OEM;
  };
} ProfilerControl;

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.

You can use ProfilerControl to expose control over custom profiling for a BSP.

Header

profiler.h

Show:
© 2016 Microsoft