//CSE 660
//Jason Kim
//Lab 3

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <iostream>
#include <signal.h>
#include <wait.h>
#include "sshm.h"
#include "ssem.h"

using namespace std;

//code of procX

int main()
{
	int i,full,empty,mutex;
	//get semid
	full = sem_open(1);
	mutex = sem_open(2);
	empty = sem_open(3);
	char *item;

	//open memory
	char *BufferX;
	shm_get(123,(void**)&BufferX,20*sizeof(char));
	/*produce an item*/
	for (i=0;i<255;i++)
	{
		if(i%45==0)
		{
			sleep(1);
		}
		sprintf(item,"A",i);
		sem_wait(empty);
		sem_wait(mutex);
		/*add item to buffer*/
		BufferX = item;
		sem_signal(mutex);
		sem_signal(full);

	}
	
	return 0;
}

