diff -r ebc84c812384 -r 46218c8b8afa Symbian3/PDK/Source/GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita --- a/Symbian3/PDK/Source/GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita Thu Mar 11 15:24:26 2010 +0000 +++ b/Symbian3/PDK/Source/GUID-B386CA7A-F527-5584-9455-371E623DCF76.dita Thu Mar 11 18:02:22 2010 +0000 @@ -1,172 +1,172 @@ - - - - - - System -Start Example -
Download

Click on the following link to download -the example: SysStart.zip

Click: browse to view the example code.

-
Description

This -example demonstrates the use of resource files at the time of System Start-up. -System starter is an architecture designed to provide a consistent, transparent, -easily customisable method of starting components (i.e. servers and applications) -at device boot. It allows an ordering of components according to criticality -and dependency by means of a Static Start-up Configuration (SSC).

-
Related APIs

egSysStart::E32Main ()

egSysStart::Simple -()

-
Resource files

In -this example a resource file SSCForStartupMode0.rss is used -at Start-up.

On a target device booting normally, the SSC SSCForStartupMode0.rss is -always used for start-up. This SSC is associated with startup mode zero, which -is defined as EStartupModeUndefined in e32modes.h. The -System Starter architecture provides an ability to select between a number -of static Start-up configurations (rss files) depending on the desired Start-up -Mode, for example: Full, Emergency, Charging, or Test. Each of these modes -may require different sets of components and order of execution.

The -start-up process in the resource file is staged via an ordering of Start-up -States or phases. These states cannot be removed or their values altered. -They appear in the following order:

EStartupStateUndefined – -Value before the system enters its first state/ undefined state.

EStartupStateCriticalStatic – -Within this Start-up State all ROM based (static) components or resources -that are critical to the operation of the phone function are started.

EStartupStateCriticalDynamic – -Within this Start-up State all non-ROM based (dynamic) components or resources -that are critical to the operation of the phone function are started.

EStartupStateNonCritical – -Within this Start-up State all ROM based (static) or non-ROM based (dynamic) -components or resources that are non-critical to the operation of the phone -function are started. All components that have not already been started and -are required at device boot are started in this Start-up State.

This -allows start-up to be split into separate, distinct states with a defined -order. Within each state, a STATE_INFO structure containing -information regarding that state is located. This contains the following information:

- - - -

Id

-

The id of the state as defined in the custom header file

-
- -

Name

-

A text string describing the state

-
- -

Command_list

-

The name of the Command array in the SSC which contains the list -of Commands to invoke in that state

-
- -

Next

-

The name of the Command array corresponding to the next state

-
- - -

Following the STATE_INFO structure in the SSC -is a COMMAND_ARRAY structure. This contains details of all -commands to be executed within that list. Its name matches the command_list -identifier in the STATE_INFO struct and contains one array -entry: Commands. The Command entry contains a list of all commands to be executed. -Each instance in the rss file is headed with the START_PROCESS_INFO identifier -and contains any value needed to override the defaults specified in startup.rh.

- - - -Type -

Set by default. Should not be specified in the SSC.

-
- -Path -

The location of the binary e.g. path = "Z:\sys\bin\fbserv.exe"

-
- -Args -

Arguments passed to the process.

-
- -start_method -

The enum TStartupCommandType is defined in startup.hrh. -Currently it takes one of three values:

    -
  • EFireAndForget (the -default)

  • -
  • EWaitForStart

  • -
  • EDeferredWaitForStart

  • -

Use EFireAndForget if there is no need for the -process to be started serially in other words as soon as the process has been -invoked, the System Starter can continue with starting the next process without -waiting for the process to rendezvous.

Use EWaitForStart if -the process needs to get to a certain stage before starting the next process. -The starter cannot continue with the next Command until a rendezvous has been -made with the first process.

Note that the apparc component must be -started with mode EWaitForStart to allow connection with -the server to take place.

Use EDeferredWaitForStart if -there is no need to start the process serially, but at a later stage there -is a command which cannot be invoked until this process has initialized. Using -this value allows a number of commands to be started and the System Starter -to wait for them all at a later point in the SSC. This ensures later on that -the initializations of all EDeferredWaitForStart commands -have completed.

EWaitForStart and EDeferredWaitForStart depend -upon receiving a rendezvous from the started process. By default this is performed -automatically by EikonEnv. If however, you wish your component to perform -its own rendezvous, then the following function should be overridden in your -AppUi class and return EFalse.

TBool CCoeAppUi::FrameworkCallsRendezvous();

-
- -timeout -

This field is for use with start_method EWaitForStart only.

Indicate -if a timer should be started when attempting to start the process by filling -in this timeout value in milliseconds. The value is 0 by default indicating -that no timer will be started.

Note that if the timer expires before -a rendezvous with the component is made, the component will be killed. If -the component is a critical process this will result in a Kern:4 Panic (which -on licensee phones usually initiates in a system restart).

-
- -retry_failure_recovery_method -

This specifies the action to take if an error is returned from an -attempt to start the process.

It is set to ERestartOS by -default. This means if the process fails to start the system will restart -in the default start-up mode.

If it is set to EIgnoreOnFailure then -the starter will continue with the next Command. This option is intended for -non-critical components on which nothing critical is dependent.

If -it is set to ERestartOSWithMode the system will be restarted -in a specific start-up mode.

Note: this field has a slightly different -use depending on the start mode: in modes EFireAndForget and EDeferredWaitForStart a -failure will be indicated only if there is an immediate error for example -the initial process creation/invocation fails. In EWaitForStart a -failure will also be indicated if there is no successful rendezvous.

-
- -no_of_retries_on_failure -

For use with start_method EWaitForStart only. -Set to 0 by default.

This specifies the maximum number of times the -starter should try to start a failed process. After the process has been retried -the specified number of times, the starter will act according to the value -in the retry_failure_recovery_method field. This is used -in conjunction with the timeout value.

-
- -monitor -

Indicates whether the started process should be monitored for failure -by the System Monitor component. The value is 0 by default indicating that -no monitoring will be done.

A value of 1 indicates monitoring should -be performed. The recovery policy set by retry_failure_recovery_method (and -if applicable retry_failure_recovery_startup_mode) will be used by the System -Monitor if a failure occurs to this process during the lifetime of the system.

Note: -if the component being started is a System Critical process, monitoring must -not be enabled.

-
- -retry_failure_recovery_startup_mode -

For use with retry_failure_recovery_method ERestartOSWithMode only.

Used -to specify the start-up mode the system should restart with. This is set to EStartupModeUndefined by -default.

-
- - -
+ + + + + + System +Start Example +
Download

Click on the following link to download +the example: SysStart.zip

Click: browse to view the example code.

+
Description

This +example demonstrates the use of resource files at the time of System Start-up. +System starter is an architecture designed to provide a consistent, transparent, +easily customisable method of starting components (i.e. servers and applications) +at device boot. It allows an ordering of components according to criticality +and dependency by means of a Static Start-up Configuration (SSC).

+
Related APIs

egSysStart::E32Main ()

egSysStart::Simple +()

+
Resource files

In +this example a resource file SSCForStartupMode0.rss is used +at Start-up.

On a target device booting normally, the SSC SSCForStartupMode0.rss is +always used for start-up. This SSC is associated with startup mode zero, which +is defined as EStartupModeUndefined in e32modes.h. The +System Starter architecture provides an ability to select between a number +of static Start-up configurations (rss files) depending on the desired Start-up +Mode, for example: Full, Emergency, Charging, or Test. Each of these modes +may require different sets of components and order of execution.

The +start-up process in the resource file is staged via an ordering of Start-up +States or phases. These states cannot be removed or their values altered. +They appear in the following order:

EStartupStateUndefined – +Value before the system enters its first state/ undefined state.

EStartupStateCriticalStatic – +Within this Start-up State all ROM based (static) components or resources +that are critical to the operation of the phone function are started.

EStartupStateCriticalDynamic – +Within this Start-up State all non-ROM based (dynamic) components or resources +that are critical to the operation of the phone function are started.

EStartupStateNonCritical – +Within this Start-up State all ROM based (static) or non-ROM based (dynamic) +components or resources that are non-critical to the operation of the phone +function are started. All components that have not already been started and +are required at device boot are started in this Start-up State.

This +allows start-up to be split into separate, distinct states with a defined +order. Within each state, a STATE_INFO structure containing +information regarding that state is located. This contains the following information:

+ + + +

Id

+

The id of the state as defined in the custom header file

+
+ +

Name

+

A text string describing the state

+
+ +

Command_list

+

The name of the Command array in the SSC which contains the list +of Commands to invoke in that state

+
+ +

Next

+

The name of the Command array corresponding to the next state

+
+ + +

Following the STATE_INFO structure in the SSC +is a COMMAND_ARRAY structure. This contains details of all +commands to be executed within that list. Its name matches the command_list +identifier in the STATE_INFO struct and contains one array +entry: Commands. The Command entry contains a list of all commands to be executed. +Each instance in the rss file is headed with the START_PROCESS_INFO identifier +and contains any value needed to override the defaults specified in startup.rh.

+ + + +Type +

Set by default. Should not be specified in the SSC.

+
+ +Path +

The location of the binary e.g. path = "Z:\sys\bin\fbserv.exe"

+
+ +Args +

Arguments passed to the process.

+
+ +start_method +

The enum TStartupCommandType is defined in startup.hrh. +Currently it takes one of three values:

    +
  • EFireAndForget (the +default)

  • +
  • EWaitForStart

  • +
  • EDeferredWaitForStart

  • +

Use EFireAndForget if there is no need for the +process to be started serially in other words as soon as the process has been +invoked, the System Starter can continue with starting the next process without +waiting for the process to rendezvous.

Use EWaitForStart if +the process needs to get to a certain stage before starting the next process. +The starter cannot continue with the next Command until a rendezvous has been +made with the first process.

Note that the apparc component must be +started with mode EWaitForStart to allow connection with +the server to take place.

Use EDeferredWaitForStart if +there is no need to start the process serially, but at a later stage there +is a command which cannot be invoked until this process has initialized. Using +this value allows a number of commands to be started and the System Starter +to wait for them all at a later point in the SSC. This ensures later on that +the initializations of all EDeferredWaitForStart commands +have completed.

EWaitForStart and EDeferredWaitForStart depend +upon receiving a rendezvous from the started process. By default this is performed +automatically by EikonEnv. If however, you wish your component to perform +its own rendezvous, then the following function should be overridden in your +AppUi class and return EFalse.

TBool CCoeAppUi::FrameworkCallsRendezvous();

+
+ +timeout +

This field is for use with start_method EWaitForStart only.

Indicate +if a timer should be started when attempting to start the process by filling +in this timeout value in milliseconds. The value is 0 by default indicating +that no timer will be started.

Note that if the timer expires before +a rendezvous with the component is made, the component will be killed. If +the component is a critical process this will result in a Kern:4 Panic (which +on licensee phones usually initiates in a system restart).

+
+ +retry_failure_recovery_method +

This specifies the action to take if an error is returned from an +attempt to start the process.

It is set to ERestartOS by +default. This means if the process fails to start the system will restart +in the default start-up mode.

If it is set to EIgnoreOnFailure then +the starter will continue with the next Command. This option is intended for +non-critical components on which nothing critical is dependent.

If +it is set to ERestartOSWithMode the system will be restarted +in a specific start-up mode.

Note: this field has a slightly different +use depending on the start mode: in modes EFireAndForget and EDeferredWaitForStart a +failure will be indicated only if there is an immediate error for example +the initial process creation/invocation fails. In EWaitForStart a +failure will also be indicated if there is no successful rendezvous.

+
+ +no_of_retries_on_failure +

For use with start_method EWaitForStart only. +Set to 0 by default.

This specifies the maximum number of times the +starter should try to start a failed process. After the process has been retried +the specified number of times, the starter will act according to the value +in the retry_failure_recovery_method field. This is used +in conjunction with the timeout value.

+
+ +monitor +

Indicates whether the started process should be monitored for failure +by the System Monitor component. The value is 0 by default indicating that +no monitoring will be done.

A value of 1 indicates monitoring should +be performed. The recovery policy set by retry_failure_recovery_method (and +if applicable retry_failure_recovery_startup_mode) will be used by the System +Monitor if a failure occurs to this process during the lifetime of the system.

Note: +if the component being started is a System Critical process, monitoring must +not be enabled.

+
+ +retry_failure_recovery_startup_mode +

For use with retry_failure_recovery_method ERestartOSWithMode only.

Used +to specify the start-up mode the system should restart with. This is set to EStartupModeUndefined by +default.

+
+ + +
\ No newline at end of file