Files
gvisor/pkg/buffer/BUILD
T
Ting-Yu Wang c0f21bb19a pkg/buffer: Reorganize internal structure to allow dynamic sizes.
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
2020-09-22 17:56:40 -07:00

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",
],
)