LCOV - code coverage report
Current view: top level - vppinfra - mem.c (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 35 36 97.2 %
Date: 2023-10-26 01:39:38 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2020 Cisco and/or its affiliates.
       3             :  * Licensed under the Apache License, Version 2.0 (the "License");
       4             :  * you may not use this file except in compliance with the License.
       5             :  * You may obtain a copy of the License at:
       6             :  *
       7             :  *     http://www.apache.org/licenses/LICENSE-2.0
       8             :  *
       9             :  * Unless required by applicable law or agreed to in writing, software
      10             :  * distributed under the License is distributed on an "AS IS" BASIS,
      11             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      12             :  * See the License for the specific language governing permissions and
      13             :  * limitations under the License.
      14             :  */
      15             : 
      16             : #include <vppinfra/clib.h>
      17             : #include <vppinfra/mem.h>
      18             : #include <vppinfra/time.h>
      19             : #include <vppinfra/format.h>
      20             : #include <vppinfra/clib_error.h>
      21             : 
      22             : __clib_export clib_mem_main_t clib_mem_main;
      23             : 
      24             : __clib_export void *
      25         211 : clib_mem_vm_map (void *base, uword size, clib_mem_page_sz_t log2_page_sz,
      26             :                  char *fmt, ...)
      27             : {
      28             :   va_list va;
      29             :   void *rv;
      30             :   u8 *s;
      31             : 
      32         211 :   va_start (va, fmt);
      33         211 :   s = va_format (0, fmt, &va);
      34         211 :   vec_add1 (s, 0);
      35         211 :   rv = clib_mem_vm_map_internal (base, log2_page_sz, size, -1, 0, (char *) s);
      36         211 :   va_end (va);
      37         211 :   vec_free (s);
      38         211 :   return rv;
      39             : }
      40             : 
      41             : __clib_export void *
      42       28242 : clib_mem_vm_map_stack (uword size, clib_mem_page_sz_t log2_page_sz,
      43             :                        char *fmt, ...)
      44             : {
      45             :   va_list va;
      46             :   void *rv;
      47             :   u8 *s;
      48             : 
      49       28242 :   va_start (va, fmt);
      50       28242 :   s = va_format (0, fmt, &va);
      51       28242 :   vec_add1 (s, 0);
      52       28242 :   rv = clib_mem_vm_map_internal (0, log2_page_sz, size, -1, 0, (char *) s);
      53       28242 :   va_end (va);
      54       28242 :   vec_free (s);
      55       28242 :   return rv;
      56             : }
      57             : 
      58             : __clib_export void *
      59         784 : clib_mem_vm_map_shared (void *base, uword size, int fd, uword offset,
      60             :                         char *fmt, ...)
      61             : {
      62             :   va_list va;
      63             :   void *rv;
      64             :   u8 *s;
      65         784 :   va_start (va, fmt);
      66         784 :   s = va_format (0, fmt, &va);
      67         784 :   vec_add1 (s, 0);
      68         784 :   rv = clib_mem_vm_map_internal (base, 0, size, fd, offset, (char *) s);
      69         784 :   va_end (va);
      70         784 :   vec_free (s);
      71         784 :   return rv;
      72             : }
      73             : 
      74             : u8 *
      75         850 : format_clib_mem_page_stats (u8 * s, va_list * va)
      76             : {
      77         850 :   clib_mem_page_stats_t *stats = va_arg (*va, clib_mem_page_stats_t *);
      78         850 :   u32 indent = format_get_indent (s) + 2;
      79             : 
      80         850 :   s = format (s, "page stats: page-size %U, total %lu, mapped %lu, "
      81         850 :               "not-mapped %lu", format_log2_page_size, stats->log2_page_sz,
      82             :               stats->total, stats->mapped, stats->not_mapped);
      83             : 
      84         850 :   if (stats->unknown)
      85           0 :     s = format (s, ", unknown %lu", stats->unknown);
      86             : 
      87       14450 :   for (int i = 0; i < CLIB_MAX_NUMAS; i++)
      88       13600 :     if (stats->per_numa[i])
      89         850 :       s = format (s, "\n%Unuma %u: %lu pages, %U bytes",
      90             :                   format_white_space, indent, i,
      91             :                   stats->per_numa[i],
      92             :                   format_memory_size,
      93         850 :                   stats->per_numa[i] << stats->log2_page_sz);
      94             : 
      95         850 :   return s;
      96             : }
      97             : 
      98             : /*
      99             :  * fd.io coding-style-patch-verification: ON
     100             :  *
     101             :  * Local Variables:
     102             :  * eval: (c-set-style "gnu")
     103             :  * End:
     104             :  */

Generated by: LCOV version 1.14