Skip to content

Commit

Permalink
Add documentation about syscalls.h generator
Browse files Browse the repository at this point in the history
Signed-off-by: Andrea Cervesato <[email protected]>
  • Loading branch information
acerv committed Oct 31, 2024
1 parent 1c8f80a commit a680952
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions doc/developers/test_case_tutorial.rst
Original file line number Diff line number Diff line change
Expand Up @@ -302,24 +302,25 @@ for a distribution's C library version to be older than its kernel or it may use
cut down C library in comparison to the GNU one. So we must call ``statx()``
using the general ``syscall()`` interface.

The LTP contains a library for dealing with the ``syscall`` interface, which is
LTP contains a library for dealing with the ``syscall`` interface, which is
located in :master:`include/lapi`. System call numbers are listed against the relevant
call in the ``*.in`` files (e.g. ``x86_64.in``) which are used to generate
``syscalls.h``, which is the header you should include. On rare occasions you
may find the system call number is missing from the ``*.in`` files and will need
to add it (see :master:`include/lapi/syscalls/strip_syscall.awk`).
``syscalls.h``, the header you should include.

System call numbers vary between architectures, hence there are multiple
``*.in`` files for each architecture. You can find the various values for the
``statx`` system call across a number of ``unistd.h`` files in the Linux kernel.
On rare occasions, you may find that system call number is missing from ``*.in``
files. In these cases, they will need to be updated using
`include/lapi/syscalls/generate_arch.sh` script as following:

Note that we don't use the system-call-identifier value available in
``/usr/include/linux/uinstd.h`` because the kernel might be much newer than the
user land development packages.
.. code-block:: bash
$ include/lapi/syscalls/generate_arch.sh /path/of/linux/sources
The script will generate all the needed ``*.in`` files according to the Linux
source code which has been used. Make sure that your Linux source code has
been updated to the latest version.

For ``statx`` we had to add ``statx 332`` to :master:`include/lapi/syscalls/x86_64.in`,
``statx 383`` to :master:`include/lapi/syscalls/powerpc.in`, etc. Now lets look at
the code, which I will explain in more detail further down.
Once the new syscalls files have been updated, to rebuild our ``syscalls.h``
file, please use ``./configure`` command.

.. code-block:: c
Expand Down

0 comments on commit a680952

Please sign in to comment.