]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - include/sys/uio.h
New upstream version 0.7.8
[mirror_spl-debian.git] / include / sys / uio.h
index 25c5f4a01807bc72406d004305a9e8c7bb094066..764beb9ff45d5614dc5ac292c8ffc73f7b449d9a 100644 (file)
@@ -1,6 +1,7 @@
 /*****************************************************************************\
  *  Copyright (C) 2007-2010 Lawrence Livermore National Security, LLC.
  *  Copyright (C) 2007 The Regents of the University of California.
+ *  Copyright (c) 2015 by Chunwei Chen. All rights reserved.
  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
  *  Written by Brian Behlendorf <behlendorf1@llnl.gov>.
  *  UCRL-CODE-235197
 \*****************************************************************************/
 
 #ifndef _SPL_UIO_H
-#define _SPL_UIO_H
+#define        _SPL_UIO_H
 
 #include <linux/uio.h>
+#include <linux/blkdev.h>
 #include <asm/uaccess.h>
 #include <sys/types.h>
 
 typedef struct iovec iovec_t;
 
 typedef enum uio_rw {
-       UIO_READ =      0,
-       UIO_WRITE =     1,
+       UIO_READ =              0,
+       UIO_WRITE =             1,
 } uio_rw_t;
 
 typedef enum uio_seg {
-       UIO_USERSPACE = 0,
-       UIO_SYSSPACE =  1,
-       UIO_USERISPACE= 2,
+       UIO_USERSPACE =         0,
+       UIO_SYSSPACE =          1,
+       UIO_USERISPACE =        2,
+       UIO_BVEC =              3,
 } uio_seg_t;
 
 typedef struct uio {
-       struct iovec    *uio_iov;
+       union {
+               const struct iovec      *uio_iov;
+               const struct bio_vec    *uio_bvec;
+       };
        int             uio_iovcnt;
        offset_t        uio_loffset;
        uio_seg_t       uio_segflg;
@@ -51,6 +57,7 @@ typedef struct uio {
        uint16_t        uio_extflg;
        offset_t        uio_limit;
        ssize_t         uio_resid;
+       size_t          uio_skip;
 } uio_t;
 
 typedef struct aio_req {
@@ -64,7 +71,7 @@ typedef enum xuio_type {
 } xuio_type_t;
 
 
-#define UIOA_IOV_MAX    16
+#define        UIOA_IOV_MAX    16
 
 typedef struct uioa_page_s {
        int     uioa_pfncnt;
@@ -93,7 +100,7 @@ typedef struct xuio {
        } xu_ext;
 } xuio_t;
 
-#define XUIO_XUZC_PRIV(xuio)   xuio->xu_ext.xu_zc.xu_zc_priv
-#define XUIO_XUZC_RW(xuio)     xuio->xu_ext.xu_zc.xu_zc_rw
+#define        XUIO_XUZC_PRIV(xuio)    xuio->xu_ext.xu_zc.xu_zc_priv
+#define        XUIO_XUZC_RW(xuio)      xuio->xu_ext.xu_zc.xu_zc_rw
 
 #endif /* SPL_UIO_H */