mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
c0f21bb19a
This change changes `buffer.data` into a `[]byte`, from `[bufferSize]byte`. In exchange, each `buffer` is now grouped together to reduce the number of allocation. Plus, `View` now holds an embeded list of `buffer` (via `pool`) to support the happy path which the number of buffer is small. Expect no extra allocation for the happy path. It is to enable the use case for PacketBuffer, which * each `View` is small (way less than `defaultBufferSize`), and * needs to dynamically transfer ownership of `[]byte` to `View`. (to allow gradual migration) PiperOrigin-RevId: 333197252
51 lines
985 B
Python
51 lines
985 B
Python
load("//tools:defs.bzl", "go_library", "go_test")
|
|
load("//tools/go_generics:defs.bzl", "go_template_instance")
|
|
|
|
package(licenses = ["notice"])
|
|
|
|
go_template_instance(
|
|
name = "buffer_list",
|
|
out = "buffer_list.go",
|
|
package = "buffer",
|
|
prefix = "buffer",
|
|
template = "//pkg/ilist:generic_list",
|
|
types = {
|
|
"Element": "*buffer",
|
|
"Linker": "*buffer",
|
|
},
|
|
)
|
|
|
|
go_library(
|
|
name = "buffer",
|
|
srcs = [
|
|
"buffer.go",
|
|
"buffer_list.go",
|
|
"pool.go",
|
|
"safemem.go",
|
|
"view.go",
|
|
"view_unsafe.go",
|
|
],
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
"//pkg/context",
|
|
"//pkg/log",
|
|
"//pkg/safemem",
|
|
"//pkg/usermem",
|
|
],
|
|
)
|
|
|
|
go_test(
|
|
name = "buffer_test",
|
|
size = "small",
|
|
srcs = [
|
|
"pool_test.go",
|
|
"safemem_test.go",
|
|
"view_test.go",
|
|
],
|
|
library = ":buffer",
|
|
deps = [
|
|
"//pkg/safemem",
|
|
"//pkg/state",
|
|
],
|
|
)
|