;;; -*- Mode:Lisp; Readtable:CL; Package:USER; Base:10; Patch-File:T -*- ;;; Patch file for System version 123.49 ;;; Reason: ;;; net:free-packet checks that the int-pkt-thread is NIL -- if it isn't, the ;;; packet is already free. ;;; Written 12-Oct-87 15:05:00 by pld at site LMI Cambridge ;;; while running on Jack Flanders from band 2 ;;; with Experimental System 123.48, Experimental Local-File 73.0, Experimental FILE-Server 22.0, Experimental Unix-Interface 11.0, Experimental Tape 18.0, Experimental KERMIT 34.0, Experimental ZMail 71.0, Experimental Lambda-Diag 15.0, microcode 1754, SDU Boot Tape 3.12, SDU ROM 8. ; From modified file DJ: L.NETWORK.KERNEL; PACKETS.LISP#18 at 12-Oct-87 15:05:11 #10R NETWORK#: (COMPILER-LET ((*PACKAGE* (GLOBAL:PKG-FIND-PACKAGE "NETWORK"))) (COMPILER::PATCH-SOURCE-FILE "SYS: NETWORK; KERNEL; PACKETS  " (defun free-packet (int-pkt) "Returns an INT-PKT to the free list" ;;Allow a displaced array to be freed (presumeably skipping link-level headers, etc.) (setq int-pkt (original-array int-pkt)) (unless (check-packet int-pkt) (error "Attempt to free non-interrupt packet ~A" int-pkt)) (unless (null (int-pkt-thread int-pkt)) (error "Attempt to free an already-freed int-pkt")) (prog (old-free-list) loop (setq old-free-list (int-free-list)) (setf (int-pkt-thread int-pkt) old-free-list) (or (sys:%store-conditional int-free-list-pointer old-free-list int-pkt) (go loop)) (sys:%chaos-wakeup))) ))