qdosmsq:traps:trap_1:frjb

MT_FRJOB/SMS_FRJB

Force remove an existing job. The job may be active, if so it will be rendered inactive and then removed.

Call ParametersReturn Parameters
D0.B$05D0.LError code.
D1.LId of job to be removed, or -1 for the current job.D1.LCorrupted.
D2.LUnused.D2.LCorrupted.
D3.LError code to return from killed job to any waiting jobs.D3.LCorrupted.
A0.LUnused.A0.LCorrupted.
A1.LUnused.A1.LCorrupted.
A2.LUnused.A2.LCorrupted.
A3.LUnused.A3.LCorrupted.
ERR_NJInvalid 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   #mt_frjob,d0      ; Trap code.
        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!
  • qdosmsq/traps/trap_1/frjb.txt
  • Last modified: 2008/06/25 12:52
  • by norman