Skip to content

Commit

Permalink
Add logging of user/sys times for evaluated .tcl
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelortmann committed May 5, 2024
1 parent f726ba8 commit 7c0df73
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 10 deletions.
12 changes: 11 additions & 1 deletion src/cmds.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/

#include <sys/resource.h>
#include "main.h"
#include "tandem.h"
#include "modules.h"
Expand Down Expand Up @@ -2834,6 +2835,8 @@ static void cmd_page(struct userrec *u, int idx, char *par)
*/
static void cmd_tcl(struct userrec *u, int idx, char *msg)
{
struct rusage ru1, ru2;
int r = 0;
int code;
char *result;
Tcl_DString dstr;
Expand All @@ -2842,8 +2845,15 @@ static void cmd_tcl(struct userrec *u, int idx, char *msg)
dprintf(idx, "%s", MISC_NOSUCHCMD);
return;
}
debug1("tcl: evaluate (.tcl): %s", msg);
debug1("tcl: evaluating .tcl %s", msg);
r = getrusage(RUSAGE_SELF, &ru1);
code = Tcl_GlobalEval(interp, msg);
if (!r && !getrusage(RUSAGE_SELF, &ru2))
debug3("tcl: evaluated .tcl %s, user %.3fms sys %.3fms", msg,
(double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 +
(double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000,
(double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 +
(double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000);

/* properly convert string to system encoding. */
Tcl_DStringInit(&dstr);
Expand Down
15 changes: 6 additions & 9 deletions src/tclhash.c
Original file line number Diff line number Diff line change
Expand Up @@ -744,15 +744,12 @@ static int trigger_bind(const char *proc, const char *param, char *mask)
r = getrusage(RUSAGE_SELF, &ru1);
}
x = Tcl_VarEval(interp, proc, param, NULL);
if (proc && proc[0] != '*' && !r) {
if (!getrusage(RUSAGE_SELF, &ru2)) {
debug3("triggered bind %s, user %.3fms sys %.3fms", proc,
(double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 +
(double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000,
(double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 +
(double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000);
}
}
if (proc && proc[0] != '*' && !r && !getrusage(RUSAGE_SELF, &ru2))
debug3("triggered bind %s, user %.3fms sys %.3fms", proc,
(double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 +
(double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000,
(double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 +
(double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000);

if (x == TCL_ERROR) {
/* FIXME: we really should be able to log longer errors */
Expand Down

0 comments on commit 7c0df73

Please sign in to comment.