VMS Help  —  PASCAL  Predeclared Routines, Low Level
  The  low-level  routines  allow  for  parallel   processes   and
  asynchronous routines to operate in a real-time or multi-tasking
  environment.

1  –  ADD_ATOMIC

  The ADD_ATOMIC function adds the value of an expression  to  the
  value  of  a  variable,  stores  the  newly  computed value, and
  returns the previous value.

  Syntax:

    ADD_ATOMIC(e,v)

  The type of the expression 'e'  must  be  assignment  compatbile
  with  that  of  the  variable  'v'.  The variable 'v' must be an
  INTEGER, UNSIGNED, INTEGER64, or UNSIGNED64 variable and must be
  allocated  on  a  natural boundary (ie, longword for INTEGER and
  UNSIGNED and quadword for INTEGER64 and UNSIGNED64).  The result
  of ADD_ATOMIC is the same type as the variable 'v'.

  Overflow and  subrange  checking  are  never  performed  on  the
  ADD_ATOMIC  operation,  even  if these options are in effect for
  the rest of the function or compilation unit.

2  –  ADD_INTERLOCKED

  The ADD_INTERLOCKED function adds the value of an expression  to
  the  value of a variable, stores the newly computed value in the
  variable, and returns an integer value:  -1 if the new value  is
  negative, 0 if it is zero, and 1 if it is positive.

  Syntax:

     ADD_INTERLOCKED( e, v )

  The type of the expression 'e'  must  be  assignment  compatible
  with  that  of  the  variable  'v'.  The variable 'v' must be an
  integer or an unsigned subrange; 'v'  must  have  an  allocation
  size  of  two bytes and must be aligned on a word boundary.  The
  type of 'e' must be assignment compatible with that of 'v'.

3  –  AND_ATOMIC

  The  AND_ATOMIC  function  logically  ANDs  the  value   of   an
  expression to the value of a variable, stores the newly computed
  value, and returns the previous value.

  Syntax:

    AND_ATOMIC(e,v)

  The type of the expression 'e'  must  be  assignment  compatbile
  with  that  of  the  variable  'v'.   The  variable v must be an
  INTEGER, UNSIGNED, INTEGER64, or UNSIGNED64 variable and must be
  allocated  on  a  natural boundary (ie, longword for INTEGER and
  UNSIGNED and quadword for INTEGER64 and UNSIGNED64).  The result
  of AND_ATOMIC is the same type as the variable 'v'.

4  –  BARRIER

  The BARRIER procedure causes a memory barrier instruction to  be
  emitted   to   synchronize   pending   memory   updates   in   a
  multi-processor environment.

  Syntax:

    BARRIER

  The BARRIER procedure has no parameters.

5  –  CLEAR_INTERLOCKED

  The CLEAR_INTERLOCKED function assigns the value  FALSE  to  the
  parameter   and  returns  the  original  Boolean  value  of  the
  parameter.

  Syntax:

     CLEAR_INTERLOCKED( b )

  The variable 'b' must  be  a  variable  of  type  Boolean.   The
  variable  does  not  have  to be aligned; therefore, it can be a
  field of a packed record.

6  –  OR_ATOMIC

  The OR_ATOMIC function logically ORs the value of an  expression
  to the value of a variable, stores the newly computed value, and
  returns the previous value.

  Syntax:

    OR_ATOMIC(e,v)

  The type of the expression 'e'  must  be  assignment  compatbile
  with  that  of  the  variable  'v'.   The  variable v must be an
  INTEGER, UNSIGNED, INTEGER64, or UNSIGNED64 variable and must be
  allocated  on  a  natural boundary (ie, longword for INTEGER and
  UNSIGNED and quadword for INTEGER64 and UNSIGNED64).  The result
  of OR_ATOMIC is the same type as the variable 'v'.

7  –  SET_INTERLOCKED

  The SET_INTERLOCKED function  assigns  the  value  TRUE  to  the
  parameter and returns its original Boolean value.

  Syntax:

     SET_INTERLOCKED( b )

  The variable 'b' must  be  a  variable  of  type  Boolean.   The
  variable  does  not  have  to be aligned; therefore, it can be a
  field of a packed record.
Close Help