Commit 9c16bb88 authored by Matthew Wilcox's avatar Matthew Wilcox

XArray: Turn xa_erase into an exported function

Make xa_erase() take the spinlock and then call __xa_erase(), but make
it out of line since it's such a common function.
Signed-off-by: default avatarMatthew Wilcox <willy@infradead.org>
parent c5beb07e
...@@ -289,6 +289,7 @@ struct xarray { ...@@ -289,6 +289,7 @@ struct xarray {
void xa_init_flags(struct xarray *, gfp_t flags); void xa_init_flags(struct xarray *, gfp_t flags);
void *xa_load(struct xarray *, unsigned long index); void *xa_load(struct xarray *, unsigned long index);
void *xa_store(struct xarray *, unsigned long index, void *entry, gfp_t); void *xa_store(struct xarray *, unsigned long index, void *entry, gfp_t);
void *xa_erase(struct xarray *, unsigned long index);
void *xa_store_range(struct xarray *, unsigned long first, unsigned long last, void *xa_store_range(struct xarray *, unsigned long first, unsigned long last,
void *entry, gfp_t); void *entry, gfp_t);
bool xa_get_mark(struct xarray *, unsigned long index, xa_mark_t); bool xa_get_mark(struct xarray *, unsigned long index, xa_mark_t);
...@@ -340,23 +341,6 @@ static inline bool xa_marked(const struct xarray *xa, xa_mark_t mark) ...@@ -340,23 +341,6 @@ static inline bool xa_marked(const struct xarray *xa, xa_mark_t mark)
return xa->xa_flags & XA_FLAGS_MARK(mark); return xa->xa_flags & XA_FLAGS_MARK(mark);
} }
/**
* xa_erase() - Erase this entry from the XArray.
* @xa: XArray.
* @index: Index of entry.
*
* This function is the equivalent of calling xa_store() with %NULL as
* the third argument. The XArray does not need to allocate memory, so
* the user does not need to provide GFP flags.
*
* Context: Process context. Takes and releases the xa_lock.
* Return: The entry which used to be at this index.
*/
static inline void *xa_erase(struct xarray *xa, unsigned long index)
{
return xa_store(xa, index, NULL, 0);
}
/** /**
* xa_for_each() - Iterate over a portion of an XArray. * xa_for_each() - Iterate over a portion of an XArray.
* @xa: XArray. * @xa: XArray.
......
...@@ -1336,6 +1336,30 @@ void *__xa_erase(struct xarray *xa, unsigned long index) ...@@ -1336,6 +1336,30 @@ void *__xa_erase(struct xarray *xa, unsigned long index)
} }
EXPORT_SYMBOL(__xa_erase); EXPORT_SYMBOL(__xa_erase);
/**
* xa_erase() - Erase this entry from the XArray.
* @xa: XArray.
* @index: Index of entry.
*
* This function is the equivalent of calling xa_store() with %NULL as
* the third argument. The XArray does not need to allocate memory, so
* the user does not need to provide GFP flags.
*
* Context: Any context. Takes and releases the xa_lock.
* Return: The entry which used to be at this index.
*/
void *xa_erase(struct xarray *xa, unsigned long index)
{
void *entry;
xa_lock(xa);
entry = __xa_erase(xa, index);
xa_unlock(xa);
return entry;
}
EXPORT_SYMBOL(xa_erase);
/** /**
* xa_store() - Store this entry in the XArray. * xa_store() - Store this entry in the XArray.
* @xa: XArray. * @xa: XArray.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment