[LTP] [PATCH 2/2] doc: Convert more C API info

Petr Vorel pvorel@suse.cz
Thu May 16 13:20:16 CEST 2024


Convert more C API info (both library and user).

These info were omitted when converted from GitHub asciidoc wiki format.

Fixes: 4a72aada8 ("New LTP documentation")
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 doc/developers/api_c_tests.rst |  7 +++++
 doc/developers/ltp_library.rst | 47 ++++++++++++++++++++++++++++++++--
 2 files changed, 52 insertions(+), 2 deletions(-)

diff --git a/doc/developers/api_c_tests.rst b/doc/developers/api_c_tests.rst
index ec53ab33c..c7e1a5997 100644
--- a/doc/developers/api_c_tests.rst
+++ b/doc/developers/api_c_tests.rst
@@ -12,6 +12,13 @@ Core LTP API
 .. kernel-doc:: ../../include/tst_res_flags.h
 .. kernel-doc:: ../../include/tst_test.h
 
+LAPI headers
+------------
+
+Use our LAPI headers (``include "lapi/foo.h"``) to keep compatibility with old
+distributions. LAPI header should always include original header. For more info
+see :doc:`../developers/ltp_library`.
+
 Option parsing
 --------------
 
diff --git a/doc/developers/ltp_library.rst b/doc/developers/ltp_library.rst
index 723781feb..15dde8e7b 100644
--- a/doc/developers/ltp_library.rst
+++ b/doc/developers/ltp_library.rst
@@ -9,8 +9,51 @@ General Rules
 When we extend library API, we need to apply the same general rules that we use
 when writing tests, plus:
 
-#. LTP library tests must go inside :master:`lib/newlib_tests` directory
-#. LTP documentation has to be updated according to API changes
+#. LTP library tests must go inside :master:`lib/newlib_tests` directory.
+#. LTP documentation has to be updated according to API changes.
+#. Environment variables should be listed in :doc:`../users/setup_tests`.
+
+C API
+-----
+
+LAPI headers
+~~~~~~~~~~~~
+
+Use our LAPI headers (``include "lapi/foo.h"``) to keep compatibility with old
+distributions. LAPI header should always include original header. Older linux
+headers were problematic, therefore we preferred to use libc headers. There are
+still some bugs when combining certain glibc headers with linux headers, see
+https://sourceware.org/glibc/wiki/Synchronizing_Headers.
+
+Rules checked with ``make check``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+LTP-001: Sources have ``tst_`` prefix
+"""""""""""""""""""""""""""""""""""""
+
+API source code is in headers in ``include/{empty}*.h``,
+``include/lapi/{empty}*.h`` (backward compatibility for old kernel and libc)
+and C sources in ``lib/{empty}*.c``. Files have ``tst_`` prefix.
+
+LTP-002: TST_RET and TST_ERR are not modified
+"""""""""""""""""""""""""""""""""""""""""""""
+
+The test author is guaranteed that the test API will not modify these
+variables. This prevents silent errors where the return value and
+errno are overwritten before the test has chance to check them.
+
+The macros which are clearly intended to update these variables. That
+is ``TEST`` and those in 'tst_test_macros.h'. Are of course allowed to
+update these variables.
+
+LTP-003: Externally visible library symbols have the ``tst_`` prefix
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+
+Functions, types and variables in the public test API should have the
+``tst_`` prefix. With some exceptions for symbols already prefixed with
+``safe_`` or ``ltp_``.
+
+Static (private) symbols should not have the prefix.
 
 Shell API
 ---------
-- 
2.43.0



More information about the ltp mailing list