linux-user: Add support for adjtimex() syscall
commit19f59bcef91cd4abc04d10c9ecbf5183b71f1b06
authorAleksandar Markovic <aleksandar.markovic@imgtec.com>
Thu, 22 Sep 2016 16:56:50 +0000 (22 18:56 +0200)
committerRiku Voipio <riku.voipio@linaro.org>
Fri, 21 Oct 2016 12:19:39 +0000 (21 15:19 +0300)
tree0ebd24f32a475fe2ac3ddf9177798b486c6ce9bf
parentda158a86c407fa7b9da848b571356a26809d8df9
linux-user: Add support for adjtimex() syscall

This patch implements Qemu user mode adjtimex() syscall support.

Syscall adjtimex() reads and optionally sets parameters for a clock
adjustment algorithm used in network synchonization or similar scenarios.

Its declaration is:

int adjtimex(struct timex *buf);

The correspondent source code in the Linux kernel is at kernel/time.c,
line 206.

The Qemu implementation is based on invocation of host's adjtimex(), and
its key part is in the "TARGET_NR_adjtimex" case segment of the the main
switch statement of the function do_syscall(), in linux-user/syscalls.c. All
necessary conversions of the data structures from target to host and from
host to target are covered. Two new functions, target_to_host_timex() and
host_to_target_timex(), are provided for the purpose of such conversions.
For that purpose, the support for related structure "timex" had tp be added
to the file linux-user/syscall_defs.h, based on its definition in Linux
kernel. Also, the relevant support for "-strace" Qemu option is included
in files linux-user/strace.c and linux-user/strace.list.

This patch also fixes failures of LTP tests adjtimex01 and adjtimex02, if
executed in Qemu user mode.

Signed-off-by: Aleksandar Rikalo <aleksandar.rikalo@imgtec.com>
Signed-off-by: Aleksandar Markovic <aleksandar.markovic@imgtec.com>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
linux-user/strace.c
linux-user/strace.list
linux-user/syscall.c
linux-user/syscall_defs.h