Get rid of syslet-rw compile warnings on 32-bit
authorJens Axboe <jens.axboe@oracle.com>
Fri, 28 Sep 2007 06:48:52 +0000 (08:48 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Fri, 28 Sep 2007 06:48:52 +0000 (08:48 +0200)
The fixed size API repeatedly warns on the pointer to integer
of different size cast, so sneak an unsigned long conversion in
first. Makes gcc happy and should always be ok.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
engines/syslet-rw.c

index 6709015761bf2e80274ec424d4beff50dae3dc34..2a159d0893f0e40ddbbad0b2c259340487c7b7fc 100644 (file)
@@ -24,6 +24,8 @@
 #define __NR_fio_pwrite        __NR_pwrite
 #endif
 
+#define ATOM_TO_IOU(p) ((struct io_u *) (unsigned long) (p))
+
 struct syslet_data {
        struct io_u **events;
        unsigned int nr_events;
@@ -46,7 +48,7 @@ static void fio_syslet_complete_atom(struct thread_data *td,
         * including) this atom
         */
        last = atom;
-       io_u = (struct io_u *)atom->private;
+       io_u = ATOM_TO_IOU(atom);
        atom = io_u->req.head;
 
        /*
@@ -55,8 +57,8 @@ static void fio_syslet_complete_atom(struct thread_data *td,
        do {
                long ret;
 
-               io_u = (struct io_u *)atom->private;
-               ret = *(long *)atom->ret_ptr;
+               io_u = ATOM_TO_IOU(atom);
+               ret = *(long *) (unsigned long) atom->ret_ptr;
                if (ret >= 0)
                        io_u->resid = io_u->xfer_buflen - ret;
                else if (ret < 0)
@@ -68,7 +70,7 @@ static void fio_syslet_complete_atom(struct thread_data *td,
                if (atom == last)
                        break;
 
-               atom = (struct syslet_uatom *)atom->next;
+               atom = (struct syslet_uatom *) (unsigned long) atom->next;
        } while (1);
 
        assert(!last->next);
@@ -138,15 +140,15 @@ static void init_atom(struct syslet_uatom *atom, int nr, void *arg0,
 {
        atom->flags = flags;
        atom->nr = nr;
-       atom->ret_ptr = (uint64_t)ret_ptr;
+       atom->ret_ptr = (uint64_t) (unsigned long) ret_ptr;
        atom->next = 0;
-       atom->arg_ptr[0] = (uint64_t)arg0;
-       atom->arg_ptr[1] = (uint64_t)arg1;
-       atom->arg_ptr[2] = (uint64_t)arg2;
-       atom->arg_ptr[3] = (uint64_t)arg3;
+       atom->arg_ptr[0] = (uint64_t) (unsigned long) arg0;
+       atom->arg_ptr[1] = (uint64_t) (unsigned long) arg1;
+       atom->arg_ptr[2] = (uint64_t) (unsigned long) arg2;
+       atom->arg_ptr[3] = (uint64_t) (unsigned long) arg3;
        atom->arg_ptr[4] = 0;
        atom->arg_ptr[5] = 0;
-       atom->private = (uint64_t)priv;
+       atom->private = (uint64_t) (unsigned long) priv;
 }
 
 /*
@@ -208,11 +210,11 @@ static void fio_syslet_queued(struct thread_data *td, struct syslet_data *sd)
 
        atom = sd->head;
        while (atom) {
-               struct io_u *io_u = (struct io_u *)atom->private;
+               struct io_u *io_u = ATOM_TO_IOU(atom);
 
                memcpy(&io_u->issue_time, &now, sizeof(now));
                io_u_queued(td, io_u);
-               atom = (struct syslet_uatom *)atom->next;
+               atom = (struct syslet_uatom *) (unsigned long) atom->next;
        }
 }
 
@@ -257,7 +259,7 @@ static int fio_syslet_queue(struct thread_data *td, struct io_u *io_u)
        fio_ro_check(td, io_u);
 
        if (sd->tail) {
-               sd->tail->next = (uint64_t)&io_u->req.atom;
+               sd->tail->next = (uint64_t) (unsigned long) &io_u->req.atom;
                sd->tail = &io_u->req.atom;
        } else
                sd->head = sd->tail = (struct syslet_uatom *)&io_u->req.atom;
@@ -277,11 +279,11 @@ static int async_head_init(struct syslet_data *sd, unsigned int depth)
        memset(sd->ring, 0, ring_size);
 
        sd->ahu.user_ring_idx = 0;
-       sd->ahu.completion_ring_ptr = (uint64_t)sd->ring;
+       sd->ahu.completion_ring_ptr = (uint64_t) (unsigned long) sd->ring;
        sd->ahu.ring_size_bytes = ring_size;
        sd->ahu.head_stack = thread_stack_alloc();
-       sd->ahu.head_ip = (uint64_t)cachemiss_thread_start;
-       sd->ahu.new_thread_ip = (uint64_t)cachemiss_thread_start;
+       sd->ahu.head_ip = (uint64_t) (unsigned long) cachemiss_thread_start;
+       sd->ahu.new_thread_ip = (uint64_t) (unsigned long) cachemiss_thread_start;
        sd->ahu.new_thread_stack = thread_stack_alloc();
 
        return 0;