aboutsummaryrefslogtreecommitdiff
path: root/page.go
diff options
context:
space:
mode:
Diffstat (limited to 'page.go')
-rw-r--r--page.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/page.go b/page.go
index d45d336..12d1cee 100644
--- a/page.go
+++ b/page.go
@@ -11,9 +11,10 @@ const minKeysPerPage = 2
const maxNodesPerPage = 65535
const (
- p_branch = 0x01
- p_leaf = 0x02
- p_meta = 0x04
+ p_branch = 0x01
+ p_leaf = 0x02
+ p_meta = 0x04
+ p_freelist = 0x08
)
type pgid uint64
@@ -40,3 +41,8 @@ func (p *page) lnode(index int) *lnode {
func (p *page) bnode(index int) *bnode {
return &((*[maxNodesPerPage]bnode)(unsafe.Pointer(&p.ptr)))[index]
}
+
+// freelist retrieves a list of page ids from a freelist page.
+func (p *page) freelist() []pgid {
+ return ((*[maxNodesPerPage]pgid)(unsafe.Pointer(&p.ptr)))[0:p.count]
+}