diff options
Diffstat (limited to 'source3/utils/smbcontrol.c')
-rw-r--r-- | source3/utils/smbcontrol.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c index 44b18d57cd..ec4f41cad6 100644 --- a/source3/utils/smbcontrol.c +++ b/source3/utils/smbcontrol.c @@ -43,6 +43,7 @@ static const struct { {"dmalloc-log-changed", MSG_REQ_DMALLOC_LOG_CHANGED }, {"shutdown", MSG_SHUTDOWN }, {"drvupgrade", MSG_PRINTER_DRVUPGRADE}, + {"tallocdump", MSG_REQ_TALLOC_USAGE}, {NULL, -1} }; @@ -175,7 +176,7 @@ void profilelevel_function(int msg_type, pid_t src, void *buf, size_t len) **/ static void pool_usage_cb(int msg_type, pid_t src_pid, void *buf, size_t len) { - printf("Got POOL_USAGE reply from pid %u:\n%.*s", + printf("Got POOL_USAGE reply from pid%u:\n%.*s", (unsigned int) src_pid, (int) len, (const char *) buf); } @@ -362,6 +363,25 @@ static BOOL do_command(char *dest, char *msg_name, int iparams, char **params) } break; + case MSG_REQ_TALLOC_USAGE: + if (!poolusage_registered) { + message_register(MSG_TALLOC_USAGE, tallocdump_function); + poolusage_registered = True; + } + got_pool = False; + retval = send_message(dest, MSG_REQ_TALLOC_USAGE, NULL, 0, True); + if (retval) { + timeout_start = time(NULL); + while (!got_pool) { + message_dispatch(); + if ((time(NULL) - timeout_start) > MAX_WAIT) { + fprintf(stderr,"tallocdump timeout\n"); + break; + } + } + } + break; + case MSG_REQ_DEBUGLEVEL: if (!debuglevel_registered) { message_register(MSG_DEBUGLEVEL, debuglevel_function); |