The Pedigree Project
0.1
src
system
include
pedigree
kernel
utilities
ExtensibleBitmap.h
1
/*
2
* Copyright (c) 2008-2014, Pedigree Developers
3
*
4
* Please see the CONTRIB file in the root of the source tree for a full
5
* list of contributors.
6
*
7
* Permission to use, copy, modify, and distribute this software for any
8
* purpose with or without fee is hereby granted, provided that the above
9
* copyright notice and this permission notice appear in all copies.
10
*
11
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
*/
19
20
#ifndef EXTENSIBLE_BITMAP_H
21
#define EXTENSIBLE_BITMAP_H
22
23
#include "pedigree/kernel/compiler.h"
24
#include "pedigree/kernel/processor/types.h"
25
32
class
EXPORTED_PUBLIC
ExtensibleBitmap
{
33
friend
class
CacheMemoryTestPeer;
34
35
public
:
37
ExtensibleBitmap
();
39
ExtensibleBitmap
(
const
ExtensibleBitmap
& other);
41
~ExtensibleBitmap
();
42
44
ExtensibleBitmap
& operator=(
const
ExtensibleBitmap
& other);
45
46
//
47
// Public interface.
48
//
50
void
set(
size_t
n);
52
void
clear(
size_t
n);
54
bool
test(
size_t
n)
const
;
56
inline
size_t
getFirstSet
()
const
{
57
return
m_nFirstSetBit;
58
}
60
inline
size_t
getFirstClear
() {
61
while
(test(m_nFirstClearBit)) {
62
m_nFirstClearBit++;
63
}
64
return
m_nFirstClearBit;
65
}
67
inline
size_t
getLastSet
()
const
{
68
return
m_nLastSetBit;
69
}
71
inline
size_t
getLastClear
()
const
{
72
return
m_nLastClearBit;
73
}
74
75
private
:
78
uintptr_t
m_StaticMap
;
79
81
uint8_t*
m_pDynamicMap
;
82
84
size_t
m_DynamicMapSize
;
85
87
size_t
m_nMaxBit
;
88
90
size_t
m_nFirstSetBit
;
91
size_t
m_nFirstClearBit;
92
size_t
m_nLastSetBit;
93
size_t
m_nLastClearBit;
94
};
95
96
#endif
ExtensibleBitmap
Definition
ExtensibleBitmap.h:32
ExtensibleBitmap::getLastClear
size_t getLastClear() const
Definition
ExtensibleBitmap.h:71
ExtensibleBitmap::m_StaticMap
uintptr_t m_StaticMap
Definition
ExtensibleBitmap.h:78
ExtensibleBitmap::getFirstSet
size_t getFirstSet() const
Definition
ExtensibleBitmap.h:56
ExtensibleBitmap::m_DynamicMapSize
size_t m_DynamicMapSize
Definition
ExtensibleBitmap.h:84
ExtensibleBitmap::m_nFirstSetBit
size_t m_nFirstSetBit
Definition
ExtensibleBitmap.h:90
ExtensibleBitmap::m_pDynamicMap
uint8_t * m_pDynamicMap
Definition
ExtensibleBitmap.h:81
ExtensibleBitmap::getFirstClear
size_t getFirstClear()
Definition
ExtensibleBitmap.h:60
ExtensibleBitmap::getLastSet
size_t getLastSet() const
Definition
ExtensibleBitmap.h:67
ExtensibleBitmap::m_nMaxBit
size_t m_nMaxBit
Definition
ExtensibleBitmap.h:87
Generated on Thu Sep 24 2026 06:24:02 for The Pedigree Project by
1.9.8