idr: Add idr_alloc_u32 helper
authorMatthew Wilcox <mawilcox@microsoft.com>
Tue, 28 Nov 2017 15:14:27 +0000 (10:14 -0500)
committerMatthew Wilcox <mawilcox@microsoft.com>
Tue, 6 Feb 2018 21:40:32 +0000 (16:40 -0500)
commite096f6a762bc54d0e5d44ba8b196e70b58e04367
tree7565cca4a67e46001abbf0125501acf4e39a4a3c
parent322d884ba731e05ca79ae58e9dee1ef7dc4de504
idr: Add idr_alloc_u32 helper

All current users of idr_alloc_ext() actually want to allocate a u32
and idr_alloc_u32() fits their needs better.

Like idr_get_next(), it uses a 'nextid' argument which serves as both
a pointer to the start ID and the assigned ID (instead of a separate
minimum and pointer-to-assigned-ID argument).  It uses a 'max' argument
rather than 'end' because the semantics that idr_alloc has for 'end'
don't work well for unsigned types.

Since idr_alloc_u32() returns an errno instead of the allocated ID, mark
it as __must_check to help callers use it correctly.  Include copious
kernel-doc.  Chris Mi <chrism@mellanox.com> has promised to contribute
test-cases for idr_alloc_u32.

Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
include/linux/idr.h
lib/idr.c