; 0001 module wake (main = wake)= ; 0002 begin ; 0003 ; 0004 ! Wakes up a process has been put to sleep via the $suspnd system ; 0005 ! service. The pid of the target process is obtained via GET_PID. ; 0006 ! ; 0007 ! R.J. FitzPatrick July 1979 ; 0008 ! Smithsonian Astrophysical Observatory, Cambridge MA ; 0009 ! ; 0010 library 'SYS$LIBRARY:STARLET.L32'; ; 0011 ; 0012 own ; 0013 status: long, ; 0014 pid: long; ; 0015 ; 0016 external routine ; 0017 get_pid; ; 0018 ; 0019 global routine wake (start_add, cli_callback) = ; 0020 begin ; 0021 status = get_pid (.cli_callback, pid) ; ; 0022 if .status neq ss$_normal then return .status; ; 0023 if .pid eql 0 then return ss$_nonexpr; ; 0024 $resume( pidadr=pid ) ; 0025 end; .TITLE WAKE .PSECT $OWN$,NOEXE,2 STATUS: .BLKB 4 PID: .BLKB 4 .EXTRN GET_PID, SYS$RESUME .PSECT $CODE$,NOWRT,2 .ENTRY WAKE, ^M ;WAKE, Save R2 ; 0019 MOVAB W^PID, R2 ;PID, R2 ; PUSHL R2 ;R2 ; 0021 PUSHL 8(AP) ;CLI_CALLBACK ; CALLS #2, W^GET_PID ;#2, GET_PID ; MOVL R0, -4(R2) ;R0, STATUS ; CMPL -4(R2), #1 ;STATUS, #1 ; 0022 BEQL 1$ ;1$ ; MOVL -4(R2), R0 ;STATUS, R0 ; RET ; ; 1$: TSTL (R2) ;PID ; 0023 BNEQ 2$ ;2$ ; MOVZWL #2280, R0 ;#2280, R0 ; RET ; ; 2$: CLRL -(SP) ;-(SP) ; 0024 PUSHL R2 ;R2 ; CALLS #2, @#SYS$RESUME ;#2, @#SYS$RESUME ; RET ; ; 0019 ; Routine Size: 54 bytes ; 0026 end ; 0027 eludom ; PSECT SUMMARY ; ; Name Bytes Attributes ; ; $OWN$ 8 WRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $CODE$ 54 NOWRT, RD , EXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; LIBRARY STATISTICS ; ; -------- Symbols -------- Blocks ; File Total Loaded Percent Read ; ; DBA0:[SYSLIB]STARLET.L32;2 2688 3 0 109 ; Compilation Complete .END WAKE