LCOV - code coverage report
Current view: top level - vlibmemory - memory_api.h (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 11 11 100.0 %
Date: 2023-07-05 22:20:52 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /*
       2             :  *------------------------------------------------------------------
       3             :  * Copyright (c) 2018 Cisco and/or its affiliates.
       4             :  * Licensed under the Apache License, Version 2.0 (the "License");
       5             :  * you may not use this file except in compliance with the License.
       6             :  * You may obtain a copy of the License at:
       7             :  *
       8             :  *     http://www.apache.org/licenses/LICENSE-2.0
       9             :  *
      10             :  * Unless required by applicable law or agreed to in writing, software
      11             :  * distributed under the License is distributed on an "AS IS" BASIS,
      12             :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      13             :  * See the License for the specific language governing permissions and
      14             :  * limitations under the License.
      15             :  *------------------------------------------------------------------
      16             :  */
      17             : 
      18             : #ifndef SRC_VLIBMEMORY_MEMORY_API_H_
      19             : #define SRC_VLIBMEMORY_MEMORY_API_H_
      20             : 
      21             : #include <svm/svm.h>
      22             : #include <svm/ssvm.h>
      23             : #include <svm/queue.h>
      24             : #include <vlib/vlib.h>
      25             : #include <vlibapi/api.h>
      26             : #include <vlibapi/memory_shared.h>
      27             : 
      28             : svm_queue_t *vl_api_client_index_to_input_queue (u32 index);
      29             : int vl_mem_api_init (const char *region_name);
      30             : void vl_mem_api_dead_client_scan (api_main_t * am, vl_shmem_hdr_t * shm,
      31             :                                   f64 now);
      32             : int vl_mem_api_handle_msg_main (vlib_main_t * vm, vlib_node_runtime_t * node);
      33             : int vl_mem_api_handle_msg_private (vlib_main_t * vm,
      34             :                                    vlib_node_runtime_t * node, u32 reg_index);
      35             : int vl_mem_api_handle_rpc (vlib_main_t * vm, vlib_node_runtime_t * node);
      36             : 
      37             : vl_api_registration_t *vl_mem_api_client_index_to_registration (u32 handle);
      38             : void vl_mem_api_enable_disable (vlib_main_t * vm, int yesno);
      39             : u32 vl_api_memclnt_create_internal (char *, svm_queue_t *);
      40             : 
      41             : static inline u32
      42         806 : vl_msg_api_handle_get_epoch (u32 index)
      43             : {
      44         806 :   return (index & VL_API_EPOCH_MASK);
      45             : }
      46             : 
      47             : static inline u32
      48         807 : vl_msg_api_handle_get_index (u32 index)
      49             : {
      50         807 :   return (index >> VL_API_EPOCH_SHIFT);
      51             : }
      52             : 
      53             : static inline u32
      54          62 : vl_msg_api_handle_from_index_and_epoch (u32 index, u32 epoch)
      55             : {
      56             :   u32 handle;
      57          62 :   ASSERT (index < 0x00FFFFFF);
      58             : 
      59          62 :   handle = (index << VL_API_EPOCH_SHIFT) | (epoch & VL_API_EPOCH_MASK);
      60          62 :   return handle;
      61             : }
      62             : 
      63             : static inline u8
      64         759 : vl_msg_api_handle_is_valid (u32 handle, u32 restarts)
      65             : {
      66         759 :   u32 epoch = vl_msg_api_handle_get_epoch (handle);
      67         759 :   return ((restarts & VL_API_EPOCH_MASK) == epoch);
      68             : }
      69             : 
      70             : #define VL_MEM_API_LOG_Q_LEN(fmt, qlen)                                       \
      71             :   if (TRACE_VLIB_MEMORY_QUEUE)                                                \
      72             :     do                                                                        \
      73             :       {                                                                       \
      74             :         ELOG_TYPE_DECLARE (e) = {                                             \
      75             :           .format = fmt,                                                      \
      76             :           .format_args = "i4",                                                \
      77             :         };                                                                    \
      78             :         struct                                                                \
      79             :         {                                                                     \
      80             :           u32 len;                                                            \
      81             :         } * ed;                                                               \
      82             :         ed = ELOG_DATA (&vlib_global_main.elog_main, e);                      \
      83             :         ed->len = qlen;                                                       \
      84             :       }                                                                       \
      85             :   while (0)
      86             : 
      87             : #endif /* SRC_VLIBMEMORY_MEMORY_API_H_ */
      88             : 
      89             : /*
      90             :  * fd.io coding-style-patch-verification: ON
      91             :  *
      92             :  * Local Variables:
      93             :  * eval: (c-set-style "gnu")
      94             :  * End:
      95             :  */

Generated by: LCOV version 1.14