<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://help.openclovis.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://help.openclovis.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agnes</id>
		<title>OpenClovis Product Documentation - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://help.openclovis.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Agnes"/>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Special:Contributions/Agnes"/>
		<updated>2026-05-15T13:55:27Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-12T21:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: Doc:Sdkguide/compconfig moved to Doc:Sdk 3.1/sdkguide/compconfig&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Usage of environment variable ASP_DB_SYNC :'''&lt;br /&gt;
&lt;br /&gt;
ASP_DB_SYNC environment variable may be used to open all the DBs in synchronous or asynchronous mode depending on its value.&lt;br /&gt;
To open all the DBs in synchronous mode set ASP_DB_SYNC to TRUE and FALSE for asynchronous mode. If this variable is set then&lt;br /&gt;
it overrides the DBAL open flag CL_DB_SYNC (please refer the &amp;lt;i&amp;gt;OpenClovis API Recerence Guide&amp;lt;/i&amp;gt; for usage of CL_DB_SYNC flag).&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:09:44Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |-&lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:08:13Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |-&lt;br /&gt;
 | &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:07:40Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |- &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;|clDbalConfig.xml &lt;br /&gt;
 |- &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:04:54Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated &amp;lt;code&amp;gt;clDbalConfig.xml&amp;lt;/code&amp;gt; file will look like:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:02:12Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;code&amp;gt;&amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt;&amp;lt;/code&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated clDbalConfig.xml file will look like:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:01:35Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated clDbalConfig.xml file will look like:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:01:19Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;Model&amp;gt;/src/config/clDbalConfig.xml&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated clDbalConfig.xml file will look like:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-03-03T17:00:02Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Database Abstraction Layer (DBAL) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
* [[#Configuring Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Database Abstraction Layer (DBAL)===&lt;br /&gt;
&lt;br /&gt;
The configuration parameters for Dbal is located in &lt;br /&gt;
&amp;lt;Project-Area&amp;gt;/&amp;lt;Model&amp;gt;/src/config/clDbalConfig.xml file.&lt;br /&gt;
&lt;br /&gt;
The various database engines supported by Dbal are listed in this file. &lt;br /&gt;
These engines are configured within set of &amp;lt;Engine&amp;gt; .. &amp;lt;/Engine&amp;gt; tags. &lt;br /&gt;
By default the 'SQLite' DB Engine is configured to be used. If the user &lt;br /&gt;
wants to use some other engines, then he needs to comment this engine &lt;br /&gt;
and enable the other.&lt;br /&gt;
&lt;br /&gt;
For eg: by default the IDE generated clDbalConfig.xml file will look like:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the user needs to use Berkeley DB instead of SQLite, then he has to &lt;br /&gt;
do the change like below:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Dbal&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClGDBM.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;GDBM&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;  &lt;br /&gt;
     &amp;lt;Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClBerkeleyDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;BerkeleyDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine&amp;gt;&lt;br /&gt;
     &amp;lt;!--Engine&amp;gt;&lt;br /&gt;
        &amp;lt;FileName&amp;gt;libClSQLiteDB.so&amp;lt;/FileName&amp;gt;&lt;br /&gt;
        &amp;lt;Type&amp;gt;SQLiteDB&amp;lt;/Type&amp;gt;&lt;br /&gt;
     &amp;lt;/Engine--&amp;gt;&lt;br /&gt;
  &amp;lt;/Dbal&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-28T19:47:17Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service perennial stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-28T19:46:18Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value has to be set 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE. If the file full action is HALT or WRAP, then this value has to be set to 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-28T19:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service perennial stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, in case the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value has to be set 0.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-17T17:02:18Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file generated by IDE is shown in chapter ''XML Representation of the Model'' of ''OpenClovis IDE User Guide''.&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-17T16:56:26Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
An example &amp;lt;code&amp;gt;clLog.xml&amp;lt;/code&amp;gt; file XML Representation of the Model&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-14T23:54:41Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so on.&lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' is created under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of multicastAddress and multicastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it knows when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-04T17:27:43Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Group Membership Service (GMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': Name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it know when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-04T17:25:06Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Group Membership Service (GMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''clusterName''': name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it know when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2008-01-04T17:22:34Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Group Membership Service (GMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''linkName''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''multicastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''multicastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''maxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
* '''openAisLoggingOption''': This options controls the log output from OpenAis software used by GMS. This tag can take the value 'file', 'stderr', 'syslog' and 'none'. The default value is 'none'. Note that this option is useful while debugging issues with GMS. Also note that, if the option is 'syslog', then local5 channel is used. So user needs to configure this channel in syslog.conf. And if the option is set to 'file', then a log file with name 'OpenAis.log' under &amp;lt;code&amp;gt;$ASP_LOGDIR &amp;lt;/code&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note 1:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
'''Note 2:''' GMS runs on top of IP multicast. It uses the multicast address and the multicast port number specified in the configuration given above and forms a multicast group. This way it know when a new member joins a group and leaves a group. Please note that multicast has certain dependencies such as the firewall should be disabled on the machine using &amp;quot;iptables -F&amp;quot; command, etc.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-27T20:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-07T20:24:44Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-07T20:24:08Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-07T20:23:38Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service perennial stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by the user. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-07T20:22:30Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the user.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-12-07T20:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the user (developer, tester or system administrator) based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-28T16:46:41Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Group Membership Service (GMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clGmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-28T16:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/ClLog.xml</id>
		<title>ClLog.xml</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/ClLog.xml"/>
				<updated>2007-11-28T16:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: Log.xml moved to ClLog.xml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;log:BootConfig xmlns:log=&amp;quot;log.ecore&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;log&amp;gt;&lt;br /&gt;
    &amp;lt;logConfigData&amp;gt;&lt;br /&gt;
      &amp;lt;maximumStreams&amp;gt;256&amp;lt;/maximumStreams&amp;gt;&lt;br /&gt;
      &amp;lt;maximumComponents&amp;gt;256&amp;lt;/maximumComponents&amp;gt;&lt;br /&gt;
      &amp;lt;maximumSharedMemoryPages&amp;gt;20&amp;lt;/maximumSharedMemoryPages&amp;gt;&lt;br /&gt;
      &amp;lt;maximumRecordsInPacket&amp;gt;100&amp;lt;/maximumRecordsInPacket&amp;gt;&lt;br /&gt;
    &amp;lt;/logConfigData&amp;gt;&lt;br /&gt;
    &amp;lt;perennialStreamsData&amp;gt;&lt;br /&gt;
      &amp;lt;stream name=&amp;quot;appStream&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fileName&amp;gt;app&amp;lt;/fileName&amp;gt;&lt;br /&gt;
        &amp;lt;fileLocation&amp;gt;*:/tmp&amp;lt;/fileLocation&amp;gt;&lt;br /&gt;
        &amp;lt;fileUnitSize&amp;gt;1500000&amp;lt;/fileUnitSize&amp;gt;&lt;br /&gt;
        &amp;lt;recordSize&amp;gt;300&amp;lt;/recordSize&amp;gt;&lt;br /&gt;
        &amp;lt;fileFullAction&amp;gt;1&amp;lt;/fileFullAction&amp;gt;&lt;br /&gt;
        &amp;lt;maximumFilesRotated&amp;gt;0&amp;lt;/maximumFilesRotated&amp;gt;&lt;br /&gt;
        &amp;lt;flushFreq&amp;gt;64&amp;lt;/flushFreq&amp;gt;&lt;br /&gt;
        &amp;lt;flushInterval&amp;gt;100000&amp;lt;/flushInterval&amp;gt;&lt;br /&gt;
      &amp;lt;/stream&amp;gt;&lt;br /&gt;
      &amp;lt;stream name=&amp;quot;sysStream&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fileName&amp;gt;sys&amp;lt;/fileName&amp;gt;&lt;br /&gt;
        &amp;lt;fileLocation&amp;gt;*:/tmp&amp;lt;/fileLocation&amp;gt;&lt;br /&gt;
        &amp;lt;fileUnitSize&amp;gt;1500000&amp;lt;/fileUnitSize&amp;gt;&lt;br /&gt;
        &amp;lt;recordSize&amp;gt;300&amp;lt;/recordSize&amp;gt;&lt;br /&gt;
        &amp;lt;fileFullAction&amp;gt;1&amp;lt;/fileFullAction&amp;gt;&lt;br /&gt;
        &amp;lt;maximumFilesRotated&amp;gt;0&amp;lt;/maximumFilesRotated&amp;gt;&lt;br /&gt;
        &amp;lt;flushFreq&amp;gt;64&amp;lt;/flushFreq&amp;gt;&lt;br /&gt;
        &amp;lt;flushInterval&amp;gt;100000&amp;lt;/flushInterval&amp;gt;&lt;br /&gt;
      &amp;lt;/stream&amp;gt;&lt;br /&gt;
    &amp;lt;/perennialStreamsData&amp;gt;&lt;br /&gt;
    &amp;lt;precreatedStreamsData&amp;gt;&lt;br /&gt;
      &amp;lt;stream name=&amp;quot;test&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;fileName&amp;gt;testFile&amp;lt;/fileName&amp;gt;&lt;br /&gt;
        &amp;lt;fileLocation&amp;gt;*:/tmp&amp;lt;/fileLocation&amp;gt;&lt;br /&gt;
        &amp;lt;fileUnitSize&amp;gt;1500000&amp;lt;/fileUnitSize&amp;gt;&lt;br /&gt;
        &amp;lt;recordSize&amp;gt;300&amp;lt;/recordSize&amp;gt;&lt;br /&gt;
        &amp;lt;fileFullAction&amp;gt;1&amp;lt;/fileFullAction&amp;gt;&lt;br /&gt;
        &amp;lt;maximumFilesRotated&amp;gt;0&amp;lt;/maximumFilesRotated&amp;gt;&lt;br /&gt;
        &amp;lt;flushFreq&amp;gt;64&amp;lt;/flushFreq&amp;gt;&lt;br /&gt;
        &amp;lt;flushInterval&amp;gt;100000&amp;lt;/flushInterval&amp;gt;&lt;br /&gt;
        &amp;lt;streamScope&amp;gt;1&amp;lt;/streamScope&amp;gt;&lt;br /&gt;
      &amp;lt;/stream&amp;gt;&lt;br /&gt;
    &amp;lt;/precreatedStreamsData&amp;gt;&lt;br /&gt;
  &amp;lt;/log&amp;gt;&lt;br /&gt;
 &amp;lt;/log:BootConfig&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Log.xml</id>
		<title>Log.xml</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Log.xml"/>
				<updated>2007-11-28T16:44:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: Log.xml moved to ClLog.xml&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ClLog.xml]]&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-28T16:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-28T16:42:47Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[clLog.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-13T20:26:14Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Assigning Memory Profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-13T20:17:58Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Assigning Memory Profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-13T20:15:18Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Assigning Memory Profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-11-13T20:12:04Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Assigning Memory Profiles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
&amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:15:13Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Group Membership Service (GMS) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:14:46Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:13:53Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service perennial stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''': &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''': &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''': &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size''':&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction''':&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated''':&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''': &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval''':&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
*'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
** LOCAL&lt;br /&gt;
** GLOBAL&lt;br /&gt;
&lt;br /&gt;
*'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
*'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
** If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
** If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
*'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
*'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
*'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
** HALT&lt;br /&gt;
** WRAP&lt;br /&gt;
** ROTATE&lt;br /&gt;
&lt;br /&gt;
*'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
*'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
*'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:13:08Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
*'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
** LOCAL&lt;br /&gt;
** GLOBAL&lt;br /&gt;
&lt;br /&gt;
*'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
*'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
** If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
** If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
*'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
*'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
*'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
** HALT&lt;br /&gt;
** WRAP&lt;br /&gt;
** ROTATE&lt;br /&gt;
&lt;br /&gt;
*'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
*'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
*'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:12:27Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
*'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
** LOCAL&lt;br /&gt;
** GLOBAL&lt;br /&gt;
&lt;br /&gt;
*'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
*'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/' then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
** If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
** If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
*'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
*'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
*'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
** HALT&lt;br /&gt;
** WRAP&lt;br /&gt;
** ROTATE&lt;br /&gt;
&lt;br /&gt;
*'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
*'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
*'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:11:50Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
*'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid value for this tag.&lt;br /&gt;
** LOCAL&lt;br /&gt;
** GLOBAL&lt;br /&gt;
&lt;br /&gt;
*'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
*'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
** If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
** If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
*'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
*'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
*'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
** HALT&lt;br /&gt;
** WRAP&lt;br /&gt;
** ROTATE&lt;br /&gt;
&lt;br /&gt;
*'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
*'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
*'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:11:15Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
*'''streamName''': This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
*'''streamScope''': This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
** LOCAL&lt;br /&gt;
** GLOBAL&lt;br /&gt;
&lt;br /&gt;
*'''fileName''' : The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
*'''fileLocation''' : The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
** If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
** If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
*'''fileUnitSize''' : The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
*'''record size''': The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
*'''fileFullAction''': The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
** HALT&lt;br /&gt;
** WRAP&lt;br /&gt;
** ROTATE&lt;br /&gt;
&lt;br /&gt;
*'''maximumFilesRotated''': The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE. If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
*'''flushFreq''': The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
*'''flushInterval''': The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:08:55Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:08:19Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency. FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T18:07:27Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
*'''maximumStream''': The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
*'''maximumComponents''': The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
*'''maximumSharedMemoryPages''': The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
*'''maximumRecordsInPacket''': The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T03:17:26Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Configuring Log Service */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream'''&lt;br /&gt;
The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents'''&lt;br /&gt;
The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages'''&lt;br /&gt;
The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket'''&lt;br /&gt;
The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T03:16:48Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service precreated stream config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream'''&lt;br /&gt;
The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents'''&lt;br /&gt;
The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages'''&lt;br /&gt;
The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket'''&lt;br /&gt;
The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T03:16:24Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Log service common config parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream'''&lt;br /&gt;
The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents'''&lt;br /&gt;
The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages'''&lt;br /&gt;
The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket'''&lt;br /&gt;
The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-18T00:09:34Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* '''OpenClovis SAFplus Platform Component Configuration''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==OpenClovis SAFplus Platform Component Configuration==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream'''&lt;br /&gt;
The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents'''&lt;br /&gt;
The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages'''&lt;br /&gt;
The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket'''&lt;br /&gt;
The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig</id>
		<title>Doc:Sdk 3.1/sdkguide/compconfig</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdk_3.1/sdkguide/compconfig"/>
				<updated>2007-10-17T18:12:47Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''OpenClovis SAFplus Platform Component Configuration'''==&lt;br /&gt;
&lt;br /&gt;
Certain Components are allowed to be configured, to provide the flexibility of configuring OpenClovis SAFplus Platform to suit your requirements. OpenClovis SAFplus Platform can be customized and configured to execute on target platforms and support your application software.This chapter provides you the configuration details of OpenClovis SAFplus Platform components. &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Configuring Execution Object (EO) | Configuring Execution Object (EO)]] &lt;br /&gt;
* [[#Configuring Memory | Configuring Memory]] &lt;br /&gt;
* [[#Configuring Remote Method Dispatch (RMD) | Configuring Remote Method Dispatch (RMD)]] &lt;br /&gt;
* [[#Configuring Clovis Object Registry (COR) | Configuring Clovis Object Registry (COR)]] &lt;br /&gt;
* [[#Configuring Log Service | Configuring Log Service]] &lt;br /&gt;
* [[#Configuring Group Membership Service (GMS) | Configuring Group Membership Service (GMS)]] &lt;br /&gt;
* [[#Configuring Name Service | Configuring Name Service]] &lt;br /&gt;
&lt;br /&gt;
===Configuring Execution Object (EO)===&lt;br /&gt;
&lt;br /&gt;
The following parameters are located in &amp;lt;code&amp;gt;'''&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/app/clCompCfg.h '''&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
EO comprises the following configurable parameters while declaring the &amp;lt;code&amp;gt;clEoConfigT&amp;lt;/code&amp;gt; structure: &lt;br /&gt;
&amp;lt;br&amp;gt;'''COMP_EO_NAME''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the name of the EO.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set EO &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the name of the EO.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClEoConfigT clEoConfig;&lt;br /&gt;
clEoConfig.name = &amp;quot;UserEO&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can provide any string as the EO name that can be up to  &amp;lt;code&amp;gt;CL_EO_MAX_NAME_LEN&amp;lt;/code&amp;gt; characters long.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_THREAD_PRIORITY''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the EO thread priority.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, &amp;lt;code&amp;gt;pri&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required priority.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.pri = CL_OSAL_THREAD_PRI_MEDIUM &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the priority to have the following values:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
CL_OSAL_THREAD_PRI_HIGH&lt;br /&gt;
CL_OSAL_THREAD_PRI_MEDIUM&lt;br /&gt;
CL_OSAL_THREAD_PRI_LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
Default =  &amp;lt;code&amp;gt;CL_OSAL_THREAD_PRI_MEDIUM&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
[[File:OpenClovis_Note.png]]This parameter must not be modified. This parameter has no affect in the current implementation.&lt;br /&gt;
&lt;br /&gt;
'''COMP_EO_NUM_THREAD''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the number of EO worker threads.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;noOfThreads&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required number of RMD threads.&lt;br /&gt;
For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.noofThreads = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = 2&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''COMP_IOC_PORT''' &lt;br /&gt;
&lt;br /&gt;
This attribute defines the requested IOC communication port.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required IOC port. If 0 is specified as a port then the new port number is automatically assigned by the IOC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = &amp;lt;code&amp;gt;CL_IOC_USER_APP_WELLKNOWN_PORTS_END&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
If the application wants a communication port well know to other processes in the system and also which will not change on restart of the process, then it should be got as shown below.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = CL_IOC_USER_APP_WELLKNOWN_PORTS_START + &lt;br /&gt;
                        &amp;lt;app_specific_unique_number&amp;gt;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the apllication wants the IOC to assign a communication port to it, which can change on every time the process is restarted, then 0 should be passed in &amp;lt;code&amp;gt;reqIocPort&amp;lt;/code&amp;gt; field.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.reqIocPort = 0;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USER_CLIENT_ID '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines the maximum number of EO clients that are initialized by the EO. This is used to allocate space needed to install the client tables. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;maxNoClients&amp;lt;/code&amp;gt; field of the &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt; to the required value. The default value  &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;  allocates enough space to accommodate the OpenClovis SAFplus Platform services. &lt;br /&gt;
If you want to initialize additional clients, you must specify this parameter as:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.maxNoClients = CL_EO_USER_CLIENT_ID_START + n&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
where &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; is the number of additional clients.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the values in the following range:&lt;br /&gt;
*Minimum = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt;&lt;br /&gt;
*Maximum = 2^32 -1 &lt;br /&gt;
*Default = &amp;lt;code&amp;gt;CL_EO_USER_CLIENT_ID_START&amp;lt;/code&amp;gt; &lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' COMP_EO_USE_THREAD_MODEL '''&lt;br /&gt;
&lt;br /&gt;
This attribute defines whether the application needs the main thread or not. For more details on this parameter, refer to Figure [[Doc:Sdkguide/infrastructure#Illustration of the usage of application type|Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - To configure this parameter, set &amp;lt;code&amp;gt;appType&amp;lt;/code&amp;gt; field of the  &amp;lt;code&amp;gt;ClEoConfigT&amp;lt;/code&amp;gt;  to either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;For example,&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
clEoConfig.appType = CL_EO_USE_THREAD_FOR_RECV&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the value of this parameter as either &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_RECV&amp;lt;/code&amp;gt; or  &amp;lt;code&amp;gt;CL_EO_USE_THREAD_FOR_APP&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Memory===&lt;br /&gt;
&lt;br /&gt;
This section provides information about configuring the memory profiles and specify the total memory space and the watermarks for the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
====Heap and Buffer Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for heap and buffer memory profiles located in  &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt; file. This file is generated through OpenClovis IDE.&lt;br /&gt;
&lt;br /&gt;
'''heapConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the heap memory profile. &lt;br /&gt;
&lt;br /&gt;
'''bufferConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is the name for the buffer memory profile. &lt;br /&gt;
&lt;br /&gt;
'''mode''' &lt;br /&gt;
&lt;br /&gt;
This indicates the type of the heap allocation mode. The values that can be provided are:&lt;br /&gt;
* '''NM''': This is the Native C Mode. In this mode, all requests are served by calling the C library memory allocation interface.&lt;br /&gt;
* '''PAM''': This is the Pre Allocated Mode. It is the OpenClovis provided implementation of the memory management library. A large chunk of the memory is pre-allocated during component initialization. The memory space is divided into pools of diverse memory chunks and serves run-time dynamic memory allocation requests.&lt;br /&gt;
* '''CM''': This is the Custom Mode. You can plug-in customized memory management library calls.&lt;br /&gt;
&lt;br /&gt;
'''lazyMode''' &lt;br /&gt;
&lt;br /&gt;
You can configure the pool in lazy mode for total memory consumption. Set the value to true or false.&lt;br /&gt;
&lt;br /&gt;
When a pool exhausts its current allocation, it can still grow provided the dynamic memory space or the pool upper limit is not reached. It expands or grows by the increment size specified for the pool. In Lazy Mode, the incremented pool does not initialize until an allocation is made from that pool. In normal mode, the incremented pool initializes as soon as it is acquired by the memory management library.&lt;br /&gt;
&lt;br /&gt;
The following parameters can be configured for a heap and buffer memory pools. The values are expressed in bytes.&lt;br /&gt;
* '''chunkSize''' = Maximum size of one allocation from the pool.&lt;br /&gt;
* '''initialSize''' = Initial pool size for this pool.&lt;br /&gt;
* '''incrementSize''' = When the pool usage exceeds the initial size, the pool size grows by the increment size, unless the max limit is already reached or the total dynamic memory space is reached.&lt;br /&gt;
* '''maxSize''' = Maximum pool size for this pool.&lt;br /&gt;
&lt;br /&gt;
====Memory Configuration Profiles====&lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters for memory configuration profiles located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoDefinitions.xml&amp;lt;/code&amp;gt;  file. This file is generated through OpenClovis IDE. These parameters are used to set the total memory usage space and the watermarks on the total memory consumption for each component instance.&lt;br /&gt;
&lt;br /&gt;
'''memoryConfig name''' &lt;br /&gt;
&lt;br /&gt;
This is name for the memory profile. &lt;br /&gt;
&lt;br /&gt;
'''processUpperLimit''' &lt;br /&gt;
&lt;br /&gt;
This is the upper limit for the total memory consumption. The value is expressed in bytes. The dynamic memory allocation cannot exceed this limit.&lt;br /&gt;
&lt;br /&gt;
Three levels of watermark are provided high, medium, and low. For each level of watermark, the following attributes can be configured:&lt;br /&gt;
&lt;br /&gt;
* '''lowLimit''' = Memory limit value for downward crossing in percentage.&lt;br /&gt;
* '''highLimit''' = Memory limit value for upward crossing in percentage.&lt;br /&gt;
For each watermark the following set of actions can be set to true or false:&lt;br /&gt;
* '''event enable''' = If the lowLimit value or highLimit value is reached, an event is generated.&lt;br /&gt;
* '''notification enable''' = If the lowLimit value or highLimit value is reached, a notification is generated.&lt;br /&gt;
* '''log enable''' = If the lowLimit value or highLimit value is reached, a log is generated.&lt;br /&gt;
* '''custom enable''' = If the lowLimit value or highLimit value is reached, userdefined custom function is called.&lt;br /&gt;
&lt;br /&gt;
====Assigning Memory Profiles====&lt;br /&gt;
&lt;br /&gt;
Memory profiles are assigned to components in the clEoConfig.xml file located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clEoConfig.xml&amp;lt;/code&amp;gt; in the source code or in &amp;lt;code&amp;gt;$(ASP_DIR)/etc&amp;lt;/code&amp;gt; on the target.  This file is generated by the OpenClovis IDE, and so these values are better modified through the IDE.&lt;br /&gt;
&lt;br /&gt;
The file contains one XML tag per component of the following format:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;eoConfig name=&amp;quot;LOG&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;eoMemConfig heapConfig=&amp;quot;Default&amp;quot; bufferConfig=&amp;quot;Default&amp;quot; memoryConfig=&amp;quot;Default&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;eoIocConfig/&amp;gt;&lt;br /&gt;
  &amp;lt;/eoConfig&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoConfig&amp;quot; tag delimits all configuration for one component and has one field:&lt;br /&gt;
&lt;br /&gt;
* '''name''': This is the name of the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
The &amp;quot;eoMemConfig&amp;quot; tag specifies memory profiles by name through 3 fields:&lt;br /&gt;
&lt;br /&gt;
* '''heapConfig''': This is the heap memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''bufferConfig''': This is the buffer memory profile that is assigned to the SAFplus Platform component or user application. &lt;br /&gt;
&lt;br /&gt;
* '''memConfig''': This is the memory configuration profile that is assigned to the SAFplus Platform component or user application.&lt;br /&gt;
&lt;br /&gt;
===Configuring Remote Method Dispatch (RMD)===&lt;br /&gt;
&lt;br /&gt;
RMD comprises only one configurable parameter: &lt;br /&gt;
&lt;br /&gt;
'''gClRmdMaxRetries''' &lt;br /&gt;
&lt;br /&gt;
This parameter allows you to define the default value for maximum number of retries for calling a remote function.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant  &amp;lt;code&amp;gt;gClRmdMaxRetries&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClRmdMaxRetries 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - You can define the maximum retries in the following range:&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 8&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Configuring Clovis Object Registry (COR)===&lt;br /&gt;
&lt;br /&gt;
The configuration information for COR is generated by IDE in the &amp;lt;code&amp;gt;clCorConfig.xml&amp;lt;/code&amp;gt; file. There are two configuration parameters for COR. First is the corOHMask and the other one is corSaveOption. Both of these are described below:&lt;br /&gt;
&lt;br /&gt;
====COR object handle Mask (corOHMask)====&lt;br /&gt;
&lt;br /&gt;
This is the COR Object Handle mask used to get the compressed version of the MOID of a MO object. The MOID comprises pairs of &amp;lt;code&amp;gt;{class Id, Instance Id}&amp;lt;/code&amp;gt; traversed from root to the object.&lt;br /&gt;
 &lt;br /&gt;
Storing the MOID for each object can be expensive since class Id and Instance Id both take four bytes each. Looking at the tree hierarchy there can be very few nodes at the top, which may not need full eight bytes of memory space. So, to store the MOID efficiently the MOID is compressed and stored in object handle. By specifying the mask, you will know the maximum number of classes and instances that you have at each level of Instance Tree starting from Root. &lt;br /&gt;
&lt;br /&gt;
The number of entries in the OH mask are always even. It contains pair of values for every level, where first one denotes the maximum number classes at any level and second one denoting the maximum number of instances that can be created for that class at that level. This maximum number in both the cases is calculated by ((2^number) -1 ). Also the number of pairs in the OH mask shows the depth of the object tree allowed for this information model.&lt;br /&gt;
&lt;br /&gt;
Suppose the OH mask is {a, b, c , d}, then we can make out following things from it :&lt;br /&gt;
# There can be only two level of object tree possible from this.&lt;br /&gt;
# At first level there can be (2^a)-1 classes can be created and each class can have (2^b)-1 instances. Similarly for the second level (2^c)-1 classes can be present and each class can have (2^d)-1 instances.&lt;br /&gt;
&lt;br /&gt;
Few important things about OH mask :&lt;br /&gt;
* The number of pairs in the OH mask can go upto only 20 level as the MOID can only access an object tree of depth 20. &lt;br /&gt;
* The total of all the values in the OH mask should not exceed 48. This magic number comes from the number of bits used in the structure ClCorObjectHandleT for storing the object handle. The number of bits  that are used in this structure to store the classId and instance Id information is 48.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - Following is an example of &amp;lt;code&amp;gt;corOHMask&amp;lt;/code&amp;gt;:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
corOHMask={4, 8, 4, 8, 4, 8, 4, 8}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Here you can tell that at level 0 (The level after root), there can be maximum of (2^4)-1 = 15 classes and (2^ 8)-1 = 255 instances per class. &lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]This parameter should not changed manually as this is generated by the IDE during modeling time. Any manual change should be done at your discretion.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====COR Repository Save Option (corSaveOption)====&lt;br /&gt;
&lt;br /&gt;
This is the COR persistency option. This can take two values :&lt;br /&gt;
* '''CL_COR_DELTA_SAVE''' : which signifies that the all the delta changes in the COR repository during runtime should be persisted. These information will be restored by COR once it is restarted. &lt;br /&gt;
* '''CL_COR_NO_SAVE''' : This option tells COR that the information need not be persisted at runtime nor restored at  restart.&lt;br /&gt;
&lt;br /&gt;
===Configuring Log Service===&lt;br /&gt;
The configuration information for Log Service is generated by IDE in the [[log.xml]] file. The configuration of log service has been split into three sections. There are as follows.&lt;br /&gt;
* [[#Log service common config parameters|Log service common config parameters]]&lt;br /&gt;
* [[#Log service perennial stream config parameters|Log service perennial stream config parameters]]&lt;br /&gt;
* [[#Log service precreated stream config parameters|Log service precreated stream config parameters]]&lt;br /&gt;
&lt;br /&gt;
====Log service common config parameters====&lt;br /&gt;
These values are specific and common to log services running on the cluster. The following are the configurable parameters of the Log service. &lt;br /&gt;
&lt;br /&gt;
'''maximumStream'''&lt;br /&gt;
The value of this tag specifies the maximum number of streams can be created at log service which is running on the local node. This number is configurable by the administrator based on the memory availability of the system.&lt;br /&gt;
&lt;br /&gt;
'''maximumComponents'''&lt;br /&gt;
The value of this tag specifies the maximum number of components(loggers) can be at the cluster. This number is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
'''maximumSharedMemoryPages'''&lt;br /&gt;
The value of this tag specifies the maximum number of shared memory should be allocated for new stream. This is basically talking about the size of the shared memory. This should be configurable by keeping mind the size of the record and flush frequency.&lt;br /&gt;
FIXME- warning.&lt;br /&gt;
&lt;br /&gt;
'''maximumRecordsInPacket'''&lt;br /&gt;
The value of this tag specifies the maximum number records can be flushed from log server to the file. At any point of time, these many records will be multicasted by log service to the file owners.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[image:OpenClovis_Note.png]] These above values should not be changed at run time.&lt;br /&gt;
&lt;br /&gt;
====Log service perennial stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, two default perennial streams will be created and predefined handles will be&lt;br /&gt;
populated. Any SAFplus Platform component/application can use this default streams for logging. These two streams are local streams. &lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
====Log service precreated stream config parameters====&lt;br /&gt;
When the log server comes up with SAFplus Platform, these given precreated streams will be created and handles will not be known to the user. Any SAFplus Platform component/application can open this stream and use it. If the stream is configured as GLOBAL streams then the same configuration should be available on all the nodes in the cluster.&lt;br /&gt;
&lt;br /&gt;
'''streamName'''&lt;br /&gt;
This value of the tag specifies the name of the precreated stream. This can be any valid name.&lt;br /&gt;
&lt;br /&gt;
'''streamScope'''&lt;br /&gt;
This value of the tag specifies the scope of the precreated stream. One of the following varibale will be a valid &lt;br /&gt;
value for this tag.&lt;br /&gt;
* LOCAL&lt;br /&gt;
* GLOBAL&lt;br /&gt;
&lt;br /&gt;
'''fileName''' &lt;br /&gt;
The value of this tag specifies the name of the file should be created for this perennial streams. Any valid file names are configurable by administrator. &lt;br /&gt;
&lt;br /&gt;
'''fileLocation''' &lt;br /&gt;
The value of this tag specifies the log file location. Format of this filelocation is &amp;lt;nodname&amp;gt;:&amp;lt;path&amp;gt;, where node name is name of the node instance in which file will be created under the path directory. If path is start with '/'&lt;br /&gt;
then log service treats the path as absolute path, else this file location is prepended with the environment variable  &amp;lt;code&amp;gt;ASP_DIR&amp;lt;/code&amp;gt;. The directory is created by the Log Server if it does not exist. This name is configurable by the administrator.&lt;br /&gt;
&lt;br /&gt;
* If nodename is '*' &amp;lt;star&amp;gt; , then the file will be created where the system controller active is running. &lt;br /&gt;
* If nodename is '.' &amp;lt;dot&amp;gt;, then the file will be created in the local node.&lt;br /&gt;
&lt;br /&gt;
'''fileUnitSize''' &lt;br /&gt;
The value of this tag specifies the size of the log file in bytes. When the file size is reached its specified limit, the given file full action will be applied on the file. &lt;br /&gt;
&lt;br /&gt;
'''record size'''&lt;br /&gt;
The value of this tag specifies the size of the record (single log message) in bytes.&lt;br /&gt;
&lt;br /&gt;
'''fileFullAction'''&lt;br /&gt;
The value of this tag specifies the action should be taken when the file reaches its specified limit. It can take one of the following values&lt;br /&gt;
* HALT&lt;br /&gt;
* WRAP&lt;br /&gt;
* ROTATE&lt;br /&gt;
&lt;br /&gt;
'''maximumFilesRotated'''&lt;br /&gt;
The value of this tag specifies the maximum number of files will be created, incase the file full action is ROTATE.&lt;br /&gt;
If the file full action is not ROTATE, then this value will be ignored.&lt;br /&gt;
&lt;br /&gt;
'''flushFreq''' &lt;br /&gt;
The value of the tag specifies number of Log Records after which the Log Stream must be flushed. This is the maximum number of records on a node which are still not persisted at any given point in time. Log Service make best effort to ensure that no more than flushFreq no of records will be lost if a node fails. A value of zero indicates that this field is ignored and Log Records are flushed based on flushInterval. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. &lt;br /&gt;
&lt;br /&gt;
'''flushInterval'''&lt;br /&gt;
The value of the tag specifies time in nanoseconds after which the Log Stream must be flushed. This is the maximum time a Log Records can stay in a Log Stream un-persisted. Log Service guarantees that Log Records generated at least this much time before a node failure will not be lost on a node failure. A value of zero indicates that this field is ignored and Log Records are flushed based on flushFreq. At least one of flushFreq and flushInterval must be non-zero for a Log Stream. This field will be ignored by default. If the user configures lockMode is mutex, then this field will be considered.&lt;br /&gt;
&lt;br /&gt;
===Configuring Group Membership Service (GMS)===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The following parameters are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/gmsConfig.xml&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
The following are the configurable parameters of GMS service:&lt;br /&gt;
* '''ClusterName''': name of the cluster&lt;br /&gt;
* '''MulticastAddress''': Multicast IP address used by GMS to exchange multicast messages with its peer GMS servers.&lt;br /&gt;
* '''MulticastPort''': Port on which GMS server binds and listens to the multicast messages from its peer GMS servers&lt;br /&gt;
* '''linkname''': Name of the Link to be used. For example, eth0, eth1, eth2 and so &lt;br /&gt;
* '''MaxNoOfGroups''': Maximum number of groups to allow in the cluster. Min = 0, Max = 256, Default = 10.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Please note that the value of MulticastAddress and MulticastPort parameters should be same across all the nodes in a cluster.&lt;br /&gt;
&lt;br /&gt;
===Configuring Name Service===&lt;br /&gt;
&lt;br /&gt;
The following configurable parameters of Name Service are located in &amp;lt;code&amp;gt;&amp;lt;project_area&amp;gt;/&amp;lt;model&amp;gt;/src/config/clASPCfg.c&amp;lt;/code&amp;gt; file. &lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoEntries''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of entries that can be registered in a given context.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoEntries&amp;lt;/code&amp;gt; must be defined in the  &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoEntries 256 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 256. You can define any value between integers 1 to 2^32-1&lt;br /&gt;
*Minimum = 1&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 256&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoGlobalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined global contexts you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoGlobalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoGlobalContexts 10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 10. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 10&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''gClnsMaxNoLocalContexts''' &lt;br /&gt;
&lt;br /&gt;
This attribute provides the maximum number of user-defined local contexts that you can create.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Format - The constant &amp;lt;code&amp;gt;gClnsMaxNoLocalContexts&amp;lt;/code&amp;gt; must be defined in the &amp;lt;code&amp;gt;clASPCfg.c&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&amp;lt;br&amp;gt;For example&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#define gClnsMaxNoLocalContexts 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Range - Default value is 2. You can define any value between integers 0 to 2^32-1&lt;br /&gt;
*Minimum = 0&lt;br /&gt;
*Maximum = 2^32-1&lt;br /&gt;
*Default = 2&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure</id>
		<title>Doc:Sdkguide/infrastructure</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php/Doc:Sdkguide/infrastructure"/>
				<updated>2007-10-09T17:18:19Z</updated>
		
		<summary type="html">&lt;p&gt;Agnes: /* Components of Infrastructure Layer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=='''Infrastructure of OpenClovis SAFplus'''==&lt;br /&gt;
&lt;br /&gt;
This chapter covers the following topics in detail: &lt;br /&gt;
&lt;br /&gt;
'''Key Topics:''' &lt;br /&gt;
* [[#Components of Infrastructure Layer | Components of Infrastructure Layer]] &lt;br /&gt;
* [[#Componentization | Componentization]] &lt;br /&gt;
* [[#Execution Entities | Execution Entities]] &lt;br /&gt;
* [[#SAFplus Platform Distributed Infrastructure | SAFplus Platform Distributed Infrastructure]] &lt;br /&gt;
* [[#Componentization Process | Componentization Process]] &lt;br /&gt;
* [[#Component Characteristics | Component Characteristics]] &lt;br /&gt;
* [[#Component Initialization | Component Initialization]] &lt;br /&gt;
* [[#Using Availability Management Framework (AMF) | Using Availability Management Framework (AMF)]] &lt;br /&gt;
* [[#Characteristics of a Sample Application | Characteristics of a Sample Application]] &lt;br /&gt;
* [[#Sample Code for Componentization | Sample Code for Componentization]] &lt;br /&gt;
&lt;br /&gt;
===Components of Infrastructure Layer===&lt;br /&gt;
&lt;br /&gt;
OpenClovis Infrastructure Layer consists of libraries required for the system. It comprises the following components:&lt;br /&gt;
* [[#Operating System Abstraction Layer (OSAL) | Operating System Abstraction Layer (OSAL)]] &lt;br /&gt;
* [[#Hardware Platform Interface (HPI) | Hardware Platform Interface (HPI)]] &lt;br /&gt;
* [[#Database Abstraction Layer (DBAL) | Database Abstraction Layer (DBAL)]] &lt;br /&gt;
* [[#Execution Object (EO) | Execution Object (EO)]] &lt;br /&gt;
* [[#Log Service | Log Service]] &lt;br /&gt;
* [[#Transaction Manager (TM) | Transaction Manager (TM)]] &lt;br /&gt;
* [[#Basic Infrastructure Core | Basic Infrastructure Core]] &lt;br /&gt;
** [[#Buffer Manager Library | Buffer Manager Library]] &lt;br /&gt;
** [[#Heap Memory | Heap Memory]] &lt;br /&gt;
** [[#Timer Library | Timer Library]] &lt;br /&gt;
** [[#Containers | Containers]] &lt;br /&gt;
** [[#Circular List | Circular List]] &lt;br /&gt;
** [[#Queue Library | Queue Library]] &lt;br /&gt;
** [[#Rule-Based Engine (RBE) | Rule-Based Engine (RBE)]] &lt;br /&gt;
* [[#Interface Definition Language (IDL) | Interface Definition Language (IDL)]] &lt;br /&gt;
&lt;br /&gt;
====Operating System Abstraction Layer (OSAL)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Operating System Abstraction Layer (OSAL) provides a standard interface to commonly used operating system functions. OSAL supports target operating systems like most variations of Carrier Grade Linux. &lt;br /&gt;
&lt;br /&gt;
'''Features''' &lt;br /&gt;
&lt;br /&gt;
* Easily adaptable to any proprietary target operating system.&lt;br /&gt;
&lt;br /&gt;
'''How it works''' &lt;br /&gt;
&lt;br /&gt;
All OpenClovis SAFplus Platform components are developed based on OSAL that provide an OS agnostic function to all system calls, such as memory management and thread management functions. Internally, OSAL maps such functions to the respective equivalent system calls provided by the underlying OS. This allows OpenClovis SAFplus Platform as well as all OpenClovis SAFplus-based applications to be ported to new operating systems with no modifications.&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform is delivered with a Posix-compliant adaptation module that allows it to operate to any Posix-compliant system, such as Linux and most UNIX systems.&lt;br /&gt;
&lt;br /&gt;
Software components use the signal handlers provided by OSAL to handle critical UNIX signals. This can automatically inform OpenClovis Component Manager (CPM) about the signal and generate a fault, or trigger necessary recovery actions. OSAL is currently designed as a standalone library with no dependencies on any other OpenClovis SAFplus Platform components.&lt;br /&gt;
&lt;br /&gt;
====Hardware Platform Interface (HPI)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Hardware Platform Interface (HPI) provides a programmatic interface to manage and monitor a system.&lt;br /&gt;
&lt;br /&gt;
'''Features''' &lt;br /&gt;
&lt;br /&gt;
* It manages only the lifecycle of the hardware platform and not the application for which the specific hardware is being used. &lt;br /&gt;
* In a OpenClovis SAFplus-enabled system, HPI is used for platform management and HAL is used for modeling and managing the application specifics of the hardware. &lt;br /&gt;
&lt;br /&gt;
'''How it Works''' &lt;br /&gt;
&lt;br /&gt;
HPI also allows the platform specific aspects of a blade to be discovered at run time without explicitly modeling it during the design process.&lt;br /&gt;
&lt;br /&gt;
====Database Abstraction Layer (DBAL)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Database Abstraction Layer (DBAL) provides a standard interface for any OpenClovis SAFplus Platform infrastructure component or application to interface with the commonly used relational database. &lt;br /&gt;
&lt;br /&gt;
'''Features'''&lt;br /&gt;
&lt;br /&gt;
* DBAL currently supports only the GNU Database Manager (GDBM).&lt;br /&gt;
&lt;br /&gt;
'''How it Works''' &lt;br /&gt;
&lt;br /&gt;
The primary user of this interface is the COR component which can dump or read its object repository to and from a database for either persistent storage or offline processing. DBAL is also a standalone library with no dependencies on any other OpenClovis SAFplus Platform components.&lt;br /&gt;
&lt;br /&gt;
====Execution Object (EO)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Execution Object (EO) encapsulates each distinct SAFplus-aware software component and provides an execution environment for the components. &lt;br /&gt;
&lt;br /&gt;
'''Features'''&lt;br /&gt;
 &lt;br /&gt;
* Provides a uniform interface between the software component and the rest of the system components. &lt;br /&gt;
* The interfaces fall into the following two categories:&lt;br /&gt;
**  '''Management Interface''': This interface is used to control and configure the software components.&lt;br /&gt;
**  '''Service Interface''': This interface allows software components to expose component specific functionality.&lt;br /&gt;
&lt;br /&gt;
'''How it Works''' &lt;br /&gt;
&lt;br /&gt;
Both management and service interfaces are exposed using RMD APIs. EO provides threads for receiving RMD messages and worker threads to process them. The components encapsulated by EO communicate to other such components using Communication Core components such as Event Manager (EM), Remote Method Dispatch (RMD), Intelligent Object Communication (IOC), and Name Service.&lt;br /&gt;
&lt;br /&gt;
====Log Service====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Log Service collects, translates, and publishes log messages to record any significant event in the system. For instance, operational state change of a component, managed object attribute value change, and so on.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Info.png]]The log service supports syslog and logging facility.&lt;br /&gt;
&lt;br /&gt;
'''Features'''&lt;br /&gt;
 &lt;br /&gt;
* Log analyzes the proper system behavior and registers the potential unintended operations. &lt;br /&gt;
* Log-levels can be changed during the operation.&lt;br /&gt;
&lt;br /&gt;
====Transaction Manager (TM)====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Transaction Manager (TM) provides an infrastructure library for resource managers to use transaction semantics to manage distributed data. Any component that wishes to be a part of transactions can link with this library and act as a resource manager.  &lt;br /&gt;
&lt;br /&gt;
'''Features''' &lt;br /&gt;
&lt;br /&gt;
* Supports re-startable transactions. For instance, if any transaction participant fails, data recovery mechanism helps to recover the application state using the transaction logs for enhanced availability.&lt;br /&gt;
&lt;br /&gt;
'''How it works''' &lt;br /&gt;
&lt;br /&gt;
It automatically tracks participants and provides ACID semantics to ensure that all participants are updated properly, or will rollback to previous state assuring data integrity despite component failures. &lt;br /&gt;
&lt;br /&gt;
====Basic Infrastructure Core====&lt;br /&gt;
&lt;br /&gt;
The Basic Infrastructure Core (BIC) comprises libraries and functions required for the system. It provides essential basic services to all the OpenClovis software, utilities, and other customized applications.BIC includes the following software libraries (APIs):&lt;br /&gt;
* [[#Buffer Manager Library | Buffer Manager Library]] &lt;br /&gt;
* [[#Heap Memory | Heap Memory]] &lt;br /&gt;
* [[#Timer Library | Timer Library]] &lt;br /&gt;
* [[#Containers | Containers]] &lt;br /&gt;
* [[#Circular List | Circular List]] &lt;br /&gt;
* [[#Queue Library | Queue Library]] &lt;br /&gt;
* [[#Rule-Based Engine (RBE) | Rule-Based Engine (RBE)]] &lt;br /&gt;
&lt;br /&gt;
=====Buffer Manager Library=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Buffer Manager Library is designed to provide an efficient method of user-space buffer and memory management to increase the performance of communication-intensive OpenClovis SAFplus Platform components and user applications. It contains elastic buffers that expand based on application memory requirement.&lt;br /&gt;
&lt;br /&gt;
=====Heap Memory=====&lt;br /&gt;
&lt;br /&gt;
Heap memory is used for dynamic memory allocation. Memory is allocated from a large pool of unused memory area called the heap. The size of the memory allocation can be determined at run-time.&lt;br /&gt;
&lt;br /&gt;
=====Timer Library=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Timer Library enables you to create multiple timers to execute application specific functionality after certain intervals. It performs the following functions:&lt;br /&gt;
* Creates multiple timers.&lt;br /&gt;
* Specifies a time-out value for each timer.&lt;br /&gt;
* Creates one-shot or repetitive timers.&lt;br /&gt;
* Specifies an application specific function that should be executed every time the timer fires or expires.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]The operating systems such as Linux or BSD supports limited number of timers that can be created in an application. However, an application such as OSPF and BGP requires a lot of timers at various points during its execution of the application.&lt;br /&gt;
&lt;br /&gt;
=====Containers=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Container Library provides basic data management facilities by means of container abstraction. It provides a common interface for all Container types. &lt;br /&gt;
&lt;br /&gt;
It supports three types of containers listed as follows:&lt;br /&gt;
* Doubly linked list&lt;br /&gt;
* Hashtable (supports open-hashing)&lt;br /&gt;
* Red-Black trees (balanced binary tree)&lt;br /&gt;
&lt;br /&gt;
=====Circular List=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Circular List provides implementation of circular linked list and supports addition, deletion, and retrieval of node and walks through the list. &lt;br /&gt;
&lt;br /&gt;
=====Queue Library=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;The OpenClovis Queue Library provides implementation for an ordered list. It supports enqueuing, dequeuing, and retrieval of a node and walk through the queue.&lt;br /&gt;
&lt;br /&gt;
=====Rule-Based Engine (RBE)=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Rule-Based Engine (RBE) provides a mechanism to create rules to be applied to the system instance data, based on simple expressions. &lt;br /&gt;
&lt;br /&gt;
An expression consists of a mask and a value. These expressions are evaluated on user data and generate a Boolean value for the decision process. &lt;br /&gt;
&lt;br /&gt;
For instance, RBE is used by the Event Service to support filter-based subscriptions. The event is published with a pattern that is matched against the filter provided by the subscribers. Only those subscribers that match successfully are notified. The RBE library provides simple bit-based matching based on the flags specified.&lt;br /&gt;
&lt;br /&gt;
=====Interface Definition Language (IDL)=====&lt;br /&gt;
&lt;br /&gt;
The OpenClovis Interface Definition Language (IDL) is a library used by all EOs to communicate efficiently across nodes. Using IDL, OpenClovis SAFplus Platform services can communicates across endian machines and mixed mode (32-bit and 64-bit architecture). IDL is a wrapper over RMD and supports RMD functionality to provide communication across EOs.&lt;br /&gt;
&lt;br /&gt;
===Componentization===&lt;br /&gt;
&lt;br /&gt;
Componentization is a mechanism that enables the user application to communicate with OpenClovis SAFplus Platform. These applications can be componentized and managed for administering the lifecycle of a component, for using the manageability features of OpenClovis SAFplus Platform, or for attaining high availability.&lt;br /&gt;
&lt;br /&gt;
====Significance of Componentization====&lt;br /&gt;
&lt;br /&gt;
The two most common software entities within the execution context are the '''processes''' and the '''threads'''. In most systems, processes are isolated from each other, whereas failure in a thread causes other threads to be affected also.&lt;br /&gt;
 &lt;br /&gt;
In UNIX, the interaction between the OS and a process is passive. The OS starts up the process, sets up its environment and executes its main function. This enables the process to execute without any direct interference from the OS. It can either enter into an infinite loop or choose to intermittently request for services from the OS. Since the OS is unaware of the process' internals, it reacts only when it receives service requests from the process. The mechanism for proactively sending information to the process is using signals. &lt;br /&gt;
&lt;br /&gt;
However, this is not the only model for OS to process communication and has certain limitations: &lt;br /&gt;
* If the OS wants full control over the complete lifecycle of a process - as found in a carrier grade system. &lt;br /&gt;
* Higher level of service availability cannot be achieved without considering the application-specific constraints. The OS and application need to co-operate with the lifecycle of the application. &lt;br /&gt;
&lt;br /&gt;
From a functional perspective, the OS needs the ability to invoke multiple well-defined functions within a process. It must provide a generic and high bandwidth scheme for bi-directional OS to application communication.&lt;br /&gt;
&lt;br /&gt;
The OS to application communication can be done with either a synchronous remote function call paradigm, which creates a tight binding between the OS and the process, or a de-linked, asynchronous message based model. The asynchronous, message based model can be more efficient and deadlock safe than the function call model. However, it can also create queues and code organization issues when used for high latency functions.&lt;br /&gt;
&lt;br /&gt;
Significantly, in a system with either of these approaches, a process' internal organization changes from having a linear, synchronous flow to an asynchronous, event driven flow. It is the difference between writing a console application and a windowing application that must respond to asynchronous events.&lt;br /&gt;
&lt;br /&gt;
====Features of Componentization====&lt;br /&gt;
&lt;br /&gt;
Componentization provides the following features:&lt;br /&gt;
* Facilitates Communication&lt;br /&gt;
* Statistics gathering and profiling&lt;br /&gt;
* Resource Management &lt;br /&gt;
* Debugging&lt;br /&gt;
&lt;br /&gt;
===Execution Entities===&lt;br /&gt;
&lt;br /&gt;
An execution entity is a form of a process, a task or a thread that contains a set of data and an execution context. The execution entities running in the system without external communication is not very effective in the system, unless it is capable of interacting with other execution entities. As the execution entities are distributed in nature, they need a common mechanism to facilitate the communication between them. &lt;br /&gt;
&lt;br /&gt;
'''Constituents of Execution Entity''' &lt;br /&gt;
&lt;br /&gt;
The execution entity mainly consists of:&lt;br /&gt;
* Attributes and methods to manage the entity. &lt;br /&gt;
* A mechanism to communicate with external execution entities. &lt;br /&gt;
* Implementation of the entity specific to its responsibilities.&lt;br /&gt;
&lt;br /&gt;
OpenClovis Inc. provides the first two functionalities encapsulated within the '''Execution Object (EO)'''. The Execution Object comprises all the common attributes and methods used to represent the execution entity in the system. The communication with the external entities is provided by creating a background thread that receives the messages on behalf of the execution entity. These messages are decoded and the corresponding methods within the execution entity are invoked. &lt;br /&gt;
&lt;br /&gt;
====Execution Object (EO)====&lt;br /&gt;
&lt;br /&gt;
OpenClovis Execution Object (EO) encapsulates each distinct SAFplus-aware software component and provides an execution environment for the components. It provides a uniform interface between the software component and the rest of the system components. &lt;br /&gt;
&lt;br /&gt;
The interfaces fall into the following two categories:&lt;br /&gt;
* '''Management Interface''': This interface is used to control and configure the software components. &lt;br /&gt;
* '''Service Interface''': This interface allows software components to expose component specific functionalities.&lt;br /&gt;
&lt;br /&gt;
With the help of Componentization, both management and service interfaces are exposed using RMD APIs. EO provides receiver threads for picking up messages from RMD and worker threads for processing them. It also provides an execution environment for the software component and allows it to be managed by the Component Manager.&lt;br /&gt;
&lt;br /&gt;
The components encapsulated by EO communicate with other components using OpenClovis Communication Core components such as Event Manager (EM), Remote Method Dispatch (RMD), Intelligent Object Communication (IOC), and Name Service.&lt;br /&gt;
&lt;br /&gt;
====EO Infrastructure====&lt;br /&gt;
&lt;br /&gt;
The desired process model for a carrier grade system is the asynchronous event driven model. This can enabled in two ways: &lt;br /&gt;
* Write a new OS that natively supports this model. &lt;br /&gt;
* Design a low-level middleware that enables process manageability and provides a hook for delivering services to a process in a standard manner but without modification to the base OS. &lt;br /&gt;
&lt;br /&gt;
OpenClovis EO infrastructure is the user space client library and the server infrastructure that enables these capabilities. When this infrastructure is linked into an application, it takes over the application's main function and creates communication links back to the middleware, executing application specific state changes at the behest of the middleware. This model requires some help from the application, which must be written to support multiple threads as well as an asynchronous flow. &lt;br /&gt;
&lt;br /&gt;
'''Characteristics of an EO''' &lt;br /&gt;
&lt;br /&gt;
You can define a &amp;quot;Managed EO&amp;quot; that comprises the following characteristics.&lt;br /&gt;
* An EO is a process that is modified to interface with the middleware such as having multiple threads.&lt;br /&gt;
* An EO can be manageable by the middleware.&lt;br /&gt;
* An EO can use one or more services provided by the middleware. &lt;br /&gt;
&lt;br /&gt;
The EO infrastructure thus consists of an EO client library linked into each process and an EO manager library to manage the client. The client library implements the dispatching loop and manages communication between the application and OpenClovis SAFplus Platform services. Other services link to their client library functions into the EO infrastructure.&lt;br /&gt;
&lt;br /&gt;
Both high level SAFplus Platform and application processes can be Componentized. The resulting applications can be &amp;quot;managed&amp;quot; or &amp;quot;unmanaged&amp;quot; depending on whether the manageability functions in their respective EOs are implemented or kept empty. Although, components like CPM cannot be Componentized as the EO infrastructure is dependent on it. Though many applications can interface with SAFplus Platform using the EO infrastructure, there can be some exceptions where the application may use a light weight library that does not link to the EO infrastructure.&lt;br /&gt;
&lt;br /&gt;
===SAFplus Platform Distributed Infrastructure===&lt;br /&gt;
&lt;br /&gt;
The distributed infrastructure of SAFplus Platform allows different components to communicate with each other agnostic of the computing unit. This inter-component communication is achieved through IOC Linux kernel module. RMD uses services provided by IOC to invoke remote procedure of other components. &lt;br /&gt;
&lt;br /&gt;
The fundamental constituents of OpenClovis SAFplus Platform distributed infrastructure to realize a component comprises:&lt;br /&gt;
* '''IOC Port''' - It is a communication port where all the incoming messages are queued. Each component must have an IOC port to communicate with other components and services.&lt;br /&gt;
* '''Message Receiver Thread''' - The Message Receiver Thread picks up the messages from the IOC Port and queues it into EO Job Queue to further process the message. &lt;br /&gt;
* '''Worker Threads''' - When a message is queued into EO Job Queue the worker threads get invoked. One of these threads picks up the message and calls the corresponding function for this message. After the message is processed and the function is executed, the reply is returned depending on the options specified by you indicating whether it is a synchronous RMD call or an asynchronous RMD call.&lt;br /&gt;
* '''Client Tables and Function Tables''' - Each OpenClovis SAFplus Platform client and application client that the EO links can install the client tables by invoking the  &amp;lt;code&amp;gt;'''clEoClientInstall'''&amp;lt;/code&amp;gt;  API. A client Id is used to index into the client table. The client table consists of the services exposed by the client in the form of a Function Table. These clients provide various services that are installed and registered in the Function Tables indexed by the service Id. The service Id combined with the client Id together forms the RMD number that invokes the services through RMD.&lt;br /&gt;
&lt;br /&gt;
===Componentization Process===&lt;br /&gt;
&lt;br /&gt;
The process of Componentization involves the following steps:&lt;br /&gt;
* [[#Step 1: Defining the Skeleton of a Component | Step 1: Defining the Skeleton of a Component]] &amp;lt;br&amp;gt;Define the skeleton of a component and describe its lifecycle functions and interface functions. Assign a unique IOC communication port to the component that identifies the execution object.&lt;br /&gt;
* [[#Step 2: Defining clEoBasicLibs | Step 2: Defining &amp;lt;code&amp;gt;clEoBasicLibs&amp;lt;/code&amp;gt;]] &amp;lt;br&amp;gt;Define the set of OpenClovis SAFplus Platform libraries required by the component.&lt;br /&gt;
* [[#Step 3: Initializing the CPM Library | Step 3: Initializing the CPM Library]] &amp;lt;br&amp;gt;Initialize the CPM client library. &lt;br /&gt;
* [[#Step 4: Registering the CPM | Step 4: Registering the CPM]] &amp;lt;br&amp;gt;Register the component with CPM infrastructure.&lt;br /&gt;
* [[#Step 5: Un-registering the CPM Library | Step 5: Un-registering the CPM Library]] &amp;lt;br&amp;gt;Un-register the application from CPM Infrastructure, on exit of the application.&lt;br /&gt;
* [[#Step 6: Finalizing the CPM Library | Step 6: Finalizing the CPM Library]] &amp;lt;br&amp;gt;Finalize the CPM client library when the component exits.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 1: Defining the Skeleton of a Component&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 1: Defining the Skeleton of a Component'''&lt;br /&gt;
&lt;br /&gt;
Using OpenClovis IDE, define a structure with the name as  &amp;lt;code&amp;gt;'''clEoConfig'''&amp;lt;/code&amp;gt; with the following fields initialized appropriately:&lt;br /&gt;
* Component lifecycle management parameters&lt;br /&gt;
* Number of receiver threads&lt;br /&gt;
* Unique communication port Id associated with the component for communication within the SAFplus Platform infrastructure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
# define COMP_EO_NUM_THREAD 3&lt;br /&gt;
# define COMP_IOC_PORT 0&lt;br /&gt;
&lt;br /&gt;
ClEoConfigT clEoConfig = {&lt;br /&gt;
    COMP_EO_NAME,               /* EO Name */&lt;br /&gt;
    COMP_EO_THREAD_PRIORITY,    /* EO Thread Priority */&lt;br /&gt;
    COMP_EO_NUM_THREAD,         /* No of EO thread needed */&lt;br /&gt;
    COMP_IOC_PORT,              /* Required IOC Port */&lt;br /&gt;
    COMP_EO_USER_CLIENT_ID,     /* Size of the client table */&lt;br /&gt;
    COMP_EO_USE_THREAD_MODEL,   /* Whether to use main thread for EO&lt;br /&gt;
                                 * receive or not */&lt;br /&gt;
    clCompAppInitialize,        /* Function callback to initialize the&lt;br /&gt;
                                 * application */&lt;br /&gt;
    clCompAppFinalize,          /* Function callback to terminate the&lt;br /&gt;
                                 * application */&lt;br /&gt;
    clCompAppStateChange,       /* Function callback to change the&lt;br /&gt;
                                 * application state */&lt;br /&gt;
    clCompAppHealthCheck,       /* Function callback to check the&lt;br /&gt;
                                 * application health */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where,&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_EO_NAME'''&amp;lt;/code&amp;gt; is the name of the component message passing infrastructure also called as the Execution Object (EO). The EO name on every node must be unique.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_EO_THREAD_PRIORITY'''&amp;lt;/code&amp;gt;  is the priority of the EO thread.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_EO_NUM_THREAD'''&amp;lt;/code&amp;gt; is the count of worker threads for RMD message processing. This must be greater than or equal to 1. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_IOC_PORT'''&amp;lt;/code&amp;gt;  is the unique IOC communication port associated with every component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_EO_USER_CLIENT_ID'''&amp;lt;/code&amp;gt; is the number of clients that can exist for a given component. You can use this macro &amp;lt;code&amp;gt;COMP_EO_USER_CLIENT_ID&amp;lt;/code&amp;gt;, as a default value.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''COMP_EO_USE_THREAD_MODEL'''&amp;lt;/code&amp;gt; is the usage of the main thread. This is explained in details in Figure [[#Illustration of the usage of application type | Illustration of the usage of application type]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt; is invoked by the OpenClovis SAFplus Platform infrastructure when the componentized application is started. It performs the initialization actions (for example installing EO client tables) for any application that is being componentized. For SA-aware components, after the application is initialized, it informs AMF that it is ready to provide services using &amp;lt;code&amp;gt;clCpmComponentRegister&amp;lt;/code&amp;gt; API. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''clCompAppFinalize'''&amp;lt;/code&amp;gt; is being deprecated and must be NULL.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''clCompAppStateChange'''&amp;lt;/code&amp;gt; is called whenever the application state needs to be changed to  &amp;lt;code&amp;gt;SUSPEND&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;RESUME&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;code&amp;gt;'''clCompAppHealthCheck'''&amp;lt;/code&amp;gt; is called periodically by Component Manager to check the health of the componentized application. In response to this callback, you need to verify if the application is running properly and fill in the structure passed to it.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Illustration of the usage of application type'&amp;gt;&amp;lt;/span&amp;gt;[[File:SDK_UsageofApplicationType_70.png|frame|center| '''Illustration of the usage of application type''' ]]&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]The application must consider the following while defining the  &amp;lt;code&amp;gt;'''clEoConfig'''&amp;lt;/code&amp;gt; structure:&lt;br /&gt;
* If you select  &amp;lt;code&amp;gt;'''COMP_EO_USE_THREAD_MODEL'''&amp;lt;/code&amp;gt;  as  &amp;lt;code&amp;gt;'''CL_EO_USE_THREAD_FOR_RECV'''&amp;lt;/code&amp;gt;, the main thread  '''must not be'''  blocked in the  &amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt;. It must return after the library is initialized. Later, the main thread will be used for RMD message receive function.&lt;br /&gt;
* If you select  &amp;lt;code&amp;gt;'''COMP_EO_USE_THREAD_MODEL'''&amp;lt;/code&amp;gt; as  &amp;lt;code&amp;gt;'''CL_EO_USE_THREAD_FOR_APP'''&amp;lt;/code&amp;gt;, the main thread  '''must be'''  blocked in the  &amp;lt;code&amp;gt;'''ClEoAppCreateCallbackT'''&amp;lt;/code&amp;gt;  or used by the application. It must return only when the  &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; is called.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 2: Defining clEoBasicLibs&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 2: Defining &amp;lt;code&amp;gt;clEoBasicLibs&amp;lt;/code&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
This structure contains the basic OpenClovis SAFplus Platform libraries required by the component. The first six libraries must always be set to  &amp;lt;code&amp;gt;'''CL_TRUE'''&amp;lt;/code&amp;gt; ; the remaining can be made &amp;lt;code&amp;gt; '''CL_TRUE'''&amp;lt;/code&amp;gt; only if the corresponding services are required by the application. If set to  &amp;lt;code&amp;gt;'''CL_TRUE'''&amp;lt;/code&amp;gt;, the corresponding libraries will automatically get initialized during component initialization.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClUint8T clEoBasicLibs[] = {&lt;br /&gt;
    CL_TRUE,      /* OSAL */&lt;br /&gt;
    CL_TRUE,      /* Timer */&lt;br /&gt;
    CL_TRUE,      /* Buffer */&lt;br /&gt;
    CL_TRUE,      /* IOC */&lt;br /&gt;
    CL_TRUE,      /* RMD */&lt;br /&gt;
    CL_TRUE,      /* EO */&lt;br /&gt;
    CL_TRUE,      /* OM */&lt;br /&gt;
    CL_FALSE,     /* HAL */&lt;br /&gt;
    CL_FALSE,     /* DBAL */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Step 2.1: Defining &amp;lt;code&amp;gt;clEoClientLibs&amp;lt;/code&amp;gt;''' &lt;br /&gt;
&lt;br /&gt;
This structure contains a list of client libraries which the components can initialize if they need the corresponding service within the SAFplus Platform infrastructure. All the values in this structure are optional. If set to  &amp;lt;code&amp;gt;'''CL_TRUE'''&amp;lt;/code&amp;gt;, the corresponding libraries will automatically get initialized during component initialization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ClUint8T clEoClientLibs[] = {&lt;br /&gt;
    CL_TRUE,       /* Clovis Object Registry */&lt;br /&gt;
    CL_TRUE,       /* Chassis Manager */&lt;br /&gt;
    CL_TRUE,       /* Name Service*/&lt;br /&gt;
    CL_TRUE,       /* Log Service*/&lt;br /&gt;
    CL_FALSE,      /* Trace Service */&lt;br /&gt;
    CL_FALSE,      /* Diagnostic Manager */&lt;br /&gt;
    CL_TRUE,       /* Transaction Manager */&lt;br /&gt;
    CL_FALSE,      /* NA */&lt;br /&gt;
    CL_TRUE,       /* Provisioning Library*/&lt;br /&gt;
    CL_TRUE,       /* Alarm Manager */&lt;br /&gt;
    CL_TRUE,       /* Debug Service*/&lt;br /&gt;
    CL_FALSE       /* Group Membership Service */&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When this is defined, the application is componentized. During startup, the stubs generated by OpenClovis IDE does all the necessary things as defined in the above structures.&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]OpenClovis SAFplus Platform libraries linked to the user application require three structures to be defined, otherwise, it will lead to compilation failure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 3: Initializing the CPM Library&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 3: Initializing the CPM Library'''&lt;br /&gt;
&lt;br /&gt;
From  &amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt; callback, you need to initialize the CPM library by calling the  &amp;lt;code&amp;gt;'''clCpmClientInitialize'''&amp;lt;/code&amp;gt;  and provide a structure for callback, defined as  &amp;lt;code&amp;gt;'''ClCpmCallbacksT'''&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;'''clCpmApi.h'''&amp;lt;/code&amp;gt; file.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmHealthCheckCallbackT'''&amp;lt;/code&amp;gt; callback: This callback is not implemented by OpenClovis SAFplus Platform for the current release. &lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when the application requires to be terminated. In this function callback, the application will clean up its acquired resources.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmCSISetCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when AMF assigns the workload to the application.  &lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmCSIRmvCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when AMF removes the workload from the application.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmProtectionGroupTrackCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when there is a change in the status of the protection group of a particular CSI. The application tracks the status of the CSI using  &amp;lt;code&amp;gt;'''clCpmProtectionGroupTrack'''&amp;lt;/code&amp;gt; API. &lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmProxiedComponentInstantiateCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when the proxy component instantiates one or more of its proxied components. &lt;br /&gt;
* &amp;lt;code&amp;gt;'''ClCpmProxiedComponentCleanupCallbackT'''&amp;lt;/code&amp;gt; callback: This is called when the proxy component clean up one or more of its proxied components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 4: Registering the CPM&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 4: Registering the CPM'''&lt;br /&gt;
&lt;br /&gt;
From  &amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt; callback, you need to register the component by invoking  &amp;lt;code&amp;gt;'''clCpmComponentRegister'''&amp;lt;/code&amp;gt; API. The component must be registered only when it is ready to provide the services. After the component is registered, it can either provide some specific service or use the services provided by other components. When AMF decides to terminate the component, it calls the  &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; callback provided by the application. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 5: Un-registering the CPM Library&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 5: Un-registering the CPM Library'''&lt;br /&gt;
&lt;br /&gt;
From  &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; callback, you need to un-register the component by invoking  &amp;lt;code&amp;gt;'''clCpmComponentUnregister'''&amp;lt;/code&amp;gt; API. The component is un-registered when the component is no longer providing the services. You can cleanup all the associated resources.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Step 6: Finalizing the CPM Library&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''Step 6: Finalizing the CPM Library'''&lt;br /&gt;
&lt;br /&gt;
From  &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; callback, you need to finalize CPM library by calling the  &amp;lt;code&amp;gt;'''clCpmClientFinalize'''&amp;lt;/code&amp;gt; API.&lt;br /&gt;
&lt;br /&gt;
===Component Characteristics===&lt;br /&gt;
&lt;br /&gt;
An application component in OpenClovis SAFplus Platform infrastructure has the following characteristics:&lt;br /&gt;
* Each component has an associated lifecycle and registers the initialization and shutdown functions with OpenClovis SAFplus Platform infrastructure.&lt;br /&gt;
* Each component provides implementation of high availability related OpenClovis SAFplus Platform mandated functionality. Each component has a communication port called the IOC port assigned by OpenClovis SAFplus Platform infrastructure to communicate with other components including Event, Checkpoint, Component Manager and so on. IOC manages the IOC port and implements the actual mechanism of sending and receiving messages.&lt;br /&gt;
* Each component installs the services into the function table indexed by the service id through the  &amp;lt;code&amp;gt;'''clEoClientInstall'''&amp;lt;/code&amp;gt; API. This function table is contained in the client table identified by the client id namely, &amp;lt;code&amp;gt;'''CL_EO_NATIVE_COMPONENT_TABLE_ID'''&amp;lt;/code&amp;gt; . To use any service of the component, you must use the RMD number that uniquely identifies the service. &lt;br /&gt;
* Each component is associated with one or more worker threads. Every message intended to be delivered to a component, is set in a queue by IOC on the corresponding port. This message is then picked up by the receiver thread in EO and queued in the EO Job Queue. One of the worker threads picks up the message, decodes the RMD number, and executes the appropriate interface function.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Realization in OpenClovis SAFplus Platform environment'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_ComponentRealization.png|frame|center| '''Component Realization in OpenClovis SAFplus Platform environment''' ]]&lt;br /&gt;
&lt;br /&gt;
Figure [[#Component Realization in OpenClovis SAFplus Platform environment | Component Realization in OpenClovis SAFplus Platform environment]]  explains the elements of OpenClovis SAFplus Platform component. &lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform component comprises the following:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The function  &amp;lt;code&amp;gt;'''cbfn3'''&amp;lt;/code&amp;gt; is a callback function that represents the lifecycle function of the component. The lifecycle functions are registered with distributed infrastructure of OpenClovis SAFplus Platform and helps to initialize, finalize, and check the status of the component. These functions facilitate CPM to manage the lifecycle of the component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;The functions  &amp;lt;code&amp;gt;'''fn1'''&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;'''fn2'''&amp;lt;/code&amp;gt;  are the component interface functions with a unique identifier. These functions are called the service interface of the component and they represent the services that the components can provide.&lt;br /&gt;
&amp;lt;br&amp;gt;[[File:OpenClovis_Note.png]]The function  &amp;lt;code&amp;gt;'''fn3'''&amp;lt;/code&amp;gt;  is a service interface of the CPM component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;lt;code&amp;gt;'''App2'''&amp;lt;/code&amp;gt; can make calls to  &amp;lt;code&amp;gt;'''fn1'''&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;'''fn2'''&amp;lt;/code&amp;gt;, component interface function of  &amp;lt;code&amp;gt;'''App1'''&amp;lt;/code&amp;gt;  using RMD of OpenClovis SAFplus Platform distributed infrastructure. The functions  &amp;lt;code&amp;gt;'''fn1'''&amp;lt;/code&amp;gt; and  &amp;lt;code&amp;gt;'''fn2'''&amp;lt;/code&amp;gt;  are depicted as  &amp;lt;code&amp;gt;'''rfn1'''&amp;lt;/code&amp;gt;  and  &amp;lt;code&amp;gt;'''rfn2'''&amp;lt;/code&amp;gt; respectively in Figure [[#Illustration of the usage of application type | Illustration of the usage of application type]].&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CPM server periodically performs a health check on the component and remotely invokes the CPM client service functionality using RMD. This functionality in turn invokes the health check up callback, illustrated as  &amp;lt;code&amp;gt;'''cbfn3'''&amp;lt;/code&amp;gt;  in Figure [[#Illustration of the usage of application type | Illustration of the usage of application type]], of the component and returns the status to the CPM server.&lt;br /&gt;
&lt;br /&gt;
===Component Initialization===&lt;br /&gt;
&lt;br /&gt;
OpenClovis SAFplus Platform provides a set of libraries that must be initialized for application manageability, high availability, and pre-defined main function for easy usability.&lt;br /&gt;
&lt;br /&gt;
The following are the consequences when a component application is initialized:&lt;br /&gt;
#It initializes the basic OpenClovis SAFplus Platform libraries to provide operating system or architecture-independent execution context for the component. It also installs the signal handler to handle all the signals that causes the process termination [for example SIGSEGV, SIGFBP, SIGILL, and so on]. Whenever a signal is generated, signal handler receives the stack trace and signal-related information. The stack trace and the signal information are then moved into the shared memory.&lt;br /&gt;
#It creates the communication link. &lt;br /&gt;
#It initializes the client libraries so that the component can use the functionality provided by other components of OpenClovis SAFplus Platform. For example, Event, Provisioning and so on.&lt;br /&gt;
#It passes the control to the initialization callback function provided in the  &amp;lt;code&amp;gt;'''clEoConfig'''&amp;lt;/code&amp;gt; structure, where it can implement the specific functionalities exposed by the application.&lt;br /&gt;
#If the application holds the main thread, the execution continues with the application. Otherwise, after the initialization callback returns, the main thread waits in a loop to accept messages.&lt;br /&gt;
#When OpenClovis SAFplus Platform requires to shutdown a component, based on the policy or during node shutdown,  &amp;lt;code&amp;gt;'''ClCpmTerminateCallbackT'''&amp;lt;/code&amp;gt; callback is invoked, which requires to follow the steps explained above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Component Initialization sequence diagram'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
[[File:SDK_ComponentInitialization.png|frame|center| '''Component Initialization sequence diagram''' ]]&lt;br /&gt;
&lt;br /&gt;
[[File:OpenClovis_Note.png]]If you create new threads or tasks, and send messages from the thread context, then  &amp;lt;code&amp;gt;'''clEoMyEoObjectSet()'''&amp;lt;/code&amp;gt;  and  &amp;lt;code&amp;gt;'''clEoMyEoIocPortSet()'''&amp;lt;/code&amp;gt; must be in the new thread context to set the environment for communication purpose. If not, every RMD returns a failure.&lt;br /&gt;
&lt;br /&gt;
===Using Availability Management Framework (AMF)===&lt;br /&gt;
&lt;br /&gt;
Componentization process helps the applications to interact with the OpenClovis SAFplus Platform infrastructure.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br&amp;gt;Applications can be made highly available by providing certain callbacks specific to AMF. AMF requires applications to provide callbacks for lifecycle operations, work assignment operations, and protect group related operations (optional). AMF decides to instantiate and assign workload to a component. The components can be instantiated by calling the &amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt; callback of the component. This callback is an indication to the component to start the process.&lt;br /&gt;
&lt;br /&gt;
After the component completes the start process and is ready to receive the work assignments, it informs the AMF framework by invoking the AMF  &amp;lt;code&amp;gt;'''clCpmComponentRegister'''&amp;lt;/code&amp;gt; API.&lt;br /&gt;
&lt;br /&gt;
Registration process is an indication for AMF that the component have been successfully started and can be assigned work by AMF. On receiving the register callback AMF assigns workload to the component with appropriate high availability state using the CSI set callback API registered in the callback function list using  &amp;lt;code&amp;gt;'''clCpmClientInitialize'''&amp;lt;/code&amp;gt; API. &lt;br /&gt;
&lt;br /&gt;
The CSI set API informs the component that a given CSI (workload) have been assigned to the component. The CSI contains information about the name-value pairs and HA state assigned to the component. The name value pairs are the names and values that a component requires to start serving the workloads. For example, a name-value pair can be a configuration filename and its path or location of checkpointed data. The high availability state is assigned by the AMF to the component, for example, ACTIVE or STANDBY. The ACTIVE HA state is an indication that the component will be active for the given CSI. The STANDBY high availability state indicates that the component must prepare itself to takeover in case of failures of the ACTIVE component. &lt;br /&gt;
&lt;br /&gt;
After receiving the CSI set request, the component informs the AMF framework after it is completes the processing required for serving the CSI. This response is an indication for the AMF that the component has successfully received the CSI request and is ready to serve the CSI. &lt;br /&gt;
&lt;br /&gt;
HA state can have the following values:&lt;br /&gt;
* '''Active''' - This means the component is ready to serve the CSI.&lt;br /&gt;
* '''Standby''' - This means that component is on standby for the CSI.&lt;br /&gt;
* '''Quiescing''' - This means the component must finish the existing operations and must not take any new assignment. After it has completed serving the existing request, it informs the AMF framework by calling &amp;lt;code&amp;gt;'''Quiescing'''&amp;lt;/code&amp;gt; complete API. This is an indication to AMF that the component will not take any new assignment for the CSI and the AMF framework can remove the CSI assignments from this component and send it to other components.&lt;br /&gt;
&lt;br /&gt;
AMF framework can call the CSI remove callback to remove the CSI assignments from the component. Component's response to this API is an indication for AMF to assign the CSI to other component.&lt;br /&gt;
&lt;br /&gt;
AMF also provides API for interested component to track the status of protection group. Protection group comprises all the components that are assigned HA state (Active or Standby) for the CSI. Protection group tracks API allows the interested component to register with the framework indicating the CSI for which it is interested. The AMF framework informs the component whenever there is a change in the protection group by calling the protection group callback.&lt;br /&gt;
&lt;br /&gt;
Proxied components can interact with the AMF framework through a proxy component. Proxy component is an SA-aware component that can communicate with the AMF framework directly. The calls to proxied component pass through the proxy component. All the lifecycle operations, workload operations for proxied component are carried through the proxy component.&lt;br /&gt;
&lt;br /&gt;
===Characteristics of a Sample Application===&lt;br /&gt;
&lt;br /&gt;
The sample application depicts an application to generate Global Sequence Numbers. The following are the characteristics of this component:&lt;br /&gt;
* &amp;lt;code&amp;gt;'''clCompAppInitialize'''&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;'''clCompAppFinalize'''&amp;lt;/code&amp;gt;, and  &amp;lt;code&amp;gt;'''clCompAppStateChange'''&amp;lt;/code&amp;gt;  are the lifecycle related functions.&lt;br /&gt;
* &amp;lt;code&amp;gt;'''clCompAppHealthCheck'''&amp;lt;/code&amp;gt; is the functionality related to High Availability.&lt;br /&gt;
&lt;br /&gt;
===Sample Code for Componentization===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
clCompAppMain.h&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
#ifndef CL_COMP_APP_MAIN&lt;br /&gt;
# define CL_COMP_APP_MAIN&lt;br /&gt;
# include &amp;lt;clCompCfg.h&amp;gt;&lt;br /&gt;
# ifndef COMP_NAME&lt;br /&gt;
# error &amp;quot;COMP_NAME is not defined. Bad or missing ./clCompCfg.h&amp;quot;&lt;br /&gt;
# endif&lt;br /&gt;
ClRcT clCompAppTerminate&lt;br /&gt;
			              (ClInvocationT invocation, &lt;br /&gt;
	               const ClNameT *compName);&lt;br /&gt;
ClRcT clCompAppAMFCSISet&lt;br /&gt;
	              (ClInvocationT invocation, &lt;br /&gt;
               const ClNameT *compName,&lt;br /&gt;
               ClAmsHAStateT haState,&lt;br /&gt;
               ClAmsCSIDescriptorT csiDescriptor);&lt;br /&gt;
ClRcT clCompAppAMFCSIRemove&lt;br /&gt;
               (ClInvocationT invocation, &lt;br /&gt;
	                const ClNameT *compName,&lt;br /&gt;
                const ClNameT *csiName, &lt;br /&gt;
                ClAmsCSIFlagsT csiFlags);&lt;br /&gt;
ClRcT clCompAppInitialize&lt;br /&gt;
	                (ClUint32T argc, &lt;br /&gt;
                 ClCharT *argv[]);&lt;br /&gt;
ClRcT clCompAppFinalize();&lt;br /&gt;
ClRcT clCompAppStateChange&lt;br /&gt;
                (ClEoStateT eoState);&lt;br /&gt;
ClRcT clCompAppHealthCheck&lt;br /&gt;
                (ClEoSchedFeedBackT *schFeedback);&lt;br /&gt;
#endif&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
clCompAppMain.c&lt;br /&gt;
---------------------------------------------------------------&lt;br /&gt;
#include &amp;lt;clCommon.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clOsalApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clIocServices.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;clRmdApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clDebugApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clOmApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clOampRtApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clProvApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clAlarmApi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;clEoApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clCpmApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;clIdlApi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;quot;./clCompAppMain.h&amp;quot;&lt;br /&gt;
#include &amp;quot;clCompA.h&amp;quot;&lt;br /&gt;
#if HAS_EO_SERVICES&lt;br /&gt;
extern ClRcT idlClientInstall(void);&lt;br /&gt;
#endif&lt;br /&gt;
ClCpmHandleT cpmHandle;&lt;br /&gt;
ClRcT clCompAppTerminate(ClInvocationT invocation, const ClNameT *compName)&lt;br /&gt;
{&lt;br /&gt;
    ClRcT rc;&lt;br /&gt;
&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Inside %s \n&amp;quot;, __FUNCTION__));&lt;br /&gt;
    /*&lt;br /&gt;
     Do the App Finalization &lt;br /&gt;
     */&lt;br /&gt;
    clAppFinalize();&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Unregister with CPM before Exit .................%s\n&amp;quot;,&lt;br /&gt;
                     compName-&amp;gt;value));&lt;br /&gt;
    rc = clCpmComponentUnregister(cpmHandle, compName, NULL);&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Finalize before Exit ................. %s\n&amp;quot;,&lt;br /&gt;
                     compName-&amp;gt;value));&lt;br /&gt;
    rc = clCpmClientFinalize(cpmHandle);&lt;br /&gt;
    clCpmResponse(cpmHandle, invocation, CL_OK);&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
ClRcT clCompAppAMFCSISet(ClInvocationT invocation, const ClNameT *compName,&lt;br /&gt;
                         ClAmsHAStateT haState,&lt;br /&gt;
                         ClAmsCSIDescriptorT csiDescriptor)&lt;br /&gt;
{&lt;br /&gt;
    ClRcT rc = CL_OK;&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Inside Function %s \n&amp;quot;, __FUNCTION__));&lt;br /&gt;
    if (haState == CL_AMS_HA_STATE_QUIESCING)&lt;br /&gt;
    {&lt;br /&gt;
        /*&lt;br /&gt;
         TODO make the quiescing complete call after the work assigned is&lt;br /&gt;
         done &lt;br /&gt;
         */&lt;br /&gt;
        rc = clAppSetQuiescingState(invocation, compName, csiDescriptor);&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;######## before clCpmCSIQuiescingComplete for &amp;quot;&lt;br /&gt;
                         &amp;quot;%s ########\n&amp;quot;, COMP_EO_NAME));&lt;br /&gt;
        clCpmCSIQuiescingComplete(cpmHandle, invocation, rc);&lt;br /&gt;
    }&lt;br /&gt;
    else if (haState == CL_AMS_HA_STATE_ACTIVE)&lt;br /&gt;
    {&lt;br /&gt;
        rc = clAppSetActiveState(invocation, compName, csiDescriptor);&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;######## before clCpmResponse(ACTIVE) for &amp;quot;&lt;br /&gt;
                         &amp;quot;%s########\n&amp;quot;, COMP_EO_NAME));&lt;br /&gt;
        clCpmResponse(cpmHandle, invocation, rc);&lt;br /&gt;
    }&lt;br /&gt;
    else if (haState == CL_AMS_HA_STATE_STANDBY)&lt;br /&gt;
    {&lt;br /&gt;
        rc = clAppSetStandbyState(invocation, compName, csiDescriptor);&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;######## before clCpmResponse(STANDBY) for &amp;quot;&lt;br /&gt;
                         &amp;quot;%s########\n&amp;quot;, COMP_EO_NAME));&lt;br /&gt;
        clCpmResponse(cpmHandle, invocation, rc);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;######## before clCpmResponse(%d) for %s########\n&amp;quot;,&lt;br /&gt;
                         haState, COMP_EO_NAME));&lt;br /&gt;
        clCpmResponse(cpmHandle, invocation, CL_OK);&lt;br /&gt;
    }&lt;br /&gt;
    if (CL_OK != rc)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;clCompAppAMFCSISet failed with %d for %s\n&amp;quot;, rc,&lt;br /&gt;
                         COMP_EO_NAME));&lt;br /&gt;
    }&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
ClRcT clCompAppAMFCSIRemove(ClInvocationT invocation, const ClNameT *compName,&lt;br /&gt;
                            const ClNameT *csiName, ClAmsCSIFlagsT csiFlags)&lt;br /&gt;
{&lt;br /&gt;
    ClRcT rc = CL_OK;&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Inside Function %s \n&amp;quot;, __FUNCTION__));&lt;br /&gt;
    /*&lt;br /&gt;
     TODO stop the work assigned before making the response done &lt;br /&gt;
     */&lt;br /&gt;
    rc = clAppCSIRemove(invocation, compName, csiName, csiFlags);&lt;br /&gt;
    clCpmResponse(cpmHandle, invocation, rc);&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
/*&lt;br /&gt;
Service Initialization:&lt;br /&gt;
  1. Initialize your counter and create mutex.&lt;br /&gt;
  2. Register Name and generate Logical Address&lt;br /&gt;
  3 Initialize Checkpoint Service&lt;br /&gt;
*/&lt;br /&gt;
ClRcT clAppInitialize(ClCpmHandleT cpmHandle)&lt;br /&gt;
{&lt;br /&gt;
    ClRcT rc = CL_OK;&lt;br /&gt;
    ClNameSvcRegisterT nameRegInfo = { {0} };&lt;br /&gt;
    ClEoExecutionObjT *pEoObj = NULL;&lt;br /&gt;
    ClNameT compName = { 0 };&lt;br /&gt;
    clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_DEBUG,COMP_A_SERVICE_NAME,&lt;br /&gt;
    CL_COMPA_LOG_0_INIT_ENTER);&lt;br /&gt;
    gAppGlobal.version.releaseCode = 'B';&lt;br /&gt;
    gAppGlobal.version.majorVersion = 0x01;&lt;br /&gt;
    gAppGlobal.version.minorVersion = 0x01;&lt;br /&gt;
    gAppGlobal.ckptName.length = sizeof(CKPT_NAME);&lt;br /&gt;
    strncpy(gAppGlobal.ckptName.value, CKPT_NAME, strlen(CKPT_NAME));&lt;br /&gt;
    gAppGlobal.cpmHandle = cpmHandle;&lt;br /&gt;
    gAppGlobal.ckptHdl = -1;&lt;br /&gt;
    /*&lt;br /&gt;
     counter is initialized here &lt;br /&gt;
     */&lt;br /&gt;
    gAppGlobal.count = 0;&lt;br /&gt;
    rc = clOsalMutexCreate(&amp;amp;gAppGlobal.mutex);&lt;br /&gt;
    if (rc != CL_OK)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failure in mutex create [0x %x]&amp;quot;, rc));&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_ERROR,COMP_A_SERVICE_NAME,&lt;br /&gt;
                CL_COMPA_LOG_1_MUTEX_CREATE_FAILED, rc);&lt;br /&gt;
        return rc;&lt;br /&gt;
    }&lt;br /&gt;
    /* register your name with Name Service and get the logical address */&lt;br /&gt;
    rc = clCpmComponentNameGet(gAppGlobal.cpmHandle, &amp;amp;compName);&lt;br /&gt;
    if (CL_OK != rc)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failure in component name get [0x %x]&amp;quot;, rc));&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_ERROR,COMP_A_SERVICE_NAME,&lt;br /&gt;
                CL_COMPA_LOG_1_NAME_GET_FAILED, rc);&lt;br /&gt;
        goto mutexCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    rc = clCpmComponentIdGet(gAppGlobal.cpmHandle, &amp;amp;compName,&lt;br /&gt;
                             &amp;amp;gAppGlobal.compId);&lt;br /&gt;
    if (CL_OK != rc)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failed to get the component ID  [0x %x]&amp;quot;, rc));&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_ERROR,COMP_A_SERVICE_NAME,&lt;br /&gt;
                CL_COMPA_LOG_1_ID_GET_FAILED, rc);&lt;br /&gt;
        goto mutexCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    nameRegInfo.name.length = strlen(COMP_A_SERVICE_NAME);&lt;br /&gt;
    strcpy(nameRegInfo.name.value, COMP_A_SERVICE_NAME);&lt;br /&gt;
    nameRegInfo.compId = gAppGlobal.compId;&lt;br /&gt;
    nameRegInfo.priority = CL_NS_PRIORITY_HIGH;&lt;br /&gt;
    nameRegInfo.attrCount = 0;&lt;br /&gt;
    gAppGlobal.nameObjRef = CL_NS_GET_OBJ_REF;&lt;br /&gt;
    rc = clNameRegister(gAppGlobal.nameCntxId, &amp;amp;nameRegInfo,&lt;br /&gt;
                        &amp;amp;(gAppGlobal.nameObjRef));&lt;br /&gt;
    if (rc != CL_OK)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failed to register with name [0x %x]&amp;quot;, rc));&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_ERROR,COMP_A_SERVICE_NAME,&lt;br /&gt;
                CL_COMPA_LOG_1_NAME_REGISTER_FAILED, rc);&lt;br /&gt;
        goto mutexCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_DEBUG,COMP_A_SERVICE_NAME,               &lt;br /&gt;
                   CL_COMPA_LOG_0_NAME_REGISTERED);&lt;br /&gt;
    }&lt;br /&gt;
    /*&lt;br /&gt;
     Initialize the Checkpoint Service &lt;br /&gt;
     */&lt;br /&gt;
    rc = clCkptInitialize(&amp;amp;gAppGlobal.ckptSvcHdl, NULL, &amp;amp;gAppGlobal.version);&lt;br /&gt;
    if (rc != CL_OK)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failed in checkpoint initialize rc [0x %x]&amp;quot;, rc));&lt;br /&gt;
        clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_ERROR,COMP_A_SERVICE_NAME,&lt;br /&gt;
                CL_COMPA_LOG_1_CKPT_INIT_FAILED, rc);&lt;br /&gt;
        goto nameCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    rc = clEoMyEoObjectGet(&amp;amp;pEoObj);&lt;br /&gt;
    if (rc != CL_OK)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failed to get the EoObject rc [0x %x]&amp;quot;, rc));&lt;br /&gt;
        goto ckptCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    gAppGlobal.pEoObj = pEoObj;&lt;br /&gt;
    rc = compADebugRegister(gAppGlobal.pEoObj);&lt;br /&gt;
    if (rc != CL_OK)&lt;br /&gt;
    {&lt;br /&gt;
        COMPA_DBG_PRINT((&amp;quot;Failed to register with debug rc[0x %x]&amp;quot;, rc));&lt;br /&gt;
        goto ckptCleanup;&lt;br /&gt;
    }&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Sucessfully completed initialization\n&amp;quot;));&lt;br /&gt;
    clLogWrite(CL_LOG_HANDLE_APP,CL_LOG_DEBUG,COMP_A_SERVICE_NAME,&lt;br /&gt;
            CL_COMPA_LOG_0_INIT_DONE, rc);&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
  ckptCleanup:&lt;br /&gt;
    clCkptFinalize(gAppGlobal.ckptSvcHdl);&lt;br /&gt;
  nameCleanup:&lt;br /&gt;
    clNameComponentDeregister(gAppGlobal.compId);&lt;br /&gt;
  mutexCleanup:&lt;br /&gt;
    clOsalMutexDelete(gAppGlobal.mutex);&lt;br /&gt;
    return rc;&lt;br /&gt;
}&lt;br /&gt;
ClRcT clCompAppInitialize(ClUint32T argc, ClCharT *argv[])&lt;br /&gt;
{&lt;br /&gt;
    ClNameT appName;&lt;br /&gt;
    ClCpmCallbacksT callbacks;&lt;br /&gt;
    ClVersionT version;&lt;br /&gt;
    ClIocPortT iocPort;&lt;br /&gt;
    ClRcT rc = CL_OK;&lt;br /&gt;
    /*&lt;br /&gt;
     Do the App intialization &lt;br /&gt;
    */&lt;br /&gt;
    /*&lt;br /&gt;
     Do the CPM client init/Register &lt;br /&gt;
    */&lt;br /&gt;
    version.releaseCode = 'B';&lt;br /&gt;
    version.majorVersion = 01;&lt;br /&gt;
    version.minorVersion = 01;&lt;br /&gt;
    callbacks.appHealthCheck = NULL;&lt;br /&gt;
    callbacks.appTerminate = clCompAppTerminate;&lt;br /&gt;
    callbacks.appCSISet = clCompAppAMFCSISet;&lt;br /&gt;
    callbacks.appCSIRmv = clCompAppAMFCSIRemove;&lt;br /&gt;
    callbacks.appProtectionGroupTrack = NULL;&lt;br /&gt;
    callbacks.appProxiedComponentInstantiate = NULL;&lt;br /&gt;
    callbacks.appProxiedComponentCleanup = NULL;&lt;br /&gt;
    clEoMyEoIocPortGet(&amp;amp;iocPort);&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;Application Address 0x%x Port %x\n&amp;quot;,&lt;br /&gt;
                     clIocLocalAddressGet(), iocPort));&lt;br /&gt;
    rc = clCpmClientInitialize(&amp;amp;cpmHandle, &amp;amp;callbacks, &amp;amp;version);&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;After clCpmClientInitialize %d\t %x\n&amp;quot;, cpmHandle, rc));&lt;br /&gt;
#if HAS_EO_SERVICES&lt;br /&gt;
    idlClientInstall();&lt;br /&gt;
#endif&lt;br /&gt;
    /*&lt;br /&gt;
     Block and use the main thread if required other wise return &lt;br /&gt;
     */&lt;br /&gt;
    /*&lt;br /&gt;
     TODO: Application code should come here&lt;br /&gt;
     */&lt;br /&gt;
    clAppInitialize(cpmHandle);&lt;br /&gt;
    /*&lt;br /&gt;
     if main thread usage policy == CL_EO_USE_THREAD_FOR_APP return from this &lt;br /&gt;
     function only after app finishes&lt;br /&gt;
     */&lt;br /&gt;
    /*&lt;br /&gt;
     if main thread usage policy == CL_EO_USE_THREAD_FOR_RECV return from&lt;br /&gt;
     this function immediately after doing some application initialize stuff&lt;br /&gt;
     */&lt;br /&gt;
    rc = clCpmComponentNameGet(cpmHandle, &amp;amp;appName);&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;After clCpmComponentNameGet %d\t %s\n&amp;quot;, cpmHandle,&lt;br /&gt;
                     appName.value));&lt;br /&gt;
    rc = clCpmComponentRegister(cpmHandle, &amp;amp;appName, NULL);&lt;br /&gt;
    COMPA_DBG_PRINT((&amp;quot;After clCpmClientRegister %x\n&amp;quot;, rc));&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
ClRcT clCompAppFinalize()&lt;br /&gt;
{&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
ClRcT clCompAppStateChange(ClEoStateT eoState)&lt;br /&gt;
{&lt;br /&gt;
    /*&lt;br /&gt;
     Application state change &lt;br /&gt;
    */&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
ClRcT clCompAppHealthCheck(ClEoSchedFeedBackT *schFeedback)&lt;br /&gt;
{&lt;br /&gt;
    /*&lt;br /&gt;
     Modify following as per App requirement&lt;br /&gt;
    */&lt;br /&gt;
    schFeedback-&amp;gt;freq = CL_EO_BUSY_POLL;&lt;br /&gt;
    schFeedback-&amp;gt;status = CL_CPM_EO_ALIVE;&lt;br /&gt;
    return CL_OK;&lt;br /&gt;
}&lt;br /&gt;
ClEoConfigT clEoConfig = {&lt;br /&gt;
    COMP_EO_NAME,               /* EO Name */&lt;br /&gt;
    COMP_EO_THREAD_PRIORITY,    /* EO Thread Priority */&lt;br /&gt;
    COMP_EO_NUM_THREAD,         /* No of EO thread needed */&lt;br /&gt;
    COMP_IOC_PORT,              /* Required Ioc Port */&lt;br /&gt;
    COMP_EO_USER_CLIENT_ID,&lt;br /&gt;
    COMP_EO_USE_THREAD_MODEL,   /* Whether to use main thread for&lt;br /&gt;
                                   eo Recv or not */&lt;br /&gt;
    clCompAppInitialize,        /* Function CallBack to initialize &lt;br /&gt;
                                   the Application */&lt;br /&gt;
    clCompAppFinalize,          /* Function Callback to Terminate &lt;br /&gt;
                                   the Application */&lt;br /&gt;
    clCompAppStateChange,       /* Function Callback to change the&lt;br /&gt;
                                   Application state */&lt;br /&gt;
    clCompAppHealthCheck,       /* Function Callback to change the&lt;br /&gt;
                                   Application state */&lt;br /&gt;
};&lt;br /&gt;
/*&lt;br /&gt;
 You may force default libraries here by using CL_TRUE or CL_FALSE or use&lt;br /&gt;
 appropriate configuration generated by ClovisWorks in ./clCompAppMain.h The &lt;br /&gt;
 first 6 basic libraries are mandatory. &lt;br /&gt;
*/&lt;br /&gt;
ClUint8T clEoBasicLibs[] = {&lt;br /&gt;
    COMP_EO_BASICLIB_OSAL,      /* osal */&lt;br /&gt;
    COMP_EO_BASICLIB_TIMER,     /* timer */&lt;br /&gt;
    COMP_EO_BASICLIB_BUFFER,    /* buffer */&lt;br /&gt;
    COMP_EO_BASICLIB_IOC,       /* ioc */&lt;br /&gt;
    COMP_EO_BASICLIB_RMD,       /* rmd */&lt;br /&gt;
    COMP_EO_BASICLIB_EO,        /* eo */&lt;br /&gt;
    COMP_EO_BASICLIB_OM,        /* om */&lt;br /&gt;
    COMP_EO_BASICLIB_HAL,       /* hal */&lt;br /&gt;
    COMP_EO_BASICLIB_DBAL,      /* dbal */&lt;br /&gt;
};&lt;br /&gt;
ClUint8T clEoClientLibs[] = {&lt;br /&gt;
    COMP_EO_CLIENTLIB_COR,      /* cor */    &lt;br /&gt;
    COMP_EO_CLIENTLIB_CM,       /* cm */&lt;br /&gt;
    COMP_EO_CLIENTLIB_NAME,     /* name */&lt;br /&gt;
    COMP_EO_CLIENTLIB_LOG,      /* log */&lt;br /&gt;
    COMP_EO_CLIENTLIB_TRACE,    /* trace */&lt;br /&gt;
    COMP_EO_CLIENTLIB_DIAG,     /* diag */&lt;br /&gt;
    COMP_EO_CLIENTLIB_TXN,      /* txn */&lt;br /&gt;
    CL_FALSE,                   /* NA */&lt;br /&gt;
    COMP_EO_CLIENTLIB_PROV,     /* Prov */&lt;br /&gt;
    COMP_EO_CLIENTLIB_ALARM,    /* alarm */&lt;br /&gt;
    COMP_EO_CLIENTLIB_DEBUG,    /* debug */&lt;br /&gt;
    COMP_EO_CLIENTLIB_GMS       /* gms */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
                    #########&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Agnes</name></author>	</entry>

	</feed>