rem: static void prochlp (proc_t *this)
add: static void prochlp (register proc_t *this)
context: static void prochlp (proc_t *this){   static HIST_t   *hist_sav = NULL;   static HIST_t   *hist_new = NULL;   static unsigned  hist_siz = 0;       // number of structs   static unsigned  maxt_sav;           // prior frame's max tasks   int i, lo, hi;   TICS_t tics;   if (!this) {      static struct timeval oldtimev;      struct timeval timev;      struct timezone timez;      HIST_t *hist_tmp;      float et;      gettimeofday(&timev, &timez);      et = (timev.tv_sec - oldtimev.tv_sec)         + (float)(timev.tv_usec - oldtimev.tv_usec) / 1000000.0;      oldtimev.tv_sec = timev.tv_sec;      oldtimev.tv_usec = timev.tv_usec;      // if in Solaris mode, adjust our scaling for all cpus      Frame_tscale = 100.0f / ((float)Hertz * (float)et * (Mode_irixps ? 1 : Cpu_tot));      maxt_sav = Frame_maxtask;      Frame_maxtask = Frame_running = Frame_sleepin = Frame_stopped = Frame_zombied = 0;      // reuse memory each time around      hist_tmp = hist_sav;      hist_sav = hist_new;      hist_new = hist_tmp;      // prep for our binary search by sorting the last frame's HIST_t's      qsort(hist_sav, maxt_sav, sizeof(HIST_t), (QSORT_t)sort_HIST_t);      return;   }   switch (this->state) {      case 'R':         Frame_running++;         break;      case 'S':      case 'D':         Frame_sleepin++;         break;      case 'T':         Frame_stopped++;         break;      case 'Z':         Frame_zombied++;         break;   }   if (Frame_maxtask+1 >= hist_siz) {      hist_siz = hist_siz * 5 / 4 + 100;  // grow by at least 25%      hist_sav = alloc_r(hist_sav, sizeof(HIST_t) * hist_siz);      hist_new = alloc_r(hist_new, sizeof(HIST_t) * hist_siz);   }   /* calculate time in this process; the sum of user time (utime) and      system time (stime) -- but PLEASE dont waste time and effort on      calcs and saves that go unused, like the old top! */   hist_new[Frame_maxtask].pid  = this->pid;   hist_new[Frame_maxtask].tics = tics = (this->utime + this->stime);   // find matching entry from previous frame and make ticks elapsed   lo = 0;   hi = maxt_sav - 1;   while (lo <= hi) {      i = (lo + hi) / 2;      if (this->pid < hist_sav[i].pid)         hi = i - 1;      else if (this->pid > hist_sav[i].pid)         lo = i + 1;      else {         tics -= hist_sav[i].tics;         break;      }   }   /* we're just saving elapsed tics, to be converted into %cpu if      this task wins it's displayable screen row lottery... */   this->pcpu = tics;   // shout this to the world with the final call (or us the next time in)   Frame_maxtask++;}