buffer: simplify storage of the header.

geesefs-0-30-9
Aaron Jacobs 2016-12-19 13:06:39 +11:00
parent d1ff915b0b
commit 0cd689f560
1 changed files with 2 additions and 14 deletions

View File

@ -36,22 +36,10 @@ type OutMessage struct {
// The offset into payload to which we're currently writing.
payloadOffset int
header [OutMessageHeaderSize]byte
header fusekernel.OutHeader
payload [MaxReadSize]byte
}
// Make sure that the header field is aligned correctly for
// fusekernel.OutHeader type punning.
func init() {
a := unsafe.Alignof(OutMessage{})
o := unsafe.Offsetof(OutMessage{}.header)
e := unsafe.Alignof(fusekernel.OutHeader{})
if a%e != 0 || o%e != 0 {
log.Panicf("Bad alignment or offset: %d, %d, need %d", a, o, e)
}
}
// Make sure that the header and payload are contiguous.
func init() {
a := unsafe.Offsetof(OutMessage{}.header) + uintptr(OutMessageHeaderSize)
@ -73,7 +61,7 @@ func (m *OutMessage) Reset() {
// OutHeader returns a pointer to the header at the start of the message.
func (m *OutMessage) OutHeader() *fusekernel.OutHeader {
return (*fusekernel.OutHeader)(unsafe.Pointer(&m.header))
return &m.header
}
// Grow grows m's buffer by the given number of bytes, returning a pointer to