edouard@251: (* edouard@251: * (c) 2011 Edouard Tisserant edouard@251: * edouard@251: * Fake semaphore support, for non preemptive implementation. edouard@251: * edouard@251: *) edouard@251: edouard@251: edouard@251: FUNCTION_BLOCK SEMA edouard@251: VAR_INPUT edouard@251: CLAIM : BOOL; edouard@251: RELEASE : BOOL; edouard@251: END_VAR edouard@251: VAR_OUTPUT edouard@251: BUSY : BOOL; edouard@251: END_VAR edouard@251: VAR edouard@251: Q_INTERNAL : BOOL; edouard@251: END_VAR edouard@251: edouard@251: Q_INTERNAL := CLAIM OR ( Q_INTERNAL AND (NOT RELEASE)); edouard@251: BUSY := Q_INTERNAL; edouard@251: edouard@251: END_FUNCTION_BLOCK edouard@251: