BOOL do_profile_times = False;
/****************************************************************************
-receive a set profile level message
+Set a profiling level.
****************************************************************************/
-void profile_message(int msg_type, struct process_id src,
- void *buf, size_t len, void *private_data)
+void set_profile_level(int level, struct process_id src)
{
- int level;
-
- memcpy(&level, buf, sizeof(int));
#ifdef WITH_PROFILE
switch (level) {
case 0: /* turn off profiling */
#endif /* WITH_PROFILE */
}
+/****************************************************************************
+receive a set profile level message
+****************************************************************************/
+void profile_message(int msg_type, struct process_id src, void *buf, size_t len, void *private_data)
+{
+ int level;
+
+ memcpy(&level, buf, sizeof(int));
+ set_profile_level(level, src);
+}
+
/****************************************************************************
receive a request profile level message
****************************************************************************/
static BOOL no_process_group = False;
static BOOL log_stdout = False;
static char *ports = NULL;
+ static char *profile_level = NULL;
int opt;
poptContext pc;
{"log-stdout", 'S', POPT_ARG_VAL, &log_stdout, True, "Log to stdout" },
{"build-options", 'b', POPT_ARG_NONE, NULL, 'b', "Print build options" },
{"port", 'p', POPT_ARG_STRING, &ports, 0, "Listen on the specified ports"},
+ {"profiling-level", 'P', POPT_ARG_STRING, &profile_level, 0, "Set profiling level","PROFILE_LEVEL"},
POPT_COMMON_SAMBA
POPT_COMMON_DYNCONFIG
POPT_TABLEEND
DEBUG(0,("ERROR: failed to setup profiling\n"));
return -1;
}
+ if (profile_level != NULL) {
+ int pl = atoi(profile_level);
+ struct process_id src;
+
+ DEBUG(1, ("setting profiling level: %s\n",profile_level));
+ src.pid = getpid();
+ set_profile_level(pl, src);
+ }
#endif
DEBUG(3,( "loaded services\n"));