

*******************************************************************************

				MAIN-LOOP PRODUCER

*******************************************************************************

aplikacja mloop_producer jest wywouwana w init MAIN-LOOP SKZ

dzialanie:
mloop_producer po zauwazeniu flagi NOC zaczyna przetwarzac stosy zlecen przez
wywolanie doit (H-P ma proces queue_TODO TODO_H). 
(flaga NOC jest wystawiana po pojawieniu sie  
nowych zlecen na stosach: stos_rh,stos_rn,stos_w), jesli wczesniej 
mloop_producer byla w stanie powolnego oczekiwania i nie bylo zadnego
zlecenia.Flaga NOC jest kasowana po odczycie.)
mloop przetwarza mloop_producer dziala w sposob ciagly jesli caly czas
nadchodza zlecenia na stosy. 

Sekwencja dzialania:
NOC/stale nadchodzace dzialania) -> mloop_producer -> supervisor (demonizer) ->
supervisor_tasks -> operators (progrmowanie wewnetrznej kolejki akcji 
wykonawczych do pliku SUPERVIOS_S oraz oczekujacych do pliku SUPERVISOR_WAIT) 
-> wywolanie sterownka serv_ctrl -> clientT/clinentC. 

W czasie wykonywania akcji uzupelniane sa dane w tablicach
(aplikacja table_update):
/home/SYSQS/TRIGGxxxx/BUFFER.freeespace
oraz /home/SYSS/TRIGGxxxx/NODES.freespace

podsumowanie - schemat akcji:
			     mloop_producer (daemon)
					|
					V
			  (daemon wolany przez supervisor)
				 supervisor_tasks 
					|
					V
		       supervisor_tasks uruchamia ENGINES
		(kontrola stanu wlacznia CLONTROLLERa/BUF/NODES)
			(endgine_do,engineB,engineN)
					|
					V
			   	    operators 
		(programuje procesor w supervisor_tasks/lib_sup_loop1)
					|
					V
		      zapis programu procesora superisor_tasks
				   do plikow: 
		(wykonanie instrukcji bez oczekiwania na zmiane stanu)
			      /mn/tmp/SUPERVISOR_S 
		(przetworzenie instrukcji w zaleznosci od oczekiwanego stanu)
  			    /mnt/tmp/ SUPERVISOR_WAIT 
					|
					V
		    procesor supervisor_tasks wykonuje instrukcje
		      z SUPERVISOR_S (natychmiast w kazdym kroku)
			pobiera z SUPERVISOR_WAIT i sprawdza czy
		       nastepuje zmiana stanu np. zakoczenie MOVE
			zmiany zajetosci nodes/buf sa aktulaizoane
		  przez table_update (source: CSCMLA/DOIT/lib_engine/)
					|
					V
		     procesor supervisor_tasks przesyla polecenia
			do wyknania w CONRROLLER/NODE/BUFFER
				   do ENGINES 
			(ktore moga robic cache wielu instrukcji,
			 ograniczenie tylko rozmiarem /mnt/tmp/)
					|
					V
				     ENGINES 
			(engine_do, engineB, engineN)
		    sa adresowane przez TRIGGxxxx&Nxxx
			      lub TRIGGxxxx/Bxxx
		engines moga byc blokowane na dzialanie ciagle
	         bez blokady wylaczaja CONTROLLER/NODES/BUFFERS
		    po zdefiniowanym czasie i same koncza prace
			          jako demony.
					|
					V
			ENGINES przekazuja adresowane polecenia
				do drivera: serv_ctrl
			 kazdy TRIGGxxxx, Nxxx oraz Bxxx
			 maja swoja odpowiednia ENGINE
					|
					V
			przy braku zlecen i po zakonczeniu 
		   oczekiwania (kazde zlecenie zyje 2h -default)
		supervisor_task przechodzi w stan oczekiwnia na flage NOC
			     (NOC - NEW ORDER CAME)

NOTE1:  wszystkie instrukcje tworzenie i przetwarzane przez procesor supervisor_tasks
	maja postac query-string tzn nazwa_operacji=wartos&...

NOTE2: Obecnie mechanizm przerwan mloop_producer pozwala na wykonanie przerwania
	dzialnia systemu - NMI (niemskowane przerwanie = close PRODUCER)
	Oprogrmoanie systemu przerwan nie jest jeszcze skompletowane dla 
	systemu robotow prgrmowych, ktore sa incjowane przez przerwania procesora
	mloop_producer. 

		











					
