MT_FRJOB/SMS.FRJB - Force Remove a Job
Force remove an existing job. The job may be active, if so it will be rendered inactive and then removed.
|Call Parameters||Return Register||Return Parameter|
|D1.L||Id of job to be removed, or -1 for the current job.||D1.L||Corrupted.|
|D3.L||Error code to return from killed job to any waiting jobs.||D3.L||Corrupted.|
|ERR_NJ||Invalid job id.|
- 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, it is inactivated and removed.
- If the job has child jobs, they are removed whether or not they are active.
- 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.
The following shows the use of this call to remove the current job.
... kill_me moveq #SMS.FRJB,d0 ; Or MT_FRJOB. moveq #-1,d1 ; Indicate the current job. moveq #0,d3 ; Don't pass any error codes. trap #1 ; Kill this job. bra.s kill_me ; Shouldn't get here, but just in case!