aboutsummaryrefslogtreecommitdiff
path: root/page.go
diff options
context:
space:
mode:
authorBen Johnson <benbjohnson@yahoo.com>2014-01-29 22:50:29 -0500
committerBen Johnson <benbjohnson@yahoo.com>2014-01-29 22:50:29 -0500
commit4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9 (patch)
treec6769f8d479d6ec8d04fc2a2128e5a6ccd243b26 /page.go
parentRefactor meta.copy() and page.init(). (diff)
downloaddedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.gz
dedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.xz
Add freelist page type.
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]
+}