92e3082199
This fixes two leaks in registering errors in the stats segment.
- The error name created by vlib_register_errors() was not freed.
- Duplicate error names (when interface readded) was added to the vector.
This fix also adds memory usage statistics for the statistics segment
as /mem/statseg/{used, total}
Change-Id: Ife98d5fc5baef5bdae426a5a1eef428af2b9ab8a
Type: fix
Signed-off-by: Ole Troan <ot@cisco.com>
62 lines
1.6 KiB
C
62 lines
1.6 KiB
C
/*
|
|
* Copyright (c) 2019 Cisco and/or its affiliates.
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/*
|
|
* NOTE: Only include this file from external components that require
|
|
* a loose coupling to the stats component.
|
|
*/
|
|
|
|
#ifndef included_stat_weak_inlines_h
|
|
#define included_stat_weak_inlines_h
|
|
void *vlib_stats_push_heap (void *) __attribute__ ((weak));
|
|
void *
|
|
vlib_stats_push_heap (void *unused)
|
|
{
|
|
return 0;
|
|
};
|
|
|
|
void vlib_stats_pop_heap (void *, void *, u32, int) __attribute__ ((weak));
|
|
void
|
|
vlib_stats_pop_heap (void *notused, void *notused2, u32 i, int type)
|
|
{
|
|
};
|
|
void vlib_stats_register_error_index (void *, u8 *, u64 *, u64)
|
|
__attribute__ ((weak));
|
|
void
|
|
vlib_stats_register_error_index (void * notused, u8 * notused2, u64 * notused3, u64 notused4)
|
|
{
|
|
};
|
|
|
|
void vlib_stats_pop_heap2 (void *, u32, void *, int) __attribute__ ((weak));
|
|
void
|
|
vlib_stats_pop_heap2 (void *notused, u32 notused2, void *notused3,
|
|
int notused4)
|
|
{
|
|
};
|
|
|
|
void vlib_stat_segment_lock (void) __attribute__ ((weak));
|
|
void
|
|
vlib_stat_segment_lock (void)
|
|
{
|
|
}
|
|
|
|
void vlib_stat_segment_unlock (void) __attribute__ ((weak));
|
|
void
|
|
vlib_stat_segment_unlock (void)
|
|
{
|
|
}
|
|
|
|
#endif
|