Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Apr 2020 00:09:48 +0300
From:      Yuri Pankov <ypankov@fastmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   "most interesting" process in w(1)
Message-ID:  <b43e40b2-c2a0-cf55-a932-ab2e0cefdcdb@fastmail.com>

next in thread | raw e-mail | index | archive | help
Looking at how w(1) finds "most interesting" process for terminal, I 
noticed the following code which looks strange to me (usr.bin/w/w.c, 
line 360 in HEAD)

for (ep = ehead; ep != NULL; ep = ep->next) {
     if (ep->tdev == kp->ki_tdev) {
         /*
          * proc is associated with this terminal
          */
         if (ep->kp == NULL && kp->ki_pgid == kp->ki_tpgid) {
             /*
              * Proc is 'most interesting'
              */
             if (proc_compare(ep->kp, kp))
                 ep->kp = kp;
             ...
         }
     }
}

Given the (ep->kp == NULL) check, proc_compare() becomes no-op, it will 
always select kp, and that's the only place we ever set ep->kp, so the 
first matching process is always "most interesting".  If that's really 
what we want, we could do without the proc_compare() call.  What am I 
missing here?




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b43e40b2-c2a0-cf55-a932-ab2e0cefdcdb>