Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linuxkpi/common/include/linux/log2.h
Show All 22 Lines | |||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
* | * | ||||
* $FreeBSD$ | * $FreeBSD$ | ||||
*/ | */ | ||||
#ifndef _LINUX_LOG2_H_ | #ifndef _LINUXKPI_LINUX_LOG2_H_ | ||||
#define _LINUX_LOG2_H_ | #define _LINUXKPI_LINUX_LOG2_H_ | ||||
#include <linux/types.h> | #include <linux/types.h> | ||||
#include <sys/libkern.h> | #include <sys/libkern.h> | ||||
static inline unsigned long | static inline unsigned long | ||||
roundup_pow_of_two(unsigned long x) | roundup_pow_of_two(unsigned long x) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 82 Lines • ▼ Show 20 Lines | __builtin_constant_p(n) ? ( \ | ||||
(n) & (1ULL << 0) ? 0 : \ | (n) & (1ULL << 0) ? 0 : \ | ||||
-1) : \ | -1) : \ | ||||
(sizeof(n) <= 4) ? \ | (sizeof(n) <= 4) ? \ | ||||
fls((u32)(n)) - 1 : flsll((u64)(n)) - 1 \ | fls((u32)(n)) - 1 : flsll((u64)(n)) - 1 \ | ||||
) | ) | ||||
#define order_base_2(x) ilog2(roundup_pow_of_two(x)) | #define order_base_2(x) ilog2(roundup_pow_of_two(x)) | ||||
#endif /* _LINUX_LOG2_H_ */ | #endif /* _LINUXKPI_LINUX_LOG2_H_ */ |