Hi,
+/* Load unaligned n-byte integer (little-endian
encoding) into uintXX_t */
+static inline uintXX_t osmo_loadXXle_ext(const uint8_t *p, uint8_t n)
Is "uint8_t *" the right type here ? I would think "void *" to be
better.
When loading from a msgb, sure we get uint8_t * (well unsigned char *
actually, which just happen to match uint8_t on our architecture).
But if you try to load a value from a struct pointer that might not be
aligned, you'll get possibly a int16_t or something and you'll need an
explicit cast. While casting to void * is implicit in C.
like :
struct test {
int8_t foo;
int16_t bar
};
struct test *tp = (struct test *) msgb->data; /* Note that I'm not
especially happy with the explicit cast here either ... data should be
void* imho */
osmo_load16be(&tp->bar);
vs
osmo_load16be((uint8_t*)&tp->bar);
Cheers,
Sylvain