all: rt_process.o monitor

MYCFLAGS = -O2 -Wall
include rtl.mk

monitor: monitor.c
	$(CC) ${INCLUDE} ${MYCFLAGS} -o monitor monitor.c

# rt_process.o: rt_process.c common.h
#	$(CC) ${INCLUDE} ${CFLAGS} rt_process.c

stop:  dummy
	rmmod rt_process

start:  dummy
	insmod rt_process

rt_irq.o: rt_irq.c common.h
	$(CC) ${INCLUDE} ${CFLAGS} rt_irq.c

rt_irq_gen.o: rt_irq_gen.c common.h
	$(CC) ${INCLUDE} ${CFLAGS} rt_irq_gen.c

nonrt_irq.o: nonrt_irq.c common.h
	$(CC) ${INCLUDE} ${CFLAGS} -c nonrt_irq.c

#test, remove any modules, load new ones and run app
test: 
	@echo "This test estimates scheduling accuracy"
	@echo "by running a single periodic task"
	@echo "and checking times when it is called"
	@echo "First we remove any existing rtl-modules"
	@echo "You may see error warnings from \"make\" - ignore them"
	@echo "Type <return> to continue"
	@read junk
	-rmmod frank_module 
	(cd $(RTL_DIR); ./rmrtl)
	@echo "Now insert the fifo and scheduler"
	@echo "Type <return> to continue"
	@read junk
	(cd $(RTL_DIR); ./insrtl)
	@echo "Now start the real-time tasks  module"
	@echo "Hit Enter to continue"
	@read junk
	@insmod rt_process.o
	@echo "Now starting the application"
	@echo "The \"min\" is the smallest timing error"
	@echo "A negative value means that the task ran too early"
	@echo "The \"max\" is the largest timing error"
	@./monitor

stop_test:
	-rmmod rt_process
	-rmmod rtl_fifo
	-rmmod rtl_sched
	-rmmod rtl_fpsched

clean:
	rm -f *.o monitor 

.PHONY:  dummy
