Listing 4

#include <stdio.h>
#include "enet_cs.h"

int NODE1_num, NODE2_num;

extern int node;

extern FILE *fp;

int critical_section()
{
   
   switch (node) {
      
      case NODE0:
         
         NODE1_num = cs_read (NODE1_LOC);
         NODE2_num = cs_read (NODE2_LOC);
         
         if ( (NODE1_num == READY) &&
             (NODE2_num == READY) ) {
            
            NODE1 num = CLEAR;
            
            cs_write ( NODE1_LOC, NODE1_num);
            
            NODE2_num = CLEAR;
            
            cs_write ( NODE2_LOC, NODE2_num);
            
            return(STOP);
         
         } else {
            
            return(NORMAL);
         
         }
      
      break;
      
      case NODE1:
         
         NODE1_num = READY;
         
         cs_write ( NODE1_LOC, NODE1_num);
         return(STOP);
      
      break;
      
      case NODE2:
         
         NODE2_num = READY;
         
         cs_write ( NODE2_LOC, NODE2_num);
         
         return(STOP);
      
      break;
      
      default:
         printf ("Error: invalid processor\n");
         exit(0);
      break;
   
   
   }


}
/* End of File */