{
{   The purpose of this request is to idle a PP logically or physically.
{ Logically idling the PP is referred to as a "software_idle".  Physically
{ idling a PP is referred to as a "hardware-idle".  Optionally, a dump of the
{ PP's memory may be obtained.
{
{   The system will first attempt to logically idle the PP by giving it an
{ "idle-pp" request on its "PP-queue".  The system will wait for up to two (2)
{ seconds for a response to this request.  If a response is returned or the
{ two seconds have elapsed, the PP will be hardware-idled, if requested.
{
{   If HARDWARE_IDLE_PP is FALSE and the PP has its "PP-queue" interlocked,
{ then this request will return abnormal status.  However, if HARDWARE_IDLE_PP
{ is TRUE, then the PP will be hardware-idled regardless of the state of the
{ "PP-queue" interlock.
{
{       CMP$IDLE_PP (PP_IDENTIFICATION, BREAK_INTERLOCKS, HARDWARE_IDLE_PP,
{         PP_MEMORY_AREA, ACTUAL_PP_MEMORY_SIZE, PP_REGISTERS,
{         PP_SOFTWARE_IDLED, STATUS)
{
{ PP_IDENTIFICATION: (input)  This parameter specifies the identity of the PP
{       to be initialized.  The PP must previously have been reserved to the
{       requesting job using the cmp$reserve_element request.
{
{ BREAK_INTERLOCKS: (input)  This parameter specifies whether or not software
{       interlocks obtained by the PP, which have not been cleared by the PP
{       as a result of its processing of the software-idle, are to be cleared
{       by the system.
{
{ HARDWARE_IDLE_PP: (input)  This parameter specifies whether or not to
{       terminate the execution of the PP under hardware control.  If TRUE is
{       specified, the PP will first be software-idled, the current
{       instruction will be exited and an optional dump of the PP's memory is
{       taken.  If FALSE is specified, the PP will only be software-idled, if
{       possible; otherwise the state of the PP is unaltered by this request.
{       If FALSE is specified, a dump of PP memory is precluded.
{
{ PP_MEMORY_AREA: (input)  This parameter specifies the area into which the
{       image of the PP memory will be written by this request.  A dump of PP
{       memory will be returned to this area only if TRUE was specified for
{       the HARDWARE_IDLE_PP parameter and normal status is returned by the
{       request.  Abnormal status will be returned if this parameter is
{       non-NIL and FALSE is specified for HARDWARE_IDLE_PP.  If the size of
{       the area provided is less than the size of memory in the PP, a
{       fractional dump of the PP's memory will be provided.  If the size of
{       the area provided is greater than the size of memory in the PP, a
{       complete dump of the PP's memory will be provided and the parameter
{       actual_pp_memory_size specifies the amount of valid data in the area.
{
{ ACTUAL_PP_MEMORY_SIZE: (output)  This parameter specifies the size of the
{       memory of the specified PP.
{
{ PP_REGISTERS: (output)  This parameter specifies the content of the PP's
{       registers.  Although PP register contents are always returned by a
{       normal completion of this request, the accuracy of the register
{       information is not guaranteed unless TRUE was specified for the
{       HARDWARE_IDLE_PP parameter.  The value of each register is stored
{       right-justified with zero fill in the corresponding component of this
{       parameter.  If the PP is in a hardware-idled state, the K register
{       will contain the value 107700(8).
{
{ PP_SOFTWARE_IDLED: (output)  This parameter specifies whether or not the PP
{       responded to the software-idle within the time period allotted for the
{       response.
{
{ STATUS: (output)  This parameter specifies the request
{       status.
{
{         CONDITIONS:
{                    cme$dump_requires_hardware_idle,
{                    cme$element_not_reserved,
{                    cme$lcm_ring_validation_error,
{                    cme$pp_already_idled,
{                    cme$pp_holds_pp_queue_lock,
{                    cme$privileged_job_required.
{
{   IDENTIFIER :  'CM'
{
