Blame acct-6.6.2-hz.patch

Bernhard M. Wiedemann a7c934
Subject: acct-hz.patch
Bernhard M. Wiedemann a7c934
Bernhard M. Wiedemann a7c934
---
Bernhard M. Wiedemann a7c934
 lastcomm.c |   14 +++++++++++++-
Bernhard M. Wiedemann a7c934
 sa.c       |   14 +++++++++++++-
Bernhard M. Wiedemann a7c934
 2 files changed, 26 insertions(+), 2 deletions(-)
Bernhard M. Wiedemann a7c934
Bernhard M. Wiedemann a7c934
Index: lastcomm.c
Bernhard M. Wiedemann a7c934
===================================================================
Bernhard M. Wiedemann a7c934
--- lastcomm.c.orig
Bernhard M. Wiedemann a7c934
+++ lastcomm.c
Bernhard M. Wiedemann a7c934
@@ -71,7 +71,7 @@ int debugging_enabled = 0;	/* Nonzero me
Bernhard M. Wiedemann a7c934
 int strict_match_flag = 0;	/* Nonzero if each record has to match
Bernhard M. Wiedemann a7c934
 				   all items on the command line */
Bernhard M. Wiedemann a7c934
 int print_controls = 0;		/* don't print control characters */
Bernhard M. Wiedemann a7c934
-int ahz = AHZ;			/* for viewing logs from another system */
Bernhard M. Wiedemann a7c934
+int ahz = 0; 			/* for viewing logs from another system */
Bernhard M. Wiedemann a7c934
 
Bernhard M. Wiedemann a7c934
 char *program_name;		/* name of the program, for usage & errs */
Bernhard M. Wiedemann a7c934
 
Bernhard M. Wiedemann a7c934
@@ -328,6 +328,14 @@ void parse_entries(void)
Bernhard M. Wiedemann a7c934
           print_pacct_record (rec, stddebug);
Bernhard M. Wiedemann a7c934
         }
Bernhard M. Wiedemann a7c934
 
Bernhard M. Wiedemann a7c934
+      if (!ahz) // if this is the first cycle run, ahz is not set yet
Bernhard M. Wiedemann a7c934
+      {
Bernhard M. Wiedemann a7c934
+        if (rec->ac_version == 3)
Bernhard M. Wiedemann a7c934
+          ahz = 100; // value AHZ = 100 is hardcoded in acct.h, but in #ifdef __KERNEL__ block. too bad
Bernhard M. Wiedemann a7c934
+        else
Bernhard M. Wiedemann a7c934
+          ahz = sysconf(_SC_CLK_TCK);
Bernhard M. Wiedemann a7c934
+      }
Bernhard M. Wiedemann a7c934
+
Bernhard M. Wiedemann a7c934
       if (desired_entry (this_uid, this_dev, rec->ac_comm))
Bernhard M. Wiedemann a7c934
         {
Bernhard M. Wiedemann a7c934
           double ut = ACUTIME_2_DOUBLE (rec->ac_utime);
Bernhard M. Wiedemann a7c934
Index: sa.c
Bernhard M. Wiedemann a7c934
===================================================================
Bernhard M. Wiedemann a7c934
--- sa.c.orig
Bernhard M. Wiedemann a7c934
+++ sa.c
Bernhard M. Wiedemann a7c934
@@ -191,7 +191,7 @@ int print_users = 0;
Bernhard M. Wiedemann a7c934
 int percentages = 0;		/* include percentages in printout */
Bernhard M. Wiedemann a7c934
 int user_summary_flag = 0;	/* are we printing a user summary? */
Bernhard M. Wiedemann a7c934
 int group_summary_flag = 0;	/* are we printing a group summary? */
Bernhard M. Wiedemann a7c934
-int ahz = AHZ;			/* for viewing logs from another system */
Bernhard M. Wiedemann a7c934
+int ahz = 0;			/* for viewing logs from another system */
Bernhard M. Wiedemann a7c934
 
Bernhard M. Wiedemann a7c934
 
Bernhard M. Wiedemann a7c934
 #if defined(HAVE_ACUTIME) && defined(HAVE_ACSTIME)
Bernhard M. Wiedemann a7c934
@@ -1180,6 +1180,18 @@ void parse_acct_entries (void)
Bernhard M. Wiedemann a7c934
   /* loop while there are entries to be had */
Bernhard M. Wiedemann a7c934
   while ((rec = pacct_get_entry ()) != NULL)
Bernhard M. Wiedemann a7c934
     {
Bernhard M. Wiedemann a7c934
+      if (!ahz) // if this is the first cycle run, ahz is not set yet
Bernhard M. Wiedemann a7c934
+      {
Bernhard M. Wiedemann a7c934
+        if (rec->ac_version == 3)
Bernhard M. Wiedemann a7c934
+          ahz = 100; // value AHZ = 100 is hardcoded in acct.h, but in #ifdef __KERNEL__ block. too bad
Bernhard M. Wiedemann a7c934
+        else
Bernhard M. Wiedemann a7c934
+          ahz = sysconf(_SC_CLK_TCK);
Bernhard M. Wiedemann a7c934
+
Bernhard M. Wiedemann a7c934
+        if (debugging_enabled)
Bernhard M. Wiedemann a7c934
+          {
Bernhard M. Wiedemann a7c934
+            fprintf (stddebug, "AHZ -> %d\n", ahz);
Bernhard M. Wiedemann a7c934
+          }
Bernhard M. Wiedemann a7c934
+      }
Bernhard M. Wiedemann a7c934
 #ifdef HAVE_ACUTIME
Bernhard M. Wiedemann a7c934
       double ut = comp_t_2_double (rec->ac_utime) / CURR_AHZ;
Bernhard M. Wiedemann a7c934
 #endif