This is the mail archive of the frysk@sources.redhat.com mailing list for the frysk project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: proposed refactoring of LinuxIA32


On Wed, Jul 05, 2006 at 07:50:21PM +0200, Tim Moore wrote:
> Hi,
> I've started looking at supporting x86_64 in frysk. To that end I 
> propose refactoring Isa, LinuxIA32 and friends. I've turned Isa into an 
> interface implemented by IsaIA32 and IsaEMT64. There's also a new 
> interface, SyscallEventDecoder, that just returns a SyscallEventInfo 
> object. Then e.g., LinuxIA32 extends IsaIA32 and implements 
> SyscallEventDecoder. Comments welcome on this code...
> 
> Tim
Hi, Tim,
Sorry for delayed reply!

The code looks good to me, and there is two points I want discuss
with here.

1) In your code, you refactor Isa as an interface, and IsaIA32, IsaEMT64
implement it, Isa could not be instantiated, but instance of Isa is
needed in Task and LinuxTask, so it is better to refactor Isa as
an super class, and IsaIA32, IsaEMT64 inherit it.  Task and LinuxTask
could get registers, byte orders via isa without concerning what exactly
isa is.

2) Assuming IsaIA32, IsaEMT64 work OK, the next problem is which class
among the set of subclasses(IsaIA32, IsaEMT64, etc.) of the parent
class(Isa) is to be selected, and what is the criteria to select.
IMO, it is reasonable and flexible to read ELF headers of
/proc/<pid>/exe as the criteria to select sub class, and I coded a
Class named IsaFactory, get e_machine from ELF header as the criteria.

Some other discussions about this issues could be found 
http://sourceware.org/bugzilla/show_bug.cgi?id=2458

Any comments are welcome!

-- 
Yao Qi


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]