On Mon, Mar 16, 2015 at 05:36:05PM +0000, Al Viro wrote: > 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.
Agreed, but the proposed define is rather cryptic and I was not able to understand the meaning on the first glance. > #define iov_iter_rw(i) ((0 ? (struct iov_iter *)0 : (i))->type & RW_MASK) This worked for me, does not compile with anything else than 'struct iov_iter*' as i: #define iov_iter_rw(i) ({ \ struct iov_iter __iter = *(i); \ (i)->type & RW_MASK; \ }) The assignment is optimized out. ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Jfs-discussion mailing list Jfs-discussion@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jfs-discussion