Bisnupriya,
Let me check that I have understood you correctly, because it was not quite the answer I expected.
Consider the following sequence:
- A process is suspended while it has certain dynamic sensitivity.
- While suspended, a notification occurs on its dynamic sensitivity
- The process is then reset while still suspended
- It comes to rest on a wait(10, SC_NS)
- The time-out occurs, but the process is still suspended
- It is reset again, still suspended
- It comes to rest on a wait(ev)
- The process is the target of a resume() call, but the event ev has not been notified
You are saying that the process will NOT run? Effectively, each call to reset() wipes the slate clean?
Thanks,
John A
-----Bishnupriya Bhattacharya <bpriya@cadence.com> wrote: -----
To: "john.aynsley@doulos.com" <john.aynsley@doulos.com>, "systemc-p1666-technical@eda.org" <systemc-p1666-technical@eda.org>
From: Bishnupriya Bhattacharya <bpriya@cadence.com>
Date: 09/20/2010 07:22AM
Subject: RE: suspend and reset
    
John, 
  
A very good test case. 
  
Yes, the call to resume() would have to track the different  effective sensitivites, such that when the resume() call does happen, it  will only trigger the process with the latest effective sensntivity, and the  previous effective sensitivites will have no effect on the process  triggering. 
  
It would be fantastic if all the corner case sitn. that you  have come up with so far could be provided as part of a test  suite for the process control constructs - it would be extremely valuable.   
  
Thanks, 
-Bishnupriya 
  
   
From:  john.aynsley@doulos.com [mailto:john.aynsley@doulos.com] 
Sent:  Friday, September 17, 2010 6:23 PM
To: Bishnupriya Bhattacharya;  systemc-p1666-technical@eda.org
Subject: suspend and  reset
    
Bisnupriya, All, 
More corner cases... 
Suppose a process is reset while it is suspended, or    even the more extreme case where a process is reset several times while    suspended and each time comes to rest at at different wait call with a    different dynamic sensitivity list. What happens on the call to resume? Is the    implementation obliged to track whether the process would have been resumed    (while in fact suspended) through all the changes to the dynamic    sensitivity? 
e.g.    
void my_thread () { 
   if (state) 
      wait (something); 
  else 
     wait (something_else) 
  for (;;) { 
    wait (...); 
    ... 
     } 
... 
handle.suspend(); 
... 
handle.reset();    
... 
handle.reset(); 
...    
handle.resume(); 
John A
-- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Mon Sep 20 12:17:37 2010
This archive was generated by hypermail 2.1.8 : Mon Sep 20 2010 - 12:17:43 PDT