]> granicus.if.org Git - strace/blobdiff - block.c
Simplify print_lld_from_low_high_val ifdefery
[strace] / block.c
diff --git a/block.c b/block.c
index 3c007464e0ac984c5d6edbe0984e931ff61e731e..4d1a965b40b59d83210047f2e308e9f2b7e944ac 100644 (file)
--- a/block.c
+++ b/block.c
 #include DEF_MPERS_TYPE(struct_blkpg_ioctl_arg)
 #include DEF_MPERS_TYPE(struct_blkpg_partition)
 
-#include <linux/blkpg.h>
+#include <linux/ioctl.h>
 #include <linux/fs.h>
 
+typedef struct {
+       int op;
+       int flags;
+       int datalen;
+       void *data;
+} struct_blkpg_ioctl_arg;
+
+#define BLKPG_DEVNAMELTH       64
+#define BLKPG_VOLNAMELTH       64
+typedef struct {
+       int64_t start;                  /* starting offset in bytes */
+       int64_t length;                 /* length in bytes */
+       int pno;                        /* partition number */
+       char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
+                                          to be used in kernel messages */
+       char volname[BLKPG_VOLNAMELTH]; /* volume label */
+} struct_blkpg_partition;
+
 #define BLKTRACE_BDEV_SIZE      32
 typedef struct blk_user_trace_setup {
        char name[BLKTRACE_BDEV_SIZE];  /* output */
@@ -46,11 +64,12 @@ typedef struct blk_user_trace_setup {
        uint32_t pid;
 } struct_blk_user_trace_setup;
 
-typedef struct blkpg_ioctl_arg struct_blkpg_ioctl_arg;
-typedef struct blkpg_partition struct_blkpg_partition;
-
 #include MPERS_DEFS
 
+#ifndef BLKPG
+# define BLKPG      _IO(0x12,105)
+#endif
+
 /*
  * ioctl numbers <= 114 are present in Linux 2.4.  The following ones have been
  * added since then and headers containing them may not be available on every
@@ -110,9 +129,10 @@ print_blkpg_req(struct tcb *tcp, const struct_blkpg_ioctl_arg *blkpg)
        tprintf(", flags=%d, datalen=%d, data=",
                blkpg->flags, blkpg->datalen);
 
-       if (!umove_or_printaddr(tcp, (long) blkpg->data, &p)) {
-               tprintf("{start=%lld, length=%lld, pno=%d, devname=",
-                       (long long) p.start, (long long) p.length, p.pno);
+       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);
                print_quoted_string(p.devname, sizeof(p.devname),
                                    QUOTE_0_TERMINATED);
                tprints(", volname=");
@@ -123,14 +143,14 @@ print_blkpg_req(struct tcb *tcp, const struct_blkpg_ioctl_arg *blkpg)
        tprints("}");
 }
 
-MPERS_PRINTER_DECL(int, block_ioctl, struct tcb *tcp,
-                  const unsigned int code, const long arg)
+MPERS_PRINTER_DECL(int, block_ioctl, struct tcb *const tcp,
+                  const unsigned int code, const kernel_ulong_t arg)
 {
        switch (code) {
        /* take arg as a value, not as a pointer */
        case BLKRASET:
        case BLKFRASET:
-               tprintf(", %lu", arg);
+               tprintf(", %" PRI_klu, arg);
                break;
 
        /* return an unsigned short */