1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
// Automatically generated marshal implementation. See tools/go_marshal.
package fuse
import (
"gvisor.dev/gvisor/pkg/hostarch"
"gvisor.dev/gvisor/pkg/marshal"
"io"
)
// Marshallable types used by this file.
var _ marshal.Marshallable = (*fuseInitRes)(nil)
// Packed implements marshal.Marshallable.Packed.
//go:nosplit
func (r *fuseInitRes) Packed() bool {
// Type fuseInitRes is dynamic so it might have slice/string headers. Hence, it is not packed.
return false
}
// MarshalUnsafe implements marshal.Marshallable.MarshalUnsafe.
func (r *fuseInitRes) MarshalUnsafe(dst []byte) []byte {
// Type fuseInitRes doesn't have a packed layout in memory, fallback to MarshalBytes.
return r.MarshalBytes(dst)
}
// UnmarshalUnsafe implements marshal.Marshallable.UnmarshalUnsafe.
func (r *fuseInitRes) UnmarshalUnsafe(src []byte) []byte {
// Type fuseInitRes doesn't have a packed layout in memory, fallback to UnmarshalBytes.
return r.UnmarshalBytes(src)
}
// CopyOutN implements marshal.Marshallable.CopyOutN.
//go:nosplit
func (r *fuseInitRes) CopyOutN(cc marshal.CopyContext, addr hostarch.Addr, limit int) (int, error) {
// Type fuseInitRes doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := cc.CopyScratchBuffer(r.SizeBytes()) // escapes: okay.
r.MarshalBytes(buf) // escapes: fallback.
return cc.CopyOutBytes(addr, buf[:limit]) // escapes: okay.
}
// CopyOut implements marshal.Marshallable.CopyOut.
func (r *fuseInitRes) CopyOut(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {
return r.CopyOutN(cc, addr, r.SizeBytes())
}
// CopyIn implements marshal.Marshallable.CopyIn.
func (r *fuseInitRes) CopyIn(cc marshal.CopyContext, addr hostarch.Addr) (int, error) {
// Type fuseInitRes doesn't have a packed layout in memory, fall back to UnmarshalBytes.
buf := cc.CopyScratchBuffer(r.SizeBytes()) // escapes: okay.
length, err := cc.CopyInBytes(addr, buf) // escapes: okay.
// Unmarshal unconditionally. If we had a short copy-in, this results in a
// partially unmarshalled struct.
r.UnmarshalBytes(buf) // escapes: fallback.
return length, err
}
// WriteTo implements io.WriterTo.WriteTo.
func (r *fuseInitRes) WriteTo(writer io.Writer) (int64, error) {
// Type fuseInitRes doesn't have a packed layout in memory, fall back to MarshalBytes.
buf := make([]byte, r.SizeBytes())
r.MarshalBytes(buf)
length, err := writer.Write(buf)
return int64(length), err
}
|