#include "defs.h" static void print_affinitylist(struct tcb *tcp, long list, unsigned int len) { int first = 1; unsigned long w, min_len; if (abbrev(tcp) && len / sizeof(w) > max_strlen) min_len = len - max_strlen * sizeof(w); else min_len = 0; for (; len >= sizeof(w) && len > min_len; len -= sizeof(w), list += sizeof(w)) { if (umove(tcp, list, &w) < 0) break; if (first) tprints("{"); else tprints(", "); first = 0; tprintf("%lx", w); } if (len) { if (first) tprintf("%#lx", list); else tprintf(", %s}", (len >= sizeof(w) && len > min_len ? "???" : "...")); } else { tprints(first ? "{}" : "}"); } } int sys_sched_setaffinity(struct tcb *tcp) { if (entering(tcp)) { tprintf("%ld, %lu, ", tcp->u_arg[0], tcp->u_arg[1]); print_affinitylist(tcp, tcp->u_arg[2], tcp->u_arg[1]); } return 0; } int sys_sched_getaffinity(struct tcb *tcp) { if (entering(tcp)) { tprintf("%ld, %lu, ", tcp->u_arg[0], tcp->u_arg[1]); } else { if (tcp->u_rval == -1) tprintf("%#lx", tcp->u_arg[2]); else print_affinitylist(tcp, tcp->u_arg[2], tcp->u_rval); } return 0; }