home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_08_12 / 8n12077b < prev    next >
Text File  |  1990-08-29  |  630b  |  25 lines

  1. /* receiver.c - Receiver task for synchronous communication */
  2.  
  3. #define SYNC 0
  4.  
  5. static handler Sync(msg_t *msg_ptr) {
  6.     register task_t caller = msg_ptr->srcTid;
  7.     register task_t self   = msg_ptr->dstTid;
  8.  
  9.     /* interrupt caller.Reply */
  10.     msg_ptr->srcTid = self;
  11.     msg_ptr->dstTid = caller;
  12.     msg_ptr->dstHid = 0; /* caller's REPLY handler id = 0 */
  13.     msg_ptr->type   = msg_type_SYNC;
  14.     task_interrupt(&msg);
  15. }
  16.  
  17. task Receiver(void) {
  18.     task_setHandler(1, Sync); /* this task has one handler called Sync */
  19.  
  20.     loop {
  21.         /* wait on Sync */
  22.         task_enableWait(1, SYNC);
  23.     }
  24. }
  25.