From d5110e2cb44e6913ee9a76e1d449fac2b06073e9 Mon Sep 17 00:00:00 2001 From: Stefan Rauch Date: Wed, 29 Nov 2017 13:41:29 +0100 Subject: [PATCH] wishbone: changes for kernel > 3.19 --- pcie-wb/wishbone.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pcie-wb/wishbone.c b/pcie-wb/wishbone.c index b5dfc5f..45a47d8 100644 --- a/pcie-wb/wishbone.c +++ b/pcie-wb/wishbone.c @@ -476,13 +476,13 @@ static int deliver_msi(struct etherbone_master_context* context) context->sent == context->received; } -static ssize_t char_master_aio_read(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos) +static ssize_t char_master_read_iter(struct kiocb *iocb, struct iov_iter *iter) { struct file *filep = iocb->ki_filp; struct etherbone_master_context *context = filep->private_data; unsigned int len, iov_len, ring_len, buf_len; - iov_len = iov_length(iov, nr_segs); + iov_len = iov_iter_count(iter); if (unlikely(iov_len == 0)) return 0; if (mutex_lock_interruptible(&context->context_mutex)) @@ -494,7 +494,7 @@ static ssize_t char_master_aio_read(struct kiocb *iocb, const struct iovec *iov, * msi[] while msi_pending stays high. */ len = min_t(unsigned int, context->msi_unread, iov_len); - memcpy_toiovecend(iov, context->msi + sizeof(context->msi) - context->msi_unread, 0, len); + copy_to_iter(context->msi + sizeof(context->msi) - context->msi_unread, len, iter); context->msi_unread -= len; } else { ring_len = RING_READ_LEN(context); @@ -504,10 +504,10 @@ static ssize_t char_master_aio_read(struct kiocb *iocb, const struct iovec *iov, buf_len = sizeof(context->buf) - RING_INDEX(context->sent); if (buf_len < len) { - memcpy_toiovecend(iov, RING_POINTER(context, sent), 0, buf_len); - memcpy_toiovecend(iov, &context->buf[0], buf_len, len-buf_len); + copy_to_iter(RING_POINTER(context, sent), buf_len, iter); + copy_to_iter(&context->buf[0], len-buf_len, iter); } else { - memcpy_toiovecend(iov, RING_POINTER(context, sent), 0, len); + copy_to_iter(RING_POINTER(context, sent), len, iter); } context->sent = RING_POS(context->sent + len); } @@ -524,13 +524,13 @@ static ssize_t char_master_aio_read(struct kiocb *iocb, const struct iovec *iov, return len; } -static ssize_t char_master_aio_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos) +static ssize_t char_master_write_iter(struct kiocb *iocb, struct iov_iter *iter) { struct file *filep = iocb->ki_filp; struct etherbone_master_context *context = filep->private_data; unsigned int len, iov_len, ring_len, buf_len; - iov_len = iov_length(iov, nr_segs); + iov_len = iov_iter_count(iter); if (unlikely(iov_len == 0)) return 0; if (mutex_lock_interruptible(&context->context_mutex)) @@ -543,10 +543,10 @@ static ssize_t char_master_aio_write(struct kiocb *iocb, const struct iovec *iov buf_len = sizeof(context->buf) - RING_INDEX(context->received); if (buf_len < len) { - memcpy_fromiovecend(RING_POINTER(context, received), iov, 0, buf_len); - memcpy_fromiovecend(&context->buf[0], iov, buf_len, len-buf_len); + copy_from_iter(RING_POINTER(context, received), buf_len, iter); + copy_from_iter(&context->buf[0], len-buf_len, iter); } else { - memcpy_fromiovecend(RING_POINTER(context, received), iov, 0, len); + copy_from_iter(RING_POINTER(context, received), len, iter); } context->received = RING_POS(context->received + len); @@ -594,10 +594,10 @@ static int char_master_fasync(int fd, struct file *file, int on) static const struct file_operations etherbone_master_fops = { .owner = THIS_MODULE, .llseek = no_llseek, - .read = do_sync_read, - .aio_read = char_master_aio_read, - .write = do_sync_write, - .aio_write = char_master_aio_write, + .read = NULL, + .read_iter = char_master_read_iter, + .write = NULL, + .write_iter = char_master_write_iter, .open = char_master_open, .poll = char_master_poll, .release = char_master_release, -- 2.7.4