---
name: "bitmap_remap"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/bitmap_remap"
---

# bitmap\_remap(9)

Apply map defined by a pair of bitmaps to another bitmap

## NAME

bitmap\_remap - Apply map defined by a pair of bitmaps to another bitmap

## SYNOPSIS

**void bitmap\_remap(unsigned long \*** *dst***, const unsigned long \*** *src***, const unsigned long \*** *old***, const unsigned long \*** *new***, unsigned int** *nbits***);**

## ARGUMENTS

*dst*

remapped result

*src*

subset to be remapped

*old*

defines domain of map

*new*

defines range of map

*nbits*

number of bits in each of these bitmaps

## DESCRIPTION

Let *old* and *new* define a mapping of bit positions, such that whatever position is held by the n-th set bit in *old* is mapped to the n-th set bit in *new*. In the more general case, allowing for the possibility that the weight 'w' of *new* is less than the weight of *old*, map the position of the n-th set bit in *old* to the position of the m-th set bit in *new*, where m == n % w.

If either of the *old* and *new* bitmaps are empty, or if *src* and *dst* point to the same location, then this routine copies *src* to *dst*.

The positions of unset bits in *old* are mapped to themselves (the identify map).

Apply the above specified mapping to *src*, placing the result in *dst*, clearing any bits previously set in *dst*.

For example, lets say that *old* has bits 4 through 7 set, and *new* has bits 12 through 15 set. This defines the mapping of bit position 4 to 12, 5 to 13, 6 to 14 and 7 to 15, and of all other bit positions unchanged. So if say *src* comes into this routine with bits 1, 5 and 7 set, then *dst* should leave with bits 1, 13 and 15 set.

## COPYRIGHT
