The Remove a Work Queue Item routine removes the next item in order from a work queue. Format PPL$REMOVE_WORK_ITEM queue-id ,work-item [,flags] [,spin]
1 – Arguments
queue-id OpenVMS usage identifier type longword (unsigned) access read only mechanism by reference The queue identifier. The queue-id argument is the address of an unsigned longword containing the identifier. work-item OpenVMS usage user_arg type longword (unsigned) access write only mechanism by reference Receives the value of the item that is removed from the work queue. The work-item argument is the address of an unsigned longword that receives the value of the item that is removed from the work queue. flags OpenVMS usage mask_longword type longword (unsigned) access read only mechanism by reference Specifies options for removing an item from the work queue. The optional flags argument is the address of a longword bit mask containing the flag. Valid values are as follows: PPL$M_NON_ If the specified work queue is empty, return BLOCKING immediately with the PPL$_NOT_AVAILABLE status indicating that no items are available to be removed from the work queue. By default, if the work queue is empty the process hibernates until there is an item available to be removed from the work queue. PPL$M_FROMTAIL Remove item from the end (or tail) of the work queue. By default, this routine removes an item from the beginning (or head) of the work queue. PPL$M_SPIN_WAIT Indicates that the caller is never to block, but rather to always spin while waiting at this barrier. PPL$M_SPIN_ Indicates that the caller wishes to spin for COUNTED a given amount of instructions and then to block. The default is block immediately, do not spin at all. spin OpenVMS usage mask_longword type longword (unsigned) access read only mechanism by reference This value must be specified when using the PPL$M_SPIN_COUNTED flag and represents a relative time that a process will spin before blocking.