tprintf(", flags=%d, datalen=%d, data=",
blkpg->flags, blkpg->datalen);
- if (!umove_or_printaddr(tcp, (kernel_ureg_t) blkpg->data, &p)) {
+ if (!umove_or_printaddr(tcp, ptr_to_kulong(blkpg->data), &p)) {
tprintf("{start=%" PRId64 ", length=%" PRId64
", pno=%d, devname=",
p.start, p.length, p.pno);
tprints("...");
else {
uint64_t record;
- print_array(tcp, (kernel_ureg_t) args.clone_sources,
+ print_array(tcp, ptr_to_kulong(args.clone_sources),
args.clone_sources_count,
&record, sizeof(record),
umoven_or_printaddr,
(uint64_t) args.size);
btrfs_print_qgroup_inherit(tcp,
- (kernel_ureg_t) args.qgroup_inherit);
+ ptr_to_kulong(args.qgroup_inherit));
}
tprints(", name=");
print_quoted_string(args.name, sizeof(args.name),
# define widen_to_ulong(v) ((unsigned long)(v))
#endif
+/*
+ * Cast a pointer or a pointer-sized integer to kernel_ureg_t.
+ */
+#define ptr_to_kulong(v) ((kernel_ureg_t) (unsigned long) (v))
+
/*
* Zero-extend a signed integer type to unsigned long long.
*/
decode_envelope(&ffe.u.periodic.envelope);
tprintf(", custom_len=%u, custom_data=",
ffe.u.periodic.custom_len);
- printaddr((kernel_ureg_t) ffe.u.periodic.custom_data);
+ printaddr(ptr_to_kulong(ffe.u.periodic.custom_data));
tprints("}");
break;
case FF_RUMBLE:
tprintf(" = %lu buffers in vector %u\n",
(kernel_ureg_t) mmsg.msg_hdr.msg_iovlen, i);
dumpiov_upto(tcp, mmsg.msg_hdr.msg_iovlen,
- (kernel_ureg_t) mmsg.msg_hdr.msg_iov, mmsg.msg_len);
+ ptr_to_kulong(mmsg.msg_hdr.msg_iov),
+ mmsg.msg_len);
}
}
tprints("{msg_name=");
const int family =
- decode_sockaddr(tcp, (kernel_ureg_t) msg->msg_name, msg_namelen);
+ decode_sockaddr(tcp, ptr_to_kulong(msg->msg_name), msg_namelen);
const enum iov_decode decode =
(family == AF_NETLINK) ? IOV_DECODE_NETLINK : IOV_DECODE_STR;
tprints(", msg_iov=");
tprint_iov_upto(tcp, msg->msg_iovlen,
- (kernel_ureg_t) msg->msg_iov, decode, data_size);
+ ptr_to_kulong(msg->msg_iov), decode, data_size);
tprintf(", msg_iovlen=%lu", (kernel_ureg_t) msg->msg_iovlen);
- decode_msg_control(tcp, (kernel_ureg_t) msg->msg_control,
+ decode_msg_control(tcp, ptr_to_kulong(msg->msg_control),
msg->msg_controllen);
tprintf(", msg_controllen=%lu", (kernel_ureg_t) msg->msg_controllen);
if (fetch_struct_msghdr(tcp, addr, &msg)) {
dumpiov_upto(tcp, msg.msg_iovlen,
- (kernel_ureg_t) msg.msg_iov, data_size);
+ ptr_to_kulong(msg.msg_iov), data_size);
}
}
return;
tprintf("{start=%#x, length=%#x, ptr=", mbuf.start, mbuf.length);
- printaddr((kernel_ureg_t) mbuf.ptr);
+ printaddr(ptr_to_kulong(mbuf.ptr));
tprints("}");
}
printsigval(const siginfo_t *sip)
{
tprintf(", si_value={int=%d, ptr=", sip->si_int);
- printaddr((kernel_ureg_t) sip->si_ptr);
+ printaddr(ptr_to_kulong(sip->si_ptr));
tprints("}");
}
case SIGILL: case SIGFPE:
case SIGSEGV: case SIGBUS:
tprints(", si_addr=");
- printaddr((kernel_ureg_t) sip->si_addr);
+ printaddr(ptr_to_kulong(sip->si_addr));
break;
case SIGPOLL:
switch (sip->si_code) {
syscall_name((unsigned) sip->si_syscall);
tprints(", si_call_addr=");
- printaddr((kernel_ureg_t) sip->si_call_addr);
+ printaddr(ptr_to_kulong(sip->si_call_addr));
tprints(", si_syscall=");
if (scname)
tprintf("__NR_%s", scname);
printxval(sg_io_dxfer_direction, sg_io.dxfer_direction,
"SG_DXFER_???");
tprintf(", cmd[%u]=", sg_io.cmd_len);
- print_sg_io_buffer(tcp, (kernel_ureg_t) sg_io.cmdp, sg_io.cmd_len);
+ print_sg_io_buffer(tcp, ptr_to_kulong(sg_io.cmdp), sg_io.cmd_len);
tprintf(", mx_sb_len=%d", sg_io.mx_sb_len);
tprintf(", iovec_count=%d", sg_io.iovec_count);
tprintf(", dxfer_len=%u", sg_io.dxfer_len);
tprintf(", data[%u]=", sg_io.dxfer_len);
if (sg_io.iovec_count)
tprint_iov_upto(tcp, sg_io.iovec_count,
- (kernel_ureg_t) sg_io.dxferp,
+ ptr_to_kulong(sg_io.dxferp),
IOV_DECODE_STR,
sg_io.dxfer_len);
else
- print_sg_io_buffer(tcp, (kernel_ureg_t) sg_io.dxferp,
+ print_sg_io_buffer(tcp, ptr_to_kulong(sg_io.dxferp),
sg_io.dxfer_len);
}
return 1;
tprintf(", data[%u]=", din_len);
if (sg_io.iovec_count)
tprint_iov_upto(tcp, sg_io.iovec_count,
- (kernel_ureg_t) sg_io.dxferp,
+ ptr_to_kulong(sg_io.dxferp),
syserror(tcp) ? IOV_DECODE_ADDR :
IOV_DECODE_STR, din_len);
else
- print_sg_io_buffer(tcp, (kernel_ureg_t) sg_io.dxferp,
+ print_sg_io_buffer(tcp, ptr_to_kulong(sg_io.dxferp),
din_len);
}
tprintf(", status=%02x", sg_io.status);
tprintf(", masked_status=%02x", sg_io.masked_status);
tprintf(", sb[%u]=", sg_io.sb_len_wr);
- print_sg_io_buffer(tcp, (kernel_ureg_t) sg_io.sbp, sg_io.sb_len_wr);
+ print_sg_io_buffer(tcp, ptr_to_kulong(sg_io.sbp), sg_io.sb_len_wr);
tprintf(", host_status=%#x", sg_io.host_status);
tprintf(", driver_status=%#x", sg_io.driver_status);
tprintf(", resid=%d", sg_io.resid);
return;
tprints("{ss_sp=");
- printaddr((kernel_ureg_t) ss.ss_sp);
+ printaddr(ptr_to_kulong(ss.ss_sp));
tprints(", ss_flags=");
printflags(sigaltstack_flags, ss.ss_flags, "SS_???");
tprintf(", ss_size=%lu}", (kernel_ureg_t) ss.ss_size);
struct ifreq ifra[nifra > max_strlen ? max_strlen : nifra];
tprints(", ");
- if (umove_or_printaddr(tcp, (kernel_ureg_t) ifc.ifc_buf, &ifra)) {
+ if (umove_or_printaddr(tcp, ptr_to_kulong(ifc.ifc_buf), &ifra)) {
tprints("}");
return RVAL_DECODED | 1;
}
size_t oldlen = 0;
if (info.oldval == NULL) {
tprints("NULL");
- } else if (umove(tcp, (kernel_ureg_t) info.oldlenp, &oldlen) >= 0
+ } else if (umove(tcp, ptr_to_kulong(info.oldlenp), &oldlen) >= 0
&& info.nlen >= 2
&& ((name[0] == CTL_KERN
&& (name[1] == KERN_OSRELEASE
|| name[1] == KERN_OSTYPE
)))) {
- printpath(tcp, (kernel_ureg_t) info.oldval);
+ printpath(tcp, ptr_to_kulong(info.oldval));
} else {
tprintf("%p", info.oldval);
}
else if (syserror(tcp))
tprintf("%p", info.newval);
else
- printpath(tcp, (kernel_ureg_t) info.newval);
+ printpath(tcp, ptr_to_kulong(info.newval));
tprintf(", %lu", (unsigned long)info.newlen);
}
#else
struct iovec *iov;
#define sizeof_iov sizeof(*iov)
-#define iov_iov_base(i) iov[i].iov_base
+#define iov_iov_base(i) ptr_to_kulong(iov[i].iov_base)
#define iov_iov_len(i) iov[i].iov_len
#endif
int i;
/* include the buffer number to make it easy to
* match up the trace with the source */
tprintf(" * %lu bytes in buffer %d\n", iov_len, i);
- dumpstr(tcp, (kernel_ureg_t) iov_iov_base(i), iov_len);
+ dumpstr(tcp, iov_iov_base(i), iov_len);
}
}
free(iov);
if (!umove_or_printaddr(tcp, arg, &b)) {
tprintf("{capability=%#x, flags=%#x, base=",
b.capability, b.flags);
- printaddr((kernel_ureg_t) b.base);
+ printaddr(ptr_to_kulong(b.base));
tprints("}");
}
tprintf(", size=%u", p->size);
if (p->size > 0) {
tprints(", string=");
- printstrn(tcp, (kernel_ureg_t) p->string, p->size);
+ printstrn(tcp, ptr_to_kulong(p->string), p->size);
} else
# endif
tprintf(", value=%d, value64=%" PRId64, p->value, (int64_t) p->value64);
tprints("controls=");
struct_v4l2_ext_control ctrl;
- bool fail = !print_array(tcp, (kernel_ureg_t) c.controls, c.count,
+ bool fail = !print_array(tcp, ptr_to_kulong(c.controls), c.count,
&ctrl, sizeof(ctrl),
umoven_or_printaddr_ignore_syserror,
print_v4l2_ext_control, 0);