Commit fbf3de98 authored by Han-Wen Nienhuys's avatar Han-Wen Nienhuys

Godoc style in bufferpool.go.

parent 3c5cacc1
...@@ -9,9 +9,9 @@ import ( ...@@ -9,9 +9,9 @@ import (
var _ = log.Println var _ = log.Println
// This implements a pool of buffers that returns slices with capacity // BufferPool implements a pool of buffers that returns slices with
// (2^e * PAGESIZE) for e=0,1,... which have possibly been used, and // capacity (2^e * PAGESIZE) for e=0,1,... which have possibly been
// may contain random contents. // used, and may contain random contents.
type BufferPool struct { type BufferPool struct {
lock sync.Mutex lock sync.Mutex
...@@ -26,7 +26,7 @@ type BufferPool struct { ...@@ -26,7 +26,7 @@ type BufferPool struct {
createdBuffers int createdBuffers int
} }
// Returns the smallest E such that 2^E >= Z. // IntToExponent the smallest E such that 2^E >= Z.
func IntToExponent(z int) uint { func IntToExponent(z int) uint {
x := z x := z
var exp uint = 0 var exp uint = 0
...@@ -80,6 +80,8 @@ func (me *BufferPool) addBuffer(slice []byte, exp uint) { ...@@ -80,6 +80,8 @@ func (me *BufferPool) addBuffer(slice []byte, exp uint) {
me.buffersByExponent[exp] = append(me.buffersByExponent[exp], slice) me.buffersByExponent[exp] = append(me.buffersByExponent[exp], slice)
} }
// AllocBuffer creates a buffer of at least the given size. After use,
// it should be deallocated with FreeBuffer().
func (me *BufferPool) AllocBuffer(size uint32) []byte { func (me *BufferPool) AllocBuffer(size uint32) []byte {
sz := int(size) sz := int(size)
if sz < PAGESIZE { if sz < PAGESIZE {
...@@ -114,8 +116,9 @@ func (me *BufferPool) AllocBuffer(size uint32) []byte { ...@@ -114,8 +116,9 @@ func (me *BufferPool) AllocBuffer(size uint32) []byte {
return b return b
} }
// Takes back a buffer if it was allocated through AllocBuffer. It is // FreeBuffer takes back a buffer if it was allocated through
// not an error to call FreeBuffer() on a slice obtained elsewhere. // AllocBuffer. It is not an error to call FreeBuffer() on a slice
// obtained elsewhere.
func (me *BufferPool) FreeBuffer(slice []byte) { func (me *BufferPool) FreeBuffer(slice []byte) {
if cap(slice) < PAGESIZE { if cap(slice) < PAGESIZE {
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment