Messages in this thread | | | Date | Wed, 13 Dec 2017 17:45:54 +0000 | From | Al Viro <> | Subject | Re: [RFC][PATCH] new byteorder primitives - ..._{replace,get}_bits() |
| |
On Wed, Dec 13, 2017 at 02:22:12PM +0000, Al Viro wrote:
> Next question: where do we put that bunch? I've put it into > linux/byteorder/generic.h, so that anything picking fixed-endian primitives > would pick those as well; I hadn't thought of linux/bitfield.h at the time. > We certainly could put it there instead - it's never pulled by other headers, > so adding #include <asm/byteorder.h> into linux/bitfield.h is not going to > cause header order problems. Not sure... > > Linus, do you have any preferences in that area?
After looking at some of the callers of bitfield.h stuff: it might be useful to add
static inline void le64p_replace_bits(__le64 *p, u64 v, u64 mask) { __le64 m = cpu_to_le64(mask); *p = (*p & ~m) | (cpu_to_le64(v * mask_to_multiplier(mask)) & m); }
and similar for other types. Not sure what would be a good name for host-endian variants - u64p_replace_bits() sounds a bit clumsy. Suggestions?
| |