# Manual browser: powerof2(9)

ROUNDUP(9) | Kernel Developer's Manual | ROUNDUP(9) |

# NAME

**roundup**— macros for counting and rounding

# SYNOPSIS

**#include <sys/param.h>**

*size*

**howmany**(*x*, *size*);

*size*

**roundup**(*x*, *size*);

*size*

**rounddown**(*x*, *size*);

*size*

**roundup2**(*x*, *size*);

*int*

**powerof2**(*x*);

# DESCRIPTION

The**roundup**() and

**rounddown**() macros return an integer from rounding

*x*up and down, respectively, to the next

*size*. The

**howmany**() macro in turn reveals how many times

*size*fits into

*x*, rounding the residual up.

The **roundup2**() macro also rounds up, but with the assumption that *size* is a power of two. If *x* is indeed a power of two, **powerof2**() return 1.

# RETURN VALUES

The return value is an integer from the respective operation. If*x*is 0, all macros except

**powerof2**() return 0. The behavior is undefined if

*size*is 0.

# EXAMPLES

The following example rounds the variable**rx**to a 32-bit boundary:

uint16_t rx; ... rx = roundup2(rx, sizeof(uint32_t));

# CAVEATS

All described macros make no assumptions about the type of the parameters. These are implicitly assumed to be unsigned integers.June 1, 2011 | NetBSD 7.0 |