diff options
author | Ben Johnson <benbjohnson@yahoo.com> | 2014-01-29 22:50:29 -0500 |
---|---|---|
committer | Ben Johnson <benbjohnson@yahoo.com> | 2014-01-29 22:50:29 -0500 |
commit | 4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9 (patch) | |
tree | c6769f8d479d6ec8d04fc2a2128e5a6ccd243b26 /page.go | |
parent | Refactor meta.copy() and page.init(). (diff) | |
download | dedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.gz dedo-4ad445aa8546d19a9bb9a34a5d3c27cd5a158fd9.tar.xz |
Add freelist page type.
Diffstat (limited to 'page.go')
-rw-r--r-- | page.go | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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] +} |