OutMessage.Append
parent
75e2706a4b
commit
bb88db68e0
|
@ -15,7 +15,9 @@
|
||||||
package buffer
|
package buffer
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
"reflect"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/jacobsa/fuse/internal/fusekernel"
|
"github.com/jacobsa/fuse/internal/fusekernel"
|
||||||
|
@ -87,8 +89,16 @@ func (b *OutMessage) GrowNoZero(size uintptr) (p unsafe.Pointer) {
|
||||||
|
|
||||||
// Equivalent to growing by the length of p, then copying p over the new
|
// Equivalent to growing by the length of p, then copying p over the new
|
||||||
// segment. Panics if there is not enough room available.
|
// segment. Panics if there is not enough room available.
|
||||||
func (b *OutMessage) Append(p []byte) {
|
func (b *OutMessage) Append(src []byte) {
|
||||||
panic("TODO")
|
p := b.GrowNoZero(uintptr(len(src)))
|
||||||
|
if p == nil {
|
||||||
|
panic(fmt.Sprintf("Can't grow %d bytes", len(src)))
|
||||||
|
}
|
||||||
|
|
||||||
|
sh := (*reflect.SliceHeader)(unsafe.Pointer(&src))
|
||||||
|
memmove(p, unsafe.Pointer(sh.Data), uintptr(sh.Len))
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Equivalent to growing by the length of s, then copying s over the new
|
// Equivalent to growing by the length of s, then copying s over the new
|
||||||
|
|
|
@ -20,3 +20,8 @@ import "unsafe"
|
||||||
|
|
||||||
// Zero the n bytes starting at p.
|
// Zero the n bytes starting at p.
|
||||||
func memclr(p unsafe.Pointer, n uintptr)
|
func memclr(p unsafe.Pointer, n uintptr)
|
||||||
|
|
||||||
|
//go:noescape
|
||||||
|
|
||||||
|
// Copy from src to dst, allowing overlap.
|
||||||
|
func memmove(dst unsafe.Pointer, src unsafe.Pointer, n uintptr)
|
||||||
|
|
|
@ -31,3 +31,6 @@
|
||||||
|
|
||||||
TEXT ·memclr(SB),NOSPLIT,$0-16
|
TEXT ·memclr(SB),NOSPLIT,$0-16
|
||||||
JMP runtime·memclr(SB)
|
JMP runtime·memclr(SB)
|
||||||
|
|
||||||
|
TEXT ·memmove(SB),NOSPLIT,$0-24
|
||||||
|
JMP runtime·memmove(SB)
|
||||||
|
|
Loading…
Reference in New Issue