$ od -c -N 50000 [Pixel]<IFS>IfsRsMgr.dm!2 0000000 377 \0 \0 I f s E v e n t M g r I n 0000020 i t . b c p l \0 373 231 k 026 264 \0 \0 376 0000040 001 \0 Q 207 / / I f s E v e n t M 0000060 g r I n i t . b c p l - E v 0000100 e n t M a n a g e r i n i t 0000120 i a l i z a t i o n \r / / C o 0000140 p y r i g h t X e r o x C o 0000160 r p o r a t i o n 1 9 7 9 , 0000200 1 9 8 2 \r \r / / L a s t m o 0000220 d i f i e d J u l y 2 5 , 0000240 1 9 8 2 2 : 0 7 P M b y 0000260 T a f t \r \r g e t " I f s . 0000300 d e c l " \r \r e x t e r n a l \r 0000320 [ \r / / O u t g o i n g p 0000340 r o c e d u r e s \r I n i t E v 0000360 e n t M g r \r \r / / I n c o 0000400 m i n g p r o c e d u r e s \r 0000420 A l l o c a t e ; S y s A l l 0000440 o c a t 376 001 \0 K 247 e Z e r o ; 0000460 E n q u e u e ; I n i t i a l 0000500 i z e C o n t e x t ; E v e n 0000520 t M g r \r \r / / I n c o m i 0000540 n g s t a t i c s \r s y s Z o 0000560 n e ; b i g Z o n e ; i f s 0000600 C t x Q ; @ e v e n t S t a t 0000620 e \r ] \r \r s t a t i c e v e n 0000640 t M g r S S = 8 0 0 \r \r m a 0000660 n i f e s t l e n E v e n t S 0000700 t a t e = 3 / / = s 0000720 i z e E v e n t S t a t e / 1 0000740 6 \r \r / / - - - - - - - - - - - 0000760 - - - - - - - - - - - - - - - - * 0001040 - - - - - - - - - 376 \0 370 l - - - 0001060 - - - - - - \r l e t I n i t E 0001100 v e n t M g r ( ) b e \r / / - 0001120 - - - - - - - - - - - - - - - - * 0001220 - - - - - - - - - - - \r [ \r e v 0001240 e n t S t a t e = S y s A l 0001260 l o c a t e Z e r o ( l e n E v 0001300 e n t S t a t e ) \r E n q u e u 0001320 e ( i f s C t x Q , I n i t i 0001340 a l i z e C o n t e x t ( A l l 0001360 o c a t e ( b i g Z o n e , e 0001400 v e n t M g r S S ) , e v e n 0001420 t M g r S S , \r E v e n t M g 0001440 r ) ) \r ] \r 377 \0 \0 I f s E v e n 0001460 t M g r . b c p l \0 373 231 k 031 k \0 0001500 \0 376 001 \0 c 201 / / I f s E v e n 0001520 t M g r . b c p l - E v e n 0001540 t M a n a g e r - R E S I 0001560 D E N T \r / / C o p y r i g h 0001600 t X e r o x C o r p o r a t 0001620 i o n 1 9 7 9 , 1 9 8 2 \r / 0001640 / L a s t m o d i f i e d 0001660 J u l y 2 5 , 1 9 8 2 2 0001700 : 1 0 P M b y T a f t \r \r 0001720 g e t " I f s . d e c l " \r \r 0001740 e x t e r n a l \r [ \r / / o u 0001760 t g o i n g p r o c e d u r e 0002000 s \r E v e n t M g r ; Q u e u 0002020 e E v e n t ; C r e a t e E v 0002040 e n t ; D e s t r o y E v e n 0002060 t \r \r / / i n c o m i n g p 0002100 r o c e d u 376 001 \0 < 266 r e s \r D 0002120 e q u e u e ; U n q u e u e ; 0002140 I n s e r t A f t e r ; S y 0002160 s A l l o c a t e ; S y s F r 0002200 e e \r S e t T i m e r ; T i m 0002220 e r H a s E x p i r e d ; B l 0002240 o c k \r \r / / o u t g o i n g 0002260 s t a t i c s \r e v e n t S t 0002300 a t e \r \r / / i n c o m i n g 0002320 s t a t i c s \r ] \r \r s t a t 0002340 i c @ e v e n t S t a t e \r \r 0002360 s t r u c t u r e E v e n t S 0002400 t a t e : \r [ \r q u e u e : [ 0002420 h e a d w o r d ; t a i l 0002440 w o r d ] \r a c t i v e w 0002460 o r d \r ] \r \r / / - - - - - - - 0002500 - - - - - - - - - - - 376 001 \0 234 L 0002520 - - - - - - - - - - - - - - - - * 0002600 - - - - - - - - - - \r l e t E 0002620 v e n t M g r ( ) b e \r / / - 0002640 - - - - - - - - - - - - - - - - * 0002740 - - - - - - - - - - - \r / / E 0002760 v e n t m a n a g e r p r o 0003000 c e s s . A s s u m e s q 0003020 u e u e i s n e v e r e m 0003040 p t y . \r [ / / r e p e a t 0003060 \r B l o c k ( ) r e p e a t u 0003100 n t i l T i m e r H a s E x p 0003120 376 001 \0 223 273 i r e d ( l v ( e v 0003140 e n t S t a t e > > E v e n t S 0003160 t a t e . q u e u e . h e a d ) 0003200 > > E C B . t i m e r ) \r e v e 0003220 n t S t a t e > > E v e n t S t 0003240 a t e . a c t i v e = t r u 0003260 e \r l e t e c b = D e q u 0003300 e u e ( l v e v e n t S t a t 0003320 e > > E v e n t S t a t e . q u 0003340 e u e ) \r e c b > > E C B . p r 0003360 o c ( e c b ) \r e v e n t S t a 0003400 t e > > E v e n t S t a t e . a 0003420 c t i v e = f a l s e \r ] 0003440 r e p e a t \r \r / / - - - - - - 0003460 - - - - - - - - - - - - - - - - * 0003520 - - - - - 376 001 \0 W 022 - - - - - - 0003540 - - - - - - - - - - - - - - - - 0003560 - - - - - - - - - - - \r a n d 0003600 Q u e u e E v e n t ( e c b , 0003620 d e l t a ; n u m a r g s n 0003640 a ) b e \r / / - - - - - - - - 0003660 - - - - - - - - - - - - - - - - * 0003760 - - - - \r [ \r i f n a g r 0004000 1 t h e n S e t T i m e r ( 0004020 l v e c b > > E C B . t i m e 0004040 r , d e l t a ) \r l e t n e 0004060 c b = l v e v e n t S t a 0004100 t e > > E v e n t S t a t e . q 0004120 u e u e . h e a d \r 376 001 \0 276 ] 0004140 [ / / r e p e a t \r 0004160 i f n e c b > > E C B . l i 0004200 n k e q 0 % n e c b > > 0004220 E C B . l i n k > > E C B . t i 0004240 m e r - e c b > > E C B . t i m 0004260 e r g r 0 b r e a k \r 0004300 n e c b = n e c b > > E C 0004320 B . l i n k \r ] r e p e 0004340 a t \r I n s e r t A f t e r ( l 0004360 v e v e n t S t a t e > > E v 0004400 e n t S t a t e . q u e u e , 0004420 n e c b , e c b ) \r ] \r \r / / 0004440 - - - - - - - - - - - - - - - - * 0004520 - - - - - - - - - - - - - - - 376 0004540 001 \0 F 223 - - - - - - - - - - - - 0004560 - \r a n d C r e a t e E v e n 0004600 t ( P r o c , d e l t a ; n 0004620 u m a r g s n a ) = v a l 0004640 o f \r / / - - - - - - - - - - - 0004660 - - - - - - - - - - - - - - - - * 0004760 - \r [ \r l e t e c b = S y 0005000 s A l l o c a t e ( l e n E C B 0005020 ) \r e c b > > E C B . p r o c 0005040 = P r o c \r Q u e u e E v e n 0005060 t ( e c b , ( n a g r 1 ) 0005100 & d e l t a ) / / = 0005120 ( n a g r 1 ? d e l t a , 0005140 0 ) \r 376 001 \0 U 6 r e s u l t i 0005160 s e c b \r ] \r \r / / - - - - - 0005200 - - - - - - - - - - - - - - - - * 0005300 - - - - - - - \r a n d D e s t 0005320 r o y E v e n t ( e c b ) b e 0005340 \r / / - - - - - - - - - - - - - 0005360 - - - - - - - - - - - - - - - - * 0005440 - - - - - - - - - - - - - - - \r 0005460 [ \r B l o c k ( ) r e p e a t 0005500 w h i l e e v e n t S t a t e 0005520 > > E v e n t S t a t e . a c t 0005540 i v e \r U n q u e 376 \0 8 323 306 u e 0005560 ( l v e v e n t S t a t e > > 0005600 E v e n t S t a t e . q u e u e 0005620 , e c b ) \r S y s F r e e ( e 0005640 c b ) \r ] \r 377 \0 \0 I f s R s . d 0005660 e c l \0 373 226 331 u U \0 \0 376 001 \0 # 0005700 / / I f s R s . d e c l - 0005720 R e n d e z v o u s S o c k e 0005740 t M a n a g e r d e c l a r 0005760 a t i o n s \r / / C o p y r i 0006000 g h t X e r o x C o r p o r 0006020 a t i o n 1 9 7 9 , 1 9 8 0 0006040 , 1 9 8 1 \r / / L a s t m 0006060 o d i f i e d M a r c h 1 3 0006100 , 1 9 8 1 5 : 1 7 P M 0006120 b y T a f t \r \r / / - - - - - 0006140 - - - - - - - - - - - - - - - - * 0006240 - - - - - - - \r s t r u c t u r 0006260 e R S : \t \t / / R e n d e z 0006300 376 001 \0 316 326 v o u s S o c k e t 0006320 \r / / - - - - - - - - - - - - - 0006340 - - - - - - - - - - - - - - - - * 0006420 - - - - - - - - - - - - - - - \r 0006440 [ \r l i n k w o r d \r s o c 0006460 w o r d \t \t / / - > P u p S 0006500 o c \r p r o c w o r d \r e x t 0006520 r a S p a c e w o r d \r t y p 0006540 e w o r d \t \t / / u s e d 0006560 t o i n i t i a l i z e R S 0006600 C t x . t y p e \r n u m A c c e 0006620 p t e d w o r d 2 \t / / n 0006640 u m b e r o f s u c c e s s 0006660 f u l c o n n e c t i o n a 0006700 t t e m p 376 001 \0 $ 326 t s \r n u m 0006720 R e f u s e d w o r d 2 \t / 0006740 / n u m b e r o f u n s u 0006760 c c e s s f u l c o n n e c t 0007000 i o n a t t e m p t s \r ] \r m 0007020 a n i f e s t l e n R S = 0007040 s i z e R S / 1 6 \r \r \r / / - 0007060 - - - - - - - - - - - - - - - - * 0007160 - - - - - - - - - - - \r s t r u 0007200 c t u r e R S C t x : \t / / 0007220 R e n d e z v o u s S o c k e 0007240 t C o n t e x t \r / / - - - - 0007260 - - - - - - - - - - - - - - - - 0007300 - - - - - - - - - - 376 001 \0 352 212 - 0007320 - - - - - - - - - - - - - - - - * 0007360 - - - - - - - - - - - - - \r [ \r 0007400 b l a n k w o r d 3 \t \t / / 0007420 s t a n d a r d c o n t e x 0007440 t h e a d e r \r b l a n k b 0007460 i t \t \t / / u s e d t o b 0007500 e k i l l F l a g \r c o n n F 0007520 l a g b i t \t \t / / a c o 0007540 n n e c t i o n i s o p e n 0007560 \r b l a n k b i t 6 \r t y p 0007600 e b y t e \t \t / / s e r v e 0007620 r t y p e \r b s p S o c w o 0007640 r d \t \t / / - > B S P S o c 0007660 \r u s e r I n f o w o r d \t \t 0007700 / / - > U s e r I n f o \r 376 0007720 001 \0 201 s ] \r m a n i f e s t l 0007740 e n R S C t x = s i z e R 0007760 S C t x / 1 6 \r \r m a n i f e s 0010000 t \r [ \r / / j o b t y p e s 0010020 \r / / * * * I f y o u c 0010040 h a n g e t h e s e , y o u 0010060 m a y h a v e t o c h a 0010100 n g e I n i t J o b P o l i c 0010120 y C o n t r o l s . \r j o b T y 0010140 p e F T P = 0 \r j o b T y p 0010160 e M T P = 1 \r j o b T y p e 0010200 T e l n e t = 2 \r j o b T y 0010220 p e B a c k u p = 3 \r j o b 0010240 T y p e M a i l = 4 \r j o b 0010260 T y p e M i s c e l l a n e o u 0010300 s = 5 \r j o b T y p e L e a 0010320 f = 376 001 \0 020 250 6 \r j o b T y 0010340 p e P r e s s = 7 \r j o b T 0010360 y p e N a m e U p d a t e = 0010400 8 \r j o b T y p e B o o t U p d 0010420 a t e = 9 \r j o b T y p e C 0010440 o p y D i s k = 1 0 \r ] \r \r 0010460 / / - - - - - - - - - - - - - - 0010500 - - - - - - - - - - - - - - - - * 0010560 - - - - - - - - - - - - - - \r s 0010600 t r u c t u r e J P C : / 0010620 / J o b P o l i c y C o n 0010640 t r o l s - - s e e I f s 0010660 R s M g r I n i t . b c p l f 0010700 o r d e t a i l s \r / / - - - 0010720 - - - - - - - - - 376 001 \0 307 250 - - 0010740 - - - - - - - - - - - - - - - - * 0011020 - - - - - - - - - - - - - - \r [ 0011040 \r t y p e C l a s s ^ 0 , 1 0 0011060 w o r d \r c l a s s M a x ^ 0 , 0011100 4 w o r d \r c l a s s S y s t 0011120 e m M a x ^ 0 , 4 w o r d \r ] 0011140 \r \r / / - - - - - - - - - - - - 0011160 - - - - - - - - - - - - - - - - * 0011260 \r s t r u c t u r e J o b T ^ 0011300 0 , 0 : w o r d / / a 0011320 t a b l e o f c o n t e 376 \0 0011340 ^ N m x t s ( I F S j o b s 0011360 ) \r / / - - - - - - - - - - - - 0011400 - - - - - - - - - - - - - - - - * 0011500 \r 377 \0 \0 I f s R s M g r I n i t 0011520 . b c p l \0 373 227 371 372 246 \0 \0 376 001 \0 0011540 275 350 / / I f s R S M g r I n i 0011560 t . b c p l - R e n d e z v 0011600 o u s S o c k e t M a n a g 0011620 e r i n i t i a l i z a t i o 0011640 n \r / / C o p y r i g h t X 0011660 e r o x C o r p o r a t i o n 0011700 1 9 7 9 , 1 9 8 0 , 1 9 8 0011720 1 \r / / L a s t m o d i f i 0011740 e d O c t o b e r 1 8 , 1 0011760 9 8 1 2 : 4 2 P M b y 0012000 T a f t \r \r g e t " I f s . d 0012020 e c l " \r g e t " I f s R s . 0012040 d e c l " \r g e t " I f s I n 0012060 i t . d e c l " \r \r e x t e r n 0012100 a l \r [ \r / / o u t g o i n g 0012120 p r o c e d u r e s \r I n i t 0012140 R S 376 001 \0 [ 372 M g r ; I n i t 0012160 J o b P o l i c y C o n t r o l 0012200 s \r \r / / i n c o m i n g p 0012220 r o c e d u r e s \r A l l o c a 0012240 t e ; Z e r o ; M o v e B l 0012260 o c k ; M a x \r C r e a t e E 0012300 v e n t ; R s M g r E v e n t 0012320 ; F l u s h V i t a l S t a t 0012340 e ; S h i f t S w a t E v e n 0012360 t \r \r / / i n c o m i n g s 0012400 t a t i c s \r r s Q ; o v P B 0012420 I Q ; r s L o c k ; j o b T 0012440 ; l e n J o b T ; m a x J o 0012460 b s ; l e a f P r e s e n t ; 0012500 j p c \r i s b ; n u m O v X 0012520 M P a g e s ; n u m P B I s \r 0012540 s y s Z o n e 376 001 \0 333 375 ; l v 0012560 A b o r t F l a g \r ] \r \r \r / / 0012600 I n i t R S M g r i n i t i 0012620 a l i z e s t h e R S M g r 0012640 a n d r e l a t e d m o d 0012660 u l e s . \r / / n u m V M e m 0012700 B u f s i s t h e t o t a 0012720 l n u m b e r o f V M e m 0012740 b u f f e r s e x p e c t e 0012760 d t o b e a v a i l a b l 0013000 e \r / / a f t e r a l l i 0013020 n i t i a l i z a t i o n i s 0013040 c o m p l e t e d . I f 0013060 t h e A l t o h a s e x t 0013100 e n d e d m e m o r y , \r / / 0013120 t h i s i s u s e d t o 0013140 f i g u r e o u t 376 001 \0 e 0013160 236 t h e m a x i m u m n u m 0013200 b e r o f j o b s \r / / t 0013220 h a t c a n b e s u p p o 0013240 r t e d a n d t o a d j u 0013260 s t z o n e s i z e s a n 0013300 d P B I a l l o c a t i o n 0013320 s \r / / a c c o r d i n g l y 0013340 . T h e r e s u l t s a 0013360 r e l e f t i n : \r / / \t l 0013400 e n J o b T - - a b s o l u 0013420 t e m a x i m u m n u m b e 0013440 r o f j o b s \r / / \t n u m 0013460 P B I s - - n u m b e r o 0013500 f P B I s t o a l l o c a 0013520 t e \r / / \t i s b > > I S B . s 0013540 m a l l Z o n e I n c r - - 0013560 w 376 001 \0 ' 003 o r d s t o a d 0013600 d t o s m a l l Z o n e \r / 0013620 / \t i s b > > I S B . b i g Z o 0013640 n e I n c r - - w o r d s 0013660 t o a d d t o b i g Z o n 0013700 e \r \r / / T h e i n i t i a 0013720 l z o n e s i z e s , P B 0013740 I a l l o c a t i o n s , e 0013760 t c . ( d e f i n e d i n 0014000 I f s I n i t R e s . b c p l ) 0014020 \r / / a r e b a s e d o n 0014040 a n o n - X M , n o n - L 0014060 e a f c o n f i g u r a t i o 0014100 n s u p p o r t i n g a m 0014120 a x i m u m o f 6 \r / / j 0014140 o b s ; t h e s e n u m b e 0014160 r s h a v 376 001 \0 y p e b e e 0014200 n d e t e r m i n e d e m p 0014220 i r i c a l l y . H e r e 0014240 w e c o m p u t e t h e \r / 0014260 / a d d i t i o n a l d e m 0014300 a n d s p l a c e d o n m 0014320 e m o r y b y j o b s i n 0014340 e x c e s s o f t h e f 0014360 i r s t 6 . \r \f \r / / - - - - 0014400 - - - - - - - - - - - - - - - - * 0014500 - - - - - - - - \r l e t I n i 0014520 t R S M g r ( n u m V M e m B u 0014540 f s ) b e \r / / - - - - - - - 0014560 - - - - - - - - - - - 376 001 \0 264 177 0014600 - - - - - - - - - - - - - - - - * 0014660 - - - - - - - - - - \r [ \r l e n 0014700 J o b T = 6 \r n u m P B I s 0014720 = 2 1 / / 3 p e r 0014740 j o b p l u s 3 e x t r a 0014760 \r i s b > > I S B . s m a l l Z 0015000 o n e I n c r = 0 ; i s b 0015020 > > I S B . b i g Z o n e I n c 0015040 r = 0 \r \r i f n u m O v X 0015060 M P a g e s n e 0 t h e n 0015100 \r [ / / X M c o n 0015120 f i g u r a t i o n \r m a 0015140 n i f e s t \r [ 0015160 / / A s s u m p t i o n s m 0015200 376 001 \0 375 275 a d e a b o u t m 0015220 e m o r y d e m a n d p e r 0015240 j o b \r n u m V M 0015260 e m B u f s P e r J o b = 3 0015300 \t \t / / 1 c t x + 2 s 0015320 t r e a m b u f f e r s \r 0015340 z o n e W o r d s P e r 0015360 J o b = 3 0 0 + 1 0 + 0015400 \t / / R T P s t a c k s i 0015420 z e + U s e r I n f o b l 0015440 o c k \r 7 5 + 0015460 2 5 + 5 0 + \t \t \t / / B 0015500 S P S t r e a m + o n e F 0015520 D + o n e D i s k S t r e 0015540 a m \r 3 * 2 9 0 0015560 + 1 0 0 \t \t \t / / 3 P B I 0015600 s + s 376 001 \0 275 \n l o p \r 0015620 t o t a l W o r d s P e 0015640 r J o b = ( n u m V M e m B 0015660 u f s P e r J o b l s h i f t 0015700 l o g S t d P a g e L e n g t 0015720 h ) + \r z o n e 0015740 W o r d s P e r J o b \r 0015760 ] \r \r / / N o t e 0016000 t h a t t h e z o n e W o r 0016020 d s P e r J o b f o r t h e 0016040 f i r s t 6 j o b s a r 0016060 e a l r e a d y \r / / 0016100 a c c o u n t e d f o r . 0016120 R i g h t - s h i f t e v e r 0016140 y t h i n g b y 1 t o k 0016160 e e p i t p o s i t i v e . 0016200 \r l e t n u 376 001 \0 037 364 m 0016220 V M e m W o r d s E x t r a = 0016240 \r ( n u m V M e m B u f 0016260 s - l e n J o b T * n u m V 0016300 M e m B u f s P e r J o b ) l 0016320 s h i f t l o g S t d P a g e 0016340 L e n g t h \r l e t n u 0016360 m J o b s E x t r a = \r 0016400 ( n u m V M e m W o r d s E x 0016420 t r a r s h i f t 1 ) / 0016440 ( t o t a l W o r d s P e r J o 0016460 b r s h i f t 1 ) \r l 0016500 e n J o b T = l e n J o b T 0016520 + n u m J o b s E x t r a \r 0016540 \r / / A d j u s t z o 0016560 n e s i z e s a n d P B I 0016600 a l l o c a t i o n s \r 376 0016620 001 \0 \ n i s b > > I S B . b i 0016640 g Z o n e I n c r = n u m J 0016660 o b s E x t r a * z o n e W o r 0016700 d s P e r J o b \r i s b > 0016720 > I S B . s m a l l Z o n e I n 0016740 c r = n u m J o b s E x t r 0016760 a * 5 0 / / n u m b e r 0017000 p i c k e d o u t o f t h 0017020 e a i r \r n u m P B I s 0017040 = n u m P B I s + 3 * n 0017060 u m J o b s E x t r a \r ] 0017100 \r \r i f l e a f P r e s e n t 0017120 t h e n \r [ / / b 0017140 a c k o f f t h e j o b 0017160 l i m i t a n d a d d m o 0017200 r e s p a c e t o s m a l 0017220 l Z o n 376 001 \0 016 246 e \r l e 0017240 n J o b T = l e n J o b T - 0017260 1 \r i s b > > I S B . s m 0017300 a l l Z o n e I n c r = i s 0017320 b > > I S B . s m a l l Z o n e 0017340 I n c r + 1 0 2 4 \r ] \r \r 0017360 / / D e f a u l t S e r v e 0017400 r - L i m i t \r m a x J o b s 0017420 = l e n J o b T - 1 \r \r / / 0017440 a l i t t l e u n s t r u c 0017460 t u r e d p r o g r a m m i n 0017500 g h e r e . . . \r r s Q = 0017520 A l l o c a t e ( s y s Z o n e 0017540 , l e n J o b T + 6 ) ; Z e 0017560 r o ( r s Q , l e n J o b T + 0017600 6 ) \r o v P B I Q = r s Q + 0017620 2 \r r s L o c k 376 001 \0 226 d = 0017640 r s Q + 4 \r j o b T = r s Q 0017660 + 6 \r \r C r e a t e E v e n t ( 0017700 R s M g r E v e n t ) \r C r e a 0017720 t e E v e n t ( F l u s h V i t 0017740 a l S t a t e ) \r @ l v A b o r 0017760 t F l a g = @ l v A b o r t 0020000 F l a g + 1 / / d i s a b 0020020 l e u s e r a b o r t s \r C 0020040 r e a t e E v e n t ( S h i f t 0020060 S w a t E v e n t ) \r ] \r \f \r / 0020100 / - - - - - - - - - - - - - - - 0020120 - - - - - - - - - - - - - - - - * 0020200 - - - - - - - - - - - - - \r a n 0020220 d I n i t J o b P o l i c 376 001 0020240 \0 374 346 y C o n t r o l s ( ) b 0020260 e \r / / - - - - - - - - - - - - 0020300 - - - - - - - - - - - - - - - - * 0020400 \r / / S e t s t h e j o b 0020420 p o l i c y c o n t r o l 0020440 t a b l e b a s e d o n m 0020460 a x J o b s . \r [ \r i f j p c 0020500 e q 0 t h e n j p c = 0020520 A l l o c a t e ( s y s Z o n 0020540 e , s i z e J P C / 1 6 ) \r 0020560 \r M o v e B l o c k ( l v j p 0020600 c > > J P C . t y p e C l a s s 0020620 , t a b l e \r [ / / 0020640 m a p 376 001 \0 - X s t y p e s 0020660 t o j o b e q u i v a l e n 0020700 c e c l a s s e s \r 0 \t 0020720 / / F T P \r 0 \t / / M 0020740 T P \r 0 \t / / T e l n e 0020760 t \r 1 \t / / B a c k u p 0021000 \r 2 \t / / M a i l \r 0021020 3 \t / / M i s c e l l a n e 0021040 o u s \r 0 \t / / L e a f 0021060 \r 2 \t / / P r e s s \r 0021100 4 \t / / N a m e U p d a t 0021120 e \r 2 \t / / B o o t U p 0021140 d a t e \r 0 \t / / C o p 0021160 y D i s k \r ] , 1 1 ) \r 0021200 \r M o v e B l o c k ( l v j p 0021220 c > > J P C . c l a s s M a x , 0021240 t a b l e \r 376 001 \0 364 360 [ 0021260 / / m a x n u m b e r o 0021300 f j o b s o f a g i v e 0021320 n c l a s s a l l o w e d 0021340 s i m u l t a n e o u s l y \r 0021360 0 \t \t / / 0 F T P + M T 0021400 P + T e l n e t + L e a f + C o 0021420 p y D i s k - - c h a n g e 0021440 d t o m a x J o b s b e l 0021460 o w \r 1 \t \t / / 1 B a 0021500 c k u p \r 1 \t \t / / 2 0021520 M a i l + P r e s s + B o o t U 0021540 p d a t e \r 2 \t \t / / 3 0021560 M i s c e l l a n e o u s \r 0021600 1 \t \t / / 4 N a m e U p 0021620 d a t e \r ] , 5 ) \r j p 0021640 c > > J P C . c l a s s M 376 001 \0 0021660 341 \a a x ^ 0 = m a x J o b s 0021700 \r \r M o v e B l o c k ( l v j 0021720 p c > > J P C . c l a s s S y s 0021740 t e m M a x , t a b l e \r 0021760 [ / / a j o b o f a 0022000 g i v e n c l a s s s h o 0022020 u l d n o t b e p e r m i 0022040 t t e d t o r u n i f \r 0022060 / / i t w o u l d 0022100 m a k e t h e n u m b e r 0022120 o f j o b s i n t h e s 0022140 y s t e m e x c e e d \r 0022160 / / t h e l i m i t g 0022200 i v e n i n t h i s t a b 0022220 l e . \r 9 9 9 \t \t / / 0 0022240 F T P + M T P + T e l n e t + 0022260 L e 376 001 \0 235 K a f + C o p y D i 0022300 s k \r 2 \t \t / / 1 B a 0022320 c k u p - - c h a n g e d 0022340 b e l o w \r 5 \t \t / / 2 0022360 M a i l + P r e s s + B o o t 0022400 U p d a t e - - c h a n g e 0022420 d t o m a x J o b s - 1 b 0022440 e l o w \r 9 9 9 \t \t / / 0022460 3 M i s c e l l a n e o u s \r 0022500 2 \t \t / / 4 N a m e U 0022520 p d a t e - - c h a n g e d 0022540 b e l o w \r ] , 5 ) \r 0022560 j p c > > J P C . c l a s s S y 0022600 s t e m M a x ^ 1 = M a x ( 0022620 2 , m a x J o b s / 2 ) / 0022640 / n o B a c k u p i f t 0022660 o o b u s y 376 \0 232 360 221 \r j p c 0022700 > > J P C . c l a s s S y s t e 0022720 m M a x ^ 2 = m a x J o b s 0022740 - 1 / / l e a v e o n e 0022760 s l o t f o r a c l a s 0023000 s 0 j o b \r j p c > > J P C 0023020 . c l a s s S y s t e m M a x ^ 0023040 4 = M a x ( 2 , m a x J o 0023060 b s / 2 ) / / n o N a m 0023100 e U p d a t e i f t o o b 0023120 u s y \r ] \r 377 \0 \0 I f s R s M g 0023140 r R e s . b c p l \0 373 223 361 314 374 \0 0023160 \0 376 001 \0 264 247 / / I f s R S M g 0023200 r R e s . b c p l - R e n d 0023220 e z v o u s S o c k e t M a 0023240 n a g e r - R E S I D E N T 0023260 \r / / C o p y r i g h t X e 0023300 r o x C o r p o r a t i o n 0023320 1 9 7 9 \r \r / / L a s t m o 0023340 d i f i e d M a y 2 0 , 1 0023360 9 7 9 1 1 : 1 6 P M b y 0023400 B o g g s \r \r g e t " P u p 0023420 0 . d e c l " \r g e t " P u p 0023440 1 . d e c l " \r g e t " I f s 0023460 R s . d e c l " \r \r e x t e r n 0023500 a l \r [ \r / / o u t g o i n g 0023520 p r o c e d u r e s \r R s M g 0023540 r E v e n t ; S h i f t S w a 0023560 t E v e n t 376 001 \0 312 035 \r \r / / 0023600 i n c o m i n g p r o c e d u 0023620 r e s \r Q u e u e E v e n t ; 0023640 H a n d l e R S P u p ; H a n 0023660 d l e K e y s \r \r / / i n c o 0023700 m i n g s t a t i c s \r r s Q 0023720 \r ] \r \r \r / / - - - - - - - - - 0023740 - - - - - - - - - - - - - - - - * 0024040 - - - \r l e t R s M g r E v e 0024060 n t ( e c b ) b e \r / / - - - 0024100 - - - - - - - - - - - - - - - - * 0024160 - - - - - - - - - - - 376 001 \0 264 e 0024200 - - - - - - - - - - - - - - \r / 0024220 / C h e c k s r e n d e z v o 0024240 u s s o c k e t i n p u t 0024260 q u e u e s f o r R F C s \r 0024300 [ \r l e t r s = r s Q \r 0024320 [ \r r s = r s ! 0 0024340 \r i f r s e q 0 b 0024360 r e a k \r i f r s > > R 0024400 S . s o c > > P u p S o c . i Q 0024420 . h e a d n e 0 t h e n 0024440 H a n d l e R S P u p ( r s ) \r 0024460 ] r e p e a t \r Q u e u 0024500 e E v e n t ( e c b , 2 5 ) 0024520 / / 2 5 0 m s t o n e x 0024540 t c h e c k \r ] \r \r \r / / - - 0024560 - - - - - - - - - - - - - - - - 0024600 376 001 \0 346 - - - - - - - - - - - 0024620 - - - - - - - - - - - - - - - - * 0024660 - - - - - - - - - - - - - - - \r 0024700 a n d S h i f t S w a t E v e 0024720 n t ( e c b ) b e \r / / - - - 0024740 - - - - - - - - - - - - - - - - * 0025040 - - - - - - - - - \r / / C h e c 0025060 k s f o r s h i f t - s w a 0025100 t a b o r t a n d o t h e 0025120 r i n t e r e s t i n g e v 0025140 e n t s \r [ \r / / K e y b o a 0025160 r d w o r d 1 7 7 0 3 7 b 0025200 c o n t a 376 \0 214 N c i n s L o 0025220 c k , S p a c e , a n d S 0025240 w a t . I g n o r e L o c 0025260 k . \r i f ( @ 1 7 7 0 3 7 b 0025300 & 1 7 7 5 7 7 b ) n e 1 7 0025320 7 5 7 7 b t h e n H a n d l 0025340 e K e y s ( ) \r Q u e u e E v e 0025360 n t ( e c b , 2 5 ) / / 2 0025400 5 0 m s t o n e x t c h 0025420 e c k \r ] \r 377 \0 \0 I f s R s M g 0025440 r S w a p . b c p l \0 373 231 262 027 372 0025460 \0 \0 376 001 \0 | V / / I f s R S M 0025500 g r S w a p . b c p l - R e 0025520 n d e z v o u s S o c k e t 0025540 a n d P r o c e s s M a n a 0025560 g e r \r / / C o p y r i g h t 0025600 X e r o x C o r p o r a t i 0025620 o n 1 9 7 9 , 1 9 8 0 , 1 0025640 9 8 1 , 1 9 8 2 \r / / L a s 0025660 t m o d i f i e d S e p t e 0025700 m b e r 1 7 , 1 9 8 2 1 0025720 0 : 4 5 A M b y T a f t \r 0025740 \r g e t " P u p . d e c l " \r 0025760 g e t " I f s R s . d e c l " 0026000 \r g e t " I f s . d e c l " \r 0026020 \r e x t e r n a l \r [ \r / / o 0026040 u t g o i n g p r o c e d u r 0026060 e s \r H a n d 376 001 \0 u K l e R S 0026100 P u p ; D i s t r i b u t e P 0026120 B I s ; D e c l a r e P u p S 0026140 o c \r C r e a t e J o b ; D e 0026160 s t r o y J o b ; A c t i v e 0026200 J o b s ; J o b O K \r F l u s 0026220 h V i t a l S t a t e ; F l u 0026240 s h B u f f e r s C t x \r \r / / 0026260 i n c o m i n g p r o c e d 0026300 u r e s \r R S S e n d A b o r t 0026320 ; A d j u s t P B I s ; P e 0026340 r f o r m I d l e T a s k s \r A 0026360 l l o c a t e ; F r e e ; E 0026400 n q u e u e ; D e q u e u e ; 0026420 U n q u e u e ; I n s e r t 0026440 A f t e r \r Z e r o ; M o v e 0026460 B l o c k ; M a x ; 376 001 \0 N 0026500 G M i n ; M u l t E q ; D e 0026520 f a u l t A r g s ; B l o c k 0026540 \r S e t A l l o c a t i o n ; 0026560 E x c h a n g e P o r t s ; C 0026600 o m p l e t e P u p ; A p p e 0026620 n d S t r i n g T o P u p \r R e 0026640 l e a s e P B I ; O p e n L e 0026660 v e l 1 S o c k e t ; O p e n 0026700 R T P S o c k e t ; C r e a t 0026720 e B S P S t r e a m \r F l u s h 0026740 K D s ; F l u s h B T r e e S 0026760 t a t e ; F l u s h B u f f e 0027000 r s ; M a r k D i r t y V F i 0027020 l e s \r F r e e P o i n t e r ; 0027040 I n i t i a l i z e C o n t e 0027060 x t ; Q u e u e E v e n t ; 0027100 C 376 001 \0 234 Q r e a t e E v e n t 0027120 \r C r e a t e C t x ; D e s t 0027140 r o y C t x \r D i s a b l e I n 0027160 t e r r u p t s ; E n a b l e 0027200 I n t e r r u p t s ; L o c k 0027220 ; U n l o c k ; D o u b l e 0027240 I n c r e m e n t \r \r / / o u 0027260 t g o i n g s t a t i c s \r e 0027300 n t F l a g ; h a l t F l a g 0027320 ; r s Q ; j o b T ; o v P 0027340 B I Q ; n u m O v e r f l o w 0027360 P B I s ; m a x O v e r f l o 0027400 w P B I s \r m a x J o b s ; r 0027420 s L o c k ; l e n J o b T ; 0027440 n u m P B I s ; j p c \r \r / / 0027460 i n c o m i n g s t a t i c 0027500 s \r i f s C 376 001 \0 : 244 t x Q ; 0027520 s y s Z o n e \r n u m N e t s ; 0027540 p b i F r e e Q ; l e n P B 0027560 I ; C t x R u n n i n g ; o 0027600 p e n L o c k \r ] \r \r s t a t i 0027620 c \r [ \r e n t F l a g = t r 0027640 u e \t \t / / N e t w o r k c 0027660 o n n e c t i o n s a r e a 0027700 l l o w e d \r h a l t F l a g 0027720 = f a l s e \t / / H a l t 0027740 t h e s y s t e m a f t e r 0027760 a l l j o b s a r e k i 0030000 l l e d \r r s L o c k \t \t \t / / 0030020 L o c k f o r C r e a t e 0030040 J o b a n d D i s t r i b u 0030060 t e P B I s \r m a x J o b s \t \t 0030100 \t / / m a x # c 376 001 \0 324 311 0030120 l a s s 0 j o b s ( F T P 0030140 + M T P + T e l n e t + L e a f 0030160 + C o p y D i s k ) \r j p c = 0030200 0 \t \t \t / / j o b p o l i 0030220 c y c o n t r o l s \r r s Q ; 0030240 j o b T ; n u m O v e r f l 0030260 o w P B I s ; m a x O v e r f 0030300 l o w P B I s ; o v P B I Q \r 0030320 l e n J o b T ; n u m P B I s 0030340 \r ] \r \r m a n i f e s t j o b 0030360 S S = 1 0 2 4 \r \f \r / / - - 0030400 - - - - - - - - - - - - - - - - * 0030500 - - - - - - - - - - \r l e t H 0030520 376 001 \0 ^ 346 a n d l e R S P u p ( 0030540 r s ) b e \r / / - - - - - - - 0030560 - - - - - - - - - - - - - - - - * 0030660 - - - - - \r [ \r l e t p b i 0030700 = D e q u e u e ( l v r s > 0030720 > R S . s o c > > P u p S o c . 0030740 i Q ) \r i f p b i > > P B I . 0030760 p u p . t y p e n e t y p e 0031000 R F C % p b i > > P B I . p 0031020 u p . d P o r t . h o s t e q 0031040 0 t h e n \r [ R e l 0031060 e a s e P B I ( p b i ) ; r e 0031100 t u r n ] \r u n l e s s e n 0031120 t F l a g 376 001 \0 026 027 d o \r 0031140 [ R S S e n d A b o r t ( p 0031160 b i , " I F S i s n o t 0031200 a v a i l a b l e " ) ; r e t 0031220 u r n ] \r \r / / D e f a u l 0031240 t n e t f i e l d o f c 0031260 o n n e c t i o n p o r t \r i 0031300 f p b i > > P B I . p u p . b 0031320 y t e s ^ 1 e q 0 t h e n 0031340 \r p b i > > P B I . p u p 0031360 . b y t e s ^ 1 = p b i > > 0031400 P B I . p u p . s P o r t . n e 0031420 t \r \r / / C h e c k j o b T 0031440 f o r d u p l i c a t e e 0031460 n t r y \r f o r i = 0 t 0031500 o l e n J o b T - 1 d o \r 0031520 i f j o b T > 376 001 \0 c 264 > 0031540 J o b T ^ i n e 0 t h e n 0031560 \r [ \r l 0031600 e t s o c = j o b T > > J 0031620 o b T ^ i > > R S C t x . b s p 0031640 S o c \r i f s o c 0031660 n e 0 & \r M 0031700 u l t E q ( l v s o c > > R T 0031720 P S o c . f r n P o r t , l v 0031740 p b i > > P B I . p u p . w o 0031760 r d s , l e n P o r t ) & \r 0032000 M u l t E q ( l v 0032020 s o c > > R T P S o c . c o n 0032040 n I D , l v p b i > > P B I 0032060 . p u p . i d ) t h e n \r 0032100 [ S e n d R F C 0032120 ( p b i , s o c ) ; r e t 376 0032140 001 \0 227 253 u r n ] / / d u p 0032160 l i c a t e R F C \r 0032200 ] \r \r / / G e t a s t a 0032220 c k a n d i n i t i a l i z 0032240 e t h e n e w j o b \r l e 0032260 t c t x = C r e a t e J o 0032300 b ( r s > > R S . p r o c , r 0032320 s > > R S . t y p e , r s > > 0032340 R S . e x t r a S p a c e , t 0032360 r u e ) \r i f c t x e q 0 0032400 t h e n \r [ \r R S 0032420 S e n d A b o r t ( p b i , " 0032440 I F S i s f u l l - t r 0032460 y l a t e r " ) \r D o u 0032500 b l e I n c r e m e n t ( l v 0032520 r s > > R S . n u m R e f u s e 0032540 d ) \r 376 001 \0 256 % r e t u r 0032560 n \r ] \r l e t s o c = 0032600 A l l o c a t e ( s y s Z o n 0032620 e , l e n B S P S o c ) \r O p 0032640 e n L e v e l 1 S o c k e t ( s 0032660 o c , 0 , l v p b i > > P 0032700 B I . p u p . w o r d s ) \r c t 0032720 x > > R S C t x . b s p S o c 0032740 = s o c \r D i s t r i b u t e 0032760 P B I s ( ) \r O p e n R T P S o 0033000 c k e t ( s o c , 0 , m o d 0033020 e I m m e d i a t e O p e n , 0033040 l v p b i > > P B I . p u p . 0033060 i d ) \r c t x > > R S C t x . c 0033100 o n n F l a g = t r u e \r C 0033120 r e a t e B S P S t r e a m ( s 0033140 o c ) \r S e n d R 376 001 \0 n . F C 0033160 ( p b i , s o c ) \r E n q u e 0033200 u e ( i f s C t x Q , c t x ) 0033220 \r D o u b l e I n c r e m e n t 0033240 ( l v r s > > R S . n u m A c 0033260 c e p t e d ) \r ] \r \r / / - - - 0033300 - - - - - - - - - - - - - - - - * 0033400 - - - - - - - - - \r a n d S e 0033420 n d R F C ( p b i , s o c ) 0033440 b e \r / / - - - - - - - - - - - 0033460 - - - - - - - - - - - - - - - - * 0033540 - - - - - - - - - - - - - - 376 001 0033560 \0 x 261 - - - \r [ \r M o v e B l o 0033600 c k ( l v p b i > > P B I . p 0033620 u p . w o r d s , l v s o c 0033640 > > P u p S o c . l c l P o r t 0033660 , l e n P o r t ) \r E x c h a 0033700 n g e P o r t s ( p b i ) \r C o 0033720 m p l e t e P u p ( p b i , t 0033740 y p e R F C , p u p O v B y t 0033760 e s + 6 ) \r ] \r \f \r / / - - - - 0034000 - - - - - - - - - - - - - - - - * 0034100 - - - - - - - - \r a n d D i s 0034120 t r i b u t e P B I s ( ) b e 0034140 \r / / - - - - - - - - - - - - - 0034160 - - - 376 001 \0 372 s - - - - - - - - 0034200 - - - - - - - - - - - - - - - - * 0034260 - - - - \r / / A t t e m p t s 0034300 t o d i s t r i b u t e t 0034320 h e s y s t e m P B I s e 0034340 q u a l l y a m o n g a l l 0034360 a c t i v e j o b s . \r / / 0034400 A f t e r d o i n g i t s 0034420 b e s t , i t c h e c k s 0034440 t w o c a s e s : \r / / 1 0034460 ) W h e n a n e w j o b 0034500 i s c r e a t e d , i t 0034520 m a y n o t b e p o s s i 0034540 b l e t o e q u a l l y \r / 0034560 / r e d i s 376 001 \0 341 246 t r i 0034600 b u t e t h e P B I s b y 0034620 r e d u c i n g t h e a l 0034640 l o c a t i o n s o f t h e 0034660 o t h e r \r / / j o b s . 0034700 W h e n t h i s h a p p 0034720 e n s , e n o u g h P B I s 0034740 a r e a l l o c a t e d f 0034760 r o m s y s Z o n e \r / / 0035000 t o p r e v e n t a d e a 0035020 d l o c k . \r / / 2 ) I f 0035040 s o m e P B I s w e r e a 0035060 l l o c a t e d i n t h e 0035100 p a s t t o p r e v e n t 0035120 a d e a d l o c k , a n d \r 0035140 / / t h e y a r e n o 0035160 l o n g e r n e e d e d 376 001 \0 0035200 253 210 ( e i t h e r b e c a u 0035220 s e t h e r e a r e f e w 0035240 e r j o b s n o w , \r / / 0035260 o r b e c a u s e s o m e 0035300 j o b s a r e n o t u s 0035320 i n g a l l o f t h e i r 0035340 a l l o c a t i o n s ) , \r / 0035360 / p b i F r e e Q i s s 0035400 e a r c h e d f o r t h e 0035420 e x t r a P B I s , a n d 0035440 t h e y a r e r e l e a s e 0035460 d i f f o u n d . \r / / T 0035500 h i s p r o c e d u r e a s 0035520 s u m e s t h a t i t k n 0035540 o w s a b o u t a l l s o 0035560 c k e t s t h a t k e e p 0035600 P B 376 001 \0 361 323 I s \r / / f o 0035620 r a n y l e n g t h o f 0035640 t i m e - - t h o s e t h 0035660 a t c o u l d p a r t i c i 0035700 p a t e i n a d e a d l o 0035720 c k . \r [ \r L o c k ( r s L o c 0035740 k , t r u e ) \r l e t a c t 0035760 i v e J o b s = A c t i v e 0036000 J o b s ( ) \r l e t c o m m i 0036020 t t e d P B I s = n u m N e 0036040 t s / / e a c h n e t c 0036060 o n s u m e s 1 P B I p e 0036100 r m a n e n t l y \r i f a c t 0036120 i v e J o b s n e 0 t h e 0036140 n \r [ \r / / T h e 0036160 f o l l o w i n g u g l y 0036200 t h i n g e 376 001 \0 315 275 n s u r 0036220 e s t h a t t h e S e t A 0036240 l l o c a t i o n p r o c e d 0036260 u r e \r / / i s i n 0036300 c o r e , s o t h a t l 0036320 a t e r c a l l s t o S e 0036340 t A l l o c a t i o n w o n ' 0036360 t f a u l t a n d \r / 0036400 / l e t o t h e r p r o 0036420 c e s s e s s n e a k i n 0036440 a n d c h a n g e t h e n 0036460 u m b e r o f P B I s b e 0036500 i n g u s e d . \r l e t 0036520 z P S I B = v e c l e n 0036540 P S I B ; Z e r o ( z P S I B 0036560 , l e n P S I B ) \r S e 0036600 t A l l o c a t i o n ( 376 001 \0 037 0036620 \t z P S I B - o f f s e t 0036640 P u p S o c . p s i b / 1 6 , 0036660 0 , 0 , 0 ) \r \r / / 0036700 E a c h s o c k e t n o m i 0036720 n a l l y g e t s i t s s 0036740 h a r e o f s y s t e m P 0036760 B I s , b u t a t m o s t 0037000 8 : \r l e t i n O u t 0037020 P B I s = M i n ( ( n u m P 0037040 B I s - n u m N e t s ) / a c t 0037060 i v e J o b s , 8 ) \r f 0037100 o r i = 0 t o l e n J 0037120 o b T - 1 d o \r [ 0037140 \r l e t c t x = 0037160 j o b T > > J o b T ^ i \r 0037200 i f c t x n e 0 0037220 t 376 001 \0 q 376 h e n \r 0037240 [ \r l e 0037260 t s o c = c t x > > R S C 0037300 t x . b s p S o c / / t r e 0037320 a t e d a s a P u p S o c 0037340 \r i f s o c 0037360 n e 0 t h e n \r 0037400 [ \r 0037420 / / I n d e p e n d 0037440 e n t l y c o m p u t e a c 0037460 t u a l i n p u t a n d o 0037500 u t p u t s o c k e t P B I 0037520 \r / / 0037540 a l l o c a t i o n s . C a 0037560 n n o t d e c r e a s e e i 0037600 t h e r a l l o c a t i o n 0037620 b e l o w \r 376 001 \0 u a 0037640 / / t h e n u 0037660 m b e r o f P B I s a c t 0037700 u a l l y i n u s e p l u 0037720 s o n e , u n l e s s t h 0037740 e \r / / 0037760 s o c k e t i s a l r e a 0040000 d y u s i n g i t s m a x 0040020 i m u m a l l o c a t i o n . 0040040 \r l e t 0040060 i P B I = M a x ( M i n ( 0040100 s o c > > P u p S o c . m a x I 0040120 P B I - s o c > > P u p S o c . 0040140 n u m I P B I + 1 , \r 0040160 s o c > > P u p 0040200 S o c . m a x I P B I ) , i n 0040220 O u t P B I s ) \r 376 001 \0 243 346 0040240 l e t o P 0040260 B I = M a x ( M i n ( s o c 0040300 > > P u p S o c . m a x O P B I 0040320 - s o c > > P u p S o c . n u m 0040340 O P B I + 1 , \r 0040360 s o c > > P u p S o c 0040400 . m a x O P B I ) , i n O u t 0040420 P B I s ) \r \r 0040440 / / P e r m i t t h e 0040460 s o c k e t o n e m o r e 0040500 t h a n t h e m a x o f 0040520 i t s i n p u t a n d \r 0040540 / / o u 0040560 t p u t a l l o c a t i o n s 0040600 t o g u a r a n t e e t h 0040620 a t o n e P B I c a n s 0040640 376 001 \0 332 003 t i l l \r 0040660 / / t r a v e l 0040700 i n t h e r e v e r s e d 0040720 i r e c t i o n . H o w e v 0040740 e r , i t i s n o t \r 0040760 / / n e c 0041000 e s s a r y t o c o u n t 0041020 t h i s i n c o m m i t t e 0041040 d P B I s , s i n c e t h e 0041060 B S P \r 0041100 / / g u a r a n t e e s n 0041120 e v e r t o h o l d o n t 0041140 o t h a t e x t r a P B I 0041160 . ( B S P u s e s \r 0041200 / / s o c k 0041220 e t a l l o c a t i o n m i 0041240 n u s o 376 001 \0 = 235 n e i n 0041260 b o t h d i r e c t i o n s 0041300 t o c o n t r o l \r 0041320 / / B S P - l e 0041340 v e l a l l o c a t i o n s . 0041360 ) \r l e 0041400 t m a x P B I = M a x ( i 0041420 P B I , o P B I ) \r 0041440 S e t A l l o c a 0041460 t i o n ( s o c , m a x P B I 0041500 + 1 , i P B I , o P B I ) \r 0041520 c o m m 0041540 i t t e d P B I s = c o m m 0041560 i t t e d P B I s + m a x P 0041600 B I \r ] 0041620 \r ] \r 0041640 ] \r ] \r \r 376 001 \0 200 D / 0041660 / I f n o w o v e r c o m 0041700 m i t t e d , a l l o c a t e 0041720 n e w P B I s a n d a d 0041740 d t o p o o l . \r / / I f 0041760 n o w u n d e r c o m m i t 0042000 t e d , t r y t o g e t 0042020 r i d o f o v e r f l o w 0042040 P B I s . \r i f c o m m i t t 0042060 e d P B I s g r n u m P B I 0042100 s + n u m O v e r f l o w P B I 0042120 s % \r c o m m i t t e d P B 0042140 I s l s n u m P B I s + n u 0042160 m O v e r f l o w P B I s & 0042200 n u m O v e r f l o w P B I s 0042220 g r 0 t h e n \r A d j 0042240 u s t P B I s ( c o m m i t t 376 0042260 001 \0 t 205 e d P B I s ) \r \r U n l 0042300 o c k ( r s L o c k ) \r ] \r \f \r 0042320 / / - - - - - - - - - - - - - - 0042340 - - - - - - - - - - - - - - - - * 0042420 - - - - - - - - - - - - - - \r a 0042440 n d C r e a t e J o b ( P r o 0042460 c , t y p e , e x t r a S p 0042500 a c e , d o n t S t a r t ; 0042520 n u m a r g s n a ) = v a 0042540 l o f \r / / - - - - - - - - - - 0042560 - - - - - - - - - - - - - - - - * 0042660 - - \r / 376 001 \0 364 214 / C r e a t 0042700 e s a j o b o f t y p e 0042720 t y p e a n d i n s e r t 0042740 s i t i n t h e j o b 0042760 t a b l e . \r / / S t a r t s 0043000 t h e c o n t e x t u n l 0043020 e s s d o n t S t a r t i s 0043040 t r u e ( d e f a u l t f 0043060 a l s e ) . \r / / R e t u r n 0043100 s a p o i n t e r t o t 0043120 h e c o n t e x t n o r m a 0043140 l l y . \r / / R e t u r n s 0043160 z e r o i f t h e j o b 0043200 t a b l e i s f u l l o r 0043220 t o o m a n y j o b s o 0043240 f \r / / t h e s a m e t y 0043260 p e a l r e a d 376 001 \0 371 260 y 0043300 e x i s t o r a s t a c k 0043320 c a n ' t b e a l l o c a 0043340 t e d . \r [ \r D e f a u l t A r 0043360 g s ( l v n a , - 2 , l e 0043400 n R S C t x - 3 , f a l s e ) 0043420 \r l e t c t x = 0 \r L o c 0043440 k ( r s L o c k , t r u e ) \r 0043460 i f J o b O K ( t y p e , t 0043500 r u e ) t h e n \r f o r 0043520 i = 0 t o l e n J o b 0043540 T - 1 d o \r i f 0043560 j o b T > > J o b T ^ i e q 0043600 0 t h e n \r 0043620 [ \r c t x = 0043640 A l l o c a t e ( s y s Z o n 0043660 e , j o b S S , t r u e 376 001 0043700 \0 366 > ) \r i f 0043720 c t x n e 0 t h e n \r 0043740 [ \r 0043760 Z e r o ( c t 0044000 x , e x t r a S p a c e + 3 ) 0044020 \r I n i 0044040 t i a l i z e C o n t e x t ( c 0044060 t x , j o b S S , P r o c , 0044100 e x t r a S p a c e ) \r 0044120 c t x > > R S 0044140 C t x . t y p e = t y p e \r 0044160 j o b T 0044200 > > J o b T ^ i = c t x \r 0044220 u n l e s 0044240 s d o n t S t a r t d o E 0044260 n q u e u e ( i f s C t x Q , 0044300 c t x 376 001 \0 2 325 ) \r 0044320 ] \r 0044340 b r e a k \r 0044360 ] \r U n l o c k ( r s L o c k ) 0044400 \r r e s u l t i s c t x \r ] \r 0044420 \r / / - - - - - - - - - - - - - 0044440 - - - - - - - - - - - - - - - - * 0044520 - - - - - - - - - - - - - - - \r 0044540 a n d D e s t r o y J o b ( ) 0044560 b e \r / / - - - - - - - - - - 0044600 - - - - - - - - - - - - - - - - * 0044700 - - \r / / P r 376 001 \0 8 315 o c e 0044720 d u r e c a l l e d b y a 0044740 j o b t o t e r m i n a t 0044760 e i t s e l f . D o e s 0045000 n o t r e t u r n . \r [ \r F r 0045020 e e P o i n t e r ( l v C t x 0045040 R u n n i n g > > R S C t x . b 0045060 s p S o c ) \r D i s t r i b u t 0045100 e P B I s ( ) \r \r / / T h e 0045120 f o l l o w i n g d e p e n d 0045140 s o n t h e f a c t t h 0045160 a t \r / / ( 1 ) p r o c e s 0045200 s s t a c k s a r e p a g 0045220 e - s i z e b u f f e r s , 0045240 a n d f r e e i n g o n e 0045260 d o e s n ' t \r / / i 0045300 m m e d i a t e l y c l 376 001 \0 0045320 017 360 o b b e r i t s c o n t 0045340 e n t s ; \r / / ( 2 ) c a l 0045360 l i n g U n q u e u e a n d 0045400 F r e e c a n ' t c a u s 0045420 e u s t o B l o c k . \r f 0045440 o r i = 0 t o l e n J 0045460 o b T - 1 d o \r i f j 0045500 o b T > > J o b T ^ i e q C 0045520 t x R u n n i n g t h e n j 0045540 o b T > > J o b T ^ i = 0 \r 0045560 F r e e ( s y s Z o n e , C t 0045600 x R u n n i n g ) \r U n q u e u 0045620 e ( i f s C t x Q , C t x R u 0045640 n n i n g ) \r C t x R u n n i n 0045660 g ! 0 = 0 / / s o C 0045700 a l l C o n t e x t L i s t w 0045720 i l 376 001 \0 W A l s t a r t o 0045740 v e r - - C t x R u n n i n 0045760 g h a s n o s u c c e s s 0046000 o r ! \r B l o c k ( ) / / 0046020 n e v e r t o r e t u r n \r 0046040 ] \r \r / / - - - - - - - - - - - 0046060 - - - - - - - - - - - - - - - - * 0046160 - \r a n d A c t i v e J o b s 0046200 ( ) = v a l o f \r / / - - - 0046220 - - - - - - - - - - - - - - - - * 0046320 - - - - - - - 376 001 \0 333 l - - \r [ 0046340 \r l e t a c t i v e J o b s 0046360 = 0 \r f o r i = 0 t o 0046400 l e n J o b T - 1 d o i f 0046420 j o b T > > J o b T ^ i n e 0046440 0 t h e n \r a c t i v 0046460 e J o b s = a c t i v e J o 0046500 b s + 1 \r r e s u l t i s a c 0046520 t i v e J o b s \r ] \r \f \r / / - 0046540 - - - - - - - - - - - - - - - - * 0046640 - - - - - - - - - - - \r a n d 0046660 D e c l a r e P u p S o c ( s o 0046700 c ) b e \r / / - - - - - - - - 0046720 - - - - - - - - - - - - 376 001 \0 } 0046740 374 - - - - - - - - - - - - - - - 0046760 - - - - - - - - - - - - - - - - * 0047020 - - - - - - - - - \r / / P r o 0047040 c e d u r e c a l l e d b y 0047060 a p r o c e s s t o d e 0047100 c l a r e a P u p s o c k 0047120 e t i t i n t e n d s t o 0047140 u s e \r / / t h a t m i g 0047160 h t d e m a n d s o m e a 0047200 l l o c a t i o n . P a s s 0047220 s o c = 0 t o r e m o 0047240 v e t h e c u r r e n t \r / 0047260 / s o c k e t ( m u s t d 0047300 o t h i s b e f o r e c a 0047320 l l i n g D e s t r o y J o b 0047340 , 376 001 \0 % 253 a s D e s t r o 0047360 y J o b \r / / w i l l t r y 0047400 t o f r e e t h e c u r 0047420 r e n t s o c k e t i n t o 0047440 s y s Z o n e o t h e r w i 0047460 s e ) . \r [ \r C t x R u n n i n 0047500 g > > R S C t x . b s p S o c 0047520 = s o c \r D i s t r i b u t e 0047540 P B I s ( ) \r ] \r \r / / - - - - 0047560 - - - - - - - - - - - - - - - - * 0047660 - - - - - - - - \r a n d J o b 0047700 O K ( t y p e , n e w ; n u 0047720 m a r g s n a ) = v a l o 0047740 f \r / / - - 376 001 \0 233 250 - - - - - 0047760 - - - - - - - - - - - - - - - - * 0050060 - - - - - \r / / R e t u r n s 0050100 t r u e i f f i t i s 0050120 o k f o r a j o b o f 0050140 t h e s p e c i f i e d t y 0050160 p e t o r u n n o w . \r / 0050200 / n e w = t r u e m e a 0050220 n s y o u a r e t a l k i 0050240 n g a b o u t c r e a t i n 0050260 g a n e w j o b o f t 0050300 h a t t y p e ; \r / / f a l 0050320 s e ( t h e d e f a u l t ) 0050340 m e a n s y o u 376 001 \0 343 320 0050360 a r e t a l k i n g a b o u 0050400 t c o n t i n u i n g t o 0050420 r u n \r / / a n e x i s t i 0050440 n g j o b . \r / / S e e I 0050460 f s R s M g r I n i t . b c p l 0050500 f o r j o b p o l i c y 0050520 c o n t r o l s c u r r e n t 0050540 l y i n f o r c e . \r [ \r i 0050560 f h a l t F l a g r e s u l 0050600 t i s f a l s e \r \r l e t c 0050620 l a s s = j p c > > J P C . 0050640 t y p e C l a s s ^ t y p e \r l 0050660 e t t o t a l J o b s = n 0050700 a g r 1 & n e w ? 1 , 0050720 0 \r l e t n u m J o b s I n 0050740 C l a s s = t o t a l J o b 0050760 376 001 \0 1 276 s \r f o r i = 0 0051000 t o l e n J o b T - 1 d o 0051020 \r i f j o b T > > J o b 0051040 T ^ i n e 0 t h e n \r 0051060 [ \r t o t a 0051100 l J o b s = t o t a l J o b 0051120 s + 1 \r i f j p c 0051140 > > J P C . t y p e C l a s s ^ 0051160 ( j o b T > > J o b T ^ i > > R 0051200 S C t x . t y p e ) e q c l 0051220 a s s t h e n \r 0051240 n u m J o b s I n C l a s s 0051260 = n u m J o b s I n C l a s 0051300 s + 1 \r ] \r r e s u 0051320 l t i s n u m J o b s I n C l 0051340 a s s l e j p c > > J P C . 0051360 c l a s s 376 001 \0 S \a M a x ^ c l 0051400 a s s & \r t o t a l J o b s 0051420 l e j p c > > J P C . c l a 0051440 s s S y s t e m M a x ^ c l a s 0051460 s \r ] \r \f \r / / - - - - - - - - 0051500 - - - - - - - - - - - - - - - - * 0051600 - - - - \r a n d F l u s h V i 0051620 t a l S t a t e ( e c b ) b e 0051640 \r / / - - - - - - - - - - - - - 0051660 - - - - - - - - - - - - - - - - * 0051740 - - - - - - - - - - - - - - - \r 0051760 [ \r / / L o c k 376 001 \0 301 206 o 0052000 u t c h a n g e s i n d i 0052020 s k c o n f i g u r a t i o n 0052040 w h i l e f l u s h i n g 0052060 d i s k s t a t e \r i f L o 0052100 c k ( o p e n L o c k , t r u 0052120 e , t r u e ) t h e n \r 0052140 [ \r F l u s h K D s ( ) 0052160 \r M a r k D i r t y V F i 0052200 l e s ( ) \r F l u s h B T 0052220 r e e S t a t e ( ) \r U n 0052240 l o c k ( o p e n L o c k ) \r 0052260 ] \r \r D i s t r i b u t e P 0052300 B I s ( ) \r \r / / I f t h e 0052320 r e ' s n o t h i n g e l s 0052340 e t o d o . . . . \r i f A 0052360 c t i v e J o b s ( ) e q 376 0052400 001 \0 ~ 357 0 t h e n P e r f o 0052420 r m I d l e T a s k s ( ) \r \r / 0052440 / F o r k a s e p a r a t 0052460 e c o n t e x t t o d o 0052500 t h e a c t u a l V M e m 0052520 f l u s h t o d i s k , b 0052540 e c a u s e i t \r / / c a n 0052560 t a k e a l o n g t i m 0052600 e , a n d w e d o n ' t 0052620 w a n t t o t i e u p t 0052640 h e E v e n t M g r c o n t 0052660 e x t . \r / / n . b . S t a 0052700 c k m u s t b e b i g e 0052720 n o u g h f o r t h e F l 0052740 u s h B u f f e r s p a t h 0052760 t h r o u g h V M e m p l u 0053000 s \r / / 376 001 \0 D V t h e d e 0053020 e p e s t D O P A G E I O c 0053040 a l l p a t h . A l l D 0053060 O P A G E I O p r o c e d u r 0053100 e s b e s i d e s O v D O P 0053120 A G E I O \r / / u s e C a l 0053140 l P r o c t o a c t u a l l 0053160 y d o t h e d i s k I / 0053200 O ; a n d O v D O P A G E I 0053220 O i s n ' t a p r o b l e 0053240 m \r / / s i n c e o v e r l 0053260 a y s a r e n e v e r d i 0053300 r t i e d a n d n e v e r 0053320 n e e d t o b e w r i t t 0053340 e n o u t . \r / / T h e r e 0053360 f o r e a r e l a t i v e l 0053400 y s m a l l s 376 001 \0 330 \t t a 0053420 c k s u f f i c e s . \r / / 0053440 P a s s e c b t o t h e 0053460 F l u s h B u f f e r s C t x 0053500 a n d l e t i t d o t h 0053520 e Q u e u e E v e n t f o r 0053540 t h e n e x t \r / / F l u 0053560 s h V i t a l S t a t e w h e 0053600 n i t i s d o n e - - 0053620 s o t h a t t h e r e c a 0053640 n n o t p o s s i b l y b e 0053660 m u l t i p l e \r / / i n s 0053700 t a n c e s o f F l u s h B 0053720 u f f e r s C t x i n e x i 0053740 s t e n c e s i m u l t a n e 0053760 o u s l y . \r C r e a t e C t x 0054000 ( 2 0 0 , F l u s h B u f 376 001 0054020 \0 314 s f e r s C t x ) ! 3 = 0054040 e c b \r ] \r \r / / - - - - - - - 0054060 - - - - - - - - - - - - - - - - * 0054160 - - - - - \r a n d F l u s h B 0054200 u f f e r s C t x ( c t x ) b 0054220 e \r / / - - - - - - - - - - - - 0054240 - - - - - - - - - - - - - - - - * 0054340 \r [ \r l e t e c b = c t x 0054360 ! 3 \r F l u s h B u f f e r s ( 0054400 ) \r Q u e u e E v e n t ( e c b 0054420 , 1 376 \0 ; 207 224 5 0 0 ) / / 0054440 1 5 s e c o n d s t o n 0054460 e x t F l u s h V i t a l S t 0054500 a t e \r D e s t r o y C t x ( ) 0054520 \r ] \r 377 \0 \0 I f s R s M g r R a 0054540 r e . b c p l \0 373 231 262 027 223 \0 \0 376 0054560 001 \0 353 " / / I f s R S M g r R 0054600 a r e . b c p l - R e n d e 0054620 z v o u s S o c k e t a n d 0054640 P r o c e s s M a n a g e r 0054660 - R a r e \r / / C o p y r 0054700 i g h t X e r o x C o r p o 0054720 r a t i o n 1 9 7 9 , 1 9 8 0054740 0 , 1 9 8 1 , 1 9 8 2 \r / / 0054760 L a s t m o d i f i e d S 0055000 e p t e m b e r 1 7 , 1 9 8 0055020 2 1 0 : 4 4 A M b y T 0055040 a f t \r \r g e t " A l t o D e 0055060 f s . d " \r g e t " I f s R s 0055100 . d e c l " \r g e t " P u p 0 0055120 . d e c l " \r g e t " P u p 1 0055140 . d e c l " \r g e t " P u p R 0055160 T P . d 376 001 \0 357 K e c l " \r \r e 0055200 x t e r n a l \r [ \r / / o u t 0055220 g o i n g p r o c e d u r e s 0055240 \r A b o r t R S C o n n e c t i 0055260 o n s ; H a n d l e K e y s ; 0055300 R S S e n d A b o r t ; A d 0055320 j u s t P B I s ; P e r f o r 0055340 m I d l e T a s k s \r \r / / i 0055360 n c o m i n g p r o c e d u r 0055400 e s \r R e c o r d M e m o r y E 0055420 r r o r ; R e t u r n R e t a 0055440 i n e d F r e e P a g e s ; F 0055460 l u s h B u f f e r s \r C l o s 0055500 e R T P S o c k e t ; A p p e 0055520 n d S t r i n g T o P u p ; E 0055540 x c h a n g e P o r t s ; C o 0055560 m p l e t e P u p 376 001 \0 350 272 \r A 0055600 l l o c a t e ; F r e e ; E 0055620 n q u e u e ; D e q u e u e ; 0055640 U n q u e u e ; M a x ; D 0055660 i s m i s s \r \r / / i n c o m 0055700 i n g s t a t i c s \r j o b T 0055720 ; l e n J o b T ; n u m P B 0055740 I s ; h a l t F l a g ; e n 0055760 t F l a g \r s y s Z o n e ; n 0056000 u m O v e r f l o w P B I s ; 0056020 m a x O v e r f l o w P B I s ; 0056040 o v P B I Q ; p b i F r e e 0056060 Q ; l e n P B I \r ] \r \r / / - 0056100 - - - - - - - - - - - - - - - - * 0056160 - - - - - - - - - - - - - - 376 001 0056200 \0 327 263 - - - - - - - - - - - - - 0056220 \r l e t H a n d l e K e y s ( 0056240 ) b e \r / / - - - - - - - - - 0056260 - - - - - - - - - - - - - - - - * 0056360 - - - \r / / C a l l e d f r 0056400 o m S h i f t S w a t E v e n 0056420 t i f a n y k e y i n 0056440 w o r d 1 7 7 0 3 7 b b e s 0056460 i d e s L o c k i s d o w 0056500 n \r [ \r / / N o t e t h a t 0056520 1 7 7 0 3 6 b c o n t a i n 0056540 s C t r l a n d L e f t - 0056560 s h i f t a n d w e r e q 0056600 u i r 376 001 \0 207 \a e C t r l t 0056620 o b e \r / / u p f o r a 0056640 s h i f t - s w a t a b o r 0056660 t . \r i f @ 1 7 7 0 3 6 b e 0056700 q 1 7 7 6 7 7 b & ( @ 1 7 0056720 7 0 3 7 b & 1 7 7 5 7 7 b ) 0056740 e q 1 7 7 5 7 3 b t h e n 0056760 \r [ A b o r t R S C o n 0057000 n e c t i o n s ( ) ; f i n i 0057020 s h ] \r \r / / S o m e o t 0057040 h e r k e y i n 1 7 7 0 3 0057060 7 b ( e . g . , s p a c e ) 0057100 i s d o w n . \r / / F l a 0057120 s h s c r e e n t o r e a 0057140 s s u r e o b s e r v e r t 0057160 h a t I F S i s u p . \r ( 0057200 @ d i s p l a y 376 001 \0 Y C L i s 0057220 t H e a d ) > > D C B . b a c k 0057240 g r o u n d = 0 / / w 0057260 h i t e \r D i s m i s s ( 1 ) \r 0057300 ( @ d i s p l a y L i s t H e a 0057320 d ) > > D C B . b a c k g r o u 0057340 n d = 1 / / b l a c k 0057360 \r ] \r \r / / - - - - - - - - - - 0057400 - - - - - - - - - - - - - - - - * 0057500 - - \r a n d A b o r t R S C o 0057520 n n e c t i o n s ( ) b e \r / 0057540 / - - - - - - - - - - - - - - - 0057560 - - - - - - - - - - - - - - - - 0057600 - - - - - - - - - - - - - 376 001 \0 0057620 O $ - - - - - - - - - - - - - - 0057640 - - - - - - - - - - - - - - - - 0057660 - - \r f o r i = 0 t o 0057700 l e n J o b T - 1 d o \r 0057720 i f j o b T > > J o b T ^ i 0057740 n e 0 & j o b T > > J o b 0057760 T ^ i > > R S C t x . c o n n F 0060000 l a g t h e n \r [ 0060020 \r j o b T > > J o b 0060040 T ^ i > > R S C t x . c o n n F 0060060 l a g = f a l s e \r 0060100 C l o s e R T P S o c k e t 0060120 ( j o b T > > J o b T ^ i > > R 0060140 S C t x . b s p S o c , 0 ) \r 0060160 ] \r \f \r / / - - - - 0060200 - - - - - - - - - - - - - - - - 0060220 - - 376 001 \0 321 7 - - - - - - - - - 0060240 - - - - - - - - - - - - - - - - * 0060300 - - - - - - - - - - - - - \r a n 0060320 d R S S e n d A b o r t ( p b 0060340 i , s t r i n g ) b e \r / / 0060360 - - - - - - - - - - - - - - - - * 0060460 - - - - - - - - - - - - \r [ \r p 0060500 b i > > P B I . p u p . w o r d 0060520 s ^ 1 = 0 \r A p p e n d S t 0060540 r i n g T o P u p ( p b i , 3 0060560 , s t r i n g ) \r E x c h a n 0060600 g e P o r t s ( p b i ) \r C o m 0060620 p l e t e P u 376 001 \0 6 / p ( p b 0060640 i , t y p e A b o r t ) \r ] \r 0060660 \r / / - - - - - - - - - - - - - 0060700 - - - - - - - - - - - - - - - - * 0060760 - - - - - - - - - - - - - - - \r 0061000 a n d A d j u s t P B I s ( c 0061020 o m m i t t e d P B I s ) b e 0061040 \r / / - - - - - - - - - - - - - 0061060 - - - - - - - - - - - - - - - - * 0061140 - - - - - - - - - - - - - - - \r 0061160 / / A t t e m p t s t o i 0061200 n c r e a s e o r d e c r e 0061220 a s e t h e n u m b 376 001 \0 231 0061240 372 e r o f P B I s i n t 0061260 h e s y s t e m \r / / t o 0061300 r e f l e c t c o m m i t t e 0061320 d P B I s . \r [ \r / / I f n 0061340 o w o v e r c o m m i t t e d 0061360 , a l l o c a t e n e w P 0061400 B I s a n d a d d t o p 0061420 o o l \r w h i l e c o m m i t 0061440 t e d P B I s g r n u m P B 0061460 I s + n u m O v e r f l o w P B 0061500 I s d o \r [ \r l e 0061520 t o v P B I = A l l o c a 0061540 t e ( s y s Z o n e , l e n P 0061560 B I + 1 ) \r E n q u e u e 0061600 ( o v P B I Q , o v P B I ) \r 0061620 E n q u e u e ( p b i F r 0061640 e 376 001 \0 t P e Q , o v P B I + 0061660 1 ) \r n u m O v e r f l o 0061700 w P B I s = n u m O v e r f 0061720 l o w P B I s + 1 \r m a 0061740 x O v e r f l o w P B I s = 0061760 M a x ( m a x O v e r f l o w P 0062000 B I s , n u m O v e r f l o w 0062020 P B I s ) \r ] \r \r / / I 0062040 f n o w u n d e r c o m m i 0062060 t t e d , t r y t o g e t 0062100 r i d o f o v e r f l o w 0062120 P B I s \r l e t o v P B I 0062140 = o v P B I Q ! 0 \r w h i l e 0062160 c o m m i t t e d P B I s l 0062200 s n u m P B I s + n u m O v e 0062220 r f l o w P B I s & o v P B 0062240 I n e 0 376 001 \0 275 225 d o \r 0062260 [ \r l e t n e x t O 0062300 v P B I = o v P B I ! 0 \r 0062320 i f U n q u e u e ( p b i 0062340 F r e e Q , o v P B I + 1 ) 0062360 t h e n \r [ \r 0062400 U n q u e u e ( o v P B I 0062420 Q , o v P B I ) \r 0062440 F r e e ( s y s Z o n e , o v 0062460 P B I ) \r n u m O v 0062500 e r f l o w P B I s = n u m 0062520 O v e r f l o w P B I s - 1 \r 0062540 ] \r o v P B I 0062560 = n e x t O v P B I \r ] 0062600 \r ] \r \r / / - - - - - - - - - - 0062620 - - - - - - - - - - - - - - - - 0062640 - - - - - - - - - - - 376 001 \0 003 242 0062660 - - - - - - - - - - - - - - - - * 0062720 - - - - - - - \r a n d P e r f 0062740 o r m I d l e T a s k s ( ) b 0062760 e \r / / - - - - - - - - - - - - 0063000 - - - - - - - - - - - - - - - - * 0063100 \r [ \r / / H a l t t h e s 0063120 y s t e m i f h a l t F l a 0063140 g i s t r u e a n d n o 0063160 j o b s c u r r e n t l y 0063200 e x i s t . \r / / U n l e s s 0063220 h a l t i n g , d o n ' t 0063240 a l l o w t h e s y s t e m 0063260 376 001 \0 212 \b t o g o i d l e 0063300 w i t h e n t F l a g = 0063320 f a l s e . \r i f h a l t F l 0063340 a g t h e n [ F l u s h B 0063360 u f f e r s ( t r u e ) ; f i 0063400 n i s h ] \r e n t F l a g = 0063420 t r u e \r \r / / C h e c k 0063440 f o r m a i n m e m o r y 0063460 e r r o r s r e c o r d e d 0063500 b y h a r d w a r e ( A l t 0063520 o - I I o n l y ) . \r / / D 0063540 e p e n d o n A l t o - I 0063560 r e t u r n i n g z e r o w 0063600 h e n M E S R i s r e a d 0063620 . \r i f @ M E S R n e 0 0063640 & ( n o t @ M E S R & 1 0063660 3 7 4 B ) 376 \0 376 264 034 n e 0 0063700 t h e n R e c o r d M e m o r 0063720 y E r r o r ( ) \r \r / / S o m 0063740 e b o d y o c c a s i o n a l 0063760 l y c l o b b e r s l o c a 0064000 t i o n 0 . T h i s m a 0064020 k e s d e b u g g i n g \r / / 0064040 v e r y d i f f i c u l t , 0064060 s o . . . \r @ 0 = 7 7 4 0 0064100 0 B \r \r / / G i v e r e t a 0064120 i n e d f r e e p a g e s 0064140 b a c k t o V M e m , j u 0064160 s t t o g e t e v e r y t 0064200 h i n g i n t o a \r / / c 0064220 l e a n s t a t e . \r R e t u 0064240 r n R e t a i n e d F r e e P a 0064260 g e s ( ) \r ] \r 377 \0 \0 I f s R s 0064300 M g r O E P . b c p l \0 373 231 242 t 0064320 352 \0 \0 376 001 \0 373 322 / / I F S R S 0064340 M g r O E P . b c p l \r / / C 0064360 o p y r i g h t X e r o x C 0064400 o r p o r a t i o n 1 9 7 9 , 0064420 1 9 8 2 \r \r / / L a s t m 0064440 o d i f i e d S e p t e m b e 0064460 r 5 , 1 9 8 2 2 : 0 6 0064500 P M b y T a f t \r \r e x t e 0064520 r n a l \r [ \r / / o u t g o i 0064540 n g p r o c e d u r e s \r I n 0064560 i t R S M g r O E P \r \r / / i 0064600 n c o m i n g p r o c e d u r 0064620 e s \r D e c l a r e O E P ; F 0064640 l u s h V i t a l S t a t e ; 0064660 F l u s h B u f f e r s C t x \r 0064700 ] \r \r \r / / - - - - - - - - - - 0064720 - - - - - - - - 376 \0 333 360 " - - - 0064740 - - - - - - - - - - - - - - - - * 0065020 - - - - - - - \r l e t I n i t 0065040 R S M g r O E P ( o e v ) b e 0065060 D e c l a r e O E P ( o e v , 0065100 l v F l u s h V i t a l S t 0065120 a t e , l v F l u s h B u f 0065140 f e r s C t x ) \r / / - - - - - 0065160 - - - - - - - - - - - - - - - - * 0065260 - - - - - - - \r 377 \0 \0 I f s C t 0065300 x M g r . b c p l \0 373 231 242 s 255 \0 0065320 \0 376 001 \0 353 r / / I f s C t x M 0065340 g r . b c p l - C r e a t e 0065360 s a n d d e s t r o y s t 0065400 e m p o r a r y c o n t e x t 0065420 s \r / / C o p y r i g h t X 0065440 e r o x C o r p o r a t i o n 0065460 1 9 7 9 , 1 9 8 2 \r \r / / 0065500 L a s t m o d i f i e d S e 0065520 p t e m b e r 5 , 1 9 8 2 0065540 1 : 5 5 P M b y T a f t 0065560 \r \r e x t e r n a l \r [ \r / / 0065600 o u t g o i n g p r o c e d u 0065620 r e s \r C r e a t e C t x ; D 0065640 e s t r o y C t x \r \r / / i n 0065660 c o m i n g p r o c e d u r e 0065700 s \r I n i t i a l i z e C o n t 0065720 e x t ; B 376 001 \0 224 266 l o c k ; 0065740 A l l o c a t e ; F r e e ; 0065760 E n q u e u e ; U n q u e u 0066000 e \r \r / / i n c o m i n g s 0066020 t a t i c s \r i f s C t x Q ; 0066040 s y s Z o n e ; C t x R u n n 0066060 i n g \r ] \r \r / / - - - - - - - 0066100 - - - - - - - - - - - - - - - - * 0066200 - - - - - \r l e t C r e a t e 0066220 C t x ( l e n C t x , P r o c 0066240 ) = v a l o f \r / / - - - - 0066260 - - - - - - - - - - - - - - - - * 0066320 - - - - - - - - - - - 376 001 \0 , 256 0066340 - - - - - - - - - - - - - - - - 0066360 - - - - - - - - - - - - - \r / / 0066400 C r e a t e s a c o n t e 0066420 x t o f l e n g t h l e n 0066440 C t x r u n n i n g P r o c 0066460 . \r / / T h e c o n t e x t 0066500 m a y d e s t r o y i t s 0066520 e l f b y c a l l i n g D 0066540 e s t r o y C t x . \r / / N o 0066560 t e : 2 w o r d s a r e 0066600 r e s e r v e d i n t h e 0066620 a l l o c a t e d s t o r a g 0066640 e a h e a d o f t h e c 0066660 t x \r / / s o t h a t t h 0066700 e F r e e ( i n D e s t r 0066720 o y C t x ) w o n ' t c l o 0066740 376 001 \0 272 264 b b e r t h e c t 0066760 x u n t i l i t g e t s \r 0067000 / / a c h a n c e t o B 0067020 l o c k . W e k n o w t 0067040 h a t t h e s t a n d a r d 0067060 a l l o c a t o r c l o b b 0067100 e r s o n l y \r / / t h e 0067120 f i r s t 2 w o r d s o f 0067140 t h e f r e e d b l o c k 0067160 . \r [ \r l e t c t x = I n 0067200 i t i a l i z e C o n t e x t ( 0067220 A l l o c a t e ( s y s Z o n e 0067240 , l e n C t x + 2 ) + 2 , l 0067260 e n C t x , P r o c ) \r E n q 0067300 u e u e ( i f s C t x Q , c t 0067320 x ) \r r e s u l t i s c t x \r 0067340 ] \r \r / / 376 001 \0 . 377 - - - - - - 0067360 - - - - - - - - - - - - - - - - * 0067460 - - - - - - \r a n d D e s t r 0067500 o y C t x ( ) b e \r / / - - - 0067520 - - - - - - - - - - - - - - - - * 0067620 - - - - - - - - - \r [ \r F r e e 0067640 ( s y s Z o n e , C t x R u n 0067660 n i n g - 2 ) \r U n q u e u e ( 0067700 i f s C t x Q , C t x R u n n 0067720 i n g ) \r C t x R u n n i n g ! 0067740 0 = 0 / / 376 \0 d 002 } s 0067760 o C a l l C o n t e x t L i s 0070000 t w i l l s t a r t o v e 0070020 r - - C t x R u n n i n g 0070040 h a s n o s u c c e s s o r 0070060 ! \r B l o c k ( ) / / n e 0070100 v e r t o r e t u r n . . . 0070120 \r ] \r 377 \0 \0 I f s C o n t e x t 0070140 I n i t . b c p l \0 373 224 345 215 ( \0 0070160 \0 376 001 \0 w D / / I f s C o n t 0070200 e x t I n i t . b c p l \r / / \t 0070220 C o d e c a n b e w i p e 0070240 d o u t a f t e r i n i t 0070260 i a l i z a t i o n \r / / C o 0070300 p y r i g h t X e r o x C o 0070320 r p o r a t i o n 1 9 7 9 , 0070340 1 9 8 0 \r \r / / L a s t m o 0070360 d i f i e d b y T a f t , 0070400 F e b r u a r y 2 8 , 1 9 8 0070420 0 1 2 : 2 2 P M \r / / L 0070440 a s t m o d i f i e d b y 0070460 B u t t e r f i e l d , S e p 0070500 t e m b e r 7 , 1 9 7 9 0070520 3 : 3 5 P M \r / / - o r i 0070540 g i n a l C o n t e x t I n i 0070560 t . b c p l 376 001 \0 N \n c a m e 0070600 f r o m 1 1 / 4 / 7 7 C o 0070620 n t e x t S o u r c e s . d m \r 0070640 \r e x t e r n a l \r [ \r / / o 0070660 u t g o i n g p r o c e d u r 0070700 e s \r I n i t i a l i z e C o n 0070720 t e x t \r \r / / i n c o m i n 0070740 g p r o c e d u r e s \r S y s 0070760 E r r \r ] \r \r / / T h i s d 0071000 e c l a r a t i o n m a t c h 0071020 e s o n e i n C o n t e x 0071040 t . A s m \r s t r u c t u r e 0071060 C T X : \r [ \r N e x t w o r d 0071100 \t / / P o i n t e r t o a 0071120 l i s t o f s u c h C T 0071140 X ' s \r S t a c k w o r d \t / 0071160 / C u r r e n t s 376 001 \0 ` \b 0071200 t a c k p o i n t e r \r S t a 0071220 c k M i n w o r d \t / / L o 0071240 w e s t s t a c k c a n g 0071260 o . \r ] \t \t / / A f t e r h 0071300 e r e , e x t r a f o r u 0071320 s e r . \r \r m a n i f e s t e 0071340 c C t x S t a c k T o o S m a l 0071360 l = 2 7 0 0 \r m a n i f e s 0071400 t s t a c k B o t t o m = 0071420 - 1 ; \r \r \r / / - - - - - - - - 0071440 - - - - - - - - - - - - - - - - * 0071520 - - - - - - - - - \r l e t I n 0071540 i t i a l i z e C o n t e x t ( 0071560 r e g i o n , l e n g t h , 0071600 376 001 \0 235 g p r o c , e x t r a 0071620 S p a c e ; \r n u m a r 0071640 g s n a ) = v a l o f \r / 0071660 / - - - - - - - - - - - - - - - 0071700 - - - - - - - - - - - - - - - - * 0071760 - - \r [ \r r e g i o n > > C T X 0072000 . N e x t = 0 \t \t / / N o t 0072020 o n a l i s t y e t \r i f 0072040 n a l s 4 t h e n e x 0072060 t r a S p a c e = 0 \r r e g i o 0072100 n > > C T X . S t a c k M i n = 0072120 r e g i o n + ( s i z e C T X 0072140 / 1 6 ) + e x t r a S p a c e \r 0072160 l e t s = r e g i o n + l e n 0072200 g t h - 4 376 001 \0 321 c \t \t / / S 0072220 p o t t o s t a r t s t a 0072240 c k . \r s ! 0 = 0 \t \t \t \t / 0072260 / S o y o u c a n t e l 0072300 l w h e r e i t s t a r t 0072320 s \r s ! 1 = p r o c \t \t \t / / 0072340 A d d r e s s a t w h i c h 0072360 t o b e g i n . \r r e g i o 0072400 n > > C T X . S t a c k = s \t \t 0072420 / / I n i t i a l s t a c k 0072440 v a l u e \r i f l v s ! s 0072460 t a c k B o t t o m - r e g 0072500 i o n > > C T X . S t a c k M i 0072520 n l s 0 t h e n \r S y s 0072540 E r r ( n i l , e c C t x S t 0072560 a c k T o o S m a l l ) ; \r s ! 0072600 s t a c k B o t t o 376 \0 ) \b 021 m 0072620 = l v s ! s t a c k B o t 0072640 t o m ; \r r e s u l t i s r e 0072660 g i o n \r ] \r \r 374 0072671