summaryrefslogtreecommitdiff
path: root/source3/utils/smbcontrol.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/utils/smbcontrol.c')
-rw-r--r--source3/utils/smbcontrol.c22
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);