John,
I like this. Lets go with this solution.
Thanks,
-Bishnupriya
________________________________
From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
Sent: Friday, July 23, 2010 7:43 PM
To: Bishnupriya Bhattacharya
Cc: David C Black; systemc-p1666-technical@eda.org
Subject: RE: reset method
Bishnupriya,
I would prefer to rename sc_kill_exception to sc_unwind_exception to make the name neutral with respect to kill() and reset(), throw the same exception for both, and add a method bool is_reset() that could be tested in a catch block (under exceptional circumstances ;-)
John A
From: Bishnupriya Bhattacharya <bpriya@cadence.com>
To: "john.aynsley@doulos.com" <john.aynsley@doulos.com>
Cc: David C Black <dcblack@xtreme-eda.com>, "systemc-p1666-technical@eda.org" <systemc-p1666-technical@eda.org>
Date: 22/07/2010 20:16
Subject: RE: reset method
________________________________
John,
I think you have a valid use case in mind, and the standard will indeed be cleaner with a way to distinguish between the two.
How best to go about it?
Since the exception is really for stack unwinding, should we have an abstract base class sc_unwind_stack_exception with pure virtual member is_reset(), and have sc_reset_exeception and sc_kill_exception both derive from this base class? Typically, user code won't need to distinguish between kill and reset, and can only catch sc_unwind_stack_exception. Code that wants to distinguish (likely the kernel) can catch the more derived classes.
The alternative of having reset_exception derive from kill_exception or vice versa might be a little confusing/misleading, as neither functionality is a strict subset or superset of the other.
If we wanted to really keep it simple, and not deviate much from the current spec, I think the purpose is also served (perhaps not so elegenatly) by only having the sc_kill_exception class, and giving it a member method "bool is_reset()" that returns false for kill and true for reset.
Thoughts? Is a separate sc_unwind_stack_exception class an overkill? Or an overreset :-)
Thanks,
-Bishnupriya
________________________________
From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
Sent: Thursday, July 22, 2010 10:56 PM
To: Bishnupriya Bhattacharya
Cc: David C Black; systemc-p1666-technical@eda.org
Subject: RE: reset method
Bishnupriya,
Yes, but I don't have any specific agenda here other than creating a clean standard. I have not got any burning issues in mind. I guess that most of the time there would be no reason to distinguish between the two kinds of cleaning up, but I can imagine that a process that was collecting diagnostic information might want to handle it differently for a reset versus a kill, e.g. perhaps retain some diagnostic state information across the reset.
John A
From: Bishnupriya Bhattacharya <bpriya@cadence.com>
To: "john.aynsley@doulos.com" <john.aynsley@doulos.com>, David C Black <dcblack@xtreme-eda.com>, "systemc-p1666-technical@eda.org" <systemc-p1666-technical@eda.org>
Date: 22/07/2010 18:05
Subject: RE: reset method
________________________________
John,
Let me understand your objective better. You want that while a process is being killed/reset, there be some way of telling which is happening? For example, if the process itself catches sc_kill_exception, and wants to do one kind of cleanup or another based on whether it is getting killed or reset. Is that the objective?
Thanks,
-Bishnupriya
________________________________
From: john.aynsley@doulos.com [mailto:john.aynsley@doulos.com]
Sent: Thursday, July 22, 2010 9:14 PM
To: David C Black; Bishnupriya Bhattacharya; systemc-p1666-technical@eda.org
Subject: Re: reset method
Bishnupriya,
It's nice to be able to catch and handle kills and resets, but I don't think it's important enough to justify anything but the simplest mechanism. I would have thought that most of the time kills and resets could be handled in the same way.
I was musing on some other way of telling whether the process had been killed or reset, and method terminated() came to mind, but presumably a killed process would not get terminated until the exception was caught by the kernel, so that's no good.
I am arguing semantics here, but if we have a common exception, that exception does not necessarily terminate the process, because it is being used for both reset() and kill(): reset() does not leave the process terminated. So having class sc_kill_exception: public sc_reset_exception makes more sense to me, with the sc_reset_exception actually doing the work of unwinding the stack. Does that work?
John A
From: David C Black <dcblack@xtreme-eda.com>
To: systemc-p1666-technical@eda.org
Date: 21/07/2010 21:16
Subject: Re: reset method
Sent by: owner-systemc-p1666-technical@eda.org
________________________________
If you're going to throw an exception anyhow, then I would prefer the sc_reset_exception solution over adding another member method.
------------------------------------------------------
David C Black, XtremeEDA ESL Practice Leader
http://www.Xtreme-EDA.com<http://www.xtreme-eda.com/>
(Consulting, Services & Training for all your ESL, verification and DFT needs)
Voice: 512.850.4322 Skype:dcblack FAX: 888.467.4609
On Jul 21, 2010, at 2:49 PM, Bishnupriya Bhattacharya wrote:
John,
Yes reset() throws an sc_kill_exception.
It is a good idea to distinguish reset from kill by using the exception. I suggest a member method in the sc_kill_exception class - "bool reset()" - or perhaps have sc_reet_exception that derives from sc_kill_exception?
WDYT?
Thanks,
-Bishnupriya
-- This message has been scanned for viruses and dangerous content by MailScanner<http://www.mailscanner.info/>, and is believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Fri Jul 23 07:18:13 2010
This archive was generated by hypermail 2.1.8 : Fri Jul 23 2010 - 07:18:14 PDT