Omar Sandoval
2015-Mar-16 11:33 UTC
[Ocfs2-devel] [RFC PATCH 1/5] new helper: iov_iter_rw()
Get either READ or WRITE out of iter->type.
Signed-off-by: Omar Sandoval <osandov at osandov.com>
---
include/linux/uio.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/include/linux/uio.h b/include/linux/uio.h
index 7188029..87a47b3 100644
--- a/include/linux/uio.h
+++ b/include/linux/uio.h
@@ -10,6 +10,7 @@
#define __LINUX_UIO_H
#include <linux/kernel.h>
+#include <linux/fs.h>
#include <uapi/linux/uio.h>
struct page;
@@ -111,6 +112,15 @@ static inline bool iter_is_iovec(struct iov_iter *i)
}
/*
+ * Get one of READ or WRITE out of iter->type without any other flags
OR'd in
+ * with it.
+ */
+static inline int iov_iter_rw(const struct iov_iter *i)
+{
+ return i->type & RW_MASK;
+}
+
+/*
* Cap the iov_iter by given limit; note that the second argument is
* *not* the new size - it's upper limit for such. Passing it a value
* greater than the amount of data in iov_iter is fine - it'll just do
--
2.3.3
On Mon, Mar 16, 2015 at 04:33:49AM -0700, Omar Sandoval wrote:> Get either READ or WRITE out of iter->type.Umm...> + * Get one of READ or WRITE out of iter->type without any other flags OR'd in > + * with it. > + */ > +static inline int iov_iter_rw(const struct iov_iter *i) > +{ > + return i->type & RW_MASK; > +}TBH, I would turn that into a macro. Reason: indirect includes. How about #define iov_iter_rw(i) ((0 ? (struct iov_iter *)0 : (i))->type & RW_MASK) Should do you all the type safety of inline function and avoids the need to include fs.h in uio.h; _users_ of iov_iter_rw() obviously still need fs.h, but such places always used to...