[ovs-dev] [PATCH 7/8] lib/dynamic-string: add a coverage counter for reloated bytes
Andy Zhou
azhou at nicira.com
Wed Aug 12 00:55:13 UTC 2015
Keep a count of bytes moved due to the realloc() call.
Signed-off-by: Andy Zhou <azhou at nicira.com>
---
lib/dynamic-string.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/dynamic-string.c b/lib/dynamic-string.c
index a6c8f6c..89ead08 100644
--- a/lib/dynamic-string.c
+++ b/lib/dynamic-string.c
@@ -15,6 +15,7 @@
*/
#include <config.h>
+#include "coverage.h"
#include "dynamic-string.h"
#include <inttypes.h>
#include <stdlib.h>
@@ -23,6 +24,8 @@
#include "timeval.h"
#include "util.h"
+COVERAGE_DEFINE(ds_bytes_relocated);
+
/* Initializes 'ds' as an empty string buffer. */
void
ds_init(struct ds *ds)
@@ -58,9 +61,15 @@ void
ds_reserve(struct ds *ds, size_t min_length)
{
if (min_length > ds->allocated || !ds->string) {
+ char *string_ = ds->string;
+ size_t size_ = ds->allocated;
+
ds->allocated += MAX(min_length, ds->allocated);
ds->allocated = MAX(8, ds->allocated);
ds->string = xrealloc(ds->string, ds->allocated + 1);
+ if (string_ && (string_ != ds->string)) {
+ COVERAGE_ADD(ds_bytes_relocated, size_);
+ }
}
}
--
1.9.1
More information about the dev
mailing list