From: Jens Axboe Date: Fri, 28 Sep 2007 06:48:52 +0000 (+0200) Subject: Get rid of syslet-rw compile warnings on 32-bit X-Git-Tag: fio-1.17.2~10 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=67f5b27ed25e87102455e9a49eadabb00e873b0e Get rid of syslet-rw compile warnings on 32-bit 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 --- diff --git a/engines/syslet-rw.c b/engines/syslet-rw.c index 67090157..2a159d08 100644 --- a/engines/syslet-rw.c +++ b/engines/syslet-rw.c @@ -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;