Use more standard types for manipulating pointers.

- Use a uintptr_t cast to get the virtual address of a pointer in
  USB_P2U() instead of a ptrdiff_t.

- Add offsets to a char * pointer directly without roundtripping the
  pointer through a ptrdiff_t in USB_ADD_BYTES().

Reviewed by:	imp, hselasky
Obtained from:	CheriBSD
Sponsored by:	DARPA
Differential Revision:	https://reviews.freebsd.org/D27581
This commit is contained in:
John Baldwin 2020-12-16 00:27:28 +00:00
parent aa54c24283
commit 3ab53b27e3

View File

@ -58,11 +58,11 @@
/* helper for converting pointers to integers */
#define USB_P2U(ptr) \
(((const uint8_t *)(ptr)) - ((const uint8_t *)0))
((uintptr_t)(ptr))
/* helper for computing offsets */
#define USB_ADD_BYTES(ptr,size) \
((void *)(USB_P2U(ptr) + (size)))
((void *)(__DECONST(char *, (ptr)) + (size)))
/* debug macro */
#define USB_ASSERT KASSERT