HomeFreeBSD

linuxkpi: Accept NULL as a value in `linux_xarray`

Description

linuxkpi: Accept NULL as a value in linux_xarray

Linux' XArray allows to store a NULL pointer as a value. xa_load()
would return NULL for both an unused index and an index set to NULL. But
it impacts xa_alloc() which needs to find the next available index.

However, our implementation relies on a radix tree (see linux_radix.c)
which does not accept NULL pointers as values. I'm not sure if this is a
limitation or a feature, so to work around this, a NULL value is
replaced by NULL_VALUE, an unlikely address, when we pass it to
linux_radix.

Reviewed by: emaste, manu
Approved by: emaste, manu
Differential Revision: https://reviews.freebsd.org/D38543

(cherry picked from commit 3102ea3b15b6c3ed1ea50716d65980b680375ebc)

Details

Provenance
dumbbellAuthored on Feb 11 2023, 10:12 AM
Reviewer
emaste
Differential Revision
D38543: linuxkpi: Accept NULL as a value in `linux_xarray`
Parents
rG708dc3db0417: linuxkpi: Define `cpu_data(cpu)`
Branches
Unknown
Tags
Unknown