<?xml version="1.0" standalone="yes"?>
<csim_hw_file>
CGUIformatVersion 1.880000


DEFINE_DEVICE_TYPE:  TEST_RESUME_WPARAM
 DOCUMENTATION:
  /*************************************************/
  /* This device tests the RESUME_WITH_PARAM()     */
  /* function.  It generates several "potential"   */
  /* "wakers" who are scheduled to resume at       */
  /* various times, - each being uniquely          */
  /* identified by an integer.  Upon waking, the   */
  /* awoken thread will identify the resumer.      */
  /* Expected result is:  2, 1, 3, 5, 4.	   */
  /*************************************************/
 END_DOCUMENTATION.

  /* Local shared variables. */
  SYNCHRON *A;

  DEFINE_THREAD:   start_up
   {
    char *msg;

    A = NEW_SYNCHRON();

    TRIGGER_THREAD( waker,  9.0, "1" );
    TRIGGER_THREAD( waker,  7.0, "2" );
    TRIGGER_THREAD( waker, 19.0, "3" );
    TRIGGER_THREAD( waker, 29.0, "4" );
    TRIGGER_THREAD( waker, 25.0, "5" );

    while (1)
     {
      msg = (char *)WAIT( &A, NONQUEUABLE );
      csim_printf("Awoke with %s\n", msg );
     }
   }
  END_DEFINE_THREAD.


  DEFINE_THREAD:   waker
   {
    RESUME_WITH_PARAM( &A, NONQUEUABLE, (void *)THREAD_VAR );
   }
  END_DEFINE_THREAD.

END_DEFINE_DEVICE_TYPE.




<DEFINE_MODULE>  top_level <top_diagram> </top_diagram>

  <DEFINE_NODE_INSTANCES>
	<ins 1> new  =  TEST_RESUME_WPARAM	
	  <vrt> 1.200000 1.400000  8.600000 7.200000 </vrt> </ins>
  </DEFINE_NODE_INSTANCES>

  <DEFINE_TOPOLOGY>
  </DEFINE_TOPOLOGY>

</DEFINE_MODULE>

</csim_hw_file>
