
{ The purpose of this request is to to insure that a specified
{ portion of a segment exists in real memory.  When the request completes,
{ all pages totally or partially contained by the range of addresses
{ specified by <pva> to <pva>+<length>-<1> will be assigned real memory.
{ The pages will be marked as recently used to reduce the odds of
{ having them removed from memory via aging; however, there is no
{ guarantee that the pages will still be in memory when the user
{ references them.  Pages totally contained within the range of memory
{ will not be read in from disk, but partially contained pages will be.
{ If the caller sets preset_pages to true, all bytes within the range
{ will be preset to the preset value for the segment (note cautions below).
{ The caller has the option of waiting for the request to complete; if the
{ caller waits, but the memory required to honor the request is not
{ available, the job may be swapped out until the memory becomes available.
{
{      MMP$ASSIGN_PAGES (PVA, LENGTH, PRESET_PAGES, STATUS)
{
{ PVA: (input) This parameter specifies the beginning address of the
{      portion of the segment the caller wants assigned.
{
{ LENGTH: (input) This parameter specifies the number of bytes the caller
{      wants assigned real memory.  If the length is enough to cause
{      a request to span a segment boundary, then the condition
{      mme$invalid_pva_formed will be returned.  If the number of
{      pages needed to be assigned to satisfy the request plus the
{      number of pages already in the job's working set will
{      be greater than the maximum working set allowed for the job, the
{      request will be rejected with the error mme$assign_length_too_long.
{
{ PRESET_PAGES: (input) This parameter specifies whether the caller wants
{      the pages of the segment to be preset to the preset value for the
{      segment.
{      *******
{      NOTE -- (PRESET_PAGES = TRUE) MAY DEGRADE PERFORMANCE
{      If TRUE is specified all bytes within the range specified will
{      be initialized to the preset value for the segment.  Specifying
{      TRUE may have a negative performance impact.  A page that is
{      preset because the caller specified to do so will be marked
{      as modified; if the page ages out of the working set it
{      will be written to disk.
{      *******
{      If FALSE is specified and the request is issued at or below ring 3
{      but the segment cannot be read from above ring 3, new pages
{      assigned will be initialized to the preset value, but the pages
{      will not be written to disk if they age out of memory.
{
{ WAIT: (input) This parameter specifies whether to wait for completion
{      of the request or to return to the user immediately if the
{      memory needed to assign the pages is not readily available.
{      If the caller wants to wait for the request to complete
{      and memory is not available right away, the job will be swapped
{      out until the required memory becomes available.  If the caller
{      does not want to wait, and memory is not available, the error
{      mme$memory_not_available will be returned.  If wait is true
{      and memory is not available, but the job is non-swappable,
{      the error mme$cannot_wait_for_memory will be returned.
{
{ STATUS: (output) This parameter specifies the request status.
{      Possible error codes are:
{        mme$length_must_be_positive
{        mme$invalid_pva_formed
{        mme$memory_not_avail_for_assign
{        mme$cannot_wait_for_memory
{        mme$assign_length_too_long
{
{
{  PROCEDURE [XREF] mmp$assign_pages (pva: ^cell;
{        length: ost$segment_length;
{        preset_pages: boolean;
{        wait: ost$wait;
{    VAR status: ost$status);
