Hi Andrew,
On Thu, 2008-02-07 at 10:51 -0500, Andrew Cagney wrote:
I've pushed a low-level change so that frysk.sys's process code uses a
ProcessIdentifier object instead of "int pid"s; there is one
ProcessIdentifier per "pid". The change is slowly working its way
through frysk.proc.live; it won't be taken further.
The motivation is simple, while "int pid" looks small and efficient; it
turns out that the code using it really needed an object (leaking
something like <<new Integer(pid)>>) to either log or hash the pid.
With a proper object both of these cases can be greatly simplified.
I looked of some of the changes here and it looks somewhat inefficient,
and very verbose, because it basically replaces everything that already
has a pid int with a call to ProcessIdentifierFactory.create(pid). A lot
of these int pids seems to come from Proc.getPid(), which in turn is a
wrapper for ProcId.hashCode() where the hashCode() of a ProcId is indeed
the int representation of the pid of the Proc.
So why not just use ProcId as process identifier for a Proc since that
is already bound to a Proc object? Or the other way around and do away
with ProcId and use ProcessIdentifier instead of ProcId. It seems
confusing to now have 3 ways to identify a process int pid, ProcId and
ProcessIdentifier (4 if you also count TaskId since I saw also code like
ProcessIdentifierFactory.create(this.process.getMainTask().getTid())).
Cheers,
Mark