
/*
	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;
			

	}


}

