openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

defragment.h (1406B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * Routines for defragmenting member tables.
      8  */
      9 
     10 #ifndef _SOC_DEFRAGMENT_H
     11 #define _SOC_DEFRAGMENT_H
     12 
     13 typedef struct soc_defragment_block_s {
     14     int base_ptr; /* Starting entry index of the block */
     15     int size;     /* Number of entries in the block */
     16     int group;    /* The group this block belongs to */
     17 } soc_defragment_block_t;
     18 
     19 typedef struct soc_defragment_member_op_s {
     20     int (*member_copy) (int unit, int src_index, int dst_index);
     21     int (*member_clear) (int unit, int index);
     22 } soc_defragment_member_op_t;
     23 
     24 typedef struct soc_defragment_group_op_s {
     25     int (*group_base_ptr_update) (int unit, int group, int base_ptr);
     26 } soc_defragment_group_op_t;
     27 
     28 extern int soc_defragment(int unit, int block_count,
     29         soc_defragment_block_t *block_array,
     30         soc_defragment_block_t *reserved_block,
     31         int member_table_size,
     32         soc_defragment_member_op_t *member_op,
     33         soc_defragment_group_op_t *group_op,
     34         int free_block_base_ptr);
     35 extern int soc_defragment_block_move(int unit, int src_base_ptr,
     36     int dst_base_ptr, int block_size, soc_defragment_member_op_t *member_op,
     37     int group, soc_defragment_group_op_t *group_op);
     38 #endif /* !_SOC_DEFRAGMENT_H */