]> Zhao Yanbai Git Server - minix.git/commitdiff
64-bit bdev position
authorBen Gras <ben@minix3.org>
Mon, 24 Feb 2014 13:22:04 +0000 (14:22 +0100)
committerLionel Sambuc <lionel@minix3.org>
Mon, 28 Jul 2014 15:05:10 +0000 (17:05 +0200)
Change-Id: I149693624610e04af0c5e4437b5efa484a33467d

drivers/fb/fb_edid.c
drivers/fbd/fbd.c
drivers/filter/driver.c
include/minix/com.h
include/minix/ipc.h
lib/libbdev/bdev.c
lib/libblockdriver/driver.c
lib/libblockdriver/trace.c
test/blocktest/blocktest.c

index e0e4ef18b369ee2b1bab118434abdf998fee2190..9c200d8a6ba1cade0b84788a40154ef29baf7002 100644 (file)
@@ -113,8 +113,7 @@ do_read(endpoint_t driver_endpt, uint8_t *buf, size_t bufsize)
        m.BDEV_GRANT = grant_nr;
        m.BDEV_FLAGS = BDEV_NOPAGE; /* the EEPROMs used for EDID are pageless */
        m.BDEV_ID = 0;
-       m.BDEV_POS_LO = 0;
-       m.BDEV_POS_HI = 0;
+       m.BDEV_POS = 0;
 
        r = ipc_sendrec(driver_endpt, &m);
        cpf_revoke(grant_nr);
index 5ffc93a1dbe82ecd49374cb926cae0f392e0aa7e..5ffe9a36571fc73a979040b63dcd1eb968c1352b 100644 (file)
@@ -258,8 +258,7 @@ static ssize_t fbd_transfer_direct(int do_write, u64_t position,
        m.BDEV_GRANT = grant;
        m.BDEV_FLAGS = flags;
        m.BDEV_ID = 0;
-       m.BDEV_POS_LO = ex64lo(position);
-       m.BDEV_POS_HI = ex64hi(position);
+       m.BDEV_POS = position;
 
        if ((r = ipc_sendrec(driver_endpt, &m)) != OK)
                panic("ipc_sendrec to driver failed (%d)\n", r);
@@ -351,8 +350,7 @@ static ssize_t fbd_transfer_copy(int do_write, u64_t position,
        m.BDEV_GRANT = grant;
        m.BDEV_FLAGS = flags;
        m.BDEV_ID = 0;
-       m.BDEV_POS_LO = ex64lo(position);
-       m.BDEV_POS_HI = ex64hi(position);
+       m.BDEV_POS = position;
 
        if ((r = ipc_sendrec(driver_endpt, &m)) != OK)
                panic("ipc_sendrec to driver failed (%d)\n", r);
index 80e97cc7bc3453c3df6a07b35154d7a8d10c407b..2664df76a130e21e379753c2aa345bd795e38bd5 100644 (file)
@@ -770,8 +770,8 @@ static int paired_sendrec(message *m1, message *m2, int both)
        int r;
 
 #if DEBUG2
-       printf("paired_sendrec(%d) - <%d,%lx:%lx,%d> - %x,%x\n",
-               both, m1->m_type, m1->BDEV_POS_HI, m1->BDEV_POS_LO,
+       printf("paired_sendrec(%d) - <%d,%llx,%d> - %x,%x\n",
+               both, m1->m_type, m1->BDEV_POS,
                m1->BDEV_COUNT, m1->BDEV_GRANT, m2->BDEV_GRANT);
 #endif
 
@@ -919,8 +919,7 @@ int read_write(u64_t pos, char *bufa, char *bufb, size_t *sizep, int request)
        memset(&m1, 0, sizeof(m1));
        m1.m_type = (request == FLT_WRITE) ? BDEV_SCATTER : BDEV_GATHER;
        m1.BDEV_COUNT = count;
-       m1.BDEV_POS_LO = ex64lo(pos);
-       m1.BDEV_POS_HI = ex64hi(pos);
+       m1.BDEV_POS = pos;
 
        m2 = m1;
 
index 0ea6126e9c5b59792daf981337f96c2f52104053..7a1bbc5b1c425e15afbae134b7a4237c18bce290 100644 (file)
 #define BDEV_USER      m10_i4  /* user endpoint requesting I/O control */
 #define BDEV_ID                m10_l1  /* opaque request ID */
 #define BDEV_REQUEST   m10_l2  /* I/O control request */
-#define BDEV_POS_LO    m10_l2  /* transfer position (low bits) */
-#define BDEV_POS_HI    m10_l3  /* transfer position (high bits) */
+#define BDEV_POS       m10_ull1 /* transfer position */
 
 /* Bits in 'BDEV_ACCESS' field of block device open requests. */
 #  define BDEV_R_BIT           0x01    /* open with read access */
index 2eaaed8b22df60131f76c1896cc729105da47d66..1eee45247feea1eacf7927e134d824828405c151 100644 (file)
@@ -89,9 +89,10 @@ typedef struct {
 _ASSERT_MSG_SIZE(mess_9);
 
 typedef struct {
+       u64_t m10ull1;
        int m10i1, m10i2, m10i3, m10i4;
        long m10l1, m10l2, m10l3;
-       uint8_t padding[28];
+       uint8_t padding[20];
 } mess_10;
 _ASSERT_MSG_SIZE(mess_10);
 
@@ -295,6 +296,7 @@ typedef int _ASSERT_message[/* CONSTCOND */sizeof(message) == 64 ? 1 : -1];
 #define m10_l1 m_m10.m10l1
 #define m10_l2 m_m10.m10l2
 #define m10_l3 m_m10.m10l3
+#define m10_ull1 m_m10.m10ull1
 
 #define m11_i1 m_m11.m11i1
 #define m11_s1 m_m11.m11s1
index b4037f96392a2eaf8cc114321591da572b7b0165..76737d75f8133453a053a9bea9da38c04c4a8714 100644 (file)
@@ -135,8 +135,7 @@ static int bdev_rdwt_setup(int req, dev_t dev, u64_t pos, char *buf,
   memset(m, 0, sizeof(*m));
   m->m_type = req;
   m->BDEV_MINOR = minor(dev);
-  m->BDEV_POS_LO = ex64lo(pos);
-  m->BDEV_POS_HI = ex64hi(pos);
+  m->BDEV_POS = pos;
   m->BDEV_COUNT = count;
   m->BDEV_GRANT = grant;
   m->BDEV_FLAGS = flags;
@@ -227,8 +226,7 @@ static int bdev_vrdwt_setup(int req, dev_t dev, u64_t pos, iovec_t *vec,
   memset(m, 0, sizeof(*m));
   m->m_type = req;
   m->BDEV_MINOR = minor(dev);
-  m->BDEV_POS_LO = ex64lo(pos);
-  m->BDEV_POS_HI = ex64hi(pos);
+  m->BDEV_POS = pos;
   m->BDEV_COUNT = count;
   m->BDEV_GRANT = grant;
   m->BDEV_FLAGS = flags;
@@ -605,7 +603,7 @@ int bdev_restart_asyn(bdev_call_t *call)
        bdev_rdwt_cleanup(&call->msg);
 
        r = bdev_rdwt_setup(type, call->dev,
-               make64(call->msg.BDEV_POS_LO, call->msg.BDEV_POS_HI),
+               call->msg.BDEV_POS,
                (char *) call->vec[0].iov_addr, call->msg.BDEV_COUNT,
                call->msg.BDEV_FLAGS, &call->msg);
 
@@ -616,7 +614,7 @@ int bdev_restart_asyn(bdev_call_t *call)
        bdev_vrdwt_cleanup(&call->msg, call->gvec);
 
        r = bdev_vrdwt_setup(type, call->dev,
-               make64(call->msg.BDEV_POS_LO, call->msg.BDEV_POS_HI),
+               call->msg.BDEV_POS,
                call->vec, call->msg.BDEV_COUNT, call->msg.BDEV_FLAGS,
                &call->msg, call->gvec);
 
index 96f97c41629766fd3438b92ad541df67cbcfb80f..1c3d5fade80781e08cf408bcac91eb8fc1a06ea3 100644 (file)
@@ -4,19 +4,19 @@
  * Field names are prefixed with BDEV_. Separate field names are used for the
  * "access", "request", and "user" fields.
  *
- *    m_type        MINOR     COUNT     GRANT   FLAGS    ID    POS_LO   POS_HI
+ *    m_type        MINOR     COUNT     GRANT   FLAGS    ID    REQUEST  POS
  * +--------------+--------+----------+-------+-------+------+---------+------+
  * | BDEV_OPEN    | minor  |  access  |       |       |  id  |         |      |
  * |--------------+--------+----------+-------+-------+------+---------+------|
  * | BDEV_CLOSE   | minor  |          |       |       |  id  |         |      |
  * |--------------+--------+----------+-------+-------+------+---------+------|
- * | BDEV_READ    | minor  |  bytes   | grant | flags |  id  |     position   |
+ * | BDEV_READ    | minor  |  bytes   | grant | flags |  id  |         | pos. |
  * |--------------+--------+----------+-------+-------+------+---------+------|
- * | BDEV_WRITE   | minor  |  bytes   | grant | flags |  id  |     position   |
+ * | BDEV_WRITE   | minor  |  bytes   | grant | flags |  id  |         | pos. |
  * |--------------+--------+----------+-------+-------+------+---------+------|
- * | BDEV_GATHER  | minor  | elements | grant | flags |  id  |     position   |
+ * | BDEV_GATHER  | minor  | elements | grant | flags |  id  |         | pos. |
  * |--------------+--------+----------+-------+-------+------+---------+------|
- * | BDEV_SCATTER | minor  | elements | grant | flags |  id  |     position   |
+ * | BDEV_SCATTER | minor  | elements | grant | flags |  id  |         | pos. |
  * |--------------+--------+----------+-------+-------+------+---------+------|
  * | BDEV_IOCTL   | minor  |          | grant | user  |  id  | request |      |
  * ----------------------------------------------------------------------------
@@ -207,7 +207,7 @@ static int do_rdwt(struct blockdriver *bdp, message *mp)
 
   /* Transfer bytes from/to the device. */
   do_write = (mp->m_type == BDEV_WRITE);
-  position = make64(mp->BDEV_POS_LO, mp->BDEV_POS_HI);
+  position = mp->BDEV_POS;
 
   r = (*bdp->bdr_transfer)(mp->BDEV_MINOR, do_write, position, mp->m_source,
        &iovec1, 1, mp->BDEV_FLAGS);
@@ -248,7 +248,7 @@ static int do_vrdwt(struct blockdriver *bdp, message *mp, thread_id_t id)
 
   /* Transfer bytes from/to the device. */
   do_write = (mp->m_type == BDEV_SCATTER);
-  position = make64(mp->BDEV_POS_LO, mp->BDEV_POS_HI);
+  position = mp->BDEV_POS;
 
   r = (*bdp->bdr_transfer)(mp->BDEV_MINOR, do_write, position, mp->m_source,
        iovec, nr_req, mp->BDEV_FLAGS);
index 92f7e6ac94a6d9e0599b5c03dc28be830e7900ad..008f7a114c27264dcf73c942fe59c6cedb2e698a 100644 (file)
@@ -205,7 +205,7 @@ void trace_start(thread_id_t id, message *m_ptr)
   case BDEV_WRITE:
   case BDEV_GATHER:
   case BDEV_SCATTER:
-       pos = make64(m_ptr->BDEV_POS_LO, m_ptr->BDEV_POS_HI);
+       pos = m_ptr->BDEV_POS;
        size = m_ptr->BDEV_COUNT;
        flags = m_ptr->BDEV_FLAGS;
 
index fc757473334a9d2524927e5a40a06f385b9b88a3..14563185dac401f0e5258e2fe5f1f7bbf24551a3 100644 (file)
@@ -308,8 +308,7 @@ static void raw_xfer(dev_t minor, u64_t pos, iovec_s_t *iovec, int nr_req,
        memset(&m, 0, sizeof(m));
        m.m_type = write ? BDEV_SCATTER : BDEV_GATHER;
        m.BDEV_MINOR = minor;
-       m.BDEV_POS_LO = ex64lo(pos);
-       m.BDEV_POS_HI = ex64hi(pos);
+       m.BDEV_POS = pos;
        m.BDEV_COUNT = nr_req;
        m.BDEV_GRANT = grant;
        m.BDEV_ID = lrand48();
@@ -425,8 +424,7 @@ static void bad_read1(void)
        memset(&mt, 0, sizeof(mt));
        mt.m_type = BDEV_GATHER;
        mt.BDEV_MINOR = driver_minor;
-       mt.BDEV_POS_LO = 0L;
-       mt.BDEV_POS_HI = 0L;
+       mt.BDEV_POS = 0LL;
        mt.BDEV_COUNT = 1;
        mt.BDEV_GRANT = grant;
        mt.BDEV_ID = lrand48();