diff options
author | Volker Lendecke <vl@samba.org> | 2015-02-10 22:17:44 +0100 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2015-02-13 23:32:07 +0100 |
commit | 8bc5b7369d2a2106ca9e0774cf9c95068968602b (patch) | |
tree | 5226ef2db9b009919d174e3b20183b3c54e85f0d /source3/lib/tallocmsg.c | |
parent | 35189ec68174cbf14218ca90d4bec0f6598b5f32 (diff) | |
download | samba-8bc5b7369d2a2106ca9e0774cf9c95068968602b.tar.gz samba-8bc5b7369d2a2106ca9e0774cf9c95068968602b.tar.xz samba-8bc5b7369d2a2106ca9e0774cf9c95068968602b.zip |
lib: Use talloc_report_str
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/lib/tallocmsg.c')
-rw-r--r-- | source3/lib/tallocmsg.c | 84 |
1 files changed, 8 insertions, 76 deletions
diff --git a/source3/lib/tallocmsg.c b/source3/lib/tallocmsg.c index 9a0ce8ada1..18b16edfc8 100644 --- a/source3/lib/tallocmsg.c +++ b/source3/lib/tallocmsg.c @@ -18,65 +18,7 @@ #include "includes.h" #include "messages.h" - -/** - * @file tallocmsg.c - * - * Glue code between talloc profiling and the Samba messaging system. - **/ - -struct msg_pool_usage_state { - TALLOC_CTX *mem_ctx; - ssize_t len; - size_t buflen; - char *s; -}; - -static void msg_pool_usage_helper(const void *ptr, int depth, int max_depth, int is_ref, void *_s) -{ - const char *name = talloc_get_name(ptr); - struct msg_pool_usage_state *state = (struct msg_pool_usage_state *)_s; - - if (is_ref) { - sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen, - "%*sreference to: %s\n", depth*4, "", name); - return; - } - - if (depth == 0) { - sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen, - "%stalloc report on '%s' (total %6lu bytes in %3lu blocks)\n", - (max_depth < 0 ? "full " :""), name, - (unsigned long)talloc_total_size(ptr), - (unsigned long)talloc_total_blocks(ptr)); - return; - } - - if (strcmp(name, "char") == 0) { - /* - * Print out the first 50 bytes of the string - */ - sprintf_append(state->mem_ctx, &state->s, &state->len, - &state->buflen, - "%*s%-30s contains %6lu bytes in %3lu blocks " - "(ref %d): %*s\n", depth*4, "", - name, - (unsigned long)talloc_total_size(ptr), - (unsigned long)talloc_total_blocks(ptr), - talloc_reference_count(ptr), - MIN(50, talloc_get_size(ptr)), - (const char *)ptr); - return; - } - - sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen, - "%*s%-30s contains %6lu bytes in %3lu blocks (ref %d)\n", - depth*4, "", - name, - (unsigned long)talloc_total_size(ptr), - (unsigned long)talloc_total_blocks(ptr), - talloc_reference_count(ptr)); -} +#include "lib/util/talloc_report.h" /** * Respond to a POOL_USAGE message by sending back string form of memory @@ -88,31 +30,21 @@ static void msg_pool_usage(struct messaging_context *msg_ctx, struct server_id src, DATA_BLOB *data) { - struct msg_pool_usage_state state; + char *report; SMB_ASSERT(msg_type == MSG_REQ_POOL_USAGE); DEBUG(2,("Got POOL_USAGE\n")); - state.mem_ctx = talloc_init("msg_pool_usage"); - if (!state.mem_ctx) { - return; - } - state.len = 0; - state.buflen = 512; - state.s = NULL; - - talloc_report_depth_cb(NULL, 0, -1, msg_pool_usage_helper, &state); + report = talloc_report_str(msg_ctx, NULL); - if (!state.s) { - talloc_destroy(state.mem_ctx); - return; + if (report != NULL) { + messaging_send_buf(msg_ctx, src, MSG_POOL_USAGE, + (uint8_t *)report, + talloc_get_size(report)-1); } - messaging_send_buf(msg_ctx, src, MSG_POOL_USAGE, - (uint8 *)state.s, strlen(state.s)+1); - - talloc_destroy(state.mem_ctx); + talloc_free(report); } /** |