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 */