# Appendix A: eXtremeDB for VxWorks 653

> ## Introduction

> A VxWorks 653 module is the system controlled by one RTOS, and that RTOS is the core OS of VxWorks 653.

> Within a module, VxWorks 653 supports complete separation between applications as well as between the applications and the module's core OS. As a result, applications can interact with each other only through explicit mechanisms that the core OS controls. Applications cannot affect the operation of the module except in a controlled manner through resources that the core OS explicitly allocates to them.

> Each application runs in a discrete partition. The core OS controls the partitions by providing time and space partitioning and memory management services. Partitions manage their own resources within the time slot that the core OS provides. Performance is optimized by keeping as many routine calls as possible within the partition. Partitions run in user mode. The core OS runs in supervisor mode.

> Each partition contains a partition-level OS (the partition OS) with a set of OS services. VxWorks 653 provides the vThreads partition OS and COIL (a partition OS independent of vThreads). For vThreads partitions, VxWorks 653 supports the POSIX and APEX interfaces.

> The eXtremeDB run time libraries have been developed to run over the vThreads partition OS.

> VxWorks 653 design intended to separate application and isolate them. According to this idea eXtremeDB does not support shared databases despite the known ability of the OS to create shared memory regions.

> ## eXtreme DB runtime libraries

> The eXtremeDB run time is built for VxWorks 653 as a set of static `.a` libraries. Applications link with the appropriate libraries. The following static libraries are available at this time for the VxWorks 653 platform. Both release (certified) and debug versions are available.

> ### Core runtime libraries

> `libmcolib.a`

> ### Memory Manager libraries

> `libmcovtmem.a` – For “all-in memory” databases virtual table manager

> ### Transaction Manager libraries

> Three transaction manager libraries are available – `MURSIW` (Multiple Readers, Single Writers),`MVCC` (Multi Version Concurrency Control) and `EXCL` (Exclusive lock) – implemented in the following libraries:

> > `libmcotmursiw.a` – for `MURSIW`

> > `libmcotmvcc.a` – for `MVCC`

> > `libmcotexcl.a` – for `EXCL`

> ### Memory devices libraries

> `libmcomconv.a` – for conventional memory device

> ### Synchronization Support libraries

> `libmcosvxn653.a` – for conventional memory application (platform specific)

> ### Utilities libraries

> `libmcounrt.a`

> ### Serialization libraries

> `libmcoseri.a` – for backup/store for all-in-memory applications

> ### SQL support libraries

> > `libmcosql.a` – SQL core (a C++ library)

> ### eXtremeSQL remote access libraries

> `libmcorsql.a` – Remote SQL core (a C++ library)

The pre-built libraries are supplied with the package. They can be found under the following folders;

> > …`/target/bin/PPC85xx` – release (or CERT) version of libraries for PowerPC 85xx

> > …`/target/bin/PPC85xx-Debug` – debug version of libraries for PowerPC 85x

> > …`/target/bin/SIMNT` – release version of libraries for simulator

> > …`/target/bin/SIMNT-Debug` – debug version of libraries for simulator

> Note that:

> > i) In ARINC architectures, applications are fully partitioned in space and time and the only way to communicate between them and the OS kernel is through the APEX interface. Nothing is supposed to be shared, and hence there is no mechanism to synchronize access to shared regions from multiple partitions. Hence, eXtremeDB for VxWorks 653 does not provide support for the shared memory storage.

> > ii) As CERT version does not support floating point and C++ run time libraries, the source codes are modified to exclude floating point and C++ run time libraries.

> ### eXtremeSQL Cluster libraries

> > `libmcocluster.a` – cluster core

> > `linmcoltcp.a` – `TCP/IP` transport

> The pre-built libraries are supplied with the package to facilitate cluster application development. They can be found under the following folders;

> > …`/target/bin/PPC603` – release (or CERT) version of libraries for PowerPC 603

> > …`/target/bin/PPC603-Debug` – debug version of libraries for PowerPC 603

> > …`/target/bin/SIMNT` – release version of libraries for simulator

> > …`/target/bin/SIMNT-Debug` – debug version of libraries for simulator

> ##

> ## RTL (run time library) Build Procedure

> All run-time libraries are built using the Workbench 3.2 IDE. No special configuration or special tools installation are required. One can start building run-time libraries after the standard installation of the IDE.

> In a new VxWorks 653 environment, for the first time project build, the user needs to create projects by importing existing projects supplied in the package. For successive builds, when the Workbench IDE is opened, all the projects will be shown in Project Explorer.

> To import an existing run-time library project, perform the following steps:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the project and Click Finish.

> > The project appears in the project explorer.

> The makefile takes care of all the required settings. No special settings and configuration are needed in Workbench. By default, the `header.mak` file (under …/include folder in the package) has been set to build libraries for CPU target PPC85xx. If the user wants to build simulator version of libraries, the following change is required to be made in the `header.mak` file (uncommenting `CPU=SIMNT` statement and comment out `CPU=PPC85XX` statement).

> > `CPU = SIMNT`

> > `#CPU = PPC85XX`

> For cluster library development `CPU = PPC603` can be specified in the `header.mak` file

> Below is an example of a run-time library makefile:

>         # Makefile
>         # OS   : VxWorks653
>         # Tool : gcc or native complier
>         #
>         # Copyright (c) 2001-2009 McObject LLC.
>         #
>         #
>         # General definitions
>         ifndef MCO_ROOT
>         MCO_ROOT = ../..
>         endif
>         ifeq ($(TGT_DIR),)
>         TGT_DIR = $(WIND_BASE)/target
>         endif
>         MCO_TITLE       := mco-libraries
>         MCO_SIDE         = TARGET
>         SRC              = mcoseq.c mcortmt.c mcortst.c \
>         mcocont.c mcopage.c mcorec.c \
>         mcocobj.c \
>         mcodb.c mcodict.c mcoddl.c \
>         mcoconn.c \
>         mcoindex.c mcobtree.c mcokdtree.c mcohash.c mcoorder.c \
>         mcoobj.c mcodup.c mcoblob.c mcocmpkt.c \
>         mcoabst.c \
>         mcowimp.c mcowobj.c mcowblob.c mcowrap.c mcowfnd.c mcowarr.c mcowvec.c mcowoid.c \
>         mcocsr.c \
>         mcotrans.c mcoautoid.c mcohaabst.c mcologabst.c mcopsrch.c \
>         mcowev.c mcoevasy.c mcoevsyn.c \
>         mcoxml.c mcoxmlsc.c mcoxnumb.c mcoxpars.c mcoxser.c mcoxml0.c mcopmbuf.c mcomd.c \
>         mcortree_core.c mcortreeu.c mcoptree.c mcoperf.c mcoperfabst.c
>         # Common definitions and rules
>         include $(MCO_ROOT)/include/header.mak
>         include $(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE)
>         MCO_INCLUDE += -I$(MCO_LIB_SRC)
>         # top-level target
>         all: core core_debug
>         @if $(TEST_FILE) Makefile ; then $(MAKE) -f Makefile; fi

>         # basic rt targets
>         core: .make_obj_dir $(OBJ) $(OBJ_L)
>         @echo Output file: libmcolib$(MCO_BUILDRT_SFX)$(MCO_CFG_SUFFIX_A)
>         $(QUIET_PREFIX)$(AR) $(ARFLAGS) $(MCO_BIN)/libmcolib$(MCO_CFG_SUFFIX_A) $(OBJ) $(QUIET_SUFFIX)
>         # cleanup targets
>         clean:
>         @$(MAKE) .remove_obj_dir
>         @$(MAKE) .remove_obj_dir MCO_BUILD_RT_DEBUG=on
>         @if $(TEST_FILE) Makefile ; then $(MAKE) -f Makefile clean; fi
>         distclean: clean
>         @echo Removing runtime target libraries...
>         @$(RMFILE) $(MCO_BIN)/libmcolib*$(MCO_CFG_SUFFIX_A)
>         @if $(TEST_FILE) Makefile ; then $(MAKE) -f Makefile distclean; fi
>         @echo Cleanup complete
>         core_debug:
>         @$(MAKE) core MCO_BUILD_RT_DEBUG=on

> ## VxWorks 653 Platform Specifics

> As mentioned earlier, the following run-time library is very specific to the VxWorks 653 platform:

> > libmcosvxn653.a: – This library is built from source file mcosvxn653.c which implements synchronization primitives using native vThreads binary semaphores and can only be used from a single application partition.

> ##

> ## Applications Build Procedure

> A VxWorks 653 application partition includes the appropriate run time libraries. The application project is created using the “VxWorks 653 Application Project” option of the Workbench or by importing supplied sample projects. The user will need to create the appropriate config record with the XML configuration file and include that XML file into the application project. (This document assumes that the reader is familiar with how to create an application project for VxWorks 653 partition.)

> The specific configuration to use eXtremeDB runtime libraries requires the following:

> > The application will include “PartitionOS_ppc85xx_cert-stub.o“ or “PartitionOS_ppc85xx_debug-stub.o” or “PartitionOS_simnt-stub.o – the symbols for the partition OS using the Libraries tab in the build properties dialog box. The appropriate version depends on whether a certified PPC or debug PPC or simulator platform build is intended.

> > Set `-D_VXWORKS=653` as defined through the build macro tab of the build properties dialog box

> > Edit `LIB` under the build macro tab of the build properties dialog box to include the appropriate run time libraries

> The application project can be created by using import project scheme from an existing project supplied as part of the package.

> A simple VxWorks application using a conventional mode in-memory-only database would have the following libraries as LIBs :

>         libmcolib.a libmcovtmem.a libmcoseri.a libmcosvxn653,a libmcomconv.a libmcotmursiw.a libmcolib.a libmcouwrt.a

> The example above uses the `MURSIW` transaction manager (TM). To link instead with the `MVCC` TM use the following LIB list :

>         libmcolib.a libmcovtmem.a libmcoseri.a libmcosvxn653.a libmcomconv.a libmcotmvcc.a libmcolib.a libmcouwrt.a

> For ease of reference, the following list indicates which libraries have interdependencies and how to specify them in the `LIB` list:

>         libmcolib.a libmcotmursiw.a libmcolib.a ... libmcolib.a ... libmcotmvcc.a libmcolib.a ...
>         libmcolib.a ... libmcotexcl.a libmcolib.a ... ... libmcosql.a libmcorsql.a ... ..

> # Modifying and Building Sample Apps

> The following sample applications are modified and built for VxWorks 653. The entire procedure for building these applications is described next:

> > `08-benchmarks-perf`

> > `api-sql-01-c-api-access`

> Before building any of the samples, the user need to build the Core OS, Partition OS and configRecord using the following build procedures.

> ## Building the configRecord

> The configRecord can be built from an existing project or from scratch. Build options are supported for PPC85xx cert, PPC85xx debug and simulator platform.

> To create the configRecord project by importing an existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the configRecord project (../target/configRecord) and Click Finish.

> > The project appears in the project explorer.

> To build PPC85xx cert version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu.cert

> To build PPC85xx debug version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu.debug

> To build simulator version, right click on the project name and then select Build Options > Set Active Build Spec… > SIMNTgnu.debug

> Build the Configuration Record project on its own by right-clicking on the project name and selecting Rebuild Project.

> ## Building the Core OS

> The Core OS can be built from an existing project or from scratch. The package only supplies project to build CoreOS for the simulator version. The user needs to create its own projects to build CoreOS for PPC85xx certified and debug versions.

> To create the CoreOS project by importing an existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the CoreOS project (../target/CoreOS) and Click Finish.

> > The project appears in the Project Explorer.

> To create the CoreOS project from scratch:

> > Create directory “CoreOS” under ../target folder

> > In Workbench, select File > New > Project.

> > In the dialog box that opens, expand the VxWorks 653 node, select VxWorks 653 Module Operating System Project, and click Next.

> > In the dialog that opens choose the radio button Create project at external location. To set the Directory field, click Browse and navigate to the CoreOS directory under `../target` folder.

> > In the same dialog box, assign the project a name “CoreOS” and click Next.

> > In the next dialog box, choose board support package (BSP) wrSbc8560 and a build spec PPC85XXgnu.cert or PPC85XXgnu.debug depending on whether the CERT or debug version of module operating system is required for PPC85XX platform target.

> > In the same dialog box, choose the radio button Use XML module file and browse to wrSbc8560_default.xml under …`/target/configRecord` folder

> > Click Next

> > The Indexer dialog box opens. Click Finish.

> Build the MOS project on its own by right-clicking on the project name and selecting Build Project.

> ## Building the Partition OS

> The Partition OS can be built from an existing project supplied in the package. The package supplies partition OS project for PPC85XX CERT and debug and also for simulator target platforms.

> To create the PartitionOS project by importing an existing project:

> For PPC85xx CERT:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the Partition OS project for PPC85XX cert (../target/PartitionOS_ppc85xx_cert) and Click Finish.

> For PPC85xx debug:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the Partition OS project for PPC85XX debug (../target/PartitionOS_ppc85xx_debug) and Click Finish.

> > The project appears in the project explorer.

> For simulator:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the Partition OS project for simulator (../target/PartitionOS_simnt) and Click Finish.

> Build the POS project on its own by right-clicking on the project name and selecting Build Project.

> ## Building and Running 08-benchmarks-perf sample

> The benchmark sample can be built from an existing project or from scratch. The package provides projects to build PPC85xx cert, PPC85xx debug and simulator version.

> Before building this application, the following tasks need to be done

> > - Replace `simpc_part1` with`08-benchmarks-perf` in `simpc_default.xml` file (located under `…/target/configRecord)` and re-build config record if simulator version of application is desired

> > - Replace `wrSbc8560_part1` with `08-benchmarks-perf` in `wrSbc8560_default.xml` file (located under …/target/configRecord) and re-build config record if PPC85xx version of application is desired

> To create the sample `08-benchmarks-perf` project by importing the existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the `08-benchmarks-perf` project (../samples/08-benchmarks-perf) and Click Finish.

> > The project appears in the project explorer.

> > Open the Build Properties dialog box by right-clicking on the project name and selecting Properties. Go to Build Macros tab and change BLACKBOX for `PPC85XXgnu.cert` and `PPC85XXgnu.debug` from `wrSbc8560_part1` to `08-benchmarks-perf`, and for simulator from `simpc_part1` to `08-benchmarks-perf`.

> The next step is to select the appropriate build option.

> To build PPC85xx cert version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu and unselect Build Options > Set Active Build Spec… > Debug Mode

> To build PPC85xx debug version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu.debug and also select Build Options > Set Active Build Spec… > Debug Mode

> To build simulator version, right click on the project name and then select Build Options > Set Active Build Spec… > SIMNTgnu and also select Build Options > Set Active Build Spec… > Debug Mode

> Build the 08-benchmarks-perf project on its own by right-clicking on the project name and selecting Rebuild Project

> The last step is to build an integration project before the sample application can be run. A VxWorks 653 Integration project is a super-project that integrates all of the projects that make up a VxWorks 653 module. In practice, this minimally includes:

> > a Configuration Record project

> > a Module OS project

> > a Partition OS project

> > at least one Application project

> The procedures are described for both the simulator and PPC85xx CERT target. The steps for building integration project for all platforms are similar with certain differences as mentioned.

> Create a directory named `sample_integration` under folder ../samples and copy files `wrSbc8560.xml, wrSbc8560_default.xml. simpc.xml` and `simpc_default.xml` from the `../target/configRecord` folder to the `../samples/sample_integration` folder

> > In Workbench, select File > New > Project.

> > In the dialog box that opens, expand the VxWorks 653 node, select VxWorks 653 Integration Project, and click Next.

> > In the next dialog that opens choose the radio button Create project at external location. To set the Directory field, click Browse and navigate to the sample_integration directory under the`../samples` folder.

> > In the same dialog box, assign the project a name “`sample_integration`” and click Next.

> > In the next dialog box, choose a board support package (BSP) and build spec. The selection is based on the target platform.

> > > 1. Uncheckout “Create from CPUand XML module file(s)”

> > > 2. Next select BSP and build spec

> > > > a. Choose BSP as “wrSbc8650” and Build spec as “PPC85XXgnu.cert” if the user wants to build and test application for PPC85xx platform with CERT version

> > > > b. Choose BSP as “wrSbc8650” and Build spec as “PPC85XXgnu.debug” if the user wants to build and test application for PPC85xx platform with debug version

> > > > c. Choose BSP as “simpc” and Build spec as “SIMNTgnu.debug” if the user wants to build and test application for simulator platform. Note that only debug mode is supported by Wind River for simulator target. No CERT version is available for simulator.

> > > 3. Select the Create from CPU and XML module file(s) checkbox

> > > 4. In the CPU field, specify the CPU type either PPC85XX or SIMNT depending on the target platform.

> > > 5. Next to the XML module file(s) field, click Add. In the browser window that opens, navigate to the XML file(s) `wrSbc8560_default.xml` if target is PPC85xx or`simpc_default.xml` if target is Simulator under folder `../target/configRecord` and click OK.

> > > 6. Click Next.

> > > 7. The Partition Setup dialog box opens. In this dialog box, use the Set buttons to specify the module OS, the partition OS, the configuration record, and the Add button to specify the application partition.

> > > 8. Click on Set button under configuration record. In the dialog box (“Specify Configuration Record”) that opens, select radio button “Use an existing image Path”. Click on “Browse” button and navigate to the folder `…/target/configRecord`”and file configRecord.reloc. Then click on OK button in the dialog box “Specify Configuration Record”. It assumes that user has already built appropriate version of config record.

> > > 9. Next Click on Set button under Module operating system . In the dialog box (“Specify Module operating system”) that opens, select radio button “Use an existing image Path”. Click on “Browse” button and navigate to the folder `…/target/CoreOS/<build spec>`”and file CoreOS.sm. Then click on OK button in the dialog box “Specify Module operating system”. It assumes that user has already built appropriate version of module operating system.

> > > 10. Next Click on Set button under Partition operating system. In the dialog box (“Specify Partition operating system”) that opens, select radio button “Use an existing image Path”. Click on “Browse” button and navigate to the folder

> > > > a. …`/target/PartitionOS_ppc85xx_cert`”and file `PartitionOS_ppc85xx_cert.sm` if target is PPC85xx and certified version. Then click on OK button in the dialog box “Specify Partition operating system”.

> > > > b. …`/target/PartitionOS_ppc85xx_debug`”and file`PartitionOS_ppc85xx_debug.sm` if target is PPC85xx and debug version. Then click on OK button in the dialog box “Specify Partition operating system”.

> > > > c. …`/target/PartitionOS_simnt`”and file `PartitionOS_simnt.sm` if target is simulator. Then click on OK button in the dialog box “Specify Partition operating system”.

> > > 11. Next Click on Add button under Partitions. In the dialog box (“Specify Partition”) that opens, select radio button “Use an existing image Path”. Click on “Browse” button and navigate to the folder

> > > > a. `…/target/samples/08-benchmarks-perf/PPC85XXgnu/08-benchmarks-perf/NonDebug`”and file `08-benchmarks-perf.sm` if target is PPC85xx and certified version. Then click on OK button in the dialog box “Specify Partition”.

> > > > b. `…/target/samples/08-benchmarks-perf/PPC85XXgnu.debug/08-benchmarks-perf/Debug`”and file `08-benchmarks-perf.sm` if target is PPC85xx and debug version. Then click on OK button in the dialog box “Specify Partition”.

> > > > c. `…/target/samples/08-benchmarks-perf/SIMNTgnu/08-benchmarks-perf/Debug`”and file `08-benchmarks-perf.sm` if target is PPC85xx and certified version. Then click on OK button in the dialog box “`Specify Partition`”.

> > > 12. Click Next. The Indexer dialog box opens.

> > > 13. Click Finish. Workbench creates the Integration project and displays it in the Project Explorer

> > Build the project by right-clicking on the Integration Project name in the Project Explorer and choosing Rebuild Project.

> Now to run the sample, boot your target using the new image, as described below.

> You can run your system image in the simulator or in the real target through the Workbench. For all of the steps within the Workbench make sure that the Workbench Advanced Device Development perspective is displayed. The title bar shows the current perspective in the upper left of the Workbench window. To choose the Advanced Device

> Development perspective, select Window > Open Perspective > Advanced Device Development.

> Now to run the sample in the simulator:

> > Open Workbench.

> > Select Target > New Connection. The New Connection Wizard appears.

> > Select the Simulator Connection. The wizard prompts you for a boot file name.

> > Select Custom Simulator and enter the path to the boot.txt file ../samples/sample_integration

> > Complete the wizard by clicking Next and in the last wizard page click Finish. Workbench will launch your module and connect to the simulator.

> ## Building and running the api-sql-01-c-api-access sample

> Before building this application, the following tasks need to be done

> > - Replace `simpc_part1` with `api-sql-01-c-api-access` in `simpc_default.xml` file (located under `…/target/configRecord`) and re-build config record if simulator version of application is desired

> > - Replace `wrSbc8560_part1` with `api-sql-01-c-api-access` in `wrSbc8560_default.xml` file (located under `…/target/configRecord`) and re-build config record if PPC85xx version of application is desired

> To create the sample `api-sql-01-c-api-access` project by importing the existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the `api-sql-01-c-api-access` project (`../samples/ api-sql-01-c-api-access`) and Click Finish.

> > The project appears in the project explorer.

> > Open the Build Properties dialog box by right-clicking on the project name and selecting Properties. Go to Build Macros tab and change BLACKBOX for `PPC85XXgnu.cert` and `PPC85XXgnu.debug` from `wrSbc8560_part1` to `api-sql-01-c-api-access`, and for simulator from simpc_part1 to `api-sql-01-c-api-access`.

> The next step is to select the appropriate build option.

> To build PPC85xx cert version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu and unselect Build Options > Set Active Build Spec… > Debug Mode

> To build PPC85xx debug version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC85XXgnu.debug and also select Build Options > Set Active Build Spec… > Debug Mode

> To build simulator version, right click on the project name and then select Build Options > Set Active Build Spec… > SIMNTgnu and also select Build Options > Set Active Build Spec… > Debug Mode

> Build the `api-sql-01-c-api-access` project on its own by right-clicking on the project name and selecting Rebuild Project

> The next step is to build an integration project and run the sample, which are discussed in the previous example.

> To create a sample project by from scratch:

> > In Workbench, select File > New > Project.

> > In the dialog box that opens, expand the VxWorks 653 node, select VxWorks 653 Application Project, and click Next.

> > In the next dialog that opens choose the radio button Create project at external location.

> > To set the Directory field, click Browse and sample project directory under the `../samples` folder.

> > In the same dialog box, assign the project a name and click Next.

> > In the next dialog box, choose board support package (BSP) and a build spec.

> > In the same dialog box, choose the radio button Use XML module file and browse to appropriate xml file under the `../target/configRecord` folder. Provide the application name

> > Click Next

> > The Indexer dialog box opens. Click Finish.

> > The Project Explorer now shows the application project

> > Open file `usrAppInit.c` and add

> > >         extern int sample_main();

> > > and

> > > `sample_main();` inside the function `void usrAppInit()`

> > Right-click on the project and select Build Options > Generate Include Search Path…

> > In the dialog box that opens, un-check all check boxes and click Next

> > In the next dialog box click Add and browse to `…/samples/common` and click OK

> > In the same dialog box click Add again and browse to `…/samples/commoncore` and click OK

> > In the same dialog box click Add again and browse to`…/include` and click OK

> > Click Next

> > Click Finish in the next dialog box

> > Right-click on the project and select Build Options > Set Active Build Spec… and depending on release or debug version and target platform of the build select appropriate option.

> > In the Project Explorer, expand the Application project and then expand the Build Targets entry. You should then see a .pm and a .sm entry.

> > Right-click the .pm entry and select Properties. The Build Properties dialog appears.

> > Click the Libraries tab and then click Add. The Add library to selected build spec dialog appears.

> > Select the Add full qualified library file button, fill in the path to the partition -stubs file and click OK.

> > Click the Libraries tab and set `DEFINES` to -D_VXWORKS=653

> > Click on LIB and then on Edit…

> > In the Edit Build Macro dialog box, specify all the relevant eXtremeDB run-time libraries options as mentioned in section “Application Build Procedure”

> > Click OK to close the Build Properties dialog.

> ## Build Procedure for Cluster application development

> The specific configuration to use eXtremeDB runtime libraries for cluster application development requires the following.

> The application will include `PartitionOS_ppc603_cert-stub.o` or `PartitionOS_ppc603_debug-stub.o` or `PartitionOS_simnt-stub.o` – the symbols for the partition OS using the Libraries tab in the build properties dialog box. The appropriate version depends on whether a certified PPC603 or debug PPC 603 or simulator platform build is intended.

> > Edit `LIB` under the build macro tab of the build properties dialog box to include the appropriate run time libraries

> The application project can be created by using import project scheme from an existing project supplied as part of the package.

> A cluster VxWorks 653 application using a conventional mode in-memory-only database would have the following libraries as LIBs :

>         libmcocluster.a libmcocltcp.a libmcoseri.a libmcolib.a libmcovtmem.a
>         libmconet.a libmcomem.a libmcosvxn653.a libmcomconv.a
>         libmcotmvcc.a libmcouwrt.a

> ## Modifying and Building Sample Applications

> The following sample applications are modified and built for VxWorks 653 cluster applications. The entire procedure for building these applications is described next:

> > `cluster_open`

> > `cluster_perf`

> Prior to building any of the samples, it is necessary to build the Core OS, Partition OS and the `configRecord` using the build procedures described earlier in this document (see the "Building the Partition OS" section).

> ## Important note regarding using network facilities with VxWorks 653

> In VxWorks 653, the network stack (development or DO-178B Cert stack) executes in the core OS and there is no API integrated with WindRiver distributions for partitions to access the core OS-based stack. Therefore eXtremeDB Cluster (or eXtremeDB High Availability) distributions don’t provide bindings of its network protocols (Cluster or HA) with the actual network stack. That said, there are two possible solutions:

> > 1. Socket Wrapper / IO Driver. WindRiver Professional Services has developed and delivered this for a number of customers. The delivery consists of a Socket API wrapper in each partition, which translates the socket calls (socket, bind, listen, recv, send, etc.,) to the underlying I/O Driver calls. The I/O Driver is a part of the coreOS and makes the real socket call (via open, close, and ioctl entry points) and returns the results to the partition.

> > 2. ARINC 653 Ports. if the application must be ARINC 653 compliant, then the network stack can be called via the ARINC 653 Ports (Queuing / Sampling Ports). This is accomplished via a Pseudo Port Driver integrated with the coreOS. An example of this exists in the IOLab example .The IOLab can be found on the Online Support site under Downloads -> Patches & Downloads, then selecting vxWorks653 as the product, 2.3 or 2.4 as the version, and Sample Code as the “type”.

> ## Building the “cluster_open” sample

> The `cluster_open` sample can be built from an existing project. The package provides projects to build PPC603 cert, PPC603 debug and simulator version.

> Before building this application, the following tasks need to be done

> > - Replace `simpc_part1` with `cluster_open` in `simpc_default.xml` file (located under `…/target/configRecord`) and re-build config record if simulator version of application is desired

> > - Replace `wrSbc834x_part1` with `cluster_open` in `wrSbc834x_default.xml` file (located under `…/target/configRecord`) and re-build config record if PPC603 version of application is desired

> To create the sample `cluster_open` project by importing the existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the `cluster_open` project (`../samples/cluster_open`) and Click Finish.

> > The project appears in the project explorer.

> > Open the Build Properties dialog box by right-clicking on the project name and selecting Properties. Go to Build Macros tab and change BLACKBOX for PPC603 and PPC603.debug from `wrSbc834x_part1` to `cluster_open`, and for simulator from `simpc_part1` to `cluster_open`.

> The next step is to select the appropriate build option.

> To build PPC603 cert version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC603gnu and unselect Build Options > Set Active Build Spec… > Debug Mode

> To build PPC603 debug version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC603gnu.debug and also select Build Options > Set Active Build Spec… > Debug Mode

> To build simulator version, right click on the project name and then select Build Options > Set Active Build Spec… > SIMNTgnu and also select Build Options > Set Active Build Spec… > Debug Mode

> Build the `cluster_open` project on its own by right-clicking on the project name and selecting Rebuild Project.

> ## Building the “cluster_perf” sample

> Before building this application, the following tasks need to be done

> > - Replace`simpc_part1` with`cluster_perf` in `simpc_default.xml` file (located under `…/target/configRecord`) and re-build config record if simulator version of application is desired

> > - Replace `wrSbc834x_part1` with `cluster_perf` in `wrSbc834x_default.xml` file (located under `…/target/configRecord`) and re-build config record if PPC603 version of application is desired

> To create the sample `cluster_perf` project by importing the existing project:

> > In Workbench, select File > Import

> > In the dialog box that opens select Existing Projects into workspace and click Next.

> > In the next dialog box, browse to the root directory of the `cluster_perf` project (`../samples/cluster_perf`) and Click Finish.

> > The project appears in the project explorer.

> > Open the Build dialog box by right-clicking on the project name and selecting Properties. Go to Build Macros tab and change BLACKBOX for PPC603 and PPC603.debug from `wrSbc834x_part1` to `cluster_perf`, and for simulator from `simpc_part1` to `cluster_perf`.

> The next step is to select the appropriate build option.

> To build PPC603 cert version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC603gnu and unselect Build Options > Set Active Build Spec… > Debug Mode

> To build PPC603 debug version, right click on the project name and then select Build Options > Set Active Build Spec… > PPC603gnu.debug and also select Build Options > Set Active Build Spec… > Debug Mode

> To build simulator version, right click on the project name and then select Build Options > Set Active Build Spec… > SIMNTgnu and also select Build Options > Set Active Build Spec… > Debug Mode

> Build the `cluster_perf` project on its own by right-clicking on the project name and selecting Rebuild Project