High Performance OPC UA Server SDK  1.4.0.256
Platform Module

The platform layer module is the basis for all other code.

If you want to port the SDK to a new operating system you need to implement a new platform backend.

Currently Available Backends:

Name Description
Linux This works on all kind of Linux platforms. It automatically adapts to the system endianness and was tested with x86, x86_64, ARM and PPC. It compiles with GCC and Clang.
Windows This works on PC based Windows x86/x86_64 systems and makes use of Win32 API calls. It was tested with varisous MS Visual Studio versions and MinGW.

Further platforms will be added in future versions.

Platform Functionalities

The following table gives an overview about the different platform functionalities. Each functionality is implemented in a separate file. Platform functions are grouped by functionality and placed in separate files. This makes it easy to find the functions and to exclude optional functionality by omitting optional files during the build process.

File Description Optional / Mandatory
pplatform.h Global defines like endianness configuration and compiler configurations. Mandatory
pplatform.c Global platform init and cleanup functions and a panic printf. Mandatory
pmemory.[c,h] Generic memory function mappings. Only needed at startup to allocate memory which is then managed by the SDK memory pools. Mandatory
pipcmem.[c,h] IPC memory functions. Provides a shared memory block for IPC communication. Must be shared in multi-process mode. Can be private and single-process mode. Mandatory
ptime.[c,h] Provides a time and tickcount functionality. Mandatory
pguid.[c,h] Provides a GUID generation implementation. Mandatory
pshutdown.[c,h] Provides functionality to trigger shutdown or configuration reloads. Mandatory
psemaphore.[c,h] Provides a semaphore implementation used for IPC queues. Mandatory
pmutex.[c,h] Provides a implementation of global mutexes which are used to synchronize data access of multiple processes. Optional, Only for multi-process mode
pprocess.[c,h] Provides an implementation to start and stop child processes. Optional, Only for multi-process mode
psandbox.[c,h] Provides an implementation to enter Linux Secure Computing Mode or comparable mechanisms. Optional
pfile.[c,h] Provides an implementation for file IO. This is used by the settings file parser. Optional
phostname.[c,h] Provides access to the system's hostname. This is used for automatic certificate generation and for substituting "[hostname]" placeholders in the settings file. Optional

The folder platform/template contains all necessary stubs for implementing a new platform backend. Each function contains a doxygen comment which describes the function and its parameters. If something is unclear its best to have a look at the existing platform layer implementations.

For more details on porting the SDK please read the SDK Porting Guide.