Skip to content
The client library for the persistence database
C M4 Other
Branch: master
Clone or download
martin-ejdestig and gunnarx Remove D-Bus policy configuration for org.genivi.persistence.admin
The policy file is never installed by Makefile and it is
persistence-common-object that takes the name so policy should probably be
in that repository. Remove from pcl for less confusion.

See GENIVI/persistence-common-object#8 for more details.

Signed-off-by: Martin Ejdestig <>
Latest commit 0cb972e Jul 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
include Check return value when registering to PAS, pclInitLibrary returns no… May 23, 2017
src Added test to verify restared crashed application is able to access d… Jun 1, 2017
ChangeLog Move from mulit-threaded to single-threaded dbus communication Nov 14, 2013
NEWS Initial version of persistence client library on sourceforge (rev. 1281) Aug 9, 2012
README README: Replace with symlink to Feb 13, 2017 Fix compilation with GCC 8 Aug 26, 2018 Removed itzam, and switched to commom library; Known issues: delete k… Apr 4, 2014

Persistence Client Library

Copyright and License

Copyright (C) 2016 Mentor Graphics. This software is licensed under the Mozilla Public License 2.0, see COPYING file for more details.

Project Scope

The persistence client library has been developed as a proof of concept (PoC) for GENIVI. It now serves as a reference implementation.


The client library has the following dependencies

Building the PCL

The Persistence Client Lib component uses automake to build the library. Execute the following steps in order to build the component

  • autoreconf –vi
  • configure, with the following options
    • --enable-tests to enable the build of the tests
    • --enable-tools to enable the build of the tools
    • --enable-pasinterface enable the PAS interface (disabled by default)
    • --enable-appcheck, performs an application check if the using application is a valid/trusted one.
  • make

Testing and Debugging


The test framework “check” has been used to write unit tests which will be run automatically when the test binary is started. At the end a test report will be printed to the console showing first a summary about number of tests that have been executed and how many tests have been passed or failed. After the summary a test report will be generated showing the status of each test. When a bug will be fixed a test will be written to verify the problem has been solved. DTL (Diagnostic, Log and Trace) will be used by the PCL to send status and error. For details about DLT, please refer to the GENIVI DLT p roject page (

Persistence Common Object

The Persistence Common Object ( is the default plugin to read/write persistent data managed by the key-value API.

Attention: The Persistence Common Object must be added to the plugin configuration file with the appropriate path to the library

Example: “default /usr/local/lib/ init sync”

Running tests:

There are unit tests available for the persistency client library component available. The unit tests are used to verify that the component is working correctly and exclude any regressions. Please refer always to the source codeto see the available tests


Application verification

To check if an application is valid/trusted and allowed to access persistent data an application check functionality can be enabled (configure step --enable-appcheck, see section 6 “How to build”). If an application is not valid/trusted every API call to the key-value or file API returns the error EPERS_SHUTDOWN_NO_TRUSTED will be returned. A trusted/valid application has a corresponding resource configuration table installed by the Persistence Administration Service under /Data/mnt-c or /Data/mnt-wt.

Data location and partitions

Persistence expects its data under the two folders /Data/mnt-c and /Data/mnt-wt. It is requested to have one persistence partition which will be mounted to the two folders stated above (one partition will be mounted to two different mointpoints).

Example: sudo mount -t fsType /dev/sdx /Data/mnt-wt sudo mount -t fsType /dev/sdx /Data/mnt-c

Run tests:

run persistency unit test "./persistence_client_library_test"

Expected test result:

The expected result is to have 0 failures and 0 errors, see example output below:

./persistence_client_library_test Running suite(s): Persistency client library 100%: Checks: 13, Failures: 0, Errors: 0 persistence_client_library_test.c:141:P:GetData:test_GetData:0: Passed persistence_client_library_test.c:357:P:SetData:test_SetData:0: Passed persistence_client_library_test.c:400:P:SetDataNoPRCT:test_SetDataNoPRCT:0: Passed persistence_client_library_test.c:434:P:GetDataSize:test_GetDataSize:0: Passed persistence_client_library_test.c:478:P:DeleteData:test_DeleteData:0: Passed persistence_client_library_test.c:236:P:GetDataHandle:test_GetDataHandle:0: Passed persistence_client_library_test.c:652:P:DataHandle:test_DataHandle:0: Passed persistence_client_library_test.c:727:P:DataHandleOpen:test_DataHandleOpen:0: Passed persistence_client_library_test.c:578:P:DataFile:test_DataFile:0: Passed persistence_client_library_test.c:604:P:DataFileRecovery:test_DataFileRecovery:0: Passed persistence_client_library_test.c:794:P:Cursor:test_Cursor:0: Passed persistence_client_library_test.c:864:P:ReadDefault:test_ReadDefault:0: Passed persistence_client_library_test.c:886:P:ReadConfDefault:test_ReadConfDefault:0: Passed

The output above may vary as the test cases will be adopted or extended.

Project page

Mailing List

Subscribe to the mailing list here:

Bug reporting

View or Report bugs here:


For details about the Persistence Client Library, please refer to to following documents:

  • Persistence Client Library Architecture Documentation: see docs sufolder: Persistence_ArchitectureManual.pdf

  • Persistence Client Library User Manual: see docs subfolder: Persistence_ClientLibrary_UserGuide.pdf

How to create doxygen documentation

The doxygen package must be installed. Run "doxygen doc/pcl_doxyfile" and the html documentation will be generated in the doc folder.

You can’t perform that action at this time.