gvisor.dev/gvisor@v0.0.0-20240520182842-f9d4d51c7e0f/pkg/sentry/mm/BUILD (about) 1 load("//pkg/sync/locking:locking.bzl", "declare_mutex", "declare_rwmutex") 2 load("//tools:defs.bzl", "go_library", "go_test") 3 load("//tools/go_generics:defs.bzl", "go_template_instance") 4 5 package( 6 default_applicable_licenses = ["//:license"], 7 licenses = ["notice"], 8 ) 9 10 declare_mutex( 11 name = "aio_context_mutex", 12 out = "aio_context_mutex.go", 13 package = "mm", 14 prefix = "aioContext", 15 ) 16 17 declare_mutex( 18 name = "aio_manager_mutex", 19 out = "aio_manager_mutex.go", 20 package = "mm", 21 prefix = "aioManager", 22 ) 23 24 declare_rwmutex( 25 name = "mapping_mutex", 26 out = "mapping_mutex.go", 27 package = "mm", 28 prefix = "mapping", 29 ) 30 31 declare_rwmutex( 32 name = "active_mutex", 33 out = "active_mutex.go", 34 nested_lock_names = ["forked"], 35 package = "mm", 36 prefix = "active", 37 ) 38 39 declare_mutex( 40 name = "metadata_mutex", 41 out = "metadata_mutex.go", 42 package = "mm", 43 prefix = "metadata", 44 ) 45 46 go_template_instance( 47 name = "vma_set", 48 out = "vma_set.go", 49 consts = { 50 "minDegree": "8", 51 "trackGaps": "1", 52 }, 53 imports = { 54 "hostarch": "gvisor.dev/gvisor/pkg/hostarch", 55 }, 56 package = "mm", 57 prefix = "vma", 58 template = "//pkg/segment:generic_set", 59 types = { 60 "Key": "hostarch.Addr", 61 "Range": "hostarch.AddrRange", 62 "Value": "vma", 63 "Functions": "vmaSetFunctions", 64 }, 65 ) 66 67 go_template_instance( 68 name = "pma_set", 69 out = "pma_set.go", 70 consts = { 71 "minDegree": "8", 72 }, 73 imports = { 74 "hostarch": "gvisor.dev/gvisor/pkg/hostarch", 75 }, 76 package = "mm", 77 prefix = "pma", 78 template = "//pkg/segment:generic_set", 79 types = { 80 "Key": "hostarch.Addr", 81 "Range": "hostarch.AddrRange", 82 "Value": "pma", 83 "Functions": "pmaSetFunctions", 84 }, 85 ) 86 87 go_template_instance( 88 name = "io_list", 89 out = "io_list.go", 90 package = "mm", 91 prefix = "io", 92 template = "//pkg/ilist:generic_list", 93 types = { 94 "Element": "*ioResult", 95 "Linker": "*ioResult", 96 }, 97 ) 98 99 go_template_instance( 100 name = "aio_mappable_refs", 101 out = "aio_mappable_refs.go", 102 package = "mm", 103 prefix = "aioMappable", 104 template = "//pkg/refs:refs_template", 105 types = { 106 "T": "aioMappable", 107 }, 108 ) 109 110 go_template_instance( 111 name = "special_mappable_refs", 112 out = "special_mappable_refs.go", 113 package = "mm", 114 prefix = "SpecialMappable", 115 template = "//pkg/refs:refs_template", 116 types = { 117 "T": "SpecialMappable", 118 }, 119 ) 120 121 go_library( 122 name = "mm", 123 srcs = [ 124 "active_mutex.go", 125 "address_space.go", 126 "aio_context.go", 127 "aio_context_mutex.go", 128 "aio_context_state.go", 129 "aio_manager_mutex.go", 130 "aio_mappable_refs.go", 131 "debug.go", 132 "io.go", 133 "io_list.go", 134 "lifecycle.go", 135 "mapping_mutex.go", 136 "metadata.go", 137 "metadata_mutex.go", 138 "mm.go", 139 "pma.go", 140 "pma_set.go", 141 "procfs.go", 142 "save_restore.go", 143 "shm.go", 144 "special_mappable.go", 145 "special_mappable_refs.go", 146 "syscalls.go", 147 "vma.go", 148 "vma_set.go", 149 ], 150 visibility = ["//pkg/sentry:internal"], 151 deps = [ 152 "//pkg/abi/linux", 153 "//pkg/atomicbitops", 154 "//pkg/context", 155 "//pkg/errors/linuxerr", 156 "//pkg/hostarch", 157 "//pkg/log", 158 "//pkg/refs", 159 "//pkg/safecopy", 160 "//pkg/safemem", 161 "//pkg/sentry/arch", 162 "//pkg/sentry/kernel/auth", 163 "//pkg/sentry/kernel/futex", 164 "//pkg/sentry/kernel/shm", 165 "//pkg/sentry/limits", 166 "//pkg/sentry/memmap", 167 "//pkg/sentry/pgalloc", 168 "//pkg/sentry/platform", 169 "//pkg/sentry/usage", 170 "//pkg/sentry/vfs", 171 "//pkg/sync", 172 "//pkg/sync/locking", 173 "//pkg/usermem", 174 ], 175 ) 176 177 go_test( 178 name = "mm_test", 179 size = "small", 180 srcs = ["mm_test.go"], 181 library = ":mm", 182 deps = [ 183 "//pkg/context", 184 "//pkg/errors/linuxerr", 185 "//pkg/hostarch", 186 "//pkg/sentry/arch", 187 "//pkg/sentry/contexttest", 188 "//pkg/sentry/limits", 189 "//pkg/sentry/memmap", 190 "//pkg/sentry/pgalloc", 191 "//pkg/sentry/platform", 192 "//pkg/usermem", 193 ], 194 )