Thread (26 messages) 26 messages, 3 authors, 2017-12-15

Re: [RFC][PATCH] Add primitives for manipulating bitfields both in host- and fixed-endian.

flat view

From: Jakub Kicinski <hidden>
Date: 2017-12-15 05:07:24
Also in: lkml

Looks great to me!

On Fri, 15 Dec 2017 02:33:43 +0000, Al Viro wrote:
The following primitives are defined in linux/bitfield.h:

* u32 le32_get_bits(__le32 val, u32 field) extracts the contents of the
  bitfield specified by @field in little-endian 32bit value @val and
  converts it to host-endian.

* void le32p_replace_bits(__le32 *p, u32 v, u32 field) replaces
  the contents of the bitfield specified by @field in little-endian
  32bit object pointet to by *p with the value of @v.  New value is
  given in host-endian and stored as little-endian.

* __le32 le32_replace_bits(__le32 old, u32 v, u32 field) is equivalent to
  ({__le32 tmp = old; le32p_replace_bits(&old, v, field); tmp;})
  In other words, instead of modifying an object in memory, it takes
  the initial value and returns the modified one.
the current macros take filed/mask as first param, not sure if it's
worth maintaining the order
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help