NBS_FIND_NOTICEBOARD

Find a named noticeboard and return an identifier to it

Description:

Map the noticeboard of the given name.
Allocate an item descriptor and relocate it so that the version number can be checked and the definition size determined.
Free that item descriptor and allocate a block of memory big enough for the entire definition.
Copy the definition part to this memory and relocate it so that all pointers are once again virtual memory addresses.
Get the process’ id for future checking against the owner’s process id.
If this is the owner process and it hasn’t already been done, unmap the copy mapped earlier.

Note that it is somewhat wasteful to build a complete copy of the noticeboard definition in private memory when in fact only the pointers must have private versions. A later version of the software should take copies only of the pointers but this requires the pointer space to be allocated separately during the definition phase — in the current implementation the pointer space is not contiguous; pointers are mixed up with fixed information, shape information and board information.

Invocation

(Int) = NBS_FIND_NOTICEBOARD (NAME,ID,STATUS)

Arguments

NAME = CHARACTER∗(∗) (Given)
The name of the noticeboard which is to be found.
ID = INTEGER (Returned)
Identifier of the top-level of the noticeboard.
STATUS = INTEGER (Given and returned)
The global status. Possible return values are,
NBS__SECTIONNOTFOUND No section called NAME existed

NBS__TIMEOUT Timeout awaiting valid noticeboard

NBS__NOMOREROOM Failed to allocate private memory area

NBS__BADVERSION Wrong version in noticeboard

SS$_* System service codes from SYS$CRMPSC or

SYS$DELTVA (VMS only).