diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2014-12-03 20:08:44 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2014-12-03 21:20:47 +0000 |
commit | 600e33cd4521ad950472ed63290cbc034e515959 (patch) | |
tree | 70020c80ebe1ddcc640e111bb83fd3a43f91497d /sysmips.c | |
parent | f6eb0d6b27ccf218fbda16ceec797818ac2319fc (diff) | |
download | strace-600e33cd4521ad950472ed63290cbc034e515959.tar.gz |
mips: move sysmips parser to a separate file
* sysmips.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* system.c: Fix typo in the check for <linux/utsname.h>.
Move inclusions of <linux/utsname.h> and <asm/sysmips.h> to sysmips.c.
[MIPS]: Likewise.
Diffstat (limited to 'sysmips.c')
-rw-r--r-- | sysmips.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/sysmips.c b/sysmips.c new file mode 100644 index 000000000..521b08165 --- /dev/null +++ b/sysmips.c @@ -0,0 +1,42 @@ +#include "defs.h" + +#ifdef MIPS + +#ifdef HAVE_LINUX_UTSNAME_H +# include <linux/utsname.h> +#endif +#ifdef HAVE_ASM_SYSMIPS_H +# include <asm/sysmips.h> +#endif + +#ifndef __NEW_UTS_LEN +# define __NEW_UTS_LEN 64 +#endif + +#include "xlat/sysmips_operations.h" + +int sys_sysmips(struct tcb *tcp) +{ + if (entering(tcp)) { + printxval(sysmips_operations, tcp->u_arg[0], "???"); + if (!verbose(tcp)) { + tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]); + } else if (tcp->u_arg[0] == SETNAME) { + char nodename[__NEW_UTS_LEN + 1]; + if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN + 1), nodename) < 0) + tprintf(", %#lx", tcp->u_arg[1]); + else + tprintf(", \"%.*s\"", (int)(__NEW_UTS_LEN + 1), nodename); + } else if (tcp->u_arg[0] == MIPS_ATOMIC_SET) { + tprintf(", %#lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]); + } else if (tcp->u_arg[0] == MIPS_FIXADE) { + tprintf(", 0x%lx", tcp->u_arg[1]); + } else { + tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]); + } + } + + return 0; +} + +#endif /* MIPS */ |