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  )