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 
(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, 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:13:51 2010
This archive was generated by hypermail 2.1.8 : Fri Jul 23 2010 - 07:13:55 PDT