| <assertions> |
| <assertion id="1" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| The mlockall() function shall cause all of the pages mapped by the address |
| space of a process to be memory-resident until unlocked or until the process |
| exits or execs another process image |
| </assertion> |
| <assertion id="2" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| The flags argument is constructed from the bitwise-inclusive OR of one or |
| more of the folowing symbolic constants, defined in sys/mman.h: |
| MCL_CURRENT |
| MCL_FUTURE |
| </assertion> |
| <assertion id="3" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| When the MCL_CURRENT flag is set, mlockall lock all of the pages currently |
| mapped into the address space of the process |
| </assertion> |
| <assertion id="4" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| When the MCL_FUTURE flag is set, mlockall lock all of the pages that become |
| mapped into the address space of the process in the future, when those |
| mappings are established |
| </assertion> |
| <assertion id="5" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| If MCL_FUTURE is specified, and the automatic locking of future mappings |
| eventually causes the amount of locked memory to exceed the amount of |
| available physical memory or any other implementation-defined limit, the |
| behavior is implementation-defined. The manner in which the implementation |
| informs the application of these situations is also implementation-defined |
| </assertion> |
| <assertion id="6" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| Upon successful return from the mlockall() function that specifies |
| MCL_CURRENT, all currently mapped pages of the process' address space shall |
| be memory-resident and locked |
| </assertion> |
| <assertion id="7" tag="ref:XSH6:{System Interfaces:mlockall:DESCRIPTION}"> |
| The appropriate privilege is required to lock process memory with mlockall() |
| </assertion> |
| <assertion id="8" tag="ref:XSH6:{System Interfaces:mlockall:RETURN VALUE}"> |
| Upon successful completion, the mlockall() function shall return a value of |
| zero |
| </assertion> |
| <assertion id="9" tag="ref:XSH6:{System Interfaces:mlockall:RETURN VALUE}"> |
| Upon unsuccessful completion, the mlockall() function shall return a value |
| of -1 |
| </assertion> |
| <assertion id="10" tag="ref:XSH6:{System Interfaces:mlockall:RETURN VALUE}"> |
| Upon unsuccessful completion, no additional memory shall be locked |
| </assertion> |
| <assertion id="11" tag="ref:XSH6:{System Interfaces:mlockall:RETURN VALUE}"> |
| The effect of failure of mlockall() on previously existing locks in the |
| address space is unspecified |
| </assertion> |
| <assertion id="12" tag="ref:XSH6:{System Interfaces:mlockall:ERRORS}"> |
| The mlockall() function shall set errno = EAGAIN if some or all of the |
| memory identified by the operation could not be locked when the call was |
| made |
| </assertion> |
| <assertion id="13" tag="ref:XSH6:{System Interfaces:mlockall:ERRORS}"> |
| The mlockall() function shall set errno = EINVAL if the flags argument is |
| zero, or includes unimplemented flags |
| </assertion> |
| <assertion id="14" tag="ref:XSH6:{System Interfaces:mlockall:ERRORS}"> |
| The mlockall() function may set errno = ENOMEM if locking all of the pages |
| currently mapped into the address space of the process would exceed an |
| implementation-defined limit on the amount of memory that the process may |
| lock |
| </assertion> |
| <assertion id="15" tag="ref:XSH6:{System Interfaces:mlockall:ERRORS}"> |
| The mlockall() function may set errno = EPERM if the calling process does |
| not have the appropriate privilege to perform the requested operation |
| </assertion> |
| </assertions> |