diff options
| author | riastradh <riastradh@NetBSD.org> | 2021-12-19 11:51:07 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2021-12-19 11:51:07 +0000 |
| commit | bbdbe46ed83b6d8f8135684ff4be338b246fca73 (patch) | |
| tree | 8b42dce096e447379b737bc34e4ddf3ebe870a01 /sys/external/bsd/drm2/include/linux/xarray.h | |
| parent | 0643055931e04a6eb351ab466dd5a6727222edef (diff) | |
linux: Draft half-arsed xarray shims
Diffstat (limited to 'sys/external/bsd/drm2/include/linux/xarray.h')
| -rw-r--r-- | sys/external/bsd/drm2/include/linux/xarray.h | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/sys/external/bsd/drm2/include/linux/xarray.h b/sys/external/bsd/drm2/include/linux/xarray.h index e9268b23882..c3c7da29480 100644 --- a/sys/external/bsd/drm2/include/linux/xarray.h +++ b/sys/external/bsd/drm2/include/linux/xarray.h @@ -1,4 +1,4 @@ -/* $NetBSD: xarray.h,v 1.7 2021/12/19 11:50:47 riastradh Exp $ */ +/* $NetBSD: xarray.h,v 1.8 2021/12/19 11:51:07 riastradh Exp $ */ /*- * Copyright (c) 2020 The NetBSD Foundation, Inc. @@ -36,22 +36,34 @@ struct xarray; struct xa_limit; +struct xa_limit { + uint32_t max; + uint32_t min; +}; + struct xarray { kmutex_t xa_lock; struct radix_tree xa_tree; gfp_t xa_gfp; }; -struct xa_limit { - uint32_t max; - uint32_t min; -}; - #define xa_for_each(XA, INDEX, ENTRY) \ - for ((INDEX) = 0, (ENTRY) = xa_find((XA), &(INDEX), ULONG_MAX, 0); \ + for ((INDEX) = 0, (ENTRY) = xa_find((XA), &(INDEX), ULONG_MAX, -1); \ (ENTRY) != NULL; \ (ENTRY) = xa_find_after((XA), &(INDEX), ULONG_MAX, 0)) +#define XA_ERROR(error) ((void *)(((uintptr_t)error << 2) | 2)) + +static inline int +xa_err(void *cookie) +{ + + if (((uintptr_t)cookie & 3) != 2) + return 0; + + return (uintptr_t)cookie >> 2; +} + #define XA_FLAGS_ALLOC 0 #define xa_alloc linux_xa_alloc |
