]> granicus.if.org Git - strace/blob - sysmips.c
process.c: move sched_setaffinity and sched_getaffinity parsers to a separate file
[strace] / sysmips.c
1 #include "defs.h"
2
3 #ifdef MIPS
4
5 #ifdef HAVE_LINUX_UTSNAME_H
6 # include <linux/utsname.h>
7 #endif
8 #ifdef HAVE_ASM_SYSMIPS_H
9 # include <asm/sysmips.h>
10 #endif
11
12 #ifndef __NEW_UTS_LEN
13 # define __NEW_UTS_LEN 64
14 #endif
15
16 #include "xlat/sysmips_operations.h"
17
18 int sys_sysmips(struct tcb *tcp)
19 {
20         if (entering(tcp)) {
21                 printxval(sysmips_operations, tcp->u_arg[0], "???");
22                 if (!verbose(tcp)) {
23                         tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
24                 } else if (tcp->u_arg[0] == SETNAME) {
25                         char nodename[__NEW_UTS_LEN + 1];
26                         if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN + 1), nodename) < 0)
27                                 tprintf(", %#lx", tcp->u_arg[1]);
28                         else
29                                 tprintf(", \"%.*s\"", (int)(__NEW_UTS_LEN + 1), nodename);
30                 } else if (tcp->u_arg[0] == MIPS_ATOMIC_SET) {
31                         tprintf(", %#lx, 0x%lx", tcp->u_arg[1], tcp->u_arg[2]);
32                 } else if (tcp->u_arg[0] == MIPS_FIXADE) {
33                         tprintf(", 0x%lx", tcp->u_arg[1]);
34                 } else {
35                         tprintf("%ld, %ld, %ld", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);
36                 }
37         }
38
39         return 0;
40 }
41
42 #endif /* MIPS */