13.07.2015 Views

iAPX 286 Operating System Writers Guide 1983

iAPX 286 Operating System Writers Guide 1983

iAPX 286 Operating System Writers Guide 1983

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

DATA SHARING, ALIASING, AND SYNCHRONIZATIONPL/M-<strong>286</strong> COMPILER 960-504 date PAGE 1system-I 0 PL/M-<strong>286</strong> Vx.y COMPILATION OF MODULE SEMAPHOBJECT MODULE PLACED IN :Fl:SEMAPH.OBJCOMPILER INVOKED BY: PLM<strong>286</strong>.86 :Fl:SEMAPH.PLM DEBUG$ PAGEWIDTH(71) TITLE('960-504') INCLUDE (:Fl:NUCSUB.PLM)$ NOLIST1SEMAPH:DO;23456789121221221/*****************************************************'**//* Externals */DISPATCHER: PROCEDURE EXTERNAL;END DISPATCHER;ENQUEUE WAIT: PROCEDURE(QUEUE ID) EXTERNAL;DECLARE QUEUE ID SELECTOR;END ENQUEUE_WAIT;DEQUEUE WAIT: PROCEDURE(QUEUE ID,EXCEP P) EXTERNAL;DECLARE QUEUE ID SELECTOR, EXCEP P POINTER;END DEQUEUE_WAIT; -/*******************************************************//* Semaphore Data Structures */DECLARE SEMAPHORMAT LITERALLY'FILLER (2) WORD,COUNTER WORD';111DECLARE OKLITERALLY '0';121314151617181920212223122222233332/*******************************************************//* Test a semaphore; wait if not set */WAIT SEMAPHORE: PROCEDURE (SEMAPH ID, EXCEP P)PUBLIC-REENTRANT;DECLARE SEMAPH ID SELECTOR,SEMAPH-BASED SEMAPH ID STRUCTURE(SEMAPHORMAT);DECLARE EXCEP PEXCEP-BASED EXCEP PPOINTER,WORD;DISABLE;SEMAPH.COUNTER=SEMAPH.COUNTER-l;IF ZERO /* Test the zero flag. */THEN /* Semaphore was set. */ DO;ENABLE;EXCEP=OK;RETURN;END;/* Semaphore is not set; this task must wait. */CALL ENQUEUE_WAIT (SEMAPH 10);Figure 5·5. Semaphore Example5-8 121960-001

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!