From 4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Wed, 29 Jan 2014 22:50:29 -0500 Subject: Add freelist page type. --- page.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'page.go') 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] +} -- cgit v1.2.3