mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-29 05:12:59 +01:00
Add a new rps_tag_ptr type to encode a pointer and a size to a power-of-two table. Three helpers are added converting an rps_tag_ptr to: 1) A log of the size. 2) A mask : (size - 1). 3) A pointer to the array. Signed-off-by: Eric Dumazet <[email protected]> Reviewed-by: Kuniyuki Iwashima <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
25 lines
548 B
C
25 lines
548 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
#ifndef _NET_RPS_TYPES_H
|
|
#define _NET_RPS_TYPES_H
|
|
|
|
/* Define a rps_tag_ptr:
|
|
* Low order 5 bits are used to store the ilog2(size) of an RPS table.
|
|
*/
|
|
typedef unsigned long rps_tag_ptr;
|
|
|
|
static inline u8 rps_tag_to_log(rps_tag_ptr tag_ptr)
|
|
{
|
|
return tag_ptr & 31U;
|
|
}
|
|
|
|
static inline u32 rps_tag_to_mask(rps_tag_ptr tag_ptr)
|
|
{
|
|
return (1U << rps_tag_to_log(tag_ptr)) - 1;
|
|
}
|
|
|
|
static inline void *rps_tag_to_table(rps_tag_ptr tag_ptr)
|
|
{
|
|
return (void *)(tag_ptr & ~31UL);
|
|
}
|
|
#endif /* _NET_RPS_TYPES_H */
|