home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 362_01 / test9.c < prev   
C/C++ Source or Header  |  1991-12-11  |  3KB  |  98 lines

  1. /*****************************************************************************
  2.  *                    test9.c                     *
  3.  *****************************************************************************
  4.  * DESCRIPTION:    Verification routine for the RMAXTask multitasking system.   *
  5.  *                                         *
  6.  *        Simple mailbox check.  Happens to test queueing of message   *
  7.  *        at a mailbox.                             *
  8.  *                                         *
  9.  * REVISIONS:     3 JUL 90 - RAC - Original code                     *
  10.  *****************************************************************************/
  11.  
  12. #include    <dos.h>
  13. #include    <stdio.h>
  14. #include    "\rmaxtask\source\rmaxtask.h"
  15.  
  16. TDESC    *mb_1_2;
  17. TDESC    *mb_2_3;
  18. TDESC    *mb_3_4;
  19. TDESC    *mb_4_5;
  20. TDESC    *mb_5_1;
  21.  
  22. int    break_handler() {
  23.     stop_RMAXTask();                /* Do 'about to die' cleanup */
  24.     printf("\nCtrl-Break pressed.  Program terminated.\n");
  25.     return 0;                    /* This will abort program */
  26.     }                        /* End break_handler() */
  27.  
  28. void task1() {
  29.     unsigned    size;
  30.     char    message[50];
  31.     for (;;) {
  32.     get_mail (message, &size, mb_5_1, 0, 0);
  33.     printf("Task 1 got mail\n");
  34.     send_mail(message, size, mb_1_2);
  35.     }    
  36.     }
  37.  
  38. void task2() {
  39.     unsigned    size;
  40.     char    message[50];
  41.     for (;;) {
  42.     get_mail (message, &size, mb_1_2, 0, 0);
  43.     printf("Task 2 got mail\n");
  44.     send_mail(message, size, mb_2_3);
  45.     }    
  46.     }
  47.  
  48. void task3() {
  49.     unsigned    size;
  50.     char    message[50];
  51.     for (;;) {
  52.     get_mail (message, &size, mb_2_3, 0, 0);
  53.     printf("Task 3 got mail\n");
  54.     send_mail(message, size, mb_3_4);
  55.     }    
  56.     }
  57.  
  58. void task4() {
  59.     unsigned    size;
  60.     char    message[50];
  61.     for (;;) {
  62.     get_mail (message, &size, mb_3_4, 0, 0);
  63.     printf("Task 4 got mail\n");
  64.     send_mail(message, size, mb_4_5);
  65.     }    
  66.     }
  67.  
  68. void task5() {
  69.     unsigned    size;
  70.     char    message[50];
  71.     for (;;) {
  72.     get_mail (message, &size, mb_4_5, 0, 0);
  73.     printf("Task 5 got mail\n");
  74.     send_mail(message, size, mb_5_1);
  75.     }    
  76.     }
  77.  
  78. void main() {
  79.  
  80.     int        i;                /* Generic temp */
  81.  
  82.     start_RMAXTask();
  83.     ctrlbrk(break_handler);            /* Establish break handler */
  84.     mb_1_2 = create_mailbox();
  85.     mb_2_3 = create_mailbox();
  86.     mb_3_4 = create_mailbox();
  87.     mb_4_5 = create_mailbox();
  88.     mb_5_1 = create_mailbox();
  89.     create_task("task1", task1, STANDARD_PRIORITY, STANDARD_STACK);
  90.     create_task("task2", task2, STANDARD_PRIORITY, STANDARD_STACK);
  91.     create_task("task3", task3, STANDARD_PRIORITY, STANDARD_STACK);
  92.     create_task("task4", task4, STANDARD_PRIORITY, STANDARD_STACK);
  93.     create_task("task5", task5, STANDARD_PRIORITY, STANDARD_STACK);
  94.     send_mail("Hello, there!\n", 15, mb_5_1);
  95.     suspend(91);
  96.     stop_RMAXTask();
  97.     }
  98.