MCPcopy
hub / github.com/google/gvisor / writeFrame

Method writeFrame

pkg/sentry/socket/netstack/packetmmap/ring_buffer.go:166–183  ·  view source on GitHub ↗

writeFrame writes a frame to the ring buffer's internal mappings at the provided frame number.

(frameNum uint32, hdrView *buffer.View, pkt buffer.Buffer)

Source from the content-addressed store, hash-verified

164// writeFrame writes a frame to the ring buffer's internal mappings at the
165// provided frame number.
166func (rb *ringBuffer) writeFrame(frameNum uint32, hdrView *buffer.View, pkt buffer.Buffer) error {
167 rb.mu.Lock()
168 defer rb.mu.Unlock()
169 ims, err := rb.internalMappingsForFrame(frameNum, hostarch.Write)
170 if err != nil {
171 return err
172 }
173 frame := buffer.MakeWithView(hdrView)
174 frame.Merge(&pkt)
175 br := frame.AsBufferReader()
176 defer br.Close()
177
178 rdr := safemem.FromIOReader{Reader: &br}
179 if _, err = rdr.ReadToBlocks(ims); err != nil {
180 return err
181 }
182 return nil
183}
184
185// incHead increments the head of the ring buffer.
186//

Callers 1

HandlePacketMethod · 0.80

Calls 8

ReadToBlocksMethod · 0.95
MakeWithViewFunction · 0.92
AsBufferReaderMethod · 0.80
LockMethod · 0.65
UnlockMethod · 0.65
MergeMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected