This is pretty cool ! Do you know how i can try compile for RISC?
One possible issue below: > /* The IPv6 flow label is in the lower 20 bits of the first 32-bit word. > */ > diff --git a/lib/unaligned.h b/lib/unaligned.h > index 2654a27..154eb13 100644 > --- a/lib/unaligned.h > +++ b/lib/unaligned.h > @@ -175,6 +175,21 @@ put_unaligned_u64(uint64_t *p, uint64_t x) > } > > /* Returns the value in 'x'. */ > +static inline uint32_t > +get_16aligned_u32(const ovs_16aligned_u32 *x) > +{ > + return ((uint32_t) x->hi << 16) | x->lo; > +} > + > +/* Stores 'value' in 'x'. */ > +static inline void > +put_16aligned_u32(ovs_16aligned_u32 *x, uint32_t value) > +{ > + x->hi = value >> 16; > + x->lo = value; > +} > + > +/* Returns the value in 'x'. */ > static inline uint64_t > get_32aligned_u64(const ovs_32aligned_u64 *x) > { > @@ -191,6 +206,30 @@ put_32aligned_u64(ovs_32aligned_u64 *x, uint64_t > value) > > Why don't we differentiate big/small endian here for "put_16aligned_u32()"? And why do we differentiate big/small endian here for "put_16aligned_be32()"? Isn't be32 already big endian? #ifndef __CHECKER__ > /* Returns the value of 'x'. */ > +static inline ovs_be32 > +get_16aligned_be32(const ovs_16aligned_be32 *x) > +{ > +#ifdef WORDS_BIGENDIAN > + return ((ovs_be32) x->hi << 16) | x->lo; > +#else > + return ((ovs_be32) x->lo << 16) | x->hi; > +#endif > +} > + > +/* Stores network byte order 'value' into 'x'. */ > +static inline void > +put_16aligned_be32(ovs_16aligned_be32 *x, ovs_be32 value) > +{ > +#if WORDS_BIGENDIAN > + x->hi = value >> 16; > + x->lo = value; > +#else > + x->hi = value; > + x->lo = value >> 16; > +#endif > +} > + > +/* Returns the value of 'x'. */ > static inline ovs_be64 > get_32aligned_be64(const ovs_32aligned_be64 *x) > { > @@ -216,6 +255,8 @@ put_32aligned_be64(ovs_32aligned_be64 *x, ovs_be64 > value) > #else /* __CHECKER__ */ > /* Making sparse happy with these functions also makes them unreadable, so > * don't bother to show it their implementations. */ > +ovs_be32 get_16aligned_be32(const ovs_16aligned_be32 *); > +void put_16aligned_be32(ovs_16aligned_be32 *, ovs_be32); > ovs_be64 get_32aligned_be64(const ovs_32aligned_be64 *); > void put_32aligned_be64(ovs_32aligned_be64 *, ovs_be64); > #endif > -- > 1.7.10.4 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev >
_______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev