Module forall - Definitions available to all occam-pi programs

Definitions available to all occam-pi programs.

The definitions in this module are provided by the compiler or the support library, and are automatically made available for all programs. It is not necessary to explicitly include forall.module.

Index

Declarations

ridiv.occ:40Function RealIDiv

INT, INT, INT FUNCTION RealIDiv (VAL INT Hi, Lo, Guard, VAL [2]INT Yfrac)

Perform an unsigned part divide operation.

Parameters:

VAL INT Hi the most significant word of the dividend
VAL INT Lo the middle word of the dividend
VAL INT Guard the least significant word of the dividend
VAL [2]INT Yfrac the two words of the divisor

Returns:

INT the quotient
INT the most significant word of the remainder
INT the least significant word of the remainder

unpacksn.occ:44Function UNPACKSN

INT, INT, INT FUNCTION UNPACKSN ( VAL INT X )

Unpack a real number in IEEE single precision format

The sign of X is ignored.

Parameters:

VAL INT X a REAL32 which has been retyped to an INT

Returns:

INT the fractional part with the implicit bit before the binary point restored
INT the biased exponent, i.e. the actual exponent + 127
INT 0 if X is zero; 1 if X is a normalised or denormalised number; 2 if X is "infinity"; 3 if X is a Not-a-Number

intrinsics.occ:44Function LONGADD

INT FUNCTION LONGADD (VAL INT a, b, carry)

Signed addition with a carry in.

(a + b) + carry

Overflow is an error.

Parameters:

VAL INT a, b Integers to add.
VAL INT carry Carry flag.

Returns:

INT Addition of a and b.

intrinsics.occ:55Function LONGSUM

INT, INT FUNCTION LONGSUM (VAL INT a, b, carry)

Unsigned addition with a carry in and carry out.

(a + b) + carry

Parameters:

VAL INT a, b Integers to add.
VAL INT carry Carry in flag.

Returns:

INT The resulting carry out flag.
INT The sum of a and b.

intrinsics.occ:67Function LONGSUB

INT FUNCTION LONGSUB (VAL INT a, b, borrow)

Signed subtraction with a borrow in.

(b - a) - borrow

Overflow is an error.

Parameters:

VAL INT a, b Integers to subtract.
VAL INT borrow Borrow flag.

Returns:

INT Subtraction of a and borrow from b.

intrinsics.occ:78Function LONGDIFF

INT, INT FUNCTION LONGDIFF (VAL INT a, b, borrow)

Unsigned subtraction with a borrow in and a borrow out.

(b - a) - borrow

Parameters:

VAL INT a, b Integers to subtract.
VAL INT borrow Borrow in flag.

Returns:

INT Borrow out flag.
INT Subtraction of a and borrow from b.

intrinsics.occ:89Function LONGPROD

INT, INT FUNCTION LONGPROD (VAL INT a, b, carry)

Unsigned multiplication with a carry in, producing a double length result.

(a * b) + carry

Parameters:

VAL INT a, b Integers to multiply.
VAL INT carry Carry in flag.

Returns:

INT High order word of result.
INT Low order word of result.

intrinsics.occ:103Function LONGDIV

INT, INT FUNCTION LONGDIV (VAL INT u1, u0, v)

Unsigned division of a double length number, producing a single length result.

[u1, u0] / v

Overflow is an error.

Parameters:

VAL INT u1 High order word of quantity being divided.
VAL INT u0 Low order word of quantity being divided.
VAL INT v Divisor.

Returns:

INT High order word of result.
INT Low order word of result.

intrinsics.occ:115Function SHIFTRIGHT

INT, INT FUNCTION SHIFTRIGHT (VAL INT a1, a0, shift)

Right shift on a double length quantity.

[a1, a0] >> shift

Parameters:

VAL INT a1 High order word of quantity being shifted.
VAL INT a0 Low order word of quantity being shifted.
VAL INT shift Number of bit places to shift right.

Returns:

INT High order word of result.
INT Low order word of result.

intrinsics.occ:127Function SHIFTLEFT

INT, INT FUNCTION SHIFTLEFT (VAL INT a1, a0, shift)

Left shift on a double length quantity.

[a1, a0] << shift

Parameters:

VAL INT a1 High order word of quantity being shifted.
VAL INT a0 Low order word of quantity being shifted.
VAL INT shift Number of bit places to shift left.

Returns:

INT High order word of result.
INT Low order word of result.

intrinsics.occ:140Function NORMALISE

INT, INT, INT FUNCTION NORMALISE (VAL INT a1, a0)

Normalise a double length quantity.

Shift the double word quantity left until the most significant bit is one.

Parameters:

VAL INT a1 High order word of quantity being normalised.
VAL INT a0 Low order word of quantity being normalised.

Returns:

INT Number of places shifted.
INT High order word of result.
INT Low order word of result.

intrinsics.occ:151Function ASHIFTRIGHT

INT FUNCTION ASHIFTRIGHT (VAL INT a, shift)

Arithmetic right shift on a double length quantity.

The operand is expanded to a double length quantity, then arithmetically shifted right, and the low order word returned.

Parameters:

VAL INT a The integer being shifted.
VAL INT shift Number of bit places to shift right.

intrinsics.occ:162Function ASHIFTLEFT

INT FUNCTION ASHIFTLEFT (VAL INT a, shift)

Arithmetic left shift on a double length quantity.

The operand is expanded to a double length quantity, then arithmetically shifted left, and the low order word returned.

Parameters:

VAL INT a The integer being shifted.
VAL INT shift Number of bit places to shift left.

intrinsics.occ:170Function ROTATERIGHT

INT FUNCTION ROTATERIGHT (VAL INT val, shift)

Rotate a word right.

Parameters:

VAL INT val The integer being rotated.
VAL INT shift Number of bit places to rotate right.

Returns:

INT val rotated shift places to the right.

intrinsics.occ:178Function ROTATELEFT

INT FUNCTION ROTATELEFT (VAL INT val, shift)

Rotate a word left.

Parameters:

VAL INT val The integer being rotated.
VAL INT shift Number of bit places to rotate left.

Returns:

INT val rotated shift places to the left.

intrinsics.occ:186Process CAUSEERROR

PROC CAUSEERROR ()

Set the error flag.

Sets the runtime error flag, causing either the runtime to error out or the current process to stop, depending on compile-time flags and runtime settings.

intrinsics.occ:195Process RESCHEDULE

PROC RESCHEDULE ()

Force rescheduling.

This gives the scheduler an opportunity to switch to another process. It may simply return control to the caller if no other process needs to run.

intrinsics.occ:209Process ASSERT

PROC ASSERT (VAL BOOL condition)

Causes an error if a condition is false.

Asserts that a given condition is true. If the condition is false then the behaviour is that of CAUSEERROR.

The compiler may detect false assertions at compile time through static analysis.

Parameters:

VAL BOOL condition The condition to test.

intrinsics.occ:219Function WSSIZEOF

INT FUNCTION WSSIZEOF (PROC process)

Calculate the workspace size (in words) of a process.

Parameters:

PROC process Process for which the workspace size is to be calculated.

Returns:

INT Number of workspace words required by process.

intrinsics.occ:227Function VSSIZEOF

INT FUNCTION VSSIZEOF (PROC process)

Calculate the vectorspace size (in words) of a process.

Parameters:

PROC process Process for which the vectorspace size is to be calculated.

Returns:

INT Number of vectorspace words required by process.

intrinsics.occ:251Process GETPRI

PROC GETPRI (RESULT INT pri)

Get the priority level of the current process.

Priority 0 is the highest priority available, and priority 31 is the lowest priority. Priorities are only hints to the scheduler; you must not assume that high-priority processes will always run before low-priority processes.

Parameters:

RESULT INT pri The priority of the calling process.

intrinsics.occ:262Process SETPRI

PROC SETPRI (VAL INT pri)

Set the priority level of the current process.

See GETPRI for the meanings of priority levels.

Parameters:

VAL INT pri The requested priority for the calling process. Invalid values will be ignored.

intrinsics.occ:270Process INCPRI

PROC INCPRI ()

Obsolete synonym for RAISE.PRIORITY.

Deprecated: do not use in new code.

intrinsics.occ:278Process DECPRI

PROC DECPRI ()

Obsolete synonym for LOWER.PRIORITY.

Deprecated: do not use in new code.

intrinsics.occ:286Process RAISE.PRIORITY

PROC RAISE.PRIORITY ()

Raise the priority of the current process by one level.

See GETPRI for the meanings of priority levels.

intrinsics.occ:294Process LOWER.PRIORITY

PROC LOWER.PRIORITY ()

Lower the priority of the current process by one level.

See GETPRI for the meanings of priority levels.

intrinsics.occ:306Process GETAFF

PROC GETAFF (RESULT INT aff)

Get the affinity of the current process.

The affinity is a bitmap of logical execution units on which this process may run. The value -1 means that the process may run on any execution unit.

Parameters:

RESULT INT aff The affinity of the calling process.

intrinsics.occ:317Process SETAFF

PROC SETAFF (VAL INT aff)

Set the affinity of the current process.

See GETAFF for the meanings of affinity values.

Parameters:

VAL INT aff The requested affinity for the calling process. Invalid values will be ignored.

intrinsics.occ:331Process KILLCALL

PROC KILLCALL (CHAN OF ANY chan, INT res)

Kill a blocking FFI call.

Kill a BX. blocking foreign-function-interface call associated with a channel.

Parameters:

CHAN OF ANY chan The channel passed when making the blocking call.
INT res 0 if termination was successfully initiated; -1 if the call has not yet started; 1 if the call has already terminated.

intrinsics.occ:344Process WAIT.FOR.INTERRUPT

PROC WAIT.FOR.INTERRUPT (VAL INT n, mask, RESULT INT count)

Wait for a hardware interrupt.

This call is specific to RMoX, and will not be useful for most occam-pi programs.

Parameters:

VAL INT n The number of the interrupt to wait for.
VAL INT mask CPU or interrupt mask, implementation dependent.
RESULT INT count The number of missed interrupts.

intrinsics.occ:365Process BIND.MOBILE

PROC BIND.MOBILE (MOBILE.ANY mobile, VAL INT addr)

Bind a piece of (virtual) memory to a mobile.

Associates a piece of memory with a mobile. The memory at the given address becomes the backing store for the mobile. This is intended for use with EMPTY mobiles.

For example, to associate a mobile with memory address #1000: MOBILE []BYTE x: SEQ x := MOBILE EMPTY [1024]BYTE BIND.MOBILE (x, #1000)

Parameters:

MOBILE.ANY mobile The mobile to bind.
VAL INT addr The address of the memory.

intrinsics.occ:377Process BIND.MOBILE.HW

PROC BIND.MOBILE.HW (MOBILE.ANY mobile, VAL INT hw.addr)

Bind a piece of physical memory to a mobile.

Acts as BIND.MOBILE, except a physical address is used. This may be converted to a virtual address by the runtime system.

Parameters:

MOBILE.ANY mobile The mobile to bind.
VAL INT hw.addr Hardware address of the memory.

intrinsics.occ:389Function DMA.CAPABLE

BOOL FUNCTION DMA.CAPABLE (MOBILE.ANY mobile)

Test whether a mobile is DMA capable.

Test to see if a mobile is backed by DMA-accessible memory. The HWADDROF operator is only valid on DMA-capable mobiles.

Parameters:

MOBILE.ANY mobile The mobile to test.

Returns:

BOOL Whether the mobile is DMA accessible by hardware.

intrinsics.occ:399Process MAKE.DMA.CAPABLE

PROC MAKE.DMA.CAPABLE (MOBILE.ANY mobile)

Move a mobile to DMA capable memory.

Make a mobile DMA-capable. If necessary, this will reallocate the mobile in DMA-accessible memory and copy the contents over. If the mobile is already DMA-capable, this is has no effect.

Parameters:

MOBILE.ANY mobile The mobile to upgrade.

intrinsics.occ:416Process RESIZE.MOBILE.ARRAY.1D

PROC RESIZE.MOBILE.ARRAY.1D (MOBILE.ANY mobile, VAL INT count)

Resize a 1D mobile array.

Change the size of a one-dimensional mobile array. The memory associated with the mobile may or may not be reallocated by the runtime system depending on its memory allocator.

All data within the bounds of the new size of the array, and present in the old bounds of the array will be preserved.

Parameters:

MOBILE.ANY mobile Mobile array to resize.
VAL INT count The new element count.

intrinsics.occ:430Process MEMORY.BARRIER

PROC MEMORY.BARRIER ()

Generate a read-write memory barrier.

A memory barrier is unrelated to occam-pi BARRIERs; it is a synchronisation point for memory operations within a computer system. After the completion of a memory barrier instruction, the affected memory operations are guaranteed to be visible to peripherals and other processors.

This is equivalent to executing both READ.MEMORY.BARRIER and WRITE.MEMORY.BARRIER.

intrinsics.occ:438Process READ.MEMORY.BARRIER

PROC READ.MEMORY.BARRIER ()

Generate a read memory barrier.

See MEMORY.BARRIER for the semantics of memory barriers.

intrinsics.occ:446Process WRITE.MEMORY.BARRIER

PROC WRITE.MEMORY.BARRIER ()

Generate a write memory barrier.

See MEMORY.BARRIER for the semantics of memory barriers.