ProfileStart (Compact 7)

3/12/2014

This function starts the Windows Embedded Compact instrumented kernel, or Monte Carlo profiling.

Syntax

VOID ProfileStart(
  DWORD dwUSecInterval,
  DWORD dwOptions
);

Parameters

  • dwUSecInterval
    [in] Interval, in microseconds, for each profile interrupt (sample). This can be changed, depending on the target device implementation.
  • dwOptions
    [in] Profile flags. The following table shows the possible values.

    Value Description

    PROFILE_BUFFER

    Monte Carlo profiling records samples to a buffer.

    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). Call ProfileStart with the PROFILE_STARTPAUSED flag before using this flag.

    PROFILE_KCALL

    KCALL profiling records kernel calls.

    PROFILE_OBJCALL

    Records object calls.

    PROFILE_PAUSE

    Stops the profiler timer (pauses the profiler sampling). Call ProfileStart with the PROFILE_STARTPAUSED flag before using this flag. The first parameter to ProfileStart is ignored when using PROFILE_PAUSE.

    PROFILE_STARTPAUSED

    Begins profiling with the profiler timer off. Profiler control variables are initialized, but the timer is not activated (no profiling samples are made). Use this flag simultaneously with PROFILE_BUFFER or PROFILE_OBJCALL as shown in the following code example:

    ProfileStart( 500, PROFILE_BUFFER | PROFILE_STARTPAUSED );

    Call ProfileStart with this flag before using PROFILE_PAUSE.

    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.

Return Value

None.

Requirements

Header

profiler.h

Library

coredll.lib

See Also

Reference

Kernel Functions
ProfileStartEx
ProfileStop

Other Resources

Implementing Profiler Timer Interrupts in the OAL