qdosmsq:traps:trap_1:rmjb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

qdosmsq:traps:trap_1:rmjb [2008/06/25 12:46]
norman created
qdosmsq:traps:trap_1:rmjb [2008/06/25 12:54] (current)
norman Added link to FRJB.
Line 1: Line 1:
 +====== MT_RJOB/SMS_RMJB ======
 +Remove an existing (inactive) job. If you need to remove an active job then you need [[qdosmsq:traps:trap_1:frjb|MT_FRJOB/SMS_FRJB]].
 +
 +^Call Parameters^^Return Parameters^^
 +|D0.B|$04|D0.L|Error code.|
 +|D1.L|Id of job to be removed, or -1 for the current job.|D1.L|Corrupted.| 
 +|D2.L|Unused.|D2.L|Corrupted.|
 +|D3.L|Error code to return from killed job to any waiting jobs.|D3.L|Corrupted.| 
 +|A0.L|Unused.|A0.L|Corrupted.| 
 +|A1.L|Unused.|A1.L|Corrupted.|
 +|A2.L|Unused.|A2.L|Corrupted.| 
 +|A3.L|Unused.|A3.L|Corrupted.| 
 +
 +===== Errors =====
 +
 +|ERR_NC|Not complete. The job being killed is still active.|
 +|ERR_NJ|Invalid job id.|  
 +
 +
 +===== Notes =====
 +  * All registers not shown above are not used on entry and are preserved on exit.
 +  * Job 0 (SuperBasic) cannot be removed.
 +  * This trap is not atomic as it can exit via the scheduler - if the current job is being removed.
 +  * If the job being removed is active, then ERR_BC (not complete) is returned. //This tends to imply that passing -1 (current job) as the id of the job to be killed is a non-starter!//
 +  * If the job has child jobs, they are removed whether or not they are active - (probably) using [[qdosmsq:traps:trap_1:frjb|MT_FRJOB/SMS_FRJB]] below.
 +  * The error code in D3.L is passed to any job which is waiting for this job to complete.
 +  * Any resources - channels, memory etc - owned by the job being removed, or its children, are released.  
 +
 +===== Example =====
 +The following shows the use of this call to remove the job with id $00010666.
 +
 +<code>
 +start   moveq   #mt_rjob,d0       ; Trap code.
 +        moveq   #$00010666,d1     ; I want to kill the job with this id.
 +        moveq   #0,d3             ; Don't pass any error codes to the job I'm killing.
 +        trap    #1                ; Kill this job. 
 +        tst.l   d0                ; Did it work?
 +        bne.s   <error handler>   ; It appears not.
 +        :
 +</code>
  
  • qdosmsq/traps/trap_1/rmjb.txt
  • Last modified: 2008/06/25 12:54
  • by norman