1
0
Files
2022-09-29 17:59:04 +03:00

5141 lines
233 KiB
PostScript

%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%
% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
% All rights reserved.
%
% Known Problems:
% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def
% Set up Color vs. Black-and-White
/FMPrintInColor systemdict /colorimage known
systemdict /currentcolortransfer known or def
% Uncomment this line to force b&w on color printer
% /FMPrintInColor false def
/FrameDict 295 dict def
systemdict /errordict known not {/errordict 10 dict def
errordict /rangecheck {stop} put} if
% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
FrameDict /tmprangecheck errordict /rangecheck get put
errordict /rangecheck {FrameDict /bug true put} put
FrameDict /bug false put
mark
% Some PS machines read past the CR, so keep the following 3 lines together!
currentfile 5 string readline
00
0000000000
cleartomark
errordict /rangecheck FrameDict /tmprangecheck get put
FrameDict /bug get {
/readline {
/gstring exch def
/gfile exch def
/gindex 0 def
{
gfile read pop
dup 10 eq {exit} if
dup 13 eq {exit} if
gstring exch gindex exch put
/gindex gindex 1 add def
} loop
pop
gstring 0 gindex getinterval true
} def
} if
/FMVERSION {
FMversion ne {
/Times-Roman findfont 18 scalefont setfont
100 100 moveto
(FrameMaker version does not match postscript_prolog!)
dup =
show showpage
} if
} def
/FMLOCAL {
FrameDict begin
0 def
end
} def
/gstring FMLOCAL
/gfile FMLOCAL
/gindex FMLOCAL
/orgxfer FMLOCAL
/orgproc FMLOCAL
/organgle FMLOCAL
/orgfreq FMLOCAL
/yscale FMLOCAL
/xscale FMLOCAL
/manualfeed FMLOCAL
/paperheight FMLOCAL
/paperwidth FMLOCAL
/FMDOCUMENT {
array /FMfonts exch def
/#copies exch def
FrameDict begin
0 ne dup {setmanualfeed} if
/manualfeed exch def
/paperheight exch def
/paperwidth exch def
/yscale exch def
/xscale exch def
currenttransfer cvlit /orgxfer exch def
currentscreen cvlit /orgproc exch def
/organgle exch def /orgfreq exch def
setpapername
manualfeed {true} {papersize} ifelse
{manualpapersize} {false} ifelse
{desperatepapersize} if
end
} def
/pagesave FMLOCAL
/orgmatrix FMLOCAL
/landscape FMLOCAL
/FMBEGINPAGE {
FrameDict begin
/pagesave save def
3.86 setmiterlimit
/landscape exch 0 ne def
landscape {
90 rotate 0 exch neg translate pop
}
{pop pop}
ifelse
xscale yscale scale
/orgmatrix matrix def
gsave
} def
/FMENDPAGE {
grestore
pagesave restore
end
showpage
} def
/FMFONTDEFINE {
FrameDict begin
findfont
ReEncode
1 index exch
definefont
FMfonts 3 1 roll
put
end
} def
/FMFILLS {
FrameDict begin
array /fillvals exch def
end
} def
/FMFILL {
FrameDict begin
fillvals 3 1 roll put
end
} def
/FMNORMALIZEGRAPHICS {
newpath
0.0 0.0 moveto
1 setlinewidth
0 setlinecap
0 0 0 sethsbcolor
0 setgray
} bind def
/fx FMLOCAL
/fy FMLOCAL
/fh FMLOCAL
/fw FMLOCAL
/llx FMLOCAL
/lly FMLOCAL
/urx FMLOCAL
/ury FMLOCAL
/FMBEGINEPSF {
end
/FMEPSF save def
/showpage {} def
FMNORMALIZEGRAPHICS
[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
fx fy translate
rotate
fw urx llx sub div fh ury lly sub div scale
llx neg lly neg translate
} bind def
/FMENDEPSF {
FMEPSF restore
FrameDict begin
} bind def
FrameDict begin
/setmanualfeed {
%%BeginFeature *ManualFeed True
statusdict /manualfeed true put
%%EndFeature
} def
/max {2 copy lt {exch} if pop} bind def
/min {2 copy gt {exch} if pop} bind def
/inch {72 mul} def
/pagedimen {
paperheight sub abs 16 lt exch
paperwidth sub abs 16 lt and
{/papername exch def} {pop} ifelse
} def
/papersizedict FMLOCAL
/setpapername {
/papersizedict 14 dict def
papersizedict begin
/papername /unknown def
/Letter 8.5 inch 11.0 inch pagedimen
/LetterSmall 7.68 inch 10.16 inch pagedimen
/Tabloid 11.0 inch 17.0 inch pagedimen
/Ledger 17.0 inch 11.0 inch pagedimen
/Legal 8.5 inch 14.0 inch pagedimen
/Statement 5.5 inch 8.5 inch pagedimen
/Executive 7.5 inch 10.0 inch pagedimen
/A3 11.69 inch 16.5 inch pagedimen
/A4 8.26 inch 11.69 inch pagedimen
/A4Small 7.47 inch 10.85 inch pagedimen
/B4 10.125 inch 14.33 inch pagedimen
/B5 7.16 inch 10.125 inch pagedimen
end
} def
/papersize {
papersizedict begin
/Letter {lettertray letter} def
/LetterSmall {lettertray lettersmall} def
/Tabloid {11x17tray 11x17} def
/Ledger {ledgertray ledger} def
/Legal {legaltray legal} def
/Statement {statementtray statement} def
/Executive {executivetray executive} def
/A3 {a3tray a3} def
/A4 {a4tray a4} def
/A4Small {a4tray a4small} def
/B4 {b4tray b4} def
/B5 {b5tray b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
/FMdicttop countdictstack 1 add def
statusdict begin stopped end
countdictstack -1 FMdicttop {pop end} for
} def
/manualpapersize {
papersizedict begin
/Letter {letter} def
/LetterSmall {lettersmall} def
/Tabloid {11x17} def
/Ledger {ledger} def
/Legal {legal} def
/Statement {statement} def
/Executive {executive} def
/A3 {a3} def
/A4 {a4} def
/A4Small {a4small} def
/B4 {b4} def
/B5 {b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
stopped
} def
/desperatepapersize {
statusdict /setpageparams known
{
paperwidth paperheight 0 1
statusdict begin
{setpageparams} stopped pop
end
} if
} def
/savematrix {
orgmatrix currentmatrix pop
} bind def
/restorematrix {
orgmatrix setmatrix
} bind def
/dmatrix matrix def
/dpi 72 0 dmatrix defaultmatrix dtransform
dup mul exch dup mul add sqrt def
/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
/DiacriticEncoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quotesingle /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
/udieresis /dagger /.notdef /cent /sterling /section /bullet
/paragraph /germandbls /registered /copyright /trademark /acute
/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
/periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
] def
/ReEncode {
dup
length
dict begin
{
1 index /FID ne
{def}
{pop pop} ifelse
} forall
0 eq {/Encoding DiacriticEncoding def} if
currentdict
end
} bind def
/graymode true def
/bwidth FMLOCAL
/bpside FMLOCAL
/bstring FMLOCAL
/onbits FMLOCAL
/offbits FMLOCAL
/xindex FMLOCAL
/yindex FMLOCAL
/x FMLOCAL
/y FMLOCAL
/setpattern {
/bwidth exch def
/bpside exch def
/bstring exch def
/onbits 0 def /offbits 0 def
freq sangle landscape {90 add} if
{/y exch def
/x exch def
/xindex x 1 add 2 div bpside mul cvi def
/yindex y 1 add 2 div bpside mul cvi def
bstring yindex bwidth mul xindex 8 idiv add get
1 7 xindex 8 mod sub bitshift and 0 ne
{/onbits onbits 1 add def 1}
{/offbits offbits 1 add def 0}
ifelse
}
setscreen
{} settransfer
offbits offbits onbits add div FMsetgray
/graymode false def
} bind def
/grayness {
FMsetgray
graymode not {
/graymode true def
orgxfer cvx settransfer
orgfreq organgle orgproc cvx setscreen
} if
} bind def
/HUE FMLOCAL
/SAT FMLOCAL
/BRIGHT FMLOCAL
/Colors FMLOCAL
FMPrintInColor
{
/HUE 0 def
/SAT 0 def
/BRIGHT 0 def
% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
/Colors
[[0 0 ] % black
[0 0 ] % white
[0.00 1.0] % red
[0.37 1.0] % green
[0.60 1.0] % blue
[0.50 1.0] % cyan
[0.83 1.0] % magenta
[0.16 1.0] % comment / yellow
] def
/BEGINBITMAPCOLOR {
BITMAPCOLOR} def
/BEGINBITMAPCOLORc {
BITMAPCOLORc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUECOLOR } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUECOLORc } def
/K {
Colors exch get dup
0 get /HUE exch store
1 get /BRIGHT exch store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} def
/FMsetgray {
/SAT exch 1.0 exch sub store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} bind def
}
{
/BEGINBITMAPCOLOR {
BITMAPGRAY} def
/BEGINBITMAPCOLORc {
BITMAPGRAYc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUEGRAY } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUEGRAYc } def
/FMsetgray {setgray} bind def
/K {
pop
} def
}
ifelse
/normalize {
transform round exch round exch itransform
} bind def
/dnormalize {
dtransform round exch round exch idtransform
} bind def
/lnormalize {
0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
} bind def
/H {
lnormalize setlinewidth
} bind def
/Z {
setlinecap
} bind def
/fillvals FMLOCAL
/X {
fillvals exch get
dup type /stringtype eq
{8 1 setpattern}
{grayness}
ifelse
} bind def
/V {
gsave eofill grestore
} bind def
/N {
stroke
} bind def
/M {newpath moveto} bind def
/E {lineto} bind def
/D {curveto} bind def
/O {closepath} bind def
/n FMLOCAL
/L {
/n exch def
newpath
normalize
moveto
2 1 n {pop normalize lineto} for
} bind def
/Y {
L
closepath
} bind def
/x1 FMLOCAL
/x2 FMLOCAL
/y1 FMLOCAL
/y2 FMLOCAL
/rad FMLOCAL
/R {
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
x1 y1
x2 y1
x2 y2
x1 y2
4 Y
} bind def
% The following commented out code did not work for tangent lines of zero
% length. The code following it was provided by Frame to patch this error.
%
%/RR {
% /rad exch def
% normalize
% /y2 exch def
% /x2 exch def
% normalize
% /y1 exch def
% /x1 exch def
% newpath
% x1 y1 rad add moveto
% x1 y2 x2 y2 rad arcto
% x2 y2 x2 y1 rad arcto
% x2 y1 x1 y1 rad arcto
% x1 y1 x1 y2 rad arcto
% closepath
% 16 {pop} repeat
% } bind def
/rarc
{rad
{arcto} stopped
} bind def
/RR {
/rad exch def
normalize
/y2 exch def
/x2 exch def
normalize
/y1 exch def
/x1 exch def
mark
newpath
x1 y1 rad add moveto
x1 y2 x2 y2 rarc
x2 y2 x2 y1 rarc
x2 y1 x1 y1 rarc
% x2 y1 x1 y1 rarc
x1 y1 x1 y2 rarc
closepath
cleartomark
} bind def
/C {
grestore
gsave
R
clip
} bind def
/FMpointsize FMLOCAL
/F {
FMfonts exch get
FMpointsize scalefont
setfont
} bind def
/Q {
/FMpointsize exch def
F
} bind def
/T {
moveto show
} bind def
/RF {
rotate
0 ne {-1 1 scale} if
} bind def
/TF {
gsave
moveto
RF
show
grestore
} bind def
/P {
moveto
0 32 3 2 roll widthshow
} bind def
/PF {
gsave
moveto
RF
0 32 3 2 roll widthshow
grestore
} bind def
/S {
moveto
0 exch ashow
} bind def
/SF {
gsave
moveto
RF
0 exch ashow
grestore
} bind def
/B {
moveto
0 32 4 2 roll 0 exch awidthshow
} bind def
/BF {
gsave
moveto
RF
0 32 4 2 roll 0 exch awidthshow
grestore
} bind def
/G {
gsave
newpath
normalize translate 0.0 0.0 moveto
dnormalize scale
0.0 0.0 1.0 5 3 roll arc
closepath fill
grestore
} bind def
/A {
gsave
savematrix
newpath
2 index 2 div add exch 3 index 2 div sub exch
normalize 2 index 2 div sub exch 3 index 2 div add exch
translate
scale
0.0 0.0 1.0 5 3 roll arc
restorematrix
stroke
grestore
} bind def
/x FMLOCAL
/y FMLOCAL
/w FMLOCAL
/h FMLOCAL
/xx FMLOCAL
/yy FMLOCAL
/ww FMLOCAL
/hh FMLOCAL
/FMsaveobject FMLOCAL
/FMoptop FMLOCAL
/FMdicttop FMLOCAL
/BEGINPRINTCODE {
/FMdicttop countdictstack 1 add def
/FMoptop count 4 sub def
/FMsaveobject save def
userdict begin
/showpage {} def
FMNORMALIZEGRAPHICS
3 index neg 3 index neg translate
} bind def
/ENDPRINTCODE {
count -1 FMoptop {pop pop} for
countdictstack -1 FMdicttop {pop end} for
FMsaveobject restore
} bind def
/gn {
0
{ 46 mul
cf read pop
32 sub
dup 46 lt {exit} if
46 sub add
} loop
add
} bind def
/str FMLOCAL
/cfs {
/str sl string def
0 1 sl 1 sub {str exch val put} for
str def
} bind def
/ic [
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0
{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
] def
/sl FMLOCAL
/val FMLOCAL
/ws FMLOCAL
/im FMLOCAL
/bs FMLOCAL
/cs FMLOCAL
/len FMLOCAL
/pos FMLOCAL
/ms {
/sl exch def
/val 255 def
/ws cfs
/im cfs
/val 0 def
/bs cfs
/cs cfs
} bind def
400 ms
/cip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
cris indx placer 255 mul cvi put
cgis indx placeg 255 mul cvi put
cbis indx placeb 255 mul cvi put
} for pop cris
} bind def
/ip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
} bind def
/wh {
/len exch def
/pos exch def
ws 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/bl {
/len exch def
/pos exch def
bs 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/s1 1 string def
/fl {
/len exch def
/pos exch def
/val cf s1 readhexstring pop 0 get def
pos 1 pos len add 1 sub {im exch val put} for
pos len
} bind def
/hx {
3 copy getinterval
cf exch readhexstring pop pop
} bind def
/h FMLOCAL
/w FMLOCAL
/d FMLOCAL
/lb FMLOCAL
/bitmapsave FMLOCAL
/is FMLOCAL
/cf FMLOCAL
/wbytes {
dup
8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
} bind def
/BEGINBITMAPBWc {
1 {} COMMONBITMAPc
} bind def
/BEGINBITMAPGRAYc {
8 {} COMMONBITMAPc
} bind def
/BEGINBITMAP2BITc {
2 {} COMMONBITMAPc
} bind def
/COMMONBITMAPc {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
r
/is im 0 lb getinterval def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{ip} image
bitmapsave restore
grestore
} bind def
/BEGINBITMAPBW {
1 {} COMMONBITMAP
} bind def
/BEGINBITMAPGRAY {
8 {} COMMONBITMAP
} bind def
/BEGINBITMAP2BIT {
2 {} COMMONBITMAP
} bind def
/COMMONBITMAP {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
r
/is w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop} image
bitmapsave restore
grestore
} bind def
/proc1 FMLOCAL
/proc2 FMLOCAL
/newproc FMLOCAL
/Fmcc {
/proc2 exch cvlit def
/proc1 exch cvlit def
/newproc proc1 length proc2 length add array def
newproc 0 proc1 putinterval
newproc proc1 length proc2 putinterval
newproc cvx
} bind def
/ngrayt 256 array def
/nredt 256 array def
/nbluet 256 array def
/ngreent 256 array def
/gryt FMLOCAL
/blut FMLOCAL
/grnt FMLOCAL
/redt FMLOCAL
/indx FMLOCAL
/cynu FMLOCAL
/magu FMLOCAL
/yelu FMLOCAL
/k FMLOCAL
/u FMLOCAL
/colorsetup {
currentcolortransfer
/gryt exch def
/blut exch def
/grnt exch def
/redt exch def
0 1 255 {
/indx exch def
/cynu 1 red indx get 255 div sub def
/magu 1 green indx get 255 div sub def
/yelu 1 blue indx get 255 div sub def
/k cynu magu min yelu min def
nredt indx 1 0 cynu max sub redt exec put
ngreent indx 1 0 magu max sub grnt exec put
nbluet indx 1 0 yelu max sub blut exec put
ngrayt indx 1 k sub gryt exec put
} for
} bind def
/tran FMLOCAL
/fakecolorsetup {
/tran 256 string def
0 1 255 {/indx exch def
tran indx
red indx get 77 mul
green indx get 151 mul
blue indx get 28 mul
add add 256 idiv put} for
currenttransfer
{255 mul cvi tran exch get 255.0 div}
exch Fmcc settransfer
} bind def
/BITMAPCOLOR {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
colorsetup
/is w d wbytes string def
/ris w d wbytes string def
/gis w d wbytes string def
/bis w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop
/tot w 1 sub def
0 1 tot {
/indx exch def
/indxa is indx get def
/placer nredt indxa get def
/placeg ngreent indxa get def
/placeb nbluet indxa get def
ris indx placer 255 mul cvi put
gis indx placeg 255 mul cvi put
bis indx placeb 255 mul cvi put
} for pop ris}
{gis} {bis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPCOLORc {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
colorsetup
/is im 0 lb getinterval def
/cris lb string def
/cgis lb string def
/cbis lb string def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cip} {cgis} {cbis} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLORc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip} {gip} {bip} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLOR {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop }
{ cf gis readhexstring pop }
{ cf bis readhexstring pop }
true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUEGRAYc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip gip bip w gray} image
bitmapsave restore
grestore
} bind def
/ww FMLOCAL
/r FMLOCAL
/g FMLOCAL
/b FMLOCAL
/i FMLOCAL
/gray {
/ww exch def
/b exch def
/g exch def
/r exch def
0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
b i get .114 mul add add r i 3 -1 roll floor cvi put } for
r
} bind def
/BITMAPTRUEGRAY {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop
cf gis readhexstring pop
cf bis readhexstring pop w gray} image
bitmapsave restore
grestore
} bind def
/BITMAPGRAY {
8 {fakecolorsetup} COMMONBITMAP
} bind def
/BITMAPGRAYc {
8 {fakecolorsetup} COMMONBITMAPc
} bind def
/ENDBITMAP {
} bind def
end
/ALDsave FMLOCAL
/ALDmatrix matrix def ALDmatrix currentmatrix pop
/StartALD {
/ALDsave save def
savematrix
ALDmatrix setmatrix
} bind def
/InALD {
restorematrix
} bind def
/DoneALD {
ALDsave restore
} bind def
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 18 FMDOCUMENT
0 0 /Helvetica-Bold FMFONTDEFINE
1 0 /Times-Roman FMFONTDEFINE
2 0 /Times-Bold FMFONTDEFINE
3 1 /Symbol FMFONTDEFINE
4 0 /Courier-Bold FMFONTDEFINE
5 0 /Times-Italic FMFONTDEFINE
6 0 /Helvetica FMFONTDEFINE
32 FMFILLS
0 0 FMFILL
1 0.1 FMFILL
2 0.3 FMFILL
3 0.5 FMFILL
4 0.7 FMFILL
5 0.9 FMFILL
6 0.97 FMFILL
7 1 FMFILL
8 <0f1e3c78f0e1c387> FMFILL
9 <0f87c3e1f0783c1e> FMFILL
10 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> FMFILL
12 <8142241818244281> FMFILL
13 <03060c183060c081> FMFILL
14 <8040201008040201> FMFILL
16 1 FMFILL
17 0.9 FMFILL
18 0.7 FMFILL
19 0.5 FMFILL
20 0.3 FMFILL
21 0.1 FMFILL
22 0.03 FMFILL
23 0 FMFILL
24 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "1" 1
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 0 FMBEGINPAGE
72 444.68 558 444.68 2 L
2 H
2 Z
0 X
0 K
N
72 75.33 558 75.33 2 L
0.25 H
N
0 10 Q
(Autumn 1994) 495.24 60.29 T
1 24 Q
-0.17 (REACT) 207 677 S
1 19 Q
-0.13 (TM) 284.8 686.6 S
1 24 Q
-0.17 ( In IRIX) 313.04 677 S
1 19 Q
-0.13 (TM) 392.98 686.6 S
1 24 Q
-0.17 ( 5.3) 421.22 677 S
207 629 558 639 C
207 630 459 630 2 L
0.25 H
0 Z
0 X
0 K
N
0 0 612 792 C
1 24 Q
0 X
0 K
-0.17 (T) 207 647 S
-0.17 (echnical Report) 219.81 647 S
2 12 Q
(Silicon Graphics, Inc.) 207 605 T
2 10 Q
(A description of the r) 207 425.33 T
(eal-time capabilities of IRIX V) 297.87 425.33 T
(ersion 5.3) 427.42 425.33 T
(running on Onyx) 207 412.33 T
1 8 Q
-0.05 (TM) 280.32 416.33 S
2 10 Q
( and CHALLENGE) 292.2 412.33 T
1 8 Q
-0.05 (TM) 377.18 416.33 S
2 10 Q
( multipr) 389.06 412.33 T
(ocessor) 424.14 412.33 T
(systems.) 207 399.33 T
FMENDPAGE
%%EndPage: "1" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
FMENDPAGE
%%EndPage: "2" 3
%%Page: "3" 3
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
0 9 Q
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(3) 527.85 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(31) 546.89 60.96 T
54 660.33 540 667.33 C
54 660.33 540 667.33 R
7 X
0 K
V
51 664.33 303 664.33 2 L
0.25 H
0 Z
0 X
N
0 0 612 792 C
1 20 Q
0 X
0 K
-0.14 (T) 54 673.99 S
-0.14 (able of Contents) 64.68 673.99 S
1 10 Q
(Introduction) 162 643.66 T
(5) 535 643.66 T
(Scope Of This Document) 189 631.66 T
(5) 535 631.66 T
(Con\336guration Assumptions) 189 619.66 T
(5) 535 619.66 T
(Related Documentation) 189 607.66 T
(5) 535 607.66 T
(System Interrupt Response) 162 591.66 T
(6) 535 591.66 T
(T) 189 579.66 T
(otal Interrupt Response T) 194.41 579.66 T
(ime) 295.93 579.66 T
(6) 535 579.66 T
(Interrupt Latency) 189 567.66 T
(7) 535 567.66 T
(Hardware Interrupt Latency) 211.75 555.66 T
(7) 535 555.66 T
(Software Interrupt Latency) 211.75 543.66 T
(8) 535 543.66 T
(Potential Sources Of Software Interrupt Latency) 211.75 531.66 T
(8) 535 531.66 T
(Interrupt Handlers) 252 519.66 T
(8) 535 519.66 T
(Critical Kernel Regions) 252 507.66 T
(8) 535 507.66 T
(Software Interrupt Response T) 189 495.66 T
(ime) 311.61 495.66 T
(9) 535 495.66 T
(Con\336guring For Real-T) 162 479.66 T
(ime Operation) 256.6 479.66 T
(10) 530.01 479.66 T
(Redirecting Interrupts) 189 467.66 T
(10) 530.01 467.66 T
(Assigning Processes T) 189 455.66 T
(o Processors) 278.8 455.66 T
(1) 530.37 455.66 T
(1) 535 455.66 T
(Locking Processes Into Memory) 189 443.66 T
(1) 530.37 443.66 T
(1) 535 443.66 T
(Processor Isolation) 189 431.66 T
(12) 530.01 431.66 T
(Overview) 211.75 419.66 T
(12) 530.01 419.66 T
(Activities That Override Processor Isolation) 211.75 407.66 T
(12) 530.01 407.66 T
(Minimizing Memory Management Overhead) 211.75 395.66 T
(13) 530.01 395.66 T
(Controlling Process Scheduling) 189 383.66 T
(13) 530.01 383.66 T
(Setting Process Priority) 211.75 371.66 T
(13) 530.01 371.66 T
(Disabling The UNIX Scheduler \050Shutting Of) 211.75 359.66 T
(f Clock Interrupts\051) 391.17 359.66 T
(14) 530.01 359.66 T
(Deadline Scheduling) 211.75 347.66 T
(14) 530.01 347.66 T
(Frame Scheduler) 252 335.66 T
(15) 530.01 335.66 T
(Other Real-T) 162 319.66 T
(ime Programming Features) 214.66 319.66 T
(18) 530.01 319.66 T
(T) 189 307.66 T
(imers) 194.76 307.66 T
(18) 530.01 307.66 T
(Interval T) 211.75 295.66 T
(imers) 251.09 295.66 T
(17) 530.01 295.66 T
(Event T) 211.75 283.66 T
(imers) 243.32 283.66 T
(17) 530.01 283.66 T
(Details Of T) 211.75 271.66 T
(imer Resolution) 261.36 271.66 T
(19) 530.01 271.66 T
(Asynchronous Disk I/O) 189 259.66 T
(20) 530.01 259.66 T
(External Interrupts) 189 247.66 T
(22) 530.01 247.66 T
(Signals) 189 235.66 T
(22) 530.01 235.66 T
(VME Bus Capabilities and Use) 162 219.66 T
(25) 530.01 219.66 T
(Con\336gurations) 189 207.66 T
(25) 530.01 207.66 T
(Memory Mapping) 189 195.66 T
(26) 530.01 195.66 T
(PIO Mapping) 211.75 183.66 T
(26) 530.01 183.66 T
(DMA Mapping) 211.75 171.66 T
(26) 530.01 171.66 T
(Optimizing Bandwidth and Latency) 189 159.66 T
(27) 530.01 159.66 T
(PIO Operations) 211.74 147.66 T
(29) 530.01 147.66 T
(DMA Engine) 211.74 135.66 T
(29) 530.01 135.66 T
(Intelligent I/O Controllers) 211.74 123.66 T
(30) 530.01 123.66 T
(SCSI Capabilities and Use) 162 107.66 T
(31) 530.01 107.66 T
(Summary of REACT System Functions) 162 92.66 T
(32) 530.01 92.66 T
FMENDPAGE
%%EndPage: "3" 4
%%Page: "4" 4
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(4) 54 60.96 T
0 9 Q
( of) 59.56 60.96 T
(31) 73.32 60.96 T
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 664.33 540 671.33 C
54 664.33 540 671.33 R
7 X
0 K
V
51 668.33 303 668.33 2 L
0.25 H
0 Z
0 X
N
0 0 612 792 C
1 16 Q
0 X
0 K
-0.11 (List of Figures) 54 676.66 S
1 10 Q
(Components of T) 155.02 651.66 T
(otal Interrupt Response) 224.28 651.66 T
(6) 535 651.66 T
(Hardware Interrupt Path) 155.02 639.66 T
(7) 535 639.66 T
(Components of Software Interrupt Response T) 155.02 627.66 T
(ime) 341.48 627.66 T
(9) 535 627.66 T
(Frame Scheduler Operation) 155.02 615.66 T
(16) 530.01 615.66 T
(Asynchronous I/O operation) 155.02 603.66 T
(21) 530.01 603.66 T
54 575.33 540 582.33 C
54 575.33 540 582.33 R
7 X
0 K
V
51 579.33 303 579.33 2 L
0.25 H
0 Z
0 X
N
0 0 612 792 C
1 16 Q
0 X
0 K
-0.11 (List of T) 54 587.66 S
-0.11 (ables) 107.86 587.66 S
1 10 Q
(Signal Functions Summary) 153 562.66 T
(24) 530.01 562.66 T
(CHALLENGE / Onyx VME Slots) 153 550.66 T
(25) 530.01 550.66 T
(POWERchannel-2 \050Pc-2\051 Con\336gurations vs. Number of VME Busses) 153 538.66 T
(27) 530.01 538.66 T
(VME Bus DMA Performance \050using DMA board on VME\051) 153 526.66 T
(28) 530.01 526.66 T
(VME PIO Bandwidth \050CPU accessing Slave on VME Bus\051) 153 514.66 T
(29) 530.01 514.66 T
(VME DMA Engine Performance vs. Block Size \050MB / sec, D32 transfers\051) 153 502.66 T
(30) 530.01 502.66 T
(REACT System Functions) 153 490.66 T
(32) 530.01 490.66 T
FMENDPAGE
%%EndPage: "4" 5
%%Page: "5" 5
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Introduction) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(5) 527.85 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
72 672.33 558 675.33 C
207 674.48 558 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
72 674.48 198 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(1.0) 207 679.33 T
( Introduction) 223.67 679.33 T
1 10 Q
-0.18 (The REACT extensions to IRIX enable a multiprocessor system to be con\336gured to pro-) 207 657.66 P
(vide deterministic performance, including the response to external interrupts and sig-) 207 645.66 T
(nals. REACT also provides features that simplify the implementation of real-time) 207 633.66 T
(applications.) 207 621.66 T
(The approach used in IRIX with REACT to achieving determinism is to provide the) 207 597.66 T
(user with full control over the assignment of software activity to processors. One pro-) 207 585.66 T
(cessor \050or more, if desired\051 is designated as the system processor) 207 573.66 T
(, and all non-determin-) 465.57 573.66 T
(istic system activity takes place on that processor) 207 561.66 T
(. For example, system activity) 403.26 561.66 T
(typically includes the UNIX) 207 549.66 T
1 8 Q
(TM) 319.98 553.66 T
1 10 Q
( scheduler and general-purpose disk and network I/O.) 331.97 549.66 T
-0.29 (The remaining processors are designated as real-time processors, and no system activity) 207 537.66 P
(takes place on those processors unless it is explicitly requested by a real-time process.) 207 525.66 T
0 F
(1.1) 184.11 495.66 T
(Scope Of This Document) 207 495.66 T
1 F
(This document covers the subset of IRIX operating system functionality and of Onyx) 207 479.66 T
(and CHALLENGE multiprocessor hardware that is of particular interest to developers) 207 467.66 T
-0.12 (of real-time applications. It provides a description of system functionality) 207 455.66 P
-0.12 (, identi\336es the) 499.51 455.66 P
(system calls and user interfaces that provide access to the functionality) 207 443.66 T
(, and provides) 489.48 443.66 T
(background information.) 207 431.66 T
0 F
(1.2) 184.11 401.66 T
(Con\336guration Assumptions) 207 401.66 T
1 F
(The descriptions included in this document are accurate for all Onyx systems and all) 207 385.66 T
(multiprocessor CHALLENGE systems running IRIX 5.3. W) 207 373.66 T
(ithin this document, these) 448.67 373.66 T
(con\336gurations are referred to generically as \322the system\323.) 207 361.66 T
0 F
(1.3) 184.11 331.66 T
(Related Documentation) 207 331.66 T
1 F
(Refer also to the following documents:) 207 315.66 T
-0.1 (Advanced Site and Server Administration Guide \050M4-ADMIN-3.0, or available on-line) 207 291.66 P
(through IRIS Insight) 207 279.66 T
1 8 Q
(TM) 289.73 283.66 T
1 10 Q
(\051) 301.73 279.66 T
(CHALLENGE and Onyx Performance Report) 207 255.66 T
(IRIX Device Driver Programming Guide \050007-091) 207 231.66 T
(1-030\051) 410.09 231.66 T
(IRIX Device Driver Reference Pages \050007-2183-001\051) 207 207.66 T
(IRIX Man Pages \050M4-IRXMP-4.0, or available on-line through IRIS Insight\051) 207 183.66 T
(IRIX System Programming Guide \050available on-line through IRIS Insight\051) 207 159.66 T
(Symmetric Multiprocessing Systems T) 207 135.66 T
(echnical Report \050EVER-IND-TR \05001/93\051\051) 362.05 135.66 T
FMENDPAGE
%%EndPage: "5" 6
%%Page: "6" 6
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(System Interrupt Response) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(6) 54 60.96 T
0 9 Q
( of) 59.56 60.96 T
0 10 Q
( 33) 70.54 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 672.33 540 675.33 C
189 674.48 540 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
54 674.48 180 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(2.0) 189 679.33 T
( System Interrupt Response) 205.67 679.33 T
1 10 Q
(This section describes the events that occur in response to an external interrupt.) 189 657.66 T
0 F
(2.1) 166.11 627.66 T
(T) 189 627.66 T
(otal Interrupt Response T) 194.37 627.66 T
(ime) 315.25 627.66 T
1 F
(The REACT extensions included in IRIX provide guaranteed deterministic interrupt) 189 603.66 T
(response on a properly con\336gured system. Performance is speci\336ed in terms of total) 189 591.66 T
(interrupt response, which is de\336ned as the interval between the occurrence of an exter-) 189 579.66 T
(nal interrupt and the start of execution of a user process that was enabled by that inter-) 189 567.66 T
(rupt. The worst-case total interrupt response time for a properly con\336gured system) 189 555.66 T
(running IRIX V) 189 543.66 T
(.5 is guaranteed not to exceed 200) 251.56 543.66 T
3 F
(m) 390.34 543.66 T
1 F
(s.) 396.1 543.66 T
-0.17 (T) 189 519.66 P
-0.17 (otal Interrupt Response time can be divided into two component intervals \050refer to Fig-) 194.41 519.66 P
(ure 1\051:) 189 507.66 T
0 9 Q
(1.) 189 489.66 T
2 10 Q
-0.15 (Interrupt latency) 202.74 489.66 P
-0.15 (.) 275.61 489.66 P
1 F
-0.15 ( The time between the occurrence of a hardware interrupt and the) 278.11 489.66 P
(instant when the operating system begins responding to that interrupt.) 202.74 477.66 T
0 9 Q
(2.) 189 462.66 T
2 10 Q
(Softwar) 202.74 462.66 T
(e interrupt r) 236.43 462.66 T
(esponse time.) 289.54 462.66 T
1 F
( The system time spent responding to the inter-) 346.17 462.66 T
(rupt, ending when a user process begins executing.) 202.74 450.66 T
(Figure 1: Components of T) 189 116.68 T
(otal Interrupt Response) 297.13 116.68 T
54 89.3 540 687.33 C
82.01 137.34 540 423.33 C
0 34 -295 480 -21 446 274 91.01 144.33 FMBEGINEPSF
%%BeginDocument: <inline>
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(TM) 3.2
%%For: (Frank X. Doyle) (Dangerous Ideas Group)
%%Title: (Fig. 1 Chart)
%%CreationDate: (1/20/94) (4:39 PM)
%%BoundingBox: 34 -295 480 -21
%%DocumentProcessColors: Black
%%DocumentFonts: Helvetica
%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
%%+ procset Adobe_cmykcolor 1.1 0
%%+ procset Adobe_cshow 1.1 0
%%+ procset Adobe_customcolor 1.0 0
%%+ procset Adobe_typography_AI3 1.0 1
%%+ procset Adobe_IllustratorA_AI3 1.0 1
%AI3_ColorUsage: Black&White
%AI3_TemplateBox: 306 -394 306 -394
%AI3_TileBox: 18 -782 594 -6
%AI3_DocumentPreview: Macintosh_Pic
%%EndComments
%%BeginProlog
%%BeginResource: procset Adobe_packedarray 2.0 0
%%Title: (Packed Array Operators)
%%Version: 2.0
%%CreationDate: (8/2/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
userdict /Adobe_packedarray 5 dict dup begin put
/initialize % - initialize -
{
/packedarray where
{
pop
}
{
Adobe_packedarray begin
Adobe_packedarray
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
} ifelse
} def
/terminate % - terminate -
{
} def
/packedarray % arguments count packedarray array
{
array astore readonly
} def
/setpacking % boolean setpacking -
{
pop
} def
/currentpacking % - setpacking boolean
{
false
} def
currentdict readonly pop end
%%EndResource
Adobe_packedarray /initialize get exec
%%BeginResource: procset Adobe_cmykcolor 1.1 0
%%Title: (CMYK Color Operators)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cmykcolor 4 dict dup begin put
/initialize % - initialize -
{
/setcmykcolor where
{
pop
}
{
userdict /Adobe_cmykcolor_vars 2 dict dup begin put
/_setrgbcolor
/setrgbcolor load def
/_currentrgbcolor
/currentrgbcolor load def
Adobe_cmykcolor begin
Adobe_cmykcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_cmykcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_cmykcolor eq
{
end
} if
} def
/setcmykcolor % cyan magenta yellow black setcmykcolor -
{
1 sub 4 1 roll
3
{
3 index add neg dup 0 lt
{
pop 0
} if
3 1 roll
} repeat
Adobe_cmykcolor_vars /_setrgbcolor get exec
pop
} def
/currentcmykcolor % - currentcmykcolor cyan magenta yellow black
{
Adobe_cmykcolor_vars /_currentrgbcolor get exec
3
{
1 sub neg 3 1 roll
} repeat
0
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_cshow 1.1 0
%%Title: (cshow Operator)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cshow 3 dict dup begin put
/initialize % - initialize -
{
/cshow where
{
pop
}
{
userdict /Adobe_cshow_vars 1 dict dup begin put
/_cshow % - _cshow proc
{} def
Adobe_cshow begin
Adobe_cshow
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
end
} ifelse
} def
/terminate % - terminate -
{
} def
/cshow % proc string cshow -
{
exch
Adobe_cshow_vars
exch /_cshow
exch put
{
0 0 Adobe_cshow_vars /_cshow get exec
} forall
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_customcolor 1.0 0
%%Title: (Custom Color Operators)
%%Version: 1.0
%%CreationDate: (5/9/88) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_customcolor 5 dict dup begin put
/initialize % - initialize -
{
/setcustomcolor where
{
pop
}
{
Adobe_customcolor begin
Adobe_customcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_customcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_customcolor eq
{
end
} if
} def
/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object
{
5 packedarray
} def
/setcustomcolor % object tint setcustomcolor -
{
exch
aload pop pop
4
{
4 index mul 4 1 roll
} repeat
5 -1 roll pop
setcmykcolor
} def
/setoverprint % boolean setoverprint -
{
pop
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_typography_AI3 1.1 0
%%Title: (Typography Operators)
%%Version: 1.0
%%CreationDate:(5/31/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_typography_AI3 47 dict dup begin put
/initialize % - initialize -
{
/TZ
where
{
pop
}
{
Adobe_typography_AI3 begin
Adobe_typography_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_typography_AI3 begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_typography_AI3 eq
{
end
} if
} def
% [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
/modifyEncoding
{
/_tempEncode exch ddef
% pointer for sequential encodings
/_pntr 0 ddef
{
% get bottom object
counttomark -1 roll
% is it a mark ?
dup type dup /marktype eq
{
% exit
pop pop exit
}
{
% ... object ... type ....
% insert if a nametype
/nametype eq
{
% insert the name at _pntr and increment pointer
_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
put
}
{
% reset _pntr if it's a number
/_pntr exch ddef
}
ifelse
}
ifelse
}
loop
% return the modified encoding
_tempEncode
}
def
/TE % Set std platform encoding % (encoding pairs) TE -
{
StandardEncoding 256 array copy modifyEncoding
/_nativeEncoding exch def
} def
% re-define font
% expected arguments
% for 'normal fonts :
% [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
%
% for cartographic, pictographic, and expert fonts :
% [ ... number value stream ... /_Symbol/Symbol
% direction fontScript defaultEncoding TZ
% for blended fonts w/ default encoding :
% [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
% for blended fonts w/ special encoding :
% [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
/TZ
{
% set weight vector (if present)
dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse
% platform dependent coding flag
/_useNativeEncoding exch def
% pop fontScript & direction
pop pop
% create a new dictionary with length
% equal to original dictionary length + 2
% copy all the key/value pairs except FID
% call makeblended font with the weight values if _wv is an array
findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
begin
% copy all the values but the FID
% into the new dictionary
mark exch
{
1 index /FID ne { def } if cleartomark mark
}
forall
% discard last mark
pop
% define FontName
/FontName exch def
% if no re-encoding stream is present
% then if the base encoding vector of the font
% is the same as StandardEncoding
% and the use platform encoding flag is true
% then install AI platform encoding
% else leave the base encoding in effect
counttomark 0 eq
{
1 _useNativeEncoding eq
{
/Encoding _nativeEncoding def
}
if
% clean up
cleartomark
}
{
% custom encoding to be done
% start off with a copy of the font's standard encoding
/Encoding load 256 array copy
modifyEncoding /Encoding exch def
}
ifelse
FontName currentdict
end
% register the new font
definefont pop
}
def
% text painting operators
/tr % string tr ax ay string
{
_ax _ay 3 2 roll
} def
/trj % string trj cx cy fillchar ax ay string
{
_cx _cy _sp _ax _ay 6 5 roll
} def
/a0
{
/Tx % text % textString Tx -
{
dup
currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
dup
currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
} ddef
} def
/a1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
/e0
{
/Tx % text % textString Tx -
{
tr _psf
} ddef
/Tj % justified text % textString Tj -
{
trj _pjsf
} ddef
} def
/e1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
tr _psf
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
trj _pjsf
grestore 3 1 roll moveto tr sp
} ddef
} def
/i0
{
/Tx % text % textString Tx -
{
tr sp
} ddef
/Tj % justified text % textString Tj -
{
trj jsp
} ddef
} def
/i1
{
W N
} def
/o0
{
/Tx % text % textString Tx -
{
tr sw rmoveto
} ddef
/Tj % justified text % textString Tj -
{
trj swj rmoveto
} ddef
} def
/r0
{
/Tx % text % textString Tx -
{
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
trj _ctm _pjss
} ddef
} def
/r1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
% font operators
% Binding
/To % begin text % bindType To -
{
pop _ctm currentmatrix pop
} def
/TO % end text % TO -
{
Te _ctm setmatrix newpath
} def
% Text paths
/Tp % begin text path % a b c d tx ty startPt Tp -
{
pop _tm astore pop _ctm setmatrix
_tDict begin /W {} def /h {} def
} def
/TP % end text path % TP -
{
end
iTm 0 0 moveto
} def
% Render mode & matrix operators
/Tr % begin render % render Tr -
{
_render 3 le {currentpoint newpath moveto} if
dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
dup /_render exch ddef
_renderStart exch get load exec
} def
/iTm % internal set text matrix % - iTm - (uses _tm as implicit argument)
{
_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
} def
/Tm % set text matrix % a b c d tx ty Tm -
{
_tm astore pop iTm 0 0 moveto
} def
/Td % translate text matrix % tx ty Td -
{
_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
} def
/Te % end render % - Te -
{
_render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
/_render -1 ddef
} def
% Attributes
/Ta % set alignment % alignment Ta -
{
pop
} def
/Tf % set font name and size % fontname size Tf -
{
dup 1000 div /_fScl exch ddef
exch findfont exch scalefont setfont
} def
/Tl % set leading % leading paragraphLeading Tl -
{
pop
0 exch _leading astore pop
} def
/Tt % set user tracking % userTracking Tt -
{
pop
} def
/TW % set word spacing % minSpace optSpace maxSpace TW -
{
3 npop
} def
/Tw % set computed word spacing % wordSpace Tw
{
/_cx exch ddef
} def
/TC % set character spacing % minSpace optSpace maxSpace TC -
{
3 npop
} def
/Tc % set computed char spacing % charSpace Tc -
{
/_ax exch ddef
} def
/Ts % set super/subscripting (rise) % rise Ts -
{
/_rise exch ddef
currentpoint
iTm
moveto
} def
/Ti % set indentation % firstStartIndent otherStartIndent stopIndent Ti -
{
3 npop
} def
/Tz % set horizontal scaling % scalePercent Tz -
{
100 div /_hs exch ddef
iTm
} def
/TA % set pairwise kerning % autoKern TA -
% autoKern = 0 -> no pair kerning
% = 1 -> automatic pair kerning
{
pop
} def
/Tq % set hanging quotes % hangingQuotes Tq -
% hangingQuotes = 0 -> no hanging quotes
% = 1 -> hanging quotes
{
pop
} def
% Text Bodies
/TX {pop} def
%/Tx % non-justified text % textString Tx -
%/Tj % justified text % textString Tj -
/Tk % kern % autoKern kernValue Tk -
% autoKern = 0 -> manual kern, = 1 -> auto kern
% kernValue = kern value in em/1000 space
{
exch pop _fScl mul neg 0 rmoveto
} def
/TK % non-printing kern % autoKern kernValue TK -
{
2 npop
} def
/T* % carriage return & line feed % - T* -
{
_leading aload pop neg Td
} def
/T*- % carriage return & negative line feed % - T*- -
{
_leading aload pop Td
} def
/T- % print a discretionary hyphen % - T- -
{
_hyphen Tx
} def
/T+ % discretionary hyphen hyphen % - T+ -
{} def
/TR % reset pattern matrix % a b c d tx ty TR -
{
_ctm currentmatrix pop
_tm astore pop
iTm 0 0 moveto
} def
/TS % special chars % textString justified TS -
{
0 eq {Tx} {Tj} ifelse
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
%%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
%%Version: 1.0
%%CreationDate: (7/22/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
% initialization
/initialize % - initialize -
{
% 47 vars, but leave slack of 10 entries for custom Postscript fragments
userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
% paint operands
/_lp /none def
/_pf {} def
/_ps {} def
/_psf {} def
/_pss {} def
/_pjsf {} def
/_pjss {} def
/_pola 0 def
/_doClip 0 def
% paint operators
/cf currentflat def % - cf flatness
% typography operands
/_tm matrix def
/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def
/_renderEnd [null null null null /i1 /i1 /i1 /i1] def
/_render -1 def
/_rise 0 def
/_ax 0 def % x character spacing (_ax, _ay, _cx, _cy follows awidthshow naming convention)
/_ay 0 def % y character spacing
/_cx 0 def % x word spacing
/_cy 0 def % y word spacing
/_leading [0 0] def
/_ctm matrix def
/_mtx matrix def
/_sp 16#020 def
/_hyphen (-) def
/_fScl 0 def
/_cnt 0 def
/_hs 1 def
/_nativeEncoding 0 def
/_useNativeEncoding 0 def
/_tempEncode 0 def
/_pntr 0 def
/_tDict 2 dict def
% typography operators
/Tx {} def
/Tj {} def
% compound path operators
/CRender {} def
% printing
/_AI3_savepage {} def
% color operands
/_gf null def
/_cf 4 array def
/_if null def
/_of false def
/_fc {} def
/_gs null def
/_cs 4 array def
/_is null def
/_os false def
/_sc {} def
/_i null def
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3_vars begin
newpath
} def
/terminate % - terminate -
{
end
end
} def
% definition operators
/_ % - _ null
null def
/ddef % key value ddef -
{
Adobe_IllustratorA_AI3_vars 3 1 roll put
} def
/xput % key value literal xput -
{
dup load dup length exch maxlength eq
{
dup dup load dup
length 2 mul dict copy def
} if
load begin def end
} def
/npop % integer npop -
{
{
pop
} repeat
} def
% marking operators
/sw % ax ay string sw x y
{
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
} def
/swj % cx cy fillchar ax ay string swj x y
{
dup 4 1 roll
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
6 2 roll /_cnt 0 ddef
{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
} def
/ss % ax ay string matrix ss -
{
4 1 roll
{ % matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put pop
gsave
false charpath currentpoint
4 index setmatrix
stroke
grestore
moveto
2 copy rmoveto
} exch cshow
3 npop
} def
/jss % cx cy fillchar ax ay string matrix jss -
{
4 1 roll
{ % cx cy fillchar matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
gsave
_sp eq
{
exch 6 index 6 index 6 index 5 -1 roll widthshow
currentpoint
}
{
false charpath currentpoint
4 index setmatrix stroke
}ifelse
grestore
moveto
2 copy rmoveto
} exch cshow
6 npop
} def
% path operators
/sp % ax ay string sp -
{
{
2 npop (0) exch
2 copy 0 exch put pop
false charpath
2 copy rmoveto
} exch cshow
2 npop
} def
/jsp % cx cy fillchar ax ay string jsp -
{
{ % cx cy fillchar ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
_sp eq
{
exch 5 index 5 index 5 index 5 -1 roll widthshow
}
{
false charpath
}ifelse
2 copy rmoveto
} exch cshow
5 npop
} def
% path construction operators
/pl % x y pl x y
{
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} def
/setstrokeadjust where
{
pop true setstrokeadjust
/c % x1 y1 x2 y2 x3 y3 c -
{
curveto
} def
/C
/c load def
/v % x2 y2 x3 y3 v -
{
currentpoint 6 2 roll curveto
} def
/V
/v load def
/y % x1 y1 x2 y2 y -
{
2 copy curveto
} def
/Y
/y load def
/l % x y l -
{
lineto
} def
/L
/l load def
/m % x y m -
{
moveto
} def
}
{%else
/c
{
pl curveto
} def
/C
/c load def
/v
{
currentpoint 6 2 roll pl curveto
} def
/V
/v load def
/y
{
pl 2 copy curveto
} def
/Y
/y load def
/l
{
pl lineto
} def
/L
/l load def
/m
{
pl moveto
} def
}ifelse
% graphic state operators
/d % array phase d -
{
setdash
} def
/cf {} def % - cf flatness
/i % flatness i -
{
dup 0 eq
{
pop cf
} if
setflat
} def
/j % linejoin j -
{
setlinejoin
} def
/J % linecap J -
{
setlinecap
} def
/M % miterlimit M -
{
setmiterlimit
} def
/w % linewidth w -
{
setlinewidth
} def
% path painting operators
/H % - H -
{} def
/h % - h -
{
closepath
} def
/N % - N -
{
_pola 0 eq
{
_doClip 1 eq {clip /_doClip 0 ddef} if
newpath
}
{
/CRender {N} ddef
}ifelse
} def
/n % - n -
{N} def
/F % - F -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _pf grestore clip newpath /_lp /none ddef _fc
/_doClip 0 ddef
}
{
_pf
}ifelse
}
{
/CRender {F} ddef
}ifelse
} def
/f % - f -
{
closepath
F
} def
/S % - S -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _ps grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
_ps
}ifelse
}
{
/CRender {S} ddef
}ifelse
} def
/s % - s -
{
closepath
S
} def
/B % - B -
{
_pola 0 eq
{
_doClip 1 eq % F clears _doClip
gsave F grestore
{
gsave S grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
S
}ifelse
}
{
/CRender {B} ddef
}ifelse
} def
/b % - b -
{
closepath
B
} def
/W % - W -
{
/_doClip 1 ddef
} def
/* % - [string] * -
{
count 0 ne
{
dup type (stringtype) eq {pop} if
} if
_pola 0 eq {newpath} if
} def
% group operators
/u % - u -
{} def
/U % - U -
{} def
/q % - q -
{
_pola 0 eq {gsave} if
} def
/Q % - Q -
{
_pola 0 eq {grestore} if
} def
/*u % - *u -
{
_pola 1 add /_pola exch ddef
} def
/*U % - *U -
{
_pola 1 sub /_pola exch ddef
_pola 0 eq {CRender} if
} def
/D % polarized D -
{pop} def
/*w % - *w -
{} def
/*W % - *W -
{} def
% place operators
/` % matrix llx lly urx ury string ` -
{
/_i save ddef
6 1 roll 4 npop
concat pop
userdict begin
/showpage {} def
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
newpath
0 setgray
false setoverprint
} def
/~ % - ~ -
{
end
_i restore
} def
% color operators
/O % flag O -
{
0 ne
/_of exch ddef
/_lp /none ddef
} def
/R % flag R -
{
0 ne
/_os exch ddef
/_lp /none ddef
} def
/g % gray g -
{
/_gf exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_gf setgray
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/G % gray G -
{
/_gs exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_gs setgray
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/k % cyan magenta yellow black k -
{
_cf astore pop
/_fc
{
_lp /fill ne
{
_of setoverprint
_cf aload pop setcmykcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/K % cyan magenta yellow black K -
{
_cs astore pop
/_sc
{
_lp /stroke ne
{
_os setoverprint
_cs aload pop setcmykcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/x % cyan magenta yellow black name gray x -
{
/_gf exch ddef
findcmykcustomcolor
/_if exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_if _gf 1 exch sub setcustomcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/X % cyan magenta yellow black name gray X -
{
/_gs exch ddef
findcmykcustomcolor
/_is exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_is _gs 1 exch sub setcustomcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
% locked object operator
/A % value A -
{
pop
} def
currentdict readonly pop end
setpacking
% annotate page operator
/annotatepage
{
} def
%%EndResource
%%EndProlog
%%BeginSetup
%%IncludeFont: Helvetica
Adobe_cmykcolor /initialize get exec
Adobe_cshow /initialize get exec
Adobe_customcolor /initialize get exec
Adobe_typography_AI3 /initialize get exec
Adobe_IllustratorA_AI3 /initialize get exec
[
39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron
TE
%AI3_BeginEncoding: _Helvetica Helvetica
[/_Helvetica/Helvetica 0 0 1 TZ
%AI3_EndEncoding TrueType
%%EndSetup
0 A
0 i 0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
540 254 m
540 -1042 L
(N) *
36 254 m
36 -1042 L
(N) *
108 254 m
108 -1042 L
(N) *
180 254 m
180 -1042 L
(N) *
324 254 m
324 -1042 L
(N) *
252 254 m
252 -1042 L
(N) *
396 254 m
396 -1042 L
(N) *
468 254 m
468 -1042 L
(N) *
0 To
0.8552 0 0 0.8552 97.5762 -29.3903 0 Tp
TP
-10.1342 0 Td
0 Tr
0 O
0 g
0.8552 w
/_Helvetica 9.3543 Tf
0 Ts
100 Tz
0 Tt
0 TA
0 0 5 TC
100 100 200 TW
0 0 0 Ti
1 Ta
0 Tq
0 0 Tl
0 Tc
0 Tw
(VME) Tx
(\r) TX
-7.2772 -11.3543 Td
(Interrupt) Tx
(\r) TX
2.6012 -11.3543 Td
(Occurs) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 405.457 -29.3903 0 Tp
TP
-6.7577 0 Td
0 Tr
(OS) Tx
(\r) TX
-14.2964 -11.3543 Td
(Response) Tx
(\r) TX
1.0448 -11.3543 Td
(Complete) Tx
(\r) TX
TO
0 R
0 G
1 D
36.8552 -79.8552 m
467.0332 -79.8552 l
S
u
0 O
0 g
0 D
460.2919 -79.9154 m
458.8279 -77.6304 L
458.91 -77.5757 L
462.8369 -79.1355 L
464.2052 -79.4365 465.5734 -79.7376 466.9417 -80.0386 c
465.5734 -80.3396 464.2052 -80.6406 462.8369 -80.9416 c
458.91 -82.5014 L
458.8279 -82.4604 L
460.2919 -80.1617 L
460.2919 -79.9154 L
f
U
u
0 R
0 G
1.7104 w
159.1523 -72.1582 m
159.1523 -79.8552 l
159.1523 -87.5522 l
S
U
u
220.7285 -72.1582 m
220.7285 -79.8552 l
220.7285 -87.5522 l
S
U
u
0 O
0 g
0.8552 w
98.3698 -65.8587 m
100.5453 -65.8587 L
97.5762 -68.8552 L
94.5934 -65.8587 L
96.7826 -65.8587 L
98.3698 -65.8587 L
f
U
u
406.2506 -65.8587 m
408.4262 -65.8587 L
405.457 -68.8552 L
402.4742 -65.8587 L
404.6634 -65.8587 L
406.2506 -65.8587 L
f
U
0 To
0.8552 0 0 0.8552 251.9442 -292.6605 0 Tp
TP
-104.2173 0 Td
0 Tr
(Figure 1: Components of Total Interrupt Response) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 468.0166 -76.9008 0 Tp
TP
-1.6243 0 Td
0 Tr
/_Helvetica 11.6929 Tf
(t) Tx
(\r) TX
TO
u
0 R
0 G
1.7104 w
97.6523 -72.1582 m
97.6523 -79.8552 l
97.6523 -87.5522 l
S
U
u
405.3809 -72.1582 m
405.3809 -79.8552 l
405.3809 -87.5522 l
S
U
u
1 w
97.6523 -53.1582 m
97.6523 -60.8552 l
97.6523 -68.5522 l
S
U
u
405.3809 -52.6582 m
405.3809 -60.3552 l
405.3809 -68.0522 l
S
U
0 To
0.8552 0 0 0.8552 159.0762 -29.3903 0 Tp
TP
-21.0483 0 Td
0 Tr
0 O
0 g
0.8552 w
/_Helvetica 9.3543 Tf
(Processor) Tx
(\r) TX
1.8179 -11.3543 Td
(Receives) Tx
(\r) TX
1.819 -11.3543 Td
(Interrupt) Tx
(\r) TX
TO
u
159.8698 -65.8587 m
162.0453 -65.8587 L
159.0762 -68.8552 L
156.0934 -65.8587 L
158.2826 -65.8587 L
159.8698 -65.8587 L
f
U
u
0 R
0 G
1 w
159.1523 -53.1582 m
159.1523 -60.8552 l
159.1523 -68.5522 l
S
U
0 To
0.8552 0 0 0.8552 220.5762 -29.3903 0 Tp
TP
-6.7577 0 Td
0 Tr
0 O
0 g
0.8552 w
(OS) Tx
(\r) TX
-7.5387 -11.3543 Td
(Begins) Tx
(\r) TX
-10.6572 -11.3543 Td
(Responding) Tx
(\r) TX
TO
u
221.3698 -65.8587 m
223.5453 -65.8587 L
220.5762 -68.8552 L
217.5934 -65.8587 L
219.7826 -65.8587 L
221.3698 -65.8587 L
f
U
u
0 R
0 G
1 w
220.6523 -53.1582 m
220.6523 -60.8552 l
220.6523 -68.5522 l
S
U
u
1.7104 w
159.1523 -129.1582 m
159.1523 -136.8552 l
159.1523 -144.5522 l
S
U
u
220.7285 -129.1582 m
220.7285 -136.8552 l
220.7285 -144.5522 l
S
U
u
97.6523 -129.1582 m
97.6523 -136.8552 l
97.6523 -144.5522 l
S
U
u
u
0 O
0 g
0.8552 w
216.9588 -135.7722 m
216.9588 -133.5967 L
219.9553 -136.5658 L
216.9588 -139.5486 L
216.9588 -137.3594 L
216.9588 -135.7722 L
f
U
0 R
0 G
1 w
211.9553 -136.4897 m
219.6523 -136.4897 l
S
U
-342 -143.5 m
954 -143.5 L
(N) *
u
u
0 O
0 g
0.8552 w
155.4588 -135.7722 m
155.4588 -133.5967 L
158.4553 -136.5658 L
155.4588 -139.5486 L
155.4588 -137.3594 L
155.4588 -135.7722 L
f
U
0 R
0 G
1 w
150.4553 -136.4897 m
158.1523 -136.4897 l
S
U
u
u
0 O
0 g
0.8552 w
163.0412 -137.2278 m
163.0412 -139.4033 L
160.0447 -136.4342 L
163.0412 -133.4514 L
163.0412 -135.6406 L
163.0412 -137.2278 L
f
U
0 R
0 G
1 w
168.0447 -136.5103 m
160.3477 -136.5103 l
S
U
u
u
0 O
0 g
0.8552 w
101.7912 -137.2278 m
101.7912 -139.4033 L
98.7947 -136.4342 L
101.7912 -133.4514 L
101.7912 -135.6406 L
101.7912 -137.2278 L
f
U
0 R
0 G
1 w
106.7947 -136.5103 m
99.0977 -136.5103 l
S
U
0 To
0.8552 0 0 0.8552 130.0762 -134.1403 0 Tp
TP
-20.2661 0 Td
0 Tr
0 O
0 g
0.8552 w
(Hardware) Tx
(\r) TX
3.8892 -11.3543 Td
(Latency) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 191.0762 -134.1403 0 Tp
TP
-18.4517 0 Td
0 Tr
(Software) Tx
(\r) TX
2.0748 -11.3543 Td
(Latency) Tx
(\r) TX
TO
u
0 R
0 G
1.7104 w
220.7285 -185.1582 m
220.7285 -192.8552 l
220.7285 -200.5522 l
S
U
u
97.6523 -185.1582 m
97.6523 -192.8552 l
97.6523 -200.5522 l
S
U
u
u
0 O
0 g
0.8552 w
216.9588 -191.7722 m
216.9588 -189.5967 L
219.9553 -192.5658 L
216.9588 -195.5486 L
216.9588 -193.3594 L
216.9588 -191.7722 L
f
U
0 R
0 G
1 w
211.9553 -192.4897 m
219.6523 -192.4897 l
S
U
u
u
0 O
0 g
0.8552 w
101.7912 -193.2278 m
101.7912 -195.4033 L
98.7947 -192.4342 L
101.7912 -189.4514 L
101.7912 -191.6406 L
101.7912 -193.2278 L
f
U
0 R
0 G
1 w
106.7947 -192.5103 m
99.0977 -192.5103 l
S
U
0 To
0.8552 0 0 0.8552 158.5762 -194.1403 0 Tp
TP
-35.0878 0 Td
0 Tr
0 O
0 g
0.8552 w
(Interrupt Latency) Tx
(\r) TX
TO
1 w
405.5 254 m
405.5 -1042 L
(N) *
u
0 R
0 G
1.7104 w
405.4785 -185.1582 m
405.4785 -192.8552 l
405.4785 -200.5522 l
S
U
1 w
405.5 254 m
405.5 -1042 L
(N) *
u
0 O
0 g
0.8552 w
224.2912 -193.2278 m
224.2912 -195.4033 L
221.2947 -192.4342 L
224.2912 -189.4514 L
224.2912 -191.6406 L
224.2912 -193.2278 L
f
U
0 R
0 G
1 w
243.2947 -192.5103 m
221.5977 -192.5103 l
S
u
0 O
0 g
0.8552 w
401.9588 -191.7722 m
401.9588 -189.5967 L
404.9553 -192.5658 L
401.9588 -195.5486 L
401.9588 -193.3594 L
401.9588 -191.7722 L
f
U
0 R
0 G
1 w
382.9553 -192.4897 m
404.6523 -192.4897 l
S
0 To
0.8552 0 0 0.8552 312.5762 -194.1403 0 Tp
TP
-71.2055 0 Td
0 Tr
0 O
0 g
0.8552 w
(Software Interrupt Response Time) Tx
(\r) TX
TO
u
0 R
0 G
1.7104 w
97.6523 -240.6582 m
97.6523 -248.3552 l
97.6523 -256.0522 l
S
U
u
405.4785 -240.6582 m
405.4785 -248.3552 l
405.4785 -256.0522 l
S
U
u
0 O
0 g
0.8552 w
401.9588 -247.2722 m
401.9588 -245.0967 L
404.9553 -248.0658 L
401.9588 -251.0486 L
401.9588 -248.8594 L
401.9588 -247.2722 L
f
U
0 To
0.8552 0 0 0.8552 251.5762 -249.6403 0 Tp
TP
-63.4099 0 Td
0 Tr
(TotaI Interrupt Response Time) Tx
(\r) TX
TO
u
101.2912 -248.7278 m
101.2912 -250.9033 L
98.2947 -247.9342 L
101.2912 -244.9514 L
101.2912 -247.1406 L
101.2912 -248.7278 L
f
U
u
0 R
0 G
1 w
182.2947 -248.0103 m
98.5977 -248.0103 l
S
U
u
404.2947 -248.0103 m
320.5977 -248.0103 l
S
U
%%PageTrailer
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
Adobe_typography_AI3 /terminate get exec
Adobe_customcolor /terminate get exec
Adobe_cshow /terminate get exec
Adobe_cmykcolor /terminate get exec
Adobe_packedarray /terminate get exec
%%EOF
%%EndDocument
FMENDEPSF
54 89.3 540 687.33 C
0 0 612 792 C
181.11 108.66 410 128.66 R
7 X
0 K
V
FMENDPAGE
%%EndPage: "6" 7
%%Page: "7" 7
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(System Interrupt Response) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(7) 527.85 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
(2.2) 184.11 680.66 T
(Interrupt Latency) 207 680.66 T
1 F
(Interrupt latency) 207 664.66 T
(, as de\336ned in the previous section, can be subdivided into two compo-) 272.68 664.66 T
(nent intervals:) 207 652.66 T
0 9 Q
(1.) 207 634.66 T
2 10 Q
(Hardwar) 220.74 634.66 T
(e interrupt latency) 259.98 634.66 T
(.) 338.82 634.66 T
1 F
( The time required for the interrupt to propagate) 341.32 634.66 T
(through the hardware from its source to the R4400) 220.74 622.66 T
1 8 Q
(TM) 422.82 626.66 T
1 10 Q
( interrupt pin.) 434.82 622.66 T
0 9 Q
(2.) 207 607.66 T
2 10 Q
(Softwar) 220.74 607.66 T
(e interrupt latency) 254.43 607.66 T
(.) 333.26 607.66 T
1 F
( The interval between the instant when the R4400) 335.76 607.66 T
(receives the interrupt, and the instant when the operating system begins responding) 220.74 595.66 T
(to the hardware interrupt.) 220.74 583.66 T
0 9 Q
(2.2.1) 178.01 560.33 T
(Hardware Interrupt Latency) 207 560.33 T
1 10 Q
(The system implements 128 interrupt levels with priority control hardware on the CPU) 207 547.66 T
-0.15 (boards. In addition to being divided by levels, interrupts may be directed to speci\336c pro-) 207 535.66 P
(cessors or to groups of processors.) 207 523.66 T
(The path followed by VME interrupt signals is shown in Figure 2.) 207 499.66 T
(Figure 2: Hardware Interrupt Path) 207 262.66 T
(On the VCAM VME controller) 207 238.66 T
(, there are eight Interrupt Level / Destination registers) 332.07 238.66 T
(which can be programmed with arbitrary interrupt levels and destination processors.) 207 226.66 T
(\050Direct access to these registers is limited to the OS; see section 3.1.\051 Seven of these) 207 214.66 T
-0.14 (registers are directly associated with the seven VME interrupt lines; the eighth is associ-) 207 202.66 P
(ated with error detection circuitry within the VCAM. When one of the interrupt lines is) 207 190.66 T
-0.36 (active or an error is detected by the VCAM, the interrupt level and destination contained) 207 178.66 P
-0.23 (in the associated register is used to transmit an interrupt over the POWERpath-2) 207 166.66 P
1 8 Q
-0.19 (TM) 525.09 170.66 P
1 10 Q
-0.23 ( bus,) 537.09 166.66 P
(where it is received and acted on by the appropriate CPU.) 207 154.66 T
(The typical time required for the interrupt to propagate from the VME bus to the appro-) 207 130.66 T
-0.3 (priate CPU chip is approximately 2) 207 118.66 P
3 F
-0.3 (m) 346.78 118.66 P
1 F
-0.3 (s. The theoretical worst-case propagation delay is 8) 352.54 118.66 P
3 F
(m) 207 106.66 T
1 F
(s. Note that the theoretical worst case requires a very lar) 212.76 106.66 T
(ge con\336guration. For typical) 437.11 106.66 T
(con\336gurations, 4) 207 94.66 T
3 F
(m) 274.18 94.66 T
1 F
(s is a more appropriate worst-case maximum propagation delay) 279.94 94.66 T
(.) 532.99 94.66 T
72 89.3 558 687.33 C
173.02 283.33 558 472.33 C
0 25 -189 398 -12 373 186 187.02 286.33 FMBEGINEPSF
%%BeginDocument: <inline>
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(TM) 3.2
%%For: (Frank X. Doyle) (Dangerous Ideas Group)
%%Title: (Fig. 2 Chart)
%%CreationDate: (1/20/94) (4:52 PM)
%%BoundingBox: 25 -189 398 -12
%%DocumentProcessColors: Black
%%DocumentFonts: Helvetica
%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
%%+ procset Adobe_cmykcolor 1.1 0
%%+ procset Adobe_cshow 1.1 0
%%+ procset Adobe_customcolor 1.0 0
%%+ procset Adobe_typography_AI3 1.0 1
%%+ procset Adobe_IllustratorA_AI3 1.0 1
%AI3_ColorUsage: Black&White
%AI3_TemplateBox: 306 -394 306 -394
%AI3_TileBox: 18 -782 594 -6
%AI3_DocumentPreview: Macintosh_Pic
%%EndComments
%%BeginProlog
%%BeginResource: procset Adobe_packedarray 2.0 0
%%Title: (Packed Array Operators)
%%Version: 2.0
%%CreationDate: (8/2/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
userdict /Adobe_packedarray 5 dict dup begin put
/initialize % - initialize -
{
/packedarray where
{
pop
}
{
Adobe_packedarray begin
Adobe_packedarray
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
} ifelse
} def
/terminate % - terminate -
{
} def
/packedarray % arguments count packedarray array
{
array astore readonly
} def
/setpacking % boolean setpacking -
{
pop
} def
/currentpacking % - setpacking boolean
{
false
} def
currentdict readonly pop end
%%EndResource
Adobe_packedarray /initialize get exec
%%BeginResource: procset Adobe_cmykcolor 1.1 0
%%Title: (CMYK Color Operators)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cmykcolor 4 dict dup begin put
/initialize % - initialize -
{
/setcmykcolor where
{
pop
}
{
userdict /Adobe_cmykcolor_vars 2 dict dup begin put
/_setrgbcolor
/setrgbcolor load def
/_currentrgbcolor
/currentrgbcolor load def
Adobe_cmykcolor begin
Adobe_cmykcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_cmykcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_cmykcolor eq
{
end
} if
} def
/setcmykcolor % cyan magenta yellow black setcmykcolor -
{
1 sub 4 1 roll
3
{
3 index add neg dup 0 lt
{
pop 0
} if
3 1 roll
} repeat
Adobe_cmykcolor_vars /_setrgbcolor get exec
pop
} def
/currentcmykcolor % - currentcmykcolor cyan magenta yellow black
{
Adobe_cmykcolor_vars /_currentrgbcolor get exec
3
{
1 sub neg 3 1 roll
} repeat
0
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_cshow 1.1 0
%%Title: (cshow Operator)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cshow 3 dict dup begin put
/initialize % - initialize -
{
/cshow where
{
pop
}
{
userdict /Adobe_cshow_vars 1 dict dup begin put
/_cshow % - _cshow proc
{} def
Adobe_cshow begin
Adobe_cshow
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
end
} ifelse
} def
/terminate % - terminate -
{
} def
/cshow % proc string cshow -
{
exch
Adobe_cshow_vars
exch /_cshow
exch put
{
0 0 Adobe_cshow_vars /_cshow get exec
} forall
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_customcolor 1.0 0
%%Title: (Custom Color Operators)
%%Version: 1.0
%%CreationDate: (5/9/88) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_customcolor 5 dict dup begin put
/initialize % - initialize -
{
/setcustomcolor where
{
pop
}
{
Adobe_customcolor begin
Adobe_customcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_customcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_customcolor eq
{
end
} if
} def
/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object
{
5 packedarray
} def
/setcustomcolor % object tint setcustomcolor -
{
exch
aload pop pop
4
{
4 index mul 4 1 roll
} repeat
5 -1 roll pop
setcmykcolor
} def
/setoverprint % boolean setoverprint -
{
pop
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_typography_AI3 1.1 0
%%Title: (Typography Operators)
%%Version: 1.0
%%CreationDate:(5/31/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_typography_AI3 47 dict dup begin put
/initialize % - initialize -
{
/TZ
where
{
pop
}
{
Adobe_typography_AI3 begin
Adobe_typography_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_typography_AI3 begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_typography_AI3 eq
{
end
} if
} def
% [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
/modifyEncoding
{
/_tempEncode exch ddef
% pointer for sequential encodings
/_pntr 0 ddef
{
% get bottom object
counttomark -1 roll
% is it a mark ?
dup type dup /marktype eq
{
% exit
pop pop exit
}
{
% ... object ... type ....
% insert if a nametype
/nametype eq
{
% insert the name at _pntr and increment pointer
_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
put
}
{
% reset _pntr if it's a number
/_pntr exch ddef
}
ifelse
}
ifelse
}
loop
% return the modified encoding
_tempEncode
}
def
/TE % Set std platform encoding % (encoding pairs) TE -
{
StandardEncoding 256 array copy modifyEncoding
/_nativeEncoding exch def
} def
% re-define font
% expected arguments
% for 'normal fonts :
% [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
%
% for cartographic, pictographic, and expert fonts :
% [ ... number value stream ... /_Symbol/Symbol
% direction fontScript defaultEncoding TZ
% for blended fonts w/ default encoding :
% [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
% for blended fonts w/ special encoding :
% [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
/TZ
{
% set weight vector (if present)
dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse
% platform dependent coding flag
/_useNativeEncoding exch def
% pop fontScript & direction
pop pop
% create a new dictionary with length
% equal to original dictionary length + 2
% copy all the key/value pairs except FID
% call makeblended font with the weight values if _wv is an array
findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
begin
% copy all the values but the FID
% into the new dictionary
mark exch
{
1 index /FID ne { def } if cleartomark mark
}
forall
% discard last mark
pop
% define FontName
/FontName exch def
% if no re-encoding stream is present
% then if the base encoding vector of the font
% is the same as StandardEncoding
% and the use platform encoding flag is true
% then install AI platform encoding
% else leave the base encoding in effect
counttomark 0 eq
{
1 _useNativeEncoding eq
{
/Encoding _nativeEncoding def
}
if
% clean up
cleartomark
}
{
% custom encoding to be done
% start off with a copy of the font's standard encoding
/Encoding load 256 array copy
modifyEncoding /Encoding exch def
}
ifelse
FontName currentdict
end
% register the new font
definefont pop
}
def
% text painting operators
/tr % string tr ax ay string
{
_ax _ay 3 2 roll
} def
/trj % string trj cx cy fillchar ax ay string
{
_cx _cy _sp _ax _ay 6 5 roll
} def
/a0
{
/Tx % text % textString Tx -
{
dup
currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
dup
currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
} ddef
} def
/a1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
/e0
{
/Tx % text % textString Tx -
{
tr _psf
} ddef
/Tj % justified text % textString Tj -
{
trj _pjsf
} ddef
} def
/e1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
tr _psf
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
trj _pjsf
grestore 3 1 roll moveto tr sp
} ddef
} def
/i0
{
/Tx % text % textString Tx -
{
tr sp
} ddef
/Tj % justified text % textString Tj -
{
trj jsp
} ddef
} def
/i1
{
W N
} def
/o0
{
/Tx % text % textString Tx -
{
tr sw rmoveto
} ddef
/Tj % justified text % textString Tj -
{
trj swj rmoveto
} ddef
} def
/r0
{
/Tx % text % textString Tx -
{
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
trj _ctm _pjss
} ddef
} def
/r1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
% font operators
% Binding
/To % begin text % bindType To -
{
pop _ctm currentmatrix pop
} def
/TO % end text % TO -
{
Te _ctm setmatrix newpath
} def
% Text paths
/Tp % begin text path % a b c d tx ty startPt Tp -
{
pop _tm astore pop _ctm setmatrix
_tDict begin /W {} def /h {} def
} def
/TP % end text path % TP -
{
end
iTm 0 0 moveto
} def
% Render mode & matrix operators
/Tr % begin render % render Tr -
{
_render 3 le {currentpoint newpath moveto} if
dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
dup /_render exch ddef
_renderStart exch get load exec
} def
/iTm % internal set text matrix % - iTm - (uses _tm as implicit argument)
{
_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
} def
/Tm % set text matrix % a b c d tx ty Tm -
{
_tm astore pop iTm 0 0 moveto
} def
/Td % translate text matrix % tx ty Td -
{
_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
} def
/Te % end render % - Te -
{
_render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
/_render -1 ddef
} def
% Attributes
/Ta % set alignment % alignment Ta -
{
pop
} def
/Tf % set font name and size % fontname size Tf -
{
dup 1000 div /_fScl exch ddef
exch findfont exch scalefont setfont
} def
/Tl % set leading % leading paragraphLeading Tl -
{
pop
0 exch _leading astore pop
} def
/Tt % set user tracking % userTracking Tt -
{
pop
} def
/TW % set word spacing % minSpace optSpace maxSpace TW -
{
3 npop
} def
/Tw % set computed word spacing % wordSpace Tw
{
/_cx exch ddef
} def
/TC % set character spacing % minSpace optSpace maxSpace TC -
{
3 npop
} def
/Tc % set computed char spacing % charSpace Tc -
{
/_ax exch ddef
} def
/Ts % set super/subscripting (rise) % rise Ts -
{
/_rise exch ddef
currentpoint
iTm
moveto
} def
/Ti % set indentation % firstStartIndent otherStartIndent stopIndent Ti -
{
3 npop
} def
/Tz % set horizontal scaling % scalePercent Tz -
{
100 div /_hs exch ddef
iTm
} def
/TA % set pairwise kerning % autoKern TA -
% autoKern = 0 -> no pair kerning
% = 1 -> automatic pair kerning
{
pop
} def
/Tq % set hanging quotes % hangingQuotes Tq -
% hangingQuotes = 0 -> no hanging quotes
% = 1 -> hanging quotes
{
pop
} def
% Text Bodies
/TX {pop} def
%/Tx % non-justified text % textString Tx -
%/Tj % justified text % textString Tj -
/Tk % kern % autoKern kernValue Tk -
% autoKern = 0 -> manual kern, = 1 -> auto kern
% kernValue = kern value in em/1000 space
{
exch pop _fScl mul neg 0 rmoveto
} def
/TK % non-printing kern % autoKern kernValue TK -
{
2 npop
} def
/T* % carriage return & line feed % - T* -
{
_leading aload pop neg Td
} def
/T*- % carriage return & negative line feed % - T*- -
{
_leading aload pop Td
} def
/T- % print a discretionary hyphen % - T- -
{
_hyphen Tx
} def
/T+ % discretionary hyphen hyphen % - T+ -
{} def
/TR % reset pattern matrix % a b c d tx ty TR -
{
_ctm currentmatrix pop
_tm astore pop
iTm 0 0 moveto
} def
/TS % special chars % textString justified TS -
{
0 eq {Tx} {Tj} ifelse
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
%%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
%%Version: 1.0
%%CreationDate: (7/22/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
% initialization
/initialize % - initialize -
{
% 47 vars, but leave slack of 10 entries for custom Postscript fragments
userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
% paint operands
/_lp /none def
/_pf {} def
/_ps {} def
/_psf {} def
/_pss {} def
/_pjsf {} def
/_pjss {} def
/_pola 0 def
/_doClip 0 def
% paint operators
/cf currentflat def % - cf flatness
% typography operands
/_tm matrix def
/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def
/_renderEnd [null null null null /i1 /i1 /i1 /i1] def
/_render -1 def
/_rise 0 def
/_ax 0 def % x character spacing (_ax, _ay, _cx, _cy follows awidthshow naming convention)
/_ay 0 def % y character spacing
/_cx 0 def % x word spacing
/_cy 0 def % y word spacing
/_leading [0 0] def
/_ctm matrix def
/_mtx matrix def
/_sp 16#020 def
/_hyphen (-) def
/_fScl 0 def
/_cnt 0 def
/_hs 1 def
/_nativeEncoding 0 def
/_useNativeEncoding 0 def
/_tempEncode 0 def
/_pntr 0 def
/_tDict 2 dict def
% typography operators
/Tx {} def
/Tj {} def
% compound path operators
/CRender {} def
% printing
/_AI3_savepage {} def
% color operands
/_gf null def
/_cf 4 array def
/_if null def
/_of false def
/_fc {} def
/_gs null def
/_cs 4 array def
/_is null def
/_os false def
/_sc {} def
/_i null def
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3_vars begin
newpath
} def
/terminate % - terminate -
{
end
end
} def
% definition operators
/_ % - _ null
null def
/ddef % key value ddef -
{
Adobe_IllustratorA_AI3_vars 3 1 roll put
} def
/xput % key value literal xput -
{
dup load dup length exch maxlength eq
{
dup dup load dup
length 2 mul dict copy def
} if
load begin def end
} def
/npop % integer npop -
{
{
pop
} repeat
} def
% marking operators
/sw % ax ay string sw x y
{
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
} def
/swj % cx cy fillchar ax ay string swj x y
{
dup 4 1 roll
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
6 2 roll /_cnt 0 ddef
{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
} def
/ss % ax ay string matrix ss -
{
4 1 roll
{ % matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put pop
gsave
false charpath currentpoint
4 index setmatrix
stroke
grestore
moveto
2 copy rmoveto
} exch cshow
3 npop
} def
/jss % cx cy fillchar ax ay string matrix jss -
{
4 1 roll
{ % cx cy fillchar matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
gsave
_sp eq
{
exch 6 index 6 index 6 index 5 -1 roll widthshow
currentpoint
}
{
false charpath currentpoint
4 index setmatrix stroke
}ifelse
grestore
moveto
2 copy rmoveto
} exch cshow
6 npop
} def
% path operators
/sp % ax ay string sp -
{
{
2 npop (0) exch
2 copy 0 exch put pop
false charpath
2 copy rmoveto
} exch cshow
2 npop
} def
/jsp % cx cy fillchar ax ay string jsp -
{
{ % cx cy fillchar ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
_sp eq
{
exch 5 index 5 index 5 index 5 -1 roll widthshow
}
{
false charpath
}ifelse
2 copy rmoveto
} exch cshow
5 npop
} def
% path construction operators
/pl % x y pl x y
{
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} def
/setstrokeadjust where
{
pop true setstrokeadjust
/c % x1 y1 x2 y2 x3 y3 c -
{
curveto
} def
/C
/c load def
/v % x2 y2 x3 y3 v -
{
currentpoint 6 2 roll curveto
} def
/V
/v load def
/y % x1 y1 x2 y2 y -
{
2 copy curveto
} def
/Y
/y load def
/l % x y l -
{
lineto
} def
/L
/l load def
/m % x y m -
{
moveto
} def
}
{%else
/c
{
pl curveto
} def
/C
/c load def
/v
{
currentpoint 6 2 roll pl curveto
} def
/V
/v load def
/y
{
pl 2 copy curveto
} def
/Y
/y load def
/l
{
pl lineto
} def
/L
/l load def
/m
{
pl moveto
} def
}ifelse
% graphic state operators
/d % array phase d -
{
setdash
} def
/cf {} def % - cf flatness
/i % flatness i -
{
dup 0 eq
{
pop cf
} if
setflat
} def
/j % linejoin j -
{
setlinejoin
} def
/J % linecap J -
{
setlinecap
} def
/M % miterlimit M -
{
setmiterlimit
} def
/w % linewidth w -
{
setlinewidth
} def
% path painting operators
/H % - H -
{} def
/h % - h -
{
closepath
} def
/N % - N -
{
_pola 0 eq
{
_doClip 1 eq {clip /_doClip 0 ddef} if
newpath
}
{
/CRender {N} ddef
}ifelse
} def
/n % - n -
{N} def
/F % - F -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _pf grestore clip newpath /_lp /none ddef _fc
/_doClip 0 ddef
}
{
_pf
}ifelse
}
{
/CRender {F} ddef
}ifelse
} def
/f % - f -
{
closepath
F
} def
/S % - S -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _ps grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
_ps
}ifelse
}
{
/CRender {S} ddef
}ifelse
} def
/s % - s -
{
closepath
S
} def
/B % - B -
{
_pola 0 eq
{
_doClip 1 eq % F clears _doClip
gsave F grestore
{
gsave S grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
S
}ifelse
}
{
/CRender {B} ddef
}ifelse
} def
/b % - b -
{
closepath
B
} def
/W % - W -
{
/_doClip 1 ddef
} def
/* % - [string] * -
{
count 0 ne
{
dup type (stringtype) eq {pop} if
} if
_pola 0 eq {newpath} if
} def
% group operators
/u % - u -
{} def
/U % - U -
{} def
/q % - q -
{
_pola 0 eq {gsave} if
} def
/Q % - Q -
{
_pola 0 eq {grestore} if
} def
/*u % - *u -
{
_pola 1 add /_pola exch ddef
} def
/*U % - *U -
{
_pola 1 sub /_pola exch ddef
_pola 0 eq {CRender} if
} def
/D % polarized D -
{pop} def
/*w % - *w -
{} def
/*W % - *W -
{} def
% place operators
/` % matrix llx lly urx ury string ` -
{
/_i save ddef
6 1 roll 4 npop
concat pop
userdict begin
/showpage {} def
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
newpath
0 setgray
false setoverprint
} def
/~ % - ~ -
{
end
_i restore
} def
% color operators
/O % flag O -
{
0 ne
/_of exch ddef
/_lp /none ddef
} def
/R % flag R -
{
0 ne
/_os exch ddef
/_lp /none ddef
} def
/g % gray g -
{
/_gf exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_gf setgray
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/G % gray G -
{
/_gs exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_gs setgray
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/k % cyan magenta yellow black k -
{
_cf astore pop
/_fc
{
_lp /fill ne
{
_of setoverprint
_cf aload pop setcmykcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/K % cyan magenta yellow black K -
{
_cs astore pop
/_sc
{
_lp /stroke ne
{
_os setoverprint
_cs aload pop setcmykcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/x % cyan magenta yellow black name gray x -
{
/_gf exch ddef
findcmykcustomcolor
/_if exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_if _gf 1 exch sub setcustomcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/X % cyan magenta yellow black name gray X -
{
/_gs exch ddef
findcmykcustomcolor
/_is exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_is _gs 1 exch sub setcustomcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
% locked object operator
/A % value A -
{
pop
} def
currentdict readonly pop end
setpacking
% annotate page operator
/annotatepage
{
} def
%%EndResource
%%EndProlog
%%BeginSetup
%%IncludeFont: Helvetica
Adobe_cmykcolor /initialize get exec
Adobe_cshow /initialize get exec
Adobe_customcolor /initialize get exec
Adobe_typography_AI3 /initialize get exec
Adobe_IllustratorA_AI3 /initialize get exec
[
39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron
TE
%AI3_BeginEncoding: _Helvetica Helvetica
[/_Helvetica/Helvetica 0 0 1 TZ
%AI3_EndEncoding TrueType
%%EndSetup
0 A
0 i 0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
540 254 m
540 -1042 L
(N) *
36 254 m
36 -1042 L
(N) *
108 254 m
108 -1042 L
(N) *
180 254 m
180 -1042 L
(N) *
324 254 m
324 -1042 L
(N) *
252 254 m
252 -1042 L
(N) *
396 254 m
396 -1042 L
(N) *
468 254 m
468 -1042 L
(N) *
0 To
0.8552 0 0 0.8552 44.0762 -33.3903 0 Tp
TP
-12.2136 0 Td
0 Tr
0 O
0 g
0.8552 w
/_Helvetica 9.3543 Tf
0 Ts
100 Tz
0 Tt
0 TA
0 0 5 TC
100 100 200 TW
0 0 0 Ti
1 Ta
0 Tq
0 0 Tl
0 Tc
0 Tw
(IRQ 7) Tx
(\r) TX
12.2136 -11.3543 Td
(\r) TX
-12.2136 -11.3543 Td
(IRQ 1) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 222.4442 -187.1605 0 Tp
TP
-69.6457 0 Td
0 Tr
(Figure 2: Hardware Interrupt Path) Tx
(\r) TX
TO
1 w
-342 -143.5 m
954 -143.5 L
(N) *
405.5 254 m
405.5 -1042 L
(N) *
405.5 254 m
405.5 -1042 L
(N) *
0 R
0 G
0.855 w
102.8471 -17.1261 m
126.8191 -40.8789 L
102.8471 -64.7412 L
S
u
113 -30 m
57 -30 l
S
U
u
113 -52 m
57 -52 l
S
U
0 To
1 0 0 1 43.5 -39.5 0 Tp
TP
-1.3994 0 Td
0 Tr
0 O
0 g
1 w
/_Helvetica 7.9997 Tf
4 0 Tl
(\245) Tx
(\r) TX
T*
(\245) Tx
(\r) TX
T*
(\245) Tx
(\r) TX
TO
1 To
1 0 0 1 136 -17 0 Tp
1 g
0 R
0 G
0.85 w
183.5 -64.5 m
183.5 -17 L
136 -17 L
136 -64.5 L
183.5 -64.5 L
b
TP
23.75 -3 Td
2 Tr
(\r) TX
TO
1 w
-342 -17 m
954 -17 L
(N) *
-342 -64.5 m
954 -64.5 L
(N) *
u
0 O
1 g
0 R
0 G
0.855 w
298.5 -64.5 m
298.5 -17 L
220 -17 L
220 -64.5 L
298.5 -64.5 L
b
259.25 -40.75 m
B
U
u
393.4015 -57.7431 m
393.4015 -20.9931 L
356.6515 -20.9931 L
356.6515 -57.7431 L
393.4015 -57.7431 L
b
375.0265 -39.3681 m
B
U
u
u
320 -17 m
320 -143.5 l
B
U
u
337 -17 m
337 -143.5 l
B
U
U
u
u
0.5 w
183.5 -37 m
191 -29.5 197 -32.5 v
203 -35.5 207.5 -42 219.5 -33.5 c
S
U
u
183 -46 m
190.5 -38.5 196.5 -41.5 v
202.5 -44.5 207 -51 219 -42.5 c
S
U
U
0 To
0.8552 0 0 0.8552 159.0762 -33.8903 0 Tp
TP
-13.5107 0 Td
0 Tr
0 O
0 g
0.8552 w
/_Helvetica 9.3543 Tf
0 0 Tl
(VCAM) Tx
(\r) TX
3.3765 -11.3543 Td
(VME) Tx
(\r) TX
-10.1308 -11.3543 Td
(Controller) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 258.5762 -37.8903 0 Tp
TP
-38.2017 0 Td
0 Tr
(POWERchannel-2) Tx
(\r) TX
25.7254 -11.3543 Td
(Board) Tx
(\r) TX
TO
u
0 To
0.8552 0 0 0.8552 375.0762 -31.8903 0 Tp
TP
-9.8727 0 Td
0 Tr
(CPU) Tx
(\r) TX
-2.6035 -11.3543 Td
(Board) Tx
(\r) TX
9.8761 -11.3543 Td
(0) Tx
(\r) TX
TO
u
0 R
0 G
0.25 w
373.5625 -50.875 m
376.5625 -46.375 l
S
U
U
u
0 O
0 g
0.8552 w
316.655 -41.1995 m
316.655 -39.024 L
319.6515 -41.9931 L
316.655 -44.9759 L
316.655 -42.7867 L
316.655 -41.1995 L
f
U
u
0 R
0 G
1 w
298.6515 -41.917 m
319.3485 -41.917 l
S
U
u
u
0 O
0 g
0.8552 w
353.655 -92.6995 m
353.655 -90.524 L
356.6515 -93.4931 L
353.655 -96.4759 L
353.655 -94.2867 L
353.655 -92.6995 L
f
U
0 R
0 G
1 w
337.6515 -93.417 m
356.3485 -93.417 l
S
U
0 To
0.8552 0 0 0.8552 289.5762 -100.8903 0 Tp
TP
-30.9244 0 Td
0 Tr
0 O
0 g
0.8552 w
(POWERpath-2) Tx
(\r) TX
22.8662 -11.3543 Td
(Bus) Tx
(\r) TX
TO
0 To
1 0 0 1 374.5 -65 0 Tp
TP
-1.3994 0 Td
0 Tr
1 w
/_Helvetica 7.9997 Tf
4 0 Tl
(\245) Tx
(\r) TX
T*
(\245) Tx
(\r) TX
T*
(\245) Tx
(\r) TX
TO
u
u
0.8552 w
353.655 -34.1995 m
353.655 -32.024 L
356.6515 -34.9931 L
353.655 -37.9759 L
353.655 -35.7867 L
353.655 -34.1995 L
f
U
0 R
0 G
1 w
337.6515 -34.917 m
356.3485 -34.917 l
S
U
u
0 O
1 g
0.855 w
393.4015 -110.2431 m
393.4015 -73.4931 L
356.6515 -73.4931 L
356.6515 -110.2431 L
393.4015 -110.2431 L
b
375.0265 -91.8681 m
B
U
0 To
0.8552 0 0 0.8552 376.5762 -85.3903 0 Tp
TP
-9.8727 0 Td
0 Tr
0 g
0.8552 w
/_Helvetica 9.3543 Tf
0 0 Tl
(CPU) Tx
(\r) TX
-2.6035 -11.3543 Td
(Board) Tx
(\r) TX
9.8761 -11.3543 Td
(n) Tx
(\r) TX
TO
%%PageTrailer
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
Adobe_typography_AI3 /terminate get exec
Adobe_customcolor /terminate get exec
Adobe_cshow /terminate get exec
Adobe_cmykcolor /terminate get exec
Adobe_packedarray /terminate get exec
%%EOF
%%EndDocument
FMENDEPSF
72 89.3 558 687.33 C
0 0 612 792 C
197.22 255.89 382.23 275.89 R
7 X
0 K
V
FMENDPAGE
%%EndPage: "7" 8
%%Page: "8" 8
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(System Interrupt Response) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(8) 54 60.96 T
0 9 Q
( of) 59.56 60.96 T
0 10 Q
( 33) 70.54 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
(W) 189 680.66 T
(orst case interrupt propagation time can be reduced signi\336cantly by not supporting) 197.63 680.66 T
(graphics or HIPPI interfaces with the same POWERchannel-2 interface used for VME.) 189 668.66 T
-0.36 (Upon receiving a VME interrupt at a CPU, the OS\325) 189 644.66 P
-0.36 (s VME Kernel Driver will read status) 390.11 644.66 P
-0.37 (registers to identify the interrupting device\050s\051 and clear the interrupt. This information is) 189 632.66 P
(used to select which device-speci\336c interrupt handler will execute. Interrupts are not) 189 620.66 T
(cleared until all devices requesting service at that level have been read.) 189 608.66 T
-0.11 (In order to minimize the time spent handling interrupts on the VME bus, it is preferable) 189 584.66 P
(to connect only a single device to each VME interrupt line.) 189 572.66 T
0 9 Q
(2.2.2) 160.01 549.33 T
(Software Interrupt Latency) 189 549.33 T
1 10 Q
(Software interrupt latency is the interval between the instant when the hardware inter-) 189 536.66 T
(rupt signal arrives at the R4400, and the instant when the OS begins responding to the) 189 524.66 T
(interrupt.) 189 512.66 T
(Anytime interrupts are not masked in software, then software interrupt latency is less) 189 494.66 T
(than one instruction time. The approach taken in IRIX with REACT is to enable real-) 189 482.66 T
(time processors to always have interrupts enabled when a real-time interrupt can occur) 189 470.66 T
(,) 534.99 470.66 T
(so that software latency is less than one instruction time. The implications of this are) 189 458.66 T
(covered in the following sections, which describe the situations in which interrupts are) 189 446.66 T
(masked.) 189 434.66 T
0 9 Q
(2.2.3) 160.01 411.33 T
(Potential Sources Of Software Interrupt Latency) 189 411.33 T
1 10 Q
(The two situations in which interrupts are masked are:) 189 398.66 T
0 9 Q
(1.) 189 380.66 T
1 10 Q
(When a higher priority interrupt handler is executing.) 202.74 380.66 T
0 9 Q
(2.) 189 365.66 T
1 10 Q
(When critical regions of kernel code are executing.) 202.74 365.66 T
(IRIX with REACT enable users to prevent higher priority interrupts from introducing) 189 341.66 T
(latency by directing them away from real-time processors. Critical regions of kernel) 189 329.66 T
(code are avoided or carefully managed. The following sections examine these two situ-) 189 317.66 T
(ations in detail.) 189 305.66 T
0 9 Q
(2.2.3.1) 152.52 282.33 T
(Interrupt Handlers) 189 282.33 T
1 10 Q
-0.06 (While an interrupt handler is executing, it masks interrupts at an equal or lower priority) 189 269.66 P
-0.15 (from being serviced. Furthermore, all pending interrupts that are equal to or higher than) 189 257.66 P
(the priority of a new interrupt must complete execution before the new interrupt is ser-) 189 245.66 T
(viced. Interrupt handlers run only on the processor to which the interrupt is directed.) 189 233.66 T
-0.01 (Once non-real-time interrupts are directed away from real-time processors as described) 189 221.66 P
(in Section 3, they will never introduce latency) 189 209.66 T
(.) 372.67 209.66 T
0 9 Q
(2.2.3.2) 152.52 186.33 T
(Critical Kernel Regions) 189 186.33 T
1 10 Q
-0.1 (IRIX is a fully symmetric multiprocessor OS that allows multiple processors to execute) 189 173.66 P
(in the kernel simultaneously) 189 161.66 T
(. Certain critical sections of kernel code require exclusive) 301.34 161.66 T
(access to shared resources. Spin locks are used to arbitrate which processor has exclu-) 189 149.66 T
(sive access to the shared resources. Once a processor acquires a spin lock and enters a) 189 137.66 T
-0.01 (critical section of kernel code, it raises its interrupt level. New interrupts that are below) 189 125.66 P
(the processor) 189 113.66 T
(\325) 242.38 113.66 T
(s interrupt level will not be serviced until the critical section of kernel) 245.16 113.66 T
(code is complete and the processor) 189 101.66 T
(\325) 328.98 101.66 T
(s interrupt level is lowered.) 331.76 101.66 T
FMENDPAGE
%%EndPage: "8" 9
%%Page: "9" 9
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(System Interrupt Response) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(9) 527.85 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(Where possible, real-time processes should avoid making system calls during time-crit-) 207 680.66 T
(ical regions. Instead, forking processes, allocating memory) 207 668.66 T
(, etc. should be done as part) 442.01 668.66 T
-0.18 (of an initialization routine. T) 207 656.66 P
-0.18 (ypically) 320.79 656.66 P
-0.18 (, the only types of kernel activity that must be done) 352.34 656.66 P
(during a time-critical region are process synchronization and context switches.) 207 644.66 T
0 F
(2.3) 184.11 614.66 T
(Software Interrupt Response T) 207 614.66 T
(ime) 352.32 614.66 T
1 F
(The software interrupt response time is the interval between the time the OS begins) 207 598.66 T
(responding to an interrupt and the time that a user level process begins executing. Fig-) 207 586.66 T
(ure 3 shows the sequence of operations that are included in the software interrupt) 207 574.66 T
(response time. These are described below:) 207 562.66 T
4 11 Q
(\245) 207 544.66 T
2 10 Q
(Mode switch.) 220.74 544.66 T
1 F
( A mode switch occurs whenever a processor enters or leaves the ker-) 277.37 544.66 T
(nel. It involves saving / restoring basic resources such as the integer registers and) 220.74 532.66 T
(graphics registers \050if any\051. When entering the kernel, it also includes steps to deter-) 220.74 520.66 T
(mine why the kernel was entered.) 220.74 508.66 T
4 11 Q
(\245) 207 493.66 T
2 10 Q
(Interrupt handler) 220.74 493.66 T
(.) 296.17 493.66 T
1 F
( This is device-speci\336c code that always runs in kernel mode on) 298.67 493.66 T
(the processor to which an interrupt is directed. Users must provide an interrupt han-) 220.74 481.66 T
(dler for any device they add to the system that generates interrupts. T) 220.74 469.66 T
(ypically) 496.78 469.66 T
(, an) 528.34 469.66 T
(interrupt handler will unblock a process or send a signal to alert a process that the) 220.74 457.66 T
(interrupt has occurred.) 220.74 445.66 T
4 11 Q
(\245) 207 430.66 T
2 10 Q
-0.1 (Dispatch cycle.) 220.74 430.66 P
1 F
-0.1 ( During the dispatch cycle, the scheduler determines which user pro-) 284.49 430.66 P
(cess should run next. A dispatch cycle will be followed either by a context switch) 220.74 418.66 T
-0.35 (and a mode switch, or by only a mode switch, depending on the circumstances. If the) 220.74 406.66 P
-0.14 (next user process to be run is not the same user process that was previously running,) 220.74 394.66 P
(the scheduler initiates a context switch.) 220.74 382.66 T
(If the processor was in the kernel idle loop at the time the interrupt occurred, a con-) 220.74 367.66 T
(text switch will not be required if the next process to be run was also running just) 220.74 355.66 T
(before the processor entered the idle loop.) 220.74 343.66 T
4 11 Q
(\245) 207 328.66 T
2 10 Q
(Context switch.) 220.74 328.66 T
1 F
( During a context switch, the kernel saves the context of one user) 286.81 328.66 T
(process and restores the context of another user process.) 220.74 316.66 T
(Figure 3: Components of Software Interrupt Response T) 207 108.68 T
(ime) 432.34 108.68 T
72 89.3 558 687.33 C
100.01 129.34 558 289.33 C
0 34 -169 480 -21 450 153 109.01 136.33 FMBEGINEPSF
%%BeginDocument: <inline>
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(TM) 3.2
%%For: (Frank X. Doyle) (Dangerous Ideas Group)
%%Title: (Fig. 3 Chart)
%%CreationDate: (1/20/94) (4:40 PM)
%%BoundingBox: 34 -169 480 -21
%%DocumentProcessColors: Black
%%DocumentFonts: Helvetica
%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
%%+ procset Adobe_cmykcolor 1.1 0
%%+ procset Adobe_cshow 1.1 0
%%+ procset Adobe_customcolor 1.0 0
%%+ procset Adobe_typography_AI3 1.0 1
%%+ procset Adobe_IllustratorA_AI3 1.0 1
%AI3_ColorUsage: Black&White
%AI3_TemplateBox: 306 -394 306 -394
%AI3_TileBox: 18 -782 594 -6
%AI3_DocumentPreview: Macintosh_Pic
%%EndComments
%%BeginProlog
%%BeginResource: procset Adobe_packedarray 2.0 0
%%Title: (Packed Array Operators)
%%Version: 2.0
%%CreationDate: (8/2/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
userdict /Adobe_packedarray 5 dict dup begin put
/initialize % - initialize -
{
/packedarray where
{
pop
}
{
Adobe_packedarray begin
Adobe_packedarray
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
} ifelse
} def
/terminate % - terminate -
{
} def
/packedarray % arguments count packedarray array
{
array astore readonly
} def
/setpacking % boolean setpacking -
{
pop
} def
/currentpacking % - setpacking boolean
{
false
} def
currentdict readonly pop end
%%EndResource
Adobe_packedarray /initialize get exec
%%BeginResource: procset Adobe_cmykcolor 1.1 0
%%Title: (CMYK Color Operators)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cmykcolor 4 dict dup begin put
/initialize % - initialize -
{
/setcmykcolor where
{
pop
}
{
userdict /Adobe_cmykcolor_vars 2 dict dup begin put
/_setrgbcolor
/setrgbcolor load def
/_currentrgbcolor
/currentrgbcolor load def
Adobe_cmykcolor begin
Adobe_cmykcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_cmykcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_cmykcolor eq
{
end
} if
} def
/setcmykcolor % cyan magenta yellow black setcmykcolor -
{
1 sub 4 1 roll
3
{
3 index add neg dup 0 lt
{
pop 0
} if
3 1 roll
} repeat
Adobe_cmykcolor_vars /_setrgbcolor get exec
pop
} def
/currentcmykcolor % - currentcmykcolor cyan magenta yellow black
{
Adobe_cmykcolor_vars /_currentrgbcolor get exec
3
{
1 sub neg 3 1 roll
} repeat
0
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_cshow 1.1 0
%%Title: (cshow Operator)
%%Version: 1.1
%%CreationDate: (1/23/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_cshow 3 dict dup begin put
/initialize % - initialize -
{
/cshow where
{
pop
}
{
userdict /Adobe_cshow_vars 1 dict dup begin put
/_cshow % - _cshow proc
{} def
Adobe_cshow begin
Adobe_cshow
{
dup xcheck
{
bind
} if
userdict 3 1 roll put
} forall
end
end
} ifelse
} def
/terminate % - terminate -
{
} def
/cshow % proc string cshow -
{
exch
Adobe_cshow_vars
exch /_cshow
exch put
{
0 0 Adobe_cshow_vars /_cshow get exec
} forall
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_customcolor 1.0 0
%%Title: (Custom Color Operators)
%%Version: 1.0
%%CreationDate: (5/9/88) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_customcolor 5 dict dup begin put
/initialize % - initialize -
{
/setcustomcolor where
{
pop
}
{
Adobe_customcolor begin
Adobe_customcolor
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_customcolor begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_customcolor eq
{
end
} if
} def
/findcmykcustomcolor % cyan magenta yellow black name findcmykcustomcolor object
{
5 packedarray
} def
/setcustomcolor % object tint setcustomcolor -
{
exch
aload pop pop
4
{
4 index mul 4 1 roll
} repeat
5 -1 roll pop
setcmykcolor
} def
/setoverprint % boolean setoverprint -
{
pop
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_typography_AI3 1.1 0
%%Title: (Typography Operators)
%%Version: 1.0
%%CreationDate:(5/31/90) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_typography_AI3 47 dict dup begin put
/initialize % - initialize -
{
/TZ
where
{
pop
}
{
Adobe_typography_AI3 begin
Adobe_typography_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
Adobe_typography_AI3 begin
} ifelse
} def
/terminate % - terminate -
{
currentdict Adobe_typography_AI3 eq
{
end
} if
} def
% [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
/modifyEncoding
{
/_tempEncode exch ddef
% pointer for sequential encodings
/_pntr 0 ddef
{
% get bottom object
counttomark -1 roll
% is it a mark ?
dup type dup /marktype eq
{
% exit
pop pop exit
}
{
% ... object ... type ....
% insert if a nametype
/nametype eq
{
% insert the name at _pntr and increment pointer
_tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
put
}
{
% reset _pntr if it's a number
/_pntr exch ddef
}
ifelse
}
ifelse
}
loop
% return the modified encoding
_tempEncode
}
def
/TE % Set std platform encoding % (encoding pairs) TE -
{
StandardEncoding 256 array copy modifyEncoding
/_nativeEncoding exch def
} def
% re-define font
% expected arguments
% for 'normal fonts :
% [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
%
% for cartographic, pictographic, and expert fonts :
% [ ... number value stream ... /_Symbol/Symbol
% direction fontScript defaultEncoding TZ
% for blended fonts w/ default encoding :
% [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
% for blended fonts w/ special encoding :
% [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans
% direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
/TZ
{
% set weight vector (if present)
dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse
% platform dependent coding flag
/_useNativeEncoding exch def
% pop fontScript & direction
pop pop
% create a new dictionary with length
% equal to original dictionary length + 2
% copy all the key/value pairs except FID
% call makeblended font with the weight values if _wv is an array
findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
begin
% copy all the values but the FID
% into the new dictionary
mark exch
{
1 index /FID ne { def } if cleartomark mark
}
forall
% discard last mark
pop
% define FontName
/FontName exch def
% if no re-encoding stream is present
% then if the base encoding vector of the font
% is the same as StandardEncoding
% and the use platform encoding flag is true
% then install AI platform encoding
% else leave the base encoding in effect
counttomark 0 eq
{
1 _useNativeEncoding eq
{
/Encoding _nativeEncoding def
}
if
% clean up
cleartomark
}
{
% custom encoding to be done
% start off with a copy of the font's standard encoding
/Encoding load 256 array copy
modifyEncoding /Encoding exch def
}
ifelse
FontName currentdict
end
% register the new font
definefont pop
}
def
% text painting operators
/tr % string tr ax ay string
{
_ax _ay 3 2 roll
} def
/trj % string trj cx cy fillchar ax ay string
{
_cx _cy _sp _ax _ay 6 5 roll
} def
/a0
{
/Tx % text % textString Tx -
{
dup
currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
dup
currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
} ddef
} def
/a1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
tr _psf
newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
dup currentpoint 3 2 roll
trj _pjsf
newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
/e0
{
/Tx % text % textString Tx -
{
tr _psf
} ddef
/Tj % justified text % textString Tj -
{
trj _pjsf
} ddef
} def
/e1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll gsave
tr _psf
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll gsave
trj _pjsf
grestore 3 1 roll moveto tr sp
} ddef
} def
/i0
{
/Tx % text % textString Tx -
{
tr sp
} ddef
/Tj % justified text % textString Tj -
{
trj jsp
} ddef
} def
/i1
{
W N
} def
/o0
{
/Tx % text % textString Tx -
{
tr sw rmoveto
} ddef
/Tj % justified text % textString Tj -
{
trj swj rmoveto
} ddef
} def
/r0
{
/Tx % text % textString Tx -
{
tr _ctm _pss
} ddef
/Tj % justified text % textString Tj -
{
trj _ctm _pjss
} ddef
} def
/r1
{
/Tx % text % textString Tx -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
tr _ctm _pss
grestore 3 1 roll moveto tr sp
} ddef
/Tj % justified text % textString Tj -
{
dup currentpoint 4 2 roll currentpoint gsave newpath moveto
trj _ctm _pjss
grestore 3 1 roll moveto tr sp
} ddef
} def
% font operators
% Binding
/To % begin text % bindType To -
{
pop _ctm currentmatrix pop
} def
/TO % end text % TO -
{
Te _ctm setmatrix newpath
} def
% Text paths
/Tp % begin text path % a b c d tx ty startPt Tp -
{
pop _tm astore pop _ctm setmatrix
_tDict begin /W {} def /h {} def
} def
/TP % end text path % TP -
{
end
iTm 0 0 moveto
} def
% Render mode & matrix operators
/Tr % begin render % render Tr -
{
_render 3 le {currentpoint newpath moveto} if
dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
dup /_render exch ddef
_renderStart exch get load exec
} def
/iTm % internal set text matrix % - iTm - (uses _tm as implicit argument)
{
_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
} def
/Tm % set text matrix % a b c d tx ty Tm -
{
_tm astore pop iTm 0 0 moveto
} def
/Td % translate text matrix % tx ty Td -
{
_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
} def
/Te % end render % - Te -
{
_render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
/_render -1 ddef
} def
% Attributes
/Ta % set alignment % alignment Ta -
{
pop
} def
/Tf % set font name and size % fontname size Tf -
{
dup 1000 div /_fScl exch ddef
exch findfont exch scalefont setfont
} def
/Tl % set leading % leading paragraphLeading Tl -
{
pop
0 exch _leading astore pop
} def
/Tt % set user tracking % userTracking Tt -
{
pop
} def
/TW % set word spacing % minSpace optSpace maxSpace TW -
{
3 npop
} def
/Tw % set computed word spacing % wordSpace Tw
{
/_cx exch ddef
} def
/TC % set character spacing % minSpace optSpace maxSpace TC -
{
3 npop
} def
/Tc % set computed char spacing % charSpace Tc -
{
/_ax exch ddef
} def
/Ts % set super/subscripting (rise) % rise Ts -
{
/_rise exch ddef
currentpoint
iTm
moveto
} def
/Ti % set indentation % firstStartIndent otherStartIndent stopIndent Ti -
{
3 npop
} def
/Tz % set horizontal scaling % scalePercent Tz -
{
100 div /_hs exch ddef
iTm
} def
/TA % set pairwise kerning % autoKern TA -
% autoKern = 0 -> no pair kerning
% = 1 -> automatic pair kerning
{
pop
} def
/Tq % set hanging quotes % hangingQuotes Tq -
% hangingQuotes = 0 -> no hanging quotes
% = 1 -> hanging quotes
{
pop
} def
% Text Bodies
/TX {pop} def
%/Tx % non-justified text % textString Tx -
%/Tj % justified text % textString Tj -
/Tk % kern % autoKern kernValue Tk -
% autoKern = 0 -> manual kern, = 1 -> auto kern
% kernValue = kern value in em/1000 space
{
exch pop _fScl mul neg 0 rmoveto
} def
/TK % non-printing kern % autoKern kernValue TK -
{
2 npop
} def
/T* % carriage return & line feed % - T* -
{
_leading aload pop neg Td
} def
/T*- % carriage return & negative line feed % - T*- -
{
_leading aload pop Td
} def
/T- % print a discretionary hyphen % - T- -
{
_hyphen Tx
} def
/T+ % discretionary hyphen hyphen % - T+ -
{} def
/TR % reset pattern matrix % a b c d tx ty TR -
{
_ctm currentmatrix pop
_tm astore pop
iTm 0 0 moveto
} def
/TS % special chars % textString justified TS -
{
0 eq {Tx} {Tj} ifelse
} def
currentdict readonly pop end
setpacking
%%EndResource
%%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
%%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
%%Version: 1.0
%%CreationDate: (7/22/89) ()
%%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
% initialization
/initialize % - initialize -
{
% 47 vars, but leave slack of 10 entries for custom Postscript fragments
userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
% paint operands
/_lp /none def
/_pf {} def
/_ps {} def
/_psf {} def
/_pss {} def
/_pjsf {} def
/_pjss {} def
/_pola 0 def
/_doClip 0 def
% paint operators
/cf currentflat def % - cf flatness
% typography operands
/_tm matrix def
/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def
/_renderEnd [null null null null /i1 /i1 /i1 /i1] def
/_render -1 def
/_rise 0 def
/_ax 0 def % x character spacing (_ax, _ay, _cx, _cy follows awidthshow naming convention)
/_ay 0 def % y character spacing
/_cx 0 def % x word spacing
/_cy 0 def % y word spacing
/_leading [0 0] def
/_ctm matrix def
/_mtx matrix def
/_sp 16#020 def
/_hyphen (-) def
/_fScl 0 def
/_cnt 0 def
/_hs 1 def
/_nativeEncoding 0 def
/_useNativeEncoding 0 def
/_tempEncode 0 def
/_pntr 0 def
/_tDict 2 dict def
% typography operators
/Tx {} def
/Tj {} def
% compound path operators
/CRender {} def
% printing
/_AI3_savepage {} def
% color operands
/_gf null def
/_cf 4 array def
/_if null def
/_of false def
/_fc {} def
/_gs null def
/_cs 4 array def
/_is null def
/_os false def
/_sc {} def
/_i null def
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3
{
dup xcheck
{
bind
} if
pop pop
} forall
end
end
Adobe_IllustratorA_AI3 begin
Adobe_IllustratorA_AI3_vars begin
newpath
} def
/terminate % - terminate -
{
end
end
} def
% definition operators
/_ % - _ null
null def
/ddef % key value ddef -
{
Adobe_IllustratorA_AI3_vars 3 1 roll put
} def
/xput % key value literal xput -
{
dup load dup length exch maxlength eq
{
dup dup load dup
length 2 mul dict copy def
} if
load begin def end
} def
/npop % integer npop -
{
{
pop
} repeat
} def
% marking operators
/sw % ax ay string sw x y
{
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
} def
/swj % cx cy fillchar ax ay string swj x y
{
dup 4 1 roll
dup length exch stringwidth
exch 5 -1 roll 3 index 1 sub mul add
4 1 roll 3 1 roll 1 sub mul add
6 2 roll /_cnt 0 ddef
{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
} def
/ss % ax ay string matrix ss -
{
4 1 roll
{ % matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put pop
gsave
false charpath currentpoint
4 index setmatrix
stroke
grestore
moveto
2 copy rmoveto
} exch cshow
3 npop
} def
/jss % cx cy fillchar ax ay string matrix jss -
{
4 1 roll
{ % cx cy fillchar matrix ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
gsave
_sp eq
{
exch 6 index 6 index 6 index 5 -1 roll widthshow
currentpoint
}
{
false charpath currentpoint
4 index setmatrix stroke
}ifelse
grestore
moveto
2 copy rmoveto
} exch cshow
6 npop
} def
% path operators
/sp % ax ay string sp -
{
{
2 npop (0) exch
2 copy 0 exch put pop
false charpath
2 copy rmoveto
} exch cshow
2 npop
} def
/jsp % cx cy fillchar ax ay string jsp -
{
{ % cx cy fillchar ax ay char 0 0 {proc} -
2 npop
(0) exch 2 copy 0 exch put
_sp eq
{
exch 5 index 5 index 5 index 5 -1 roll widthshow
}
{
false charpath
}ifelse
2 copy rmoveto
} exch cshow
5 npop
} def
% path construction operators
/pl % x y pl x y
{
transform
0.25 sub round 0.25 add exch
0.25 sub round 0.25 add exch
itransform
} def
/setstrokeadjust where
{
pop true setstrokeadjust
/c % x1 y1 x2 y2 x3 y3 c -
{
curveto
} def
/C
/c load def
/v % x2 y2 x3 y3 v -
{
currentpoint 6 2 roll curveto
} def
/V
/v load def
/y % x1 y1 x2 y2 y -
{
2 copy curveto
} def
/Y
/y load def
/l % x y l -
{
lineto
} def
/L
/l load def
/m % x y m -
{
moveto
} def
}
{%else
/c
{
pl curveto
} def
/C
/c load def
/v
{
currentpoint 6 2 roll pl curveto
} def
/V
/v load def
/y
{
pl 2 copy curveto
} def
/Y
/y load def
/l
{
pl lineto
} def
/L
/l load def
/m
{
pl moveto
} def
}ifelse
% graphic state operators
/d % array phase d -
{
setdash
} def
/cf {} def % - cf flatness
/i % flatness i -
{
dup 0 eq
{
pop cf
} if
setflat
} def
/j % linejoin j -
{
setlinejoin
} def
/J % linecap J -
{
setlinecap
} def
/M % miterlimit M -
{
setmiterlimit
} def
/w % linewidth w -
{
setlinewidth
} def
% path painting operators
/H % - H -
{} def
/h % - h -
{
closepath
} def
/N % - N -
{
_pola 0 eq
{
_doClip 1 eq {clip /_doClip 0 ddef} if
newpath
}
{
/CRender {N} ddef
}ifelse
} def
/n % - n -
{N} def
/F % - F -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _pf grestore clip newpath /_lp /none ddef _fc
/_doClip 0 ddef
}
{
_pf
}ifelse
}
{
/CRender {F} ddef
}ifelse
} def
/f % - f -
{
closepath
F
} def
/S % - S -
{
_pola 0 eq
{
_doClip 1 eq
{
gsave _ps grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
_ps
}ifelse
}
{
/CRender {S} ddef
}ifelse
} def
/s % - s -
{
closepath
S
} def
/B % - B -
{
_pola 0 eq
{
_doClip 1 eq % F clears _doClip
gsave F grestore
{
gsave S grestore clip newpath /_lp /none ddef _sc
/_doClip 0 ddef
}
{
S
}ifelse
}
{
/CRender {B} ddef
}ifelse
} def
/b % - b -
{
closepath
B
} def
/W % - W -
{
/_doClip 1 ddef
} def
/* % - [string] * -
{
count 0 ne
{
dup type (stringtype) eq {pop} if
} if
_pola 0 eq {newpath} if
} def
% group operators
/u % - u -
{} def
/U % - U -
{} def
/q % - q -
{
_pola 0 eq {gsave} if
} def
/Q % - Q -
{
_pola 0 eq {grestore} if
} def
/*u % - *u -
{
_pola 1 add /_pola exch ddef
} def
/*U % - *U -
{
_pola 1 sub /_pola exch ddef
_pola 0 eq {CRender} if
} def
/D % polarized D -
{pop} def
/*w % - *w -
{} def
/*W % - *W -
{} def
% place operators
/` % matrix llx lly urx ury string ` -
{
/_i save ddef
6 1 roll 4 npop
concat pop
userdict begin
/showpage {} def
0 setgray
0 setlinecap
1 setlinewidth
0 setlinejoin
10 setmiterlimit
[] 0 setdash
newpath
0 setgray
false setoverprint
} def
/~ % - ~ -
{
end
_i restore
} def
% color operators
/O % flag O -
{
0 ne
/_of exch ddef
/_lp /none ddef
} def
/R % flag R -
{
0 ne
/_os exch ddef
/_lp /none ddef
} def
/g % gray g -
{
/_gf exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_gf setgray
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/G % gray G -
{
/_gs exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_gs setgray
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/k % cyan magenta yellow black k -
{
_cf astore pop
/_fc
{
_lp /fill ne
{
_of setoverprint
_cf aload pop setcmykcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/K % cyan magenta yellow black K -
{
_cs astore pop
/_sc
{
_lp /stroke ne
{
_os setoverprint
_cs aload pop setcmykcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
/x % cyan magenta yellow black name gray x -
{
/_gf exch ddef
findcmykcustomcolor
/_if exch ddef
/_fc
{
_lp /fill ne
{
_of setoverprint
_if _gf 1 exch sub setcustomcolor
/_lp /fill ddef
} if
} ddef
/_pf
{
_fc
fill
} ddef
/_psf
{
_fc
ashow
} ddef
/_pjsf
{
_fc
awidthshow
} ddef
/_lp /none ddef
} def
/X % cyan magenta yellow black name gray X -
{
/_gs exch ddef
findcmykcustomcolor
/_is exch ddef
/_sc
{
_lp /stroke ne
{
_os setoverprint
_is _gs 1 exch sub setcustomcolor
/_lp /stroke ddef
} if
} ddef
/_ps
{
_sc
stroke
} ddef
/_pss
{
_sc
ss
} ddef
/_pjss
{
_sc
jss
} ddef
/_lp /none ddef
} def
% locked object operator
/A % value A -
{
pop
} def
currentdict readonly pop end
setpacking
% annotate page operator
/annotatepage
{
} def
%%EndResource
%%EndProlog
%%BeginSetup
%%IncludeFont: Helvetica
Adobe_cmykcolor /initialize get exec
Adobe_cshow /initialize get exec
Adobe_customcolor /initialize get exec
Adobe_typography_AI3 /initialize get exec
Adobe_IllustratorA_AI3 /initialize get exec
[
39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
/hungarumlaut/ogonek/caron
TE
%AI3_BeginEncoding: _Helvetica Helvetica
[/_Helvetica/Helvetica 0 0 1 TZ
%AI3_EndEncoding TrueType
%%EndSetup
0 A
0 i 0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
540 254 m
540 -1042 L
(N) *
36 254 m
36 -1042 L
(N) *
108 254 m
108 -1042 L
(N) *
180 254 m
180 -1042 L
(N) *
324 254 m
324 -1042 L
(N) *
252 254 m
252 -1042 L
(N) *
396 254 m
396 -1042 L
(N) *
468 254 m
468 -1042 L
(N) *
0 To
0.8552 0 0 0.8552 97.5762 -29.3903 0 Tp
TP
-22.3535 0 Td
0 Tr
0 O
0 g
0.8552 w
/_Helvetica 9.3543 Tf
0 Ts
100 Tz
0 Tt
0 TA
0 0 5 TC
100 100 200 TW
0 0 0 Ti
1 Ta
0 Tq
0 0 Tl
0 Tc
0 Tw
(OS Begins) Tx
(\r) TX
-2.6001 -11.3543 Td
(Responding) Tx
(\r) TX
0.7856 -11.3543 Td
(To Interrupt) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 126.6538 -91.4008 0 Tp
TP
-11.6952 0 Td
0 Tr
(Mode) Tx
(\r) TX
-2.0771 -11.3543 Td
(Switch) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 190.368 -91.4008 0 Tp
TP
-26.2473 0 Td
0 Tr
(Kernel-Level) Tx
(\r) TX
-8.8347 -11.3543 Td
(Interrupt Handler) Tx
(\r) TX
-2.6001 -11.3543 Td
(\(unblocks process) Tx
(\r) TX
4.6783 -11.3543 Td
(or sends signal\)) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 405.457 -29.3903 0 Tp
TP
-6.7577 0 Td
0 Tr
(OS) Tx
(\r) TX
-14.2964 -11.3543 Td
(Response) Tx
(\r) TX
1.0448 -11.3543 Td
(Complete) Tx
(\r) TX
TO
0 R
0 G
1 D
36.8552 -79.8552 m
467.0332 -79.8552 l
S
u
0 O
0 g
0 D
460.2919 -79.9154 m
458.8279 -77.6304 L
458.91 -77.5757 L
462.8369 -79.1355 L
464.2052 -79.4365 465.5734 -79.7376 466.9417 -80.0386 c
465.5734 -80.3396 464.2052 -80.6406 462.8369 -80.9416 c
458.91 -82.5014 L
458.8279 -82.4604 L
460.2919 -80.1617 L
460.2919 -79.9154 L
f
U
u
0 R
0 G
1.7104 w
159.1523 -72.1582 m
159.1523 -79.8552 l
159.1523 -87.5522 l
S
U
u
220.7285 -72.1582 m
220.7285 -79.8552 l
220.7285 -87.5522 l
S
U
u
282.3047 -72.1582 m
282.3047 -79.8552 l
282.3047 -87.5522 l
S
U
u
343.8809 -72.1582 m
343.8809 -79.8552 l
343.8809 -87.5522 l
S
U
u
0 O
0 g
0.8552 w
98.3698 -65.8587 m
100.5453 -65.8587 L
97.5762 -68.8552 L
94.5934 -65.8587 L
96.7826 -65.8587 L
98.3698 -65.8587 L
f
U
u
406.2506 -65.8587 m
408.4262 -65.8587 L
405.457 -68.8552 L
402.4742 -65.8587 L
404.6634 -65.8587 L
406.2506 -65.8587 L
f
U
0 To
0.8552 0 0 0.8552 251.5166 -91.4008 0 Tp
TP
-18.1913 0 Td
0 Tr
(Dispatch) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 310.9547 -91.4008 0 Tp
TP
-31.1859 0 Td
0 Tr
(Context Switch) Tx
(\r) TX
6.4973 -11.3543 Td
(\(may not be) Tx
(\r) TX
5.9812 -11.3543 Td
(required\)) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 373.3861 -91.4008 0 Tp
TP
-11.6952 0 Td
0 Tr
(Mode) Tx
(\r) TX
-2.0771 -11.3543 Td
(Switch) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 251.9442 -166.6605 0 Tp
TP
-123.9639 0 Td
0 Tr
(Figure 3: Components of Software Interrupt Response Time) Tx
(\r) TX
TO
0 To
0.8552 0 0 0.8552 468.0166 -76.9008 0 Tp
TP
-1.6243 0 Td
0 Tr
/_Helvetica 11.6929 Tf
(t) Tx
(\r) TX
TO
u
0 R
0 G
1.7104 w
97.6523 -72.1582 m
97.6523 -79.8552 l
97.6523 -87.5522 l
S
U
u
405.3809 -72.1582 m
405.3809 -79.8552 l
405.3809 -87.5522 l
S
U
u
1 w
97.6523 -53.1582 m
97.6523 -60.8552 l
97.6523 -68.5522 l
S
U
u
405.3809 -52.6582 m
405.3809 -60.3552 l
405.3809 -68.0522 l
S
U
%%PageTrailer
gsave annotatepage grestore showpage
%%Trailer
Adobe_IllustratorA_AI3 /terminate get exec
Adobe_typography_AI3 /terminate get exec
Adobe_customcolor /terminate get exec
Adobe_cshow /terminate get exec
Adobe_cmykcolor /terminate get exec
Adobe_packedarray /terminate get exec
%%EOF
%%EndDocument
FMENDEPSF
72 89.3 558 687.33 C
0 0 612 792 C
191 100 480 121 R
7 X
0 K
V
FMENDPAGE
%%EndPage: "9" 10
%%Page: "10" 10
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 189 739.85 T
(ime Operation) 286.7 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(10) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 672.33 540 675.33 C
189 674.48 540 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
54 674.48 180 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(3.0) 189 679.33 T
( Con\336guring For Real-T) 205.67 679.33 T
(ime Operation) 339.39 679.33 T
1 10 Q
-0.01 (The steps required to establish a set of real-time processors with deterministic response) 189 657.66 P
(to interrupts are outlined below) 189 645.66 T
(. A detailed description of each step is provided in the) 313.82 645.66 T
(sections that follow) 189 633.66 T
(.) 266.64 633.66 T
0 9 Q
(1.) 189 615.66 T
1 10 Q
(Direct interrupts not related to real-time processes away from real-time processors.) 202.74 615.66 T
(Direct real-time interrupts to the real-time processors.) 202.74 603.66 T
0 9 Q
(2.) 189 588.66 T
1 10 Q
(Restrict each real-time processor so that all processes not explicitly assigned to it) 202.74 588.66 T
(will be run on a non-real-time processor) 202.74 576.66 T
(.) 362.63 576.66 T
0 9 Q
(3.) 189 561.66 T
1 10 Q
(Lock real-time processes onto real-time processors.) 202.74 561.66 T
0 9 Q
(4.) 189 546.66 T
1 10 Q
(Allocate and lock physical memory to all virtual addresses used by real-time pro-) 202.74 546.66 T
(cesses.) 202.74 534.66 T
0 9 Q
(5.) 189 519.66 T
1 10 Q
-0.03 (Isolate the real-time processors from interprocessor interrupts used in a multiproces-) 202.74 519.66 P
(sor system.) 202.74 507.66 T
0 9 Q
(6.) 189 492.66 T
1 10 Q
(Exempt real-time processors from system clock interrupts and UNIX timesharing) 202.74 492.66 T
(scheduler activity) 202.74 480.66 T
(.) 272.88 480.66 T
(Once these steps are complete, the total response time to an interrupt directed to a real-) 189 456.66 T
(time processor will be less than 200) 189 444.66 T
3 F
(m) 334.74 444.66 T
1 F
(s, from the time the hardware interrupt occurs) 340.5 444.66 T
(until a user process begins executing.) 189 432.66 T
(This timing assumes that the interrupt is initiated by a VME device, and that no other) 189 408.66 T
(VME interrupts of the same level are outstanding at the time the interrupt occurs. An) 189 396.66 T
(interrupt handler speci\336c to that interrupt will unblock a user process that is sleeping) 189 384.66 T
(awaiting the interrupt. The guaranteed timing assumes that another user process is exe-) 189 372.66 T
(cuting at the time the interrupt occurs, so a context switch is necessary) 189 360.66 T
(.) 470.1 360.66 T
(An additional step is required to ensure that the processes assigned to real-time proces-) 189 336.66 T
-0.25 (sors execute in the desired order) 189 324.66 P
-0.25 (. The user must assign a priority in the real-time band to) 316.24 324.66 P
(each process. All real-time priorities \050i.e. priorities in the real-time band\051 are non-) 189 312.66 T
(degrading.) 189 300.66 T
(When the REACT/pro frame scheduler is used to schedule processes, step 2 - 6 listed) 189 276.66 T
(above are invoked automatically) 189 264.66 T
(. In this case, the only other explicit user action) 318.53 264.66 T
(required to con\336gure for real-time operation is to direct interrupts properly) 189 252.66 T
(.) 487.02 252.66 T
0 F
(3.1) 166.11 222.66 T
(Redirecting Interrupts) 189 222.66 T
1 F
(Mapping of hardware interrupts to processors is controlled by system software. The) 189 206.66 T
-0.13 (user has full control over the assignment of VME interrupts to processors. The user can-) 189 194.66 P
(not speci\336cally control the direction of other types of interrupts to processors, but he) 189 182.66 T
(can prevent the system from assigning any of these interrupts to real-time processors.) 189 170.66 T
(Controlling the mapping of interrupts to processors is done by editing the \336le) 189 146.66 T
5 F
(/var/sys-) 500.21 146.66 T
-0.14 (gen/system) 189 134.66 P
1 F
-0.14 (, then running) 232.86 134.66 P
5 F
-0.14 (autocon\336g\0501M\051) 290.73 134.66 P
1 F
-0.14 (or) 355.27 134.66 P
5 F
-0.14 ( lboot\0501M\051) 363.6 134.66 P
1 F
-0.14 (. Non-real-time interrupts should) 406.48 134.66 P
(be directed away from the real-time processors \050using NOINTR directive\051, and real-) 189 122.66 T
(time interrupts should be directed to real-time processor \050using IPL directive\051. VME) 189 110.66 T
-0.23 (interrupts are controllable by VME interrupt level \050IRQn\051. That is, all interrupts at a par-) 189 98.66 P
FMENDPAGE
%%EndPage: "10" 11
%%Page: "11" 11
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 207 739.85 T
(ime Operation) 304.7 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(1) 522.84 60.96 T
(1) 527.85 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(ticular IRQ level on the VME bus will be directed to the same processor) 207 680.66 T
(. In systems) 495.41 680.66 T
(with multiple VME buses, the mapping of IRQ levels to processors cannot be speci\336ed) 207 668.66 T
(by bus. This means, for example, that IRQ7 for all VME buses will be directed to the) 207 656.66 T
(same processor) 207 644.66 T
(.) 267.79 644.66 T
0 F
(3.2) 184.11 614.66 T
(Assigning Processes T) 207 614.66 T
(o Processors) 316.24 614.66 T
1 F
-0.1 (The POWERpath-2 hardware architecture is fully symmetric, meaning that there are no) 207 598.66 P
(software activities which can only run on a speci\336c processor) 207 586.66 T
(. If desired, processes can) 452.1 586.66 T
-0.31 (be allowed to migrate freely among processors. In its default \050non-real-time\051 state, IRIX) 207 574.66 P
(optimizes utilization by assigning the highest priority ready-to-run process to the \336rst) 207 562.66 T
(available processor \050subject to some modi\336cation due to cache af) 207 550.66 T
(\336nity\051. Other schedul-) 467.46 550.66 T
(ing modes are available, however) 207 538.66 T
(, enabling the user to explicitly control assignment of) 340.66 538.66 T
(processes to processors.) 207 526.66 T
(In a real-time environment, the user should designate one or more processors for run-) 207 502.66 T
(ning real-time processes, lock real-time processes onto these processors, and restrict) 207 490.66 T
(these processors from running any other processes. This can be done using shell com-) 207 478.66 T
(mands, or more typically) 207 466.66 T
(, using system calls.) 306.29 466.66 T
-0.18 (The) 207 442.66 P
5 F
-0.18 (sysmp\0502\051) 224.86 442.66 P
1 F
-0.18 ( command MP_MUSTRUN speci\336es that a process must run on a speci\336c) 260.94 442.66 P
-0.22 (processor) 207 430.66 P
-0.22 (. Its shell command equivalent is) 244.75 430.66 P
5 F
-0.22 (mpadmin\0501\051) 377.51 430.66 P
1 F
-0.22 (. The locked process will always) 426.37 430.66 P
(run on the speci\336ed processor) 207 418.66 T
(, even when kernel code is executing on behalf of the pro-) 325.95 418.66 T
(cess. An exception to this can occur with drivers which are not semaphored. If the pro-) 207 406.66 T
(cess calls a non-semaphored driver that includes an interrupt handler for an interrupt) 207 394.66 T
(directed to another processor) 207 382.66 T
(, however) 322.34 382.66 T
(, the interrupt handler will execute on the other) 361.35 382.66 T
(processor) 207 370.66 T
(. This temporary override of MP_MUSTRUN is transparent to the user) 244.75 370.66 T
(.) 528.17 370.66 T
(Threads created using) 207 346.66 T
5 F
(spr) 297.2 346.66 T
(oc\0502\051) 309.6 346.66 T
1 F
( will inherit their parent\325) 330.69 346.66 T
(s processor assignment. In the) 428.41 346.66 T
-0.36 (case where threads are created prior to calling) 207 334.66 P
5 F
-0.36 (sysmp\0502\051) 390.08 334.66 P
1 F
-0.36 (, each thread must be assigned to) 426.16 334.66 P
(a processor individually) 207 322.66 T
(.) 302.4 322.66 T
-0.32 (The) 207 298.66 P
5 F
-0.32 (sysmp\0502\051) 224.72 298.66 P
1 F
-0.32 ( command MP_RESTRICT restricts a processor to running only processes) 260.8 298.66 P
(assigned to it using) 207 286.66 T
5 F
(sysmp\0502\051) 286.41 286.66 T
1 F
( MP_MUSTRUN, or its shell command equivalent,) 322.49 286.66 T
5 F
-0.03 (runon\0501\051) 207 274.66 P
1 F
-0.03 (. An exception to this restriction are interrupt handlers of interrupts directed to) 242.53 274.66 P
(that processor) 207 262.66 T
(. T) 262.24 262.66 T
(o avoid having an interrupt handler run on a processor) 272.64 262.66 T
(, the interrupt) 489.02 262.66 T
(should be directed to a dif) 207 250.66 T
(ferent processor using NOINTR. MP_RESTRICT requires) 310.91 250.66 T
(superuser privileges.) 207 238.66 T
0 F
(3.3) 184.11 208.66 T
(Locking Processes Into Memory) 207 208.66 T
1 F
(In a virtual memory system, any memory reference can potentially cause a page fault.) 207 192.66 T
(The time required to bring the data being referenced from disk into physical memory) 207 180.66 T
(will destroy real-time behavior) 207 168.66 T
(. IRIX with REACT enables users to lock processes into) 329.97 168.66 T
(memory) 207 156.66 T
(, ensuring that real-time processes will never incur a page fault.) 239.66 156.66 T
(IRIX with REACT provides the ability to lock / unlock a speci\336ed range of addresses) 207 132.66 T
(into physical memory using) 207 120.66 T
5 F
(mpin\0502\051) 320.83 120.66 T
1 F
( and) 352.47 120.66 T
5 F
(munpin\0502\051) 371.9 120.66 T
1 F
(. When called,) 413.54 120.66 T
5 F
(mpin\0502\051) 473.76 120.66 T
1 F
( causes the) 505.41 120.66 T
-0.11 (kernel to allocate physical memory to the speci\336ed address range and locks those pages) 207 108.66 P
(down before returning to the user program. The call) 207 96.66 T
5 F
(munpin\0502\051) 416.83 96.66 T
1 F
( undoes any previous) 458.47 96.66 T
FMENDPAGE
%%EndPage: "11" 12
%%Page: "12" 12
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 189 739.85 T
(ime Operation) 286.7 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(12) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
(locking using) 189 680.66 T
5 F
(mpin\0502\051) 245.64 680.66 T
1 F
(. Shared memory segments \050see) 277.28 680.66 T
5 F
(shmop\0502\051) 406.63 680.66 T
1 F
(\051, shared arenas \050see) 444.38 680.66 T
5 F
(usinit\0503P\051) 189 668.66 T
1 F
(\051, and) 228.98 668.66 T
5 F
(mmap\0502\051) 254.23 668.66 T
1 F
( \336les must still be individually locked using) 290.31 668.66 T
5 F
(mpin\0502\051) 467.46 668.66 T
1 F
(.) 499.1 668.66 T
(UNIX SVR3 provided this capability in a rudimentary fashion, using) 189 644.66 T
5 F
(plock\0502\051) 467.44 644.66 T
1 F
(, which) 500.74 644.66 T
(allows text, data, or stack segments to be locked in their entirety) 189 632.66 T
(. IRIX also supports) 445.12 632.66 T
5 F
-0.08 (plock\0502\051) 189 620.66 P
1 F
-0.08 (, and has extended its functioning to automatically lock shared library sections.) 222.3 620.66 P
(In addition, when) 189 608.66 T
5 F
(plock\0502\051) 261.73 608.66 T
1 F
( is used, any growth of a locked section \050via) 295.03 608.66 T
5 F
(sbrk\0502\051) 473.51 608.66 T
1 F
(\051 will) 502.38 608.66 T
(cause the pages to be immediately faulted in and locked down.) 189 596.66 T
0 F
(3.4) 166.11 566.66 T
(Processor Isolation) 189 566.66 T
0 9 Q
(3.4.1) 160.01 543.33 T
(Overview) 189 543.33 T
1 10 Q
(The processor isolation feature of IRIX with REACT enables the user to prevent the) 189 530.66 T
(kernel from sending inter) 189 518.66 T
(-processor interrupts a real-time processor) 290.11 518.66 T
(.) 458.31 518.66 T
-0.14 (In order to maintain the integrity of the shared memory) 189 500.66 P
-0.14 (, symmetric multiprocessing pro-) 407.73 500.66 P
-0.13 (gramming environment, IRIX must carry on two system activities that are not visible to) 189 488.66 P
(user processes. These are instruction cache \337ushes, and T) 189 476.66 T
(ranslation Look-Aside Buf) 418.46 476.66 T
(fer) 525.43 476.66 T
-0.18 (\050TLB\051 \337ushes. Nominally) 189 464.66 P
-0.18 (, at irregular intervals IRIX will generate inter) 291.55 464.66 P
-0.18 (-processor inter-) 474.4 464.66 P
(rupts to all processors to signal them to \337ush their TLB or instruction cache. For iso-) 189 452.66 T
(lated processors, IRIX will instead set a status bit to indicate that a \337ush is pending.) 189 440.66 T
(When an isolated processor enters kernel mode, the status bits are tested and any pend-) 189 428.66 T
(ing \337ushes are carried out. \050A processor enters kernel mode whenever the running pro-) 189 416.66 T
(cess makes a system call, or when an external interrupt occurs that is directed to that) 189 404.66 T
-0.08 (processor) 189 392.66 P
-0.08 (.\051 This ensures that the user) 226.75 392.66 P
-0.08 (\325) 336.67 392.66 P
-0.08 (s real-time process will never be preempted by an) 339.44 392.66 P
(unsolicited interrupt from the kernel, and eliminates the overhead of \336elding an inter) 189 380.66 T
(-) 527.17 380.66 T
(processor interrupt.) 189 368.66 T
-0.34 (Processor isolation is established using either the) 189 344.66 P
5 F
-0.34 (sysmp\0502\051) 385.09 344.66 P
1 F
-0.34 ( command MP_ISOLA) 421.17 344.66 P
-0.34 (TE, or) 512.65 344.66 P
(the) 189 332.66 T
5 F
(mpadmin\0501\051) 203.71 332.66 T
1 F
( shell command.) 252.57 332.66 T
0 9 Q
(3.4.2) 160.01 309.33 T
(Activities That Override Processor Isolation) 189 309.33 T
1 10 Q
-0.15 (All IRIX kernel services are available to a process running on an isolated processor) 189 296.66 P
-0.15 (, but) 520.03 296.66 P
(certain system calls will generate inter) 189 284.66 T
(-processor interrupts that are not blocked by pro-) 342.3 284.66 T
(cessor isolation. Fielding such an interrupt introduces latency which can cause non-) 189 272.66 T
(deterministic behavior in processes running on the processor) 189 260.66 T
(.) 430.78 260.66 T
(The following system calls will generate interrupts if they are executed by a process) 189 236.66 T
(running on an isolated processor) 189 224.66 T
(, or by an) 318.51 224.66 T
5 F
(spr) 358.76 224.66 T
(oc) 371.16 224.66 T
1 F
( of such a process running on any pro-) 380.6 224.66 T
(cessor) 189 212.66 T
(. These system calls can be used in a real-time application without introducing) 213.43 212.66 T
(non-determinism provided they are executed in an initialization routine.) 189 200.66 T
4 11 Q
(\245) 189 182.66 T
5 10 Q
(cachectl\0502\051) 202.74 182.66 T
1 F
( system call to mark pages cacheable or uncacheable) 247.7 182.66 T
4 11 Q
(\245) 189 167.66 T
5 10 Q
(fork\0502\051) 202.74 167.66 T
1 F
( system call to create a new process) 230.5 167.66 T
4 11 Q
(\245) 189 152.66 T
1 10 Q
(sproc\0502\051 system call to create a new share group process) 202.74 152.66 T
4 11 Q
(\245) 189 137.66 T
5 10 Q
(sbrk\0502\051) 202.74 137.66 T
1 F
( system call that releases memory or grows memory past a 4 MB boundary) 231.61 137.66 T
4 11 Q
(\245) 189 122.66 T
5 10 Q
(mpr) 202.74 122.66 T
(otect\0502\051) 218.48 122.66 T
1 F
( system call to set protection on a portion of memory that is shared) 249.56 122.66 T
(\050MAP_LOCAL is immune\051) 202.74 110.66 T
4 11 Q
(\245) 189 95.66 T
5 10 Q
(pr) 202.74 95.66 T
(ctl\0502\051) 211.26 95.66 T
1 F
( system call to acquire information on the current process) 232.91 95.66 T
FMENDPAGE
%%EndPage: "12" 13
%%Page: "13" 13
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 207 739.85 T
(ime Operation) 304.7 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(13) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
-0.2 (The following system calls will generate inter) 207 680.66 P
-0.2 (-processor interrupts to an isolated proces-) 388.83 680.66 P
(sor if they are called from any processor and passed the) 207 668.66 T
5 F
(pid) 431.54 668.66 T
1 F
( of a process running on the) 444.31 668.66 T
(isolated processor) 207 656.66 T
(.) 278.34 656.66 T
4 11 Q
(\245) 207 638.66 T
5 10 Q
(pr) 220.74 638.66 T
(ctl\0502\051) 229.26 638.66 T
1 F
( system call to acquire information on a process running on an isolated pro-) 250.91 638.66 T
(cessor) 220.74 626.66 T
4 11 Q
(\245) 207 611.66 T
1 10 Q
-0.16 (a write using) 220.74 611.66 P
5 F
-0.16 (pr) 274.4 611.66 P
-0.16 (oc\0504\051) 282.91 611.66 P
1 F
-0.16 ( to the address space of a process running on an isolated proces-) 304 611.66 P
(sor) 220.74 599.66 T
0 9 Q
(3.4.3) 178.01 576.33 T
(Minimizing Memory Management Overhead) 207 576.33 T
1 10 Q
-0.16 (A processor on which no process frees any memory page will never be required to \337ush) 207 563.66 P
(its TLB, even without processor isolation. Accordingly) 207 551.66 T
(, real-time processes and device) 426.77 551.66 T
-0.32 (drivers should be written so that memory resources are allocated once and reused, rather) 207 539.66 P
(than repeatedly allocated and freed.) 207 527.66 T
0 F
(3.5) 184.11 497.66 T
(Controlling Process Scheduling) 207 497.66 T
1 F
-0.37 (UNIX typically implements priority aging for processes. The priority of a process that is) 207 481.66 P
(CPU-bound is lowered gradually as the process runs. This ensures that lower priority) 207 469.66 T
(processes can eventually run, and is desirable behavior in the environments for which) 207 457.66 T
(UNIX originally was designed; i.e. interactive users typing on ASCII terminals. In a) 207 445.66 T
(real-time environment, the user typically wishes to ensure that a process will run imme-) 207 433.66 T
-0.14 (diately when an event occurs \050e.g. delivery of a timer signal\051. Specifying a high priority) 207 421.66 P
(with the UNIX) 207 409.66 T
5 F
(nice\0502\051) 269.46 409.66 T
1 F
( system call is only a partial solution; even \322niced\323 jobs age.) 297.76 409.66 T
(IRIX with REACT provides \336xed-priority scheduler services which meet the require-) 207 397.66 T
(ments of a real-time environment.) 207 385.66 T
0 9 Q
(3.5.1) 178.01 362.33 T
(Setting Process Priority) 207 362.33 T
1 10 Q
(Under IRIX with REACT) 207 349.66 T
(, the user can specify a \336xed priority for a process that does) 309.8 349.66 T
(not decrease over time. Fixed priorities are available in three bands: above normal) 207 337.66 T
-0.18 (UNIX priorities \050real-time band\051, within the same range as normal UNIX priorities, and) 207 325.66 P
(below normal UNIX priorities. These bands are appropriate for real-time processes,) 207 313.66 T
(general purpose processes, and lar) 207 301.66 T
(ge background processes, respectively) 343.64 301.66 T
(. Any process) 496.2 301.66 T
(in the highest priority \050real-time\051 band will always take precedence over any process in) 207 289.66 T
(either of the other two bands. No process in the lowest priority band will ever run if) 207 277.66 T
(there are any processes ready to run in either of the two higher priority bands.) 207 265.66 T
(W) 207 241.66 T
(ithin the real-time priority band, there are 10 priority levels \05030 - 39\051. If two or more) 216.04 241.66 T
-0.21 (processes are ready-to-run at the time of a scheduling event, the highest priority process) 207 229.66 P
(\050lowest priority level\051 will always run. If a high priority process becomes ready to run) 207 217.66 T
(while a lower priority process is running, the lower priority process will be preempted) 207 205.66 T
(immediately) 207 193.66 T
(.) 256.32 193.66 T
-0.01 (Fixed priorities in the real-time band can be dangerous if misused. If a process with the) 207 169.66 P
(highest \336xed priority enters an in\336nite loop, then all other processes will be unable to) 207 157.66 T
(run on that processor) 207 145.66 T
(. On a uniprocessor) 290.55 145.66 T
(, a system reset is the only way to regain con-) 367.87 145.66 T
-0.09 (trol. On a multiprocessor system, it is possible to kill the of) 207 133.66 P
-0.09 (fending process from a shell) 442.69 133.66 P
(executing on another processor) 207 121.66 T
(.) 331.07 121.66 T
FMENDPAGE
%%EndPage: "13" 14
%%Page: "14" 14
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 189 739.85 T
(ime Operation) 286.7 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(14) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
(Fixed process priorities are established using the) 189 680.66 T
5 F
(schedctl\0502\051) 385.81 680.66 T
1 F
( system call. The real-time) 430.22 680.66 T
(priorities range between 30 and 39, inclusive. The calling process must have superuser) 189 668.66 T
(privileges to set a \336xed priority above normal UNIX priorities.) 189 656.66 T
(If a real-time process is waiting for a lock that is held by a lower priority process, the) 189 632.66 T
(priority of the process that holds the lock will be temporarily raised to that of the real-) 189 620.66 T
(time process. This avoids a form of priority inversion that would otherwise occur if the) 189 608.66 T
(low priority process had to wait for a resource held by a process whose priority was) 189 596.66 T
(above its own, but below that of the real-time process.) 189 584.66 T
0 9 Q
(3.5.2) 160.01 561.33 T
(Disabling The UNIX Scheduler \050Shutting Off Clock Interrupts\051) 189 561.33 T
1 10 Q
(When con\336gured as a timesharing system, the UNIX scheduler daemon wakes up on) 189 548.66 T
(each processor at the beginning of each time slice and determines which process will) 189 536.66 T
-0.16 (run on that processor during that time slice. The scheduler updates the accounting statis-) 189 524.66 P
(tics for the running process, decrements its time slice, and performs some other time-) 189 512.66 T
(sharing accounting.) 189 500.66 T
(The UNIX scheduler daemon is awakened by a system clock interrupt sourced by a) 189 476.66 T
-0.34 (hardware timer) 189 464.66 P
-0.34 (. Each processor has its own hardware timer) 248.88 464.66 P
-0.34 (. The system clock timers are) 422.44 464.66 P
(clocked by the processor) 189 452.66 T
(\325) 288.45 452.66 T
(s clock signal, and generate an interrupt every 10 ms. The) 291.23 452.66 T
-0.22 (default time slice is 30 ms, which means that the scheduler is run every third clock inter-) 189 440.66 P
(rupt. The time slice is a tunable parameter) 189 428.66 T
(.) 356.66 428.66 T
-0.12 (In a real-time environment, this periodic system activity may be unnecessary) 189 404.66 P
-0.12 (, and repre-) 494.45 404.66 P
(sent undesirable overhead. IRIX with REACT enables the user to shut of) 189 392.66 T
(f periodic) 480.28 392.66 T
-0.25 (scheduler activity on an isolated processor using) 189 380.66 P
5 F
-0.25 (sysmp\0502\051) 383.54 380.66 P
1 F
-0.25 (. \050See the previous section for) 419.62 380.66 P
-0.13 (a description of processor isolation.\051 The clock must remain enabled on at least one pro-) 189 368.66 P
(cessor in a multiprocessor system. By default, the clock on processor 0 must remain) 189 356.66 T
(enabled. This can be modi\336ed using the MP_F) 189 344.66 T
(ASTCLOCK command in the) 374.82 344.66 T
5 F
(sysmp\0502\051) 496.97 344.66 T
1 F
(system call.) 189 332.66 T
(Shutting of) 189 308.66 T
(f the clock on a processor suspends the action of the scheduler daemon.) 233.53 308.66 T
-0.2 (Under these circumstances, a running user process will continue to run without interrup-) 189 296.66 P
(tion until it chooses to yield. The process accounting information usually collected by) 189 284.66 T
(the scheduler will be lost while the clock inteprocessor interrupt is shut of) 189 272.66 T
(f.) 484.18 272.66 T
(Scheduler services remain available on an as-needed basis on a processor that does not) 189 248.66 T
(receive clock interrupts. That is, if a process blocks or sleeps waiting for completion of) 189 236.66 T
-0.29 (an I/O system call, the scheduler will be invoked to run the next-highest priority process) 189 224.66 P
(that is assigned to that processor \050if any\051.) 189 212.66 T
(If the clock interrupt is not shut of) 189 188.66 T
(f on a real-time processor) 325.67 188.66 T
(, that processor will incur a) 427.41 188.66 T
-0.09 (clock interrupt once per time slice. The clock interrupt handler typically requires 200) 189 176.66 P
3 F
-0.09 (m) 527.95 176.66 P
1 F
-0.09 (s) 533.7 176.66 P
(to execute, and user interrupts to the processor are disabled during this time.) 189 164.66 T
(Unless the REACT/pro frame scheduler is being used \050see next section\051, processors on) 189 140.66 T
-0.33 (which the clock has been disabled will continue to receive an occasional clock interrupt.) 189 128.66 P
(This is because it is not possible to completely disable clock interrupts in hardware.) 189 116.66 T
(Instead, when a processor) 189 104.66 T
(\325) 292.61 104.66 T
(s clock interrupt is disabled, the timer is programmed to a) 295.39 104.66 T
(lar) 189 92.66 T
(ge value. It continues to generate an interrupt every F0000000 \050Hex\051 ticks. The dura-) 199.36 92.66 T
FMENDPAGE
%%EndPage: "14" 15
%%Page: "15" 15
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 207 739.85 T
(ime Operation) 304.7 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(15) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(tion of this period varies with the speed of the processor being used, and can be calcu-) 207 680.66 T
(lated by multiplying F0000000 \050Hex\051 times the clock period of the processor) 207 668.66 T
(. The) 513.75 668.66 T
(overhead of processing these occasional interrupts is minimized by the clock interrupt) 207 656.66 T
(handler) 207 644.66 T
(. Upon being entered, the interrupt handler will determine that clock interrupts) 236.42 644.66 T
-0.05 (are disabled, and return immediately) 207 632.66 P
-0.05 (. Handling an interrupt in this way requires the pro-) 352.45 632.66 P
(cessor to execute in kernel mode for approximately 20 microseconds.) 207 620.66 T
(When in use, the REACT/pro frame scheduler periodically resets the clock interrupt) 207 596.66 T
(timer and thus prevents a clock interrupt from ever occuring.) 207 584.66 T
0 9 Q
(3.5.3) 178.01 561.33 T
(Deadline Scheduling) 207 561.33 T
1 10 Q
(IRIX with REACT includes a deadline scheduling mode which guarantees that a pro-) 207 548.66 T
(cess will be given an opportunity to execute for a speci\336c amount of time within a spe-) 207 536.66 T
-0.29 (ci\336c, recurring period. This capability is useful for applications such as data acquisition,) 207 524.66 P
-0.21 (which require a \336xed amount of processing on successive frames of data. Media servers) 207 512.66 P
(which must source frames of data at \336xed intervals also require this capability) 207 500.66 T
(.) 518.35 500.66 T
-0.37 (Deadline scheduling is enabled using the system call) 207 476.66 P
5 F
-0.37 (schedctl\0502\051) 417.2 476.66 P
1 F
-0.37 (, which permits the user) 461.61 476.66 P
(to set the length of the recurring period, as well as the run time to be allocated to the) 207 464.66 T
(process in each period. The process is guaranteed to receive its allotment during the) 207 452.66 T
(period, though exactly when is not speci\336ed.) 207 440.66 T
0 9 Q
(3.5.3.1) 170.52 417.33 T
(Frame Scheduler) 207 417.33 T
1 10 Q
(REACT/pro, available as a layered software product for IRIX 5.3 and subsequent) 207 404.66 T
(releases, includes a frame scheduler that is useful in real-time simulation applications.) 207 392.66 T
(The frame scheduler is a kernel module that cyclically schedules processes at intervals) 207 380.66 T
(de\336ned by a regularly-occurring interrupt. When enabled on a processor) 207 368.66 T
(, the frame) 495.25 368.66 T
(scheduler replaces all other IRIX scheduling policies on that processor) 207 356.66 T
(. Frame schedul-) 488.73 356.66 T
(ers can be enabled on all but one processor in a multiprocessor system; i.e. all but the) 207 344.66 T
(system processor) 207 332.66 T
(. Each frame scheduler manages execution of processes only on its) 275.01 332.66 T
(own processor) 207 320.66 T
(, but multiple frame schedulers can be synchronized to enable frames on) 264.61 320.66 T
(separate processors in a system to be synchronized.) 207 308.66 T
(The frame scheduler uses an incoming interrupt to partition time into a sequence of) 207 284.66 T
(minor frames. The interrupt source can be the internal timer \050see Section 4.1\051, an exter-) 207 272.66 T
(nal interrupt \050see Section 4.3\051, an interrupt from one of the VME buses, the vertical) 207 260.66 T
-0.01 (retrace interrupt in an Onyx graphics system, or an interrupt sent from another user pro-) 207 248.66 P
(cess. A user) 207 236.66 T
(-de\336ned number of minor frames comprise a lar) 254.81 236.66 T
(ger recurring periodic time) 446.43 236.66 T
(slice, called a major frame. This arrangement is shown in Figure 4.) 207 224.66 T
(Each minor frame is associated with a queue of processes to be executed within that) 207 200.66 T
-0.17 (interval of time. The list of processes in the queue is maintained in priority order) 207 188.66 P
-0.17 (. At the) 526.32 188.66 P
(beginning of each minor frame, control is passed to the \336rst process in the queue. The) 207 176.66 T
(remaining processes in the queue are executed when the previous process yields the) 207 164.66 T
(CPU. Processes are typically enqueued as part of the set-up of the frame scheduler) 207 152.66 T
(, but) 536.34 152.66 T
(they also can be added or deleted from a queue dynamically after the frame scheduler) 207 140.66 T
(has been started.) 207 128.66 T
-0.06 (The minor / major frame construct enables multiple, related frame rates to be created in) 207 104.66 P
(the following way) 207 92.66 T
(. Specify a timer interrupt to start minor frames at the highest desired) 279.08 92.66 T
FMENDPAGE
%%EndPage: "15" 16
%%Page: "16" 16
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 189 739.85 T
(ime Operation) 286.7 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(16) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
(rate, and specify the number of minor frames per major frame equal to the ratio of the) 189 680.66 T
-0.35 (lowest and highest desired rates. Enqueue processes to be run at the highest rate in every) 189 668.66 P
-0.32 (minor frame, and enqueue processes to be run at the lowest rate in only one minor frame) 189 656.66 P
(per major frame. Enqueue processes to be run at the middle rate in every other minor) 189 644.66 T
(frame, and so on.) 189 632.66 T
-0.34 (Each enqueued process is assigned a) 189 338.35 P
5 F
-0.34 (discipline) 335.76 338.35 P
1 F
-0.34 (, which speci\336es the process\325 preemption) 374.63 338.35 P
(behavior within the queue. Nominally) 189 326.35 T
(, a process that has not been found ready to run) 340.2 326.35 T
-0.07 (throughout the duration of a minor frame will generate an underrun error) 189 314.35 P
-0.07 (, and a process) 478.96 314.35 P
(that has not yielded the CPU by the end of its minor frame will generate an overrun) 189 302.35 T
(error) 189 290.35 T
(. Errors result in a signal being sent to the group of processes participating in the) 207.87 290.35 T
(frame scheduler setup. These errors can be masked by specifying the) 189 278.35 T
5 F
(r) 466.55 278.35 T
(eal-time under-) 470.07 278.35 T
(runnable) 189 266.35 T
1 F
( or) 225.09 266.35 T
5 F
(r) 238.41 266.35 T
(eal-time overrunable) 241.93 266.35 T
1 F
( discipline, respectively) 326.04 266.35 T
(, for the process when it is) 420.04 266.35 T
(created. A process that is overrunable can also be assigned the) 189 254.35 T
5 F
(continue) 440.46 254.35 T
1 F
(discipline,) 477.38 254.35 T
(which speci\336es that if the process that has not yielded the CPU by the end of the minor) 189 242.35 T
-0.36 (frame, it will be continued from that point in a later minor frame \050on which it is queued\051.) 189 230.35 P
-0.09 (One or more processes per queue can be assigned the) 189 218.35 P
5 F
-0.09 (backgr) 403.51 218.35 P
-0.09 (ound) 430.89 218.35 P
1 F
-0.09 ( discipline. These pro-) 450.88 218.35 P
-0.01 (cesses must be enqueued last in the queues. Background processes run only when there) 189 206.35 P
(are spare cycles, and do not generate overrun or underrun errors.) 189 194.35 T
(Processes controlled by the frame scheduler can perform operations that result in their) 189 170.35 T
(execution being suspended, such as awaiting completion of an I/O operation or avail-) 189 158.35 T
(ability of a system resource. When a process suspends, the frame scheduler will start) 189 146.35 T
-0.11 (execution of the next highest priority process. As soon as the event occurs on which the) 189 134.35 P
-0.2 (higher process is waiting, the frame scheduler will suspend execution of the lower prior-) 189 122.35 P
(ity process and resume execution of the higher priority process.) 189 110.35 T
189 383.01 540 629.33 C
501.46 533.63 513 530.33 501.46 527.02 501.46 530.33 4 Y
0 X
0 K
V
207 530.33 501.46 530.33 2 L
1 H
2 Z
N
225 539.33 225 521.33 2 L
3 H
N
333 539.33 333 521.33 2 L
N
441 539.33 441 521.33 2 L
N
261 539.33 261 521.33 2 L
0.5 H
N
297 539.33 297 521.33 2 L
N
369 539.33 369 521.33 2 L
N
405 539.33 405 521.33 2 L
N
477 539.33 477 521.33 2 L
N
333 602.33 333 539.33 2 L
1 X
N
225 602.33 225 539.33 2 L
N
441 602.33 441 539.33 2 L
N
261 566.33 261 539.33 2 L
N
297 566.33 297 539.33 2 L
N
369 566.33 369 539.33 2 L
N
236.54 563.02 225 566.33 236.54 569.63 236.54 566.33 4 Y
0 X
V
249.46 569.63 261 566.33 249.46 563.02 249.46 566.33 4 Y
V
236.54 566.33 249.46 566.33 2 L
0 Z
N
272.54 563.02 261 566.33 272.54 569.63 272.54 566.33 4 Y
V
285.46 569.63 297 566.33 285.46 563.02 285.46 566.33 4 Y
V
272.54 566.33 285.46 566.33 2 L
N
308.54 563.02 297 566.33 308.54 569.63 308.54 566.33 4 Y
V
321.46 569.63 333 566.33 321.46 563.02 321.46 566.33 4 Y
V
308.54 566.33 321.46 566.33 2 L
N
405 566.33 405 539.33 2 L
2 Z
1 X
N
344.54 563.02 333 566.33 344.54 569.63 344.54 566.33 4 Y
0 X
V
357.46 569.63 369 566.33 357.46 563.02 357.46 566.33 4 Y
V
344.54 566.33 357.46 566.33 2 L
0 Z
N
380.54 563.02 369 566.33 380.54 569.63 380.54 566.33 4 Y
V
393.46 569.63 405 566.33 393.46 563.02 393.46 566.33 4 Y
V
380.54 566.33 393.46 566.33 2 L
N
416.54 563.02 405 566.33 416.54 569.63 416.54 566.33 4 Y
V
429.46 569.63 441 566.33 429.46 563.02 429.46 566.33 4 Y
V
416.54 566.33 429.46 566.33 2 L
N
477 566.33 477 539.33 2 L
2 Z
1 X
N
452.54 563.02 441 566.33 452.54 569.63 452.54 566.33 4 Y
0 X
V
465.46 569.63 477 566.33 465.46 563.02 465.46 566.33 4 Y
V
452.54 566.33 465.46 566.33 2 L
0 Z
N
236.54 599.02 225 602.33 236.54 605.63 236.54 602.33 4 Y
V
321.46 605.63 333 602.33 321.46 599.02 321.46 602.33 4 Y
V
236.54 602.33 321.46 602.33 2 L
N
344.54 599.02 333 602.33 344.54 605.63 344.54 602.33 4 Y
V
429.46 605.63 441 602.33 429.46 599.02 429.46 602.33 4 Y
V
344.54 602.33 429.46 602.33 2 L
N
452.54 599.02 441 602.33 452.54 605.63 452.54 602.33 4 Y
V
452.54 602.33 477 602.33 2 L
2 Z
N
234 440.33 252 512.33 R
N
234 440.33 234 422.33 2 L
N
252 440.33 252 422.33 2 L
N
234 458.33 252 458.33 2 L
N
234 476.33 252 476.33 2 L
N
234 494.33 252 494.33 2 L
N
239.69 518.79 243 530.33 246.31 518.79 243 518.79 4 Y
V
243 512.33 243 518.79 2 L
N
270 440.33 288 512.33 R
N
270 440.33 270 422.33 2 L
N
288 440.33 288 422.33 2 L
N
270 458.33 288 458.33 2 L
N
270 476.33 288 476.33 2 L
N
270 494.33 288 494.33 2 L
N
275.69 518.79 279 530.33 282.31 518.79 279 518.79 4 Y
V
279 512.33 279 518.79 2 L
N
306 440.33 324 512.33 R
N
306 440.33 306 422.33 2 L
N
324 440.33 324 422.33 2 L
N
306 458.33 324 458.33 2 L
N
306 476.33 324 476.33 2 L
N
306 494.33 324 494.33 2 L
N
311.69 518.79 315 530.33 318.31 518.79 315 518.79 4 Y
V
315 512.33 315 518.79 2 L
N
1 10 Q
(Major Frame) 361.54 613.51 T
(Major Frame) 252 613.51 T
1 7 Q
(Minor) 234 575.33 T
(-0) 251.33 575.33 T
(Minor) 270 575.33 T
(-1) 287.33 575.33 T
(Minor) 306 575.33 T
(-2) 323.33 575.33 T
(Minor) 342 575.33 T
(-0) 359.33 575.33 T
(Minor) 378 575.33 T
(-1) 395.33 575.33 T
(Minor) 414 575.33 T
(-2) 431.33 575.33 T
1 8 Q
(TIME) 495 512.33 T
(Q0) 234 413.33 T
(Q1) 270 413.33 T
(Q3) 306 413.33 T
329.69 509.79 333 521.33 336.31 509.79 333 509.79 4 Y
V
333 509.79 333 503.33 2 L
N
473.69 509.79 477 521.33 480.31 509.79 477 509.79 4 Y
V
477 509.79 477 503.33 2 L
N
437.69 509.79 441 521.33 444.31 509.79 441 509.79 4 Y
V
441 509.79 441 503.33 2 L
N
401.69 509.79 405 521.33 408.31 509.79 405 509.79 4 Y
V
405 509.79 405 503.33 2 L
N
365.69 509.79 369 521.33 372.31 509.79 369 509.79 4 Y
V
369 509.79 369 503.33 2 L
N
293.69 509.79 297 521.33 300.31 509.79 297 509.79 4 Y
V
297 509.79 297 503.33 2 L
N
257.69 509.79 261 521.33 264.31 509.79 261 509.79 4 Y
V
261 509.79 261 503.33 2 L
N
221.69 509.79 225 521.33 228.31 509.79 225 509.79 4 Y
V
225 509.79 225 503.33 2 L
N
(Real-time Event Interrupts) 351 494.33 T
(Process Queues) 333 449.33 T
1 10 Q
(Figure 4: Frame Scheduler Operation) 287.83 389.19 T
0 0 612 792 C
FMENDPAGE
%%EndPage: "16" 17
%%Page: "17" 17
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Con\336guring For Real-T) 207 739.85 T
(ime Operation) 304.7 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(17) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(A frame scheduler is created by a user) 207 680.66 T
(-mode program using the) 359.72 680.66 T
5 F
(frs_cr) 462.98 680.66 T
(eate\0503\051) 486.49 680.66 T
1 F
( call. This) 514.79 680.66 T
-0.29 (call speci\336es the CPU that will run the frame scheduler process group, isolates this CPU) 207 668.66 P
(\050see Section 3.4\051, speci\336es the number of minor frames that will form a major frame,) 207 656.66 T
(and speci\336es the interrupt source that will drive the scheduler) 207 644.66 T
(.) 452.11 644.66 T
-0.17 (The process issuing the) 207 620.66 P
5 F
-0.17 (frs_cr) 302.38 620.66 P
-0.17 (eate) 325.89 620.66 P
1 F
-0.17 ( call becomes the) 342.54 620.66 P
5 F
-0.17 (master pr) 413.48 620.66 P
-0.17 (ocess) 451.54 620.66 P
1 F
-0.17 (for this frame sched-) 475.52 620.66 P
(uler) 207 608.66 T
(. The master process creates all the other processes that are members of the frame) 221.99 608.66 T
-0.23 (scheduler process group, using) 207 596.66 P
5 F
-0.23 ( fork\0502\051) 329.54 596.66 P
1 F
-0.23 (or) 361.83 596.66 P
5 F
-0.23 (spr) 372.42 596.66 P
-0.23 (oc\0502\051.) 384.82 596.66 P
1 F
-0.23 (The master process assigns each pro-) 410.68 596.66 P
-0.14 (cess to a minor frame, using) 207 584.66 P
5 F
-0.14 (frs_enqueue\0503\051) 321.37 584.66 P
1 F
-0.14 (. \050The master process is not queued) 381.87 584.66 P
3 F
-0.14 (,) 522.33 584.66 P
1 F
-0.14 ( since it) 524.82 584.66 P
(must run asynchronously in order to respond to signals.\051 A single process may be) 207 572.66 T
(enqueued on several queues simultaneously; that is, the same process may execute on) 207 560.66 T
-0.15 (multiple minor frames within the same major frame. After a process is enqueued, it con-) 207 548.66 P
(nects itself to the frame scheduler using the function) 207 536.66 T
5 F
(frs_join\0503\051) 418.79 536.66 T
1 F
(.) 461.55 536.66 T
(After all processes have been enqueued, the master process signals the frame scheduler) 207 518.66 T
-0.22 (to start activating processes, using) 207 506.66 P
5 F
-0.22 (frs_start\0503) 345.26 506.66 P
1 F
-0.22 (\051. If all enqueued processes have been con-) 387.47 506.66 P
(nected to the frame scheduler using) 207 494.66 T
5 F
(frs_join\0503\051) 351.33 494.66 T
1 F
(, the scheduler enables the event inter-) 394.09 494.66 T
(rupt, waits for its next occurrence, and starts scheduling the member processes in real-) 207 482.66 T
(time.) 207 470.66 T
-0.23 (The master process or any process in the frame scheduler process group may initiate the) 207 452.66 P
(termination of a frame scheduler using) 207 440.66 T
5 F
( frs_destr) 361.61 440.66 T
(oy\0503\051) 399.27 440.66 T
1 F
(. This call disconnects all pro-) 420.36 440.66 T
(cesses from the frame scheduler and un-isolates the CPU. After disconnection, pro-) 207 428.66 T
-0.13 (cesses continue execution in normal mode and may not issue any frame scheduler calls.) 207 416.66 P
-0.03 (Each frame scheduler executes on an isolated processor) 207 392.66 P
-0.03 (. Multiple frame schedulers exe-) 428.52 392.66 P
-0.08 (cuting on dif) 207 380.66 P
-0.08 (ferent CPUs can be synchronized, such that one frame scheduler is de\336ned) 257.75 380.66 P
(to be a synchronization master and the other frame schedulers are synchronization) 207 368.66 T
(slaves. In all cases, frame schedulers executing on dif) 207 356.66 T
(ferent processors will be synchro-) 421.09 356.66 T
-0.04 (nized if they are using the same interrupt source. For the case of the internal timer inter-) 207 344.66 P
-0.2 (rupt, synchronization is maintained as a result of hardware synchronization of all timers) 207 332.66 P
-0.08 (in the system. For other interrupt sources, synchronization is maintained using the inter-) 207 320.66 P
(rupt multi-cast feature of the POWERpath-2 system bus. When the selected interrupt) 207 308.66 T
(occurs, it is multicast simultaneously to all processors.) 207 296.66 T
FMENDPAGE
%%EndPage: "17" 18
%%Page: "18" 18
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 189 739.85 T
(ime Programming Features) 242.77 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(18) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 672.33 540 675.33 C
189 674.48 540 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
54 674.48 180 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(4.0) 189 679.33 T
( Other Real-T) 205.67 679.33 T
(ime Programming Features) 280.76 679.33 T
1 10 Q
(This section discusses additional features included in IRIX with REACT that are often) 189 657.66 T
(useful to real-time users.) 189 645.66 T
0 F
(4.1) 166.11 615.66 T
(T) 189 615.66 T
(imers) 194.93 615.66 T
1 F
-0.2 (IRIX with REACT includes support for Berkeley interval timers \050) 189 599.66 P
5 F
-0.2 (itimers) 450.65 599.66 P
1 F
-0.2 (\051. These timers) 478.42 599.66 P
(generate an interrupt at the end of the speci\336ed interval. Hardware support for) 189 587.66 T
5 F
(itimers) 503.19 587.66 T
1 F
(included in the system enables short intervals to be timed with high accuracy and no) 189 575.66 T
(increase in system overhead.) 189 563.66 T
(IRIX with REACT also supports event timers, which are useful for measuring the real) 189 539.66 T
-0.05 (time between two points in the user) 189 527.66 P
-0.05 (\325) 331.19 527.66 P
-0.05 (s code. Three types of event timer facilities are pro-) 333.97 527.66 P
(vided in IRIX with REACT) 189 515.66 T
(: UNIX System V timers, BSD4.2 timers, and direct access) 299.55 515.66 T
(to hardware timers from user code.) 189 503.66 T
0 9 Q
(4.1.1) 160.01 480.33 T
(Interval T) 189 480.33 T
(imers) 228.8 480.33 T
1 10 Q
(BSD4.2 UNIX introduced the) 189 467.66 T
5 F
(itimer) 310.86 467.66 T
1 F
( facility) 334.74 467.66 T
(. An) 364.9 467.66 T
5 F
(itimer) 384.61 467.66 T
1 F
( allows the user to specify both) 408.49 467.66 T
(an of) 189 455.66 T
(fset from the current time \050the delay\051 and the recurrence time \050the interval\051. The) 209.08 455.66 T
(timer will wait until the delay has passed, then begin timing the interval. At the end of) 189 443.66 T
(the interval, it will \336re, interrupting the processor that set up the) 189 431.66 T
5 F
(itimer) 447.17 431.66 T
1 F
(. The kernel\325) 470.49 431.66 T
(s) 521.29 431.66 T
5 F
(itimer) 189 419.66 T
1 F
( interrupt handler delivers a signal to the process that set it up. As described) 212.88 419.66 T
(below) 189 407.66 T
(, three types of) 212.78 407.66 T
5 F
(itimers) 274.67 407.66 T
1 F
( are provided, each of which delivers a dif) 302.44 407.66 T
(ferent signal to) 470.73 407.66 T
(the process. Each user process can utilize up to one) 189 395.66 T
5 F
(itimer) 396.34 395.66 T
1 F
( of each type.) 420.21 395.66 T
(The \336rst type is the real-time) 189 371.66 T
5 F
(itimer) 307.26 371.66 T
1 F
(, which delivers the signal SIGALRM. This timer) 330.73 371.66 T
-0.27 (measures wall clock time. It can time intervals from 400) 189 359.66 P
3 F
-0.27 (m) 414.23 359.66 P
1 F
-0.27 (s to 200 hours with resolution) 419.99 359.66 P
-0.19 (of greater than 1) 189 347.66 P
3 F
-0.19 (m) 256.5 347.66 P
1 F
-0.19 (s, subject to the restrictions on the) 262.25 347.66 P
5 F
-0.19 (fasthz) 399.7 347.66 P
1 F
-0.19 ( parameter that are described) 423.02 347.66 P
(in the following section. The accuracy of the hardware that underlies the) 189 335.66 T
5 F
(itimers) 481.27 335.66 T
1 F
( is one) 509.03 335.66 T
(hundred parts per million. \050NOTE: The timer resolution speci\336ed in this paragraph) 189 323.66 T
(assumes IRIX V) 189 311.66 T
(ersion 5.2 or later) 253.95 311.66 T
(.\051) 323.91 311.66 T
(The second) 189 287.66 T
5 F
(itimer) 237.29 287.66 T
1 F
( type is a process-virtual-time timer) 261.17 287.66 T
(, which delivers the signal) 403.17 287.66 T
(SIGVT) 189 275.66 T
(ALRM. It runs only when the process is running in user mode.) 217.62 275.66 T
(The third) 189 251.66 T
5 F
(itimer) 228.42 251.66 T
1 F
( type is the system-virtual-time timer) 252.29 251.66 T
(, which delivers the signal SIG-) 399.86 251.66 T
(PROF) 189 239.66 T
(. It runs both when the process is in user mode and when the kernel is operating) 213.2 239.66 T
(on behalf of the user) 189 227.66 T
(. During all system calls and I/O driver execution, the kernel is) 270.61 227.66 T
(operating on behalf of a user process. T) 189 215.66 T
(ime spent executing interrupt handlers is not) 346.85 215.66 T
(counted as part of system virtual time, since it is not always possible to determine to) 189 203.66 T
(which process the time should be assigned.) 189 191.66 T
(The resolution of the process-virtual-time and system-virtual-time) 189 167.66 T
5 F
(itimers) 455.76 167.66 T
1 F
( is 10 ms.) 483.53 167.66 T
(T) 189 155.66 T
(imers other than) 194.76 155.66 T
5 F
(itimers) 262.21 155.66 T
1 F
( \050such as) 289.98 155.66 T
5 F
(stimer) 327.44 155.66 T
1 F
( or) 352.43 155.66 T
5 F
(utimer) 365.75 155.66 T
1 F
(\051 do not measure real-time, and) 391.85 155.66 T
(should not be used for real-time applications.) 189 143.66 T
0 9 Q
(4.1.2) 160.01 120.33 T
(Event T) 189 120.33 T
(imers) 221.3 120.33 T
1 10 Q
(Event timers are typically used to measure the elapsed time between events. By getting) 189 107.66 T
-0.28 (the time before and after an operation and then subtracting, the application can calculate) 189 95.66 P
FMENDPAGE
%%EndPage: "18" 19
%%Page: "19" 19
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 207 739.85 T
(ime Programming Features) 260.77 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(19) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
-0.38 (elapsed time. For timing events, IRIX with REACT supports direct user code access to a) 207 680.66 P
-0.05 (free-running hardware timer) 207 668.66 P
-0.05 (, and two syntaxes of UNIX system calls. The free-running) 319.74 668.66 P
(hardware timer provides the highest resolution and accuracy) 207 656.66 T
(, and is recommended for) 447.55 656.66 T
(use in real-time applications.) 207 644.66 T
-0.01 (Each processor has a free-running timer which consists of a 52-bit counter clocked con-) 207 620.66 P
-0.42 (tinuously by the POWERpath-2 bus clock. The SGI_QUER) 207 608.66 P
-0.42 (Y_CYCLECNTR command) 442.8 608.66 P
(of) 207 596.66 T
5 F
(syssgi\0502\051) 217.82 596.66 T
1 F
( returns the address of the counter and the period of its clock signal. \050In the) 253.35 596.66 T
(current generation of multiprocessor systems, the clock period is 21 nS, though this) 207 584.66 T
(hardware dependency should not be programmed into applications.\051 After querying for) 207 572.66 T
-0.2 (the counter) 207 560.66 P
-0.2 (\325) 251.85 560.66 P
-0.2 (s address, a user process can use) 254.63 560.66 P
5 F
-0.2 (mmap\0502\051) 385.3 560.66 P
1 F
-0.2 ( to map the counter into its virtual) 421.38 560.66 P
-0.39 (address space. The process can subsequently read the hardware counter directly) 207 548.66 P
-0.39 (, without) 520.75 548.66 P
(the overhead of a system call. The time required to read this counter is approximately) 207 536.66 T
(100 nS. All timers in a system are synchronized in hardware; i.e. all timers start at zero) 207 524.66 T
(on the same clock tick and so always contain the same value.) 207 512.66 T
(In IRIX V) 207 488.66 T
(.5, there are two options for reading the timers, depending upon the require-) 246.79 488.66 T
(ments of the application. The \336rst option is to read the counter as a 64-bit integer) 207 476.66 T
(. How-) 530.12 476.66 T
-0.24 (ever) 207 464.66 P
-0.24 (, the underlying assembler code will perform two 32-bit loads. This gives rise to the) 223.8 464.66 P
(possibility of a carry occuring between the two 32-bit loads. \050A carry will occur every) 207 452.66 T
(90.2 seconds.\051 T) 207 440.66 T
(o fully account for this possibility) 272.36 440.66 T
(, the user must perform three 32-bit) 406.92 440.66 T
(reads: the high order section, followed by the low order section, followed by the high) 207 428.66 T
(order section. If the two reads of the high order section are not equal, then a carry) 207 416.66 T
(occurred.) 207 404.66 T
(In IRIX V) 207 380.66 T
(.6, the 52-bit timer can be read as a 64-bit integer) 246.79 380.66 T
(.) 443.31 380.66 T
-0.2 (The) 207 356.66 P
5 F
-0.2 (gettimeofday\0503B\051) 224.84 356.66 P
1 F
-0.2 ( call provides a system call interface to the timer described above.) 294.23 356.66 P
-0.09 (The system initializes a time base on power) 207 344.66 P
-0.09 (-up using the battery backed up time-of-day) 380.74 344.66 P
(clock and associates a counter value with that time. Subsequent) 207 332.66 T
5 F
(gettimeofday\0503B\051) 463.21 332.66 T
1 F
( calls) 532.6 332.66 T
(will return the original time base plus the dif) 207 320.66 T
(ference between the current counter value) 385.04 320.66 T
-0.27 (and the original power) 207 308.66 P
-0.27 (-up counter value. The resolution of this counter is determined by) 296.19 308.66 P
(the system parameter) 207 296.66 T
5 F
(fasthz) 294.43 296.66 T
1 F
( \050see the following section for an explanation of) 317.76 296.66 T
5 F
(fasthz) 511.78 296.66 T
1 F
(\051.) 535.11 296.66 T
(Note that if the) 207 284.66 T
5 F
(timed\0501M\051) 269.74 284.66 T
1 F
( daemon is enabled, it may modify the) 311.92 284.66 T
5 F
(gettimeofday\0503B\051) 467.66 284.66 T
1 F
(timer) 207 272.66 T
(, resulting in erroneous event timing.) 227.7 272.66 T
(Process execution time accounting information is traditionally measured under UNIX) 207 248.66 T
(System V using the) 207 236.66 T
5 F
(times\0502\051) 287.52 236.66 T
1 F
( system call. Berkeley added the) 320.27 236.66 T
5 F
(getrusage\0503\051) 452.11 236.66 T
1 F
( system call.) 503.19 236.66 T
(The) 207 224.66 T
5 F
(times\0502\051) 225.04 224.66 T
1 F
( and) 257.79 224.66 T
5 F
(getrusage\0503B\051) 277.22 224.66 T
1 F
( return reports of accumulated real, user) 334.4 224.66 T
(, and system) 493.58 224.66 T
(times. Under IRIX V) 207 212.66 T
(.5, the kernel time-stamps each process state transitions between) 290.09 212.66 T
(user and kernel mode using the free-running timer and accumulates the elapsed time) 207 200.66 T
(between state transitions.) 207 188.66 T
(Shutting of) 207 164.66 T
(f the system clock using the) 251.53 164.66 T
5 F
(sysmp\0502\051) 365.34 164.66 T
1 F
( command MP_NONPREEMPTIVE) 401.42 164.66 T
(does not af) 207 152.66 T
(fect the gathering of process state transition data.) 250.68 152.66 T
0 9 Q
(4.1.3) 178.01 129.33 T
(Details Of T) 207 129.33 T
(imer Resolution) 256.78 129.33 T
1 10 Q
(Each processor in a multiprocessor system includes two hardware clock interrupt sig-) 207 116.66 T
(nals.) 207 104.66 T
FMENDPAGE
%%EndPage: "19" 20
%%Page: "20" 20
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 189 739.85 T
(ime Programming Features) 242.77 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(20) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
(The \336rst clock signal, called the CPU scheduler clock, has a \336xed period of 10 ms, and) 189 680.66 T
-0.03 (is used for scheduling and statistics gathering. The system clock is not accessible to the) 189 668.66 P
(user) 189 656.66 T
(.) 205.1 656.66 T
(The second clock signal, referred to as the \322fast clock\323, has a variable frequency set by) 189 632.66 T
-0.37 (the system parameter) 189 620.66 P
5 F
-0.37 (fasthz) 275.31 620.66 P
1 F
-0.37 (. The fast clock is distributed to all processors, and is used as) 298.64 620.66 P
(the basis of the real-time timers. It is also used for event timer system calls such as) 189 608.66 T
5 F
(get-) 522.11 608.66 T
(timeofday\0503B\051) 189 596.66 T
1 F
(.) 246.18 596.66 T
(The allowable frequency range for) 189 572.66 T
5 F
(fasthz) 329.7 572.66 T
1 F
( is from 500 Hz to 2500 Hz \05010 ms to 400) 353.03 572.66 T
3 F
(m) 522.93 572.66 T
1 F
(s) 528.68 572.66 T
-0.03 (period\051. The resolution of the real-time) 189 560.66 P
5 F
-0.03 (itimer) 347.31 560.66 P
1 F
-0.03 ( is determined by the) 371.19 560.66 P
5 F
-0.03 (fasthz) 457.37 560.66 P
1 F
-0.03 ( period. When) 480.69 560.66 P
5 F
(setitimer\0502\051) 189 548.66 T
1 F
( is called, it divides the) 235.63 548.66 T
5 F
(fasthz) 330.3 548.66 T
1 F
( period into the requested) 353.63 548.66 T
5 F
(itimer) 457.72 548.66 T
1 F
( interval to) 481.6 548.66 T
(determine how many clock ticks in duration the interval should be. This results in an) 189 536.66 T
(interval with a precision of one) 189 524.66 T
5 F
(fasthz) 316.13 524.66 T
1 F
( period.) 339.46 524.66 T
-0.05 (By choosing an appropriate value of) 189 500.66 P
5 F
-0.05 (fasthz) 336.39 500.66 P
1 F
-0.05 (, it is possible to time any interval within the) 359.72 500.66 P
(range of 400) 189 488.66 T
3 F
( m) 239.51 488.66 T
1 F
(s to 200 hours \050accurate to the level of the underlying crystal oscillator) 247.77 488.66 T
-0.14 (which generates the clock signal\051. An appropriate value of) 189 476.66 P
5 F
-0.14 (fasthz) 423.67 476.66 P
1 F
-0.14 ( is one whose period is) 447 476.66 P
(an even divisor of the desired interval. For example, if an interval of 5 ms is desired,) 189 464.66 T
(2000 Hz \050whose period is 500) 189 452.66 T
3 F
(m) 311.69 452.66 T
1 F
(s\051 is an appropriate value.) 317.45 452.66 T
-0.03 (The default value of) 189 428.66 P
5 F
-0.03 (fasthz) 272.16 428.66 P
1 F
-0.03 ( is 1000 Hz \0501 ms\051. It can be modi\336ed using the) 295.49 428.66 P
5 F
-0.03 (systune\0501M\051) 488.12 428.66 P
1 F
(utility) 189 416.66 T
(.) 212.24 416.66 T
-0.17 (In the current generation of hardware, the frequency of the hardware clock signal that is) 189 392.66 P
(used to generate) 189 380.66 T
5 F
(fasthz) 256.44 380.66 T
1 F
( is 47 MHz \05021 ns period\051. \050Always use the SGI_QUER) 279.77 380.66 T
(Y_CY-) 502.68 380.66 T
-0.22 (CLECNTR command of) 189 368.66 P
5 F
-0.22 (syssgi\0502\051) 289.1 368.66 P
1 F
-0.22 ( to read the frequency in any application program that) 324.63 368.66 P
(uses it.\051 The accuracy of the crystal oscillator that sources this signal is 100 parts per) 189 356.66 T
(million. This translates to a maximum timing error of 100 microseconds per second.) 189 344.66 T
(While a timer may drift this much relative to an external time source, the skew among) 189 332.66 T
-0.1 (timers for dif) 189 320.66 P
-0.1 (ferent processors in the same system will be less than one clock tick, since) 241.36 320.66 P
(all timers are clocked by the same hardware clock signal.) 189 308.66 T
0 F
(4.2) 166.11 278.66 T
(Asynchronous Disk I/O) 189 278.66 T
1 F
(T) 189 262.66 T
(ypically when a user process makes a system call to perform disk I/O, the kernel ini-) 194.41 262.66 T
(tiates the I/O operation, and the user process is blocked until the I/O operation com-) 189 250.66 T
(pletes. T) 189 238.66 T
(o meet the needs of real-time applications, IRIX with REACT supports) 222.72 238.66 T
(asynchronous I/O. When an asynchronous I/O system call is made, the kernel initiates) 189 226.66 T
-0.04 (the I/O request on behalf of the user process and returns control to the user process.The) 189 214.66 P
-0.03 (user process can either wait for the I/O operation to complete, or it can continue execut-) 189 202.66 P
(ing until receipt of a signal. This sequence of events is shown in Figure 5.) 189 190.66 T
FMENDPAGE
%%EndPage: "20" 21
%%Page: "21" 21
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 207 739.85 T
(ime Programming Features) 260.77 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(21) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(.) 207 680.66 T
(Figure 4: Asynchronous I/O operation) 207 411.52 T
(The asynchronous I/O interface is implemented using four child processes created by) 207 387.52 T
5 F
(spr) 207 375.52 T
(oc\0502\051) 219.4 375.52 T
1 F
( that perform the actual I/O operations, and a control block in memory \050) 240.49 375.52 T
5 F
(aiocb) 527.5 375.52 T
1 F
(\051) 549.71 375.52 T
(containing user) 207 363.52 T
(- and system-de\336ned status and control information for the transaction,) 268.15 363.52 T
(such as the \336le pointer) 207 351.52 T
(, the number of bytes, and the priority of the request.) 296.54 351.52 T
(The child processes can be created by the) 207 327.52 T
5 F
(aio_init) 375.19 327.52 T
1 F
( system call, or by the call that ini-) 406.29 327.52 T
-0.18 (tiates the \336rst asynchronous I/O transaction. For real-time application, it is preferable to) 207 315.52 P
(create the child processes using the system call) 207 303.52 T
5 F
(aio_init) 397.42 303.52 T
1 F
(, which allows the calling pro-) 428.52 303.52 T
(cess to assign execution of the child processes to another processor) 207 291.52 T
(. \050This is because) 474.58 291.52 T
(child processes created using) 207 279.52 T
5 F
(spr) 325.8 279.52 T
(oc) 338.2 279.52 T
1 F
( inherit their parent\325) 347.63 279.52 T
(s processor assignment, so that) 427.3 279.52 T
(child processes created in a real-time process\325 address space will run on that real-time) 207 267.52 T
(processor) 207 255.52 T
(.\051 The) 244.75 255.52 T
5 F
(aio_init\0503\051) 271.11 255.52 T
1 F
( call should be made prior to isolating the real-time proces-) 313.87 255.52 T
(sor) 207 243.52 T
(. It is available in IRIX 5.2 and later versions.) 218.66 243.52 T
(The asynchronous I/O interface is initialized when a process issues its \336rst asynchro-) 207 219.52 T
-0.33 (nous I/O read \050) 207 207.52 P
5 F
-0.33 (aio_r) 266.23 207.52 P
-0.33 (ead) 287.52 207.52 P
1 F
-0.33 (\051, asynchronous I/O write \050) 301.95 207.52 P
5 F
-0.33 (aio_write\051) 408.58 207.52 P
1 F
-0.33 (, or multiple asynchronous) 450.23 207.52 P
(I/O reads/writes \050) 207 195.52 T
5 F
(lio_listio) 276.94 195.52 T
1 F
(\051 request. Initialization includes creating the child processes) 312.49 195.52 T
-0.16 (\050if they have not already been created by) 207 183.52 P
5 F
-0.16 (aio_init) 371.16 183.52 P
1 F
-0.16 (\051 and enqueueing the) 402.27 183.52 P
5 F
-0.16 (aiocb) 487.69 183.52 P
1 F
-0.16 ( for the sub-) 509.89 183.52 P
(sequent I/O transactions. The child processes busy wait on a semaphore that is incre-) 207 171.52 T
(mented each time an I/O request is made. When the semaphore is non-zero, one of the) 207 159.52 T
-0.2 (child processes wakes up and handles the \336rst aio request from the linked list of aio con-) 207 147.52 P
(trol blocks.) 207 135.52 T
-0.22 (By default, aio requests are queued in the order of the priority of the processes initiating) 207 111.52 P
-0.05 (the requests. The user can optionally reduce the priority of a particular request by speci-) 207 99.52 P
72 89.3 558 687.33 C
207 432.18 558 677.33 C
1 10 Q
0 X
0 K
(aio_init) 308.72 620.92 T
(aio_read) 306.12 582.25 T
(aio_suspend) 301.11 501.58 T
351 624.33 468 624.33 2 L
0.5 H
2 Z
N
279 530.32 369 557.32 R
N
(real-time processing) 283.32 540.41 T
461.47 588.32 466.67 585.32 461.47 582.32 461.47 585.32 4 Y
V
349.67 585.32 461.47 585.32 2 L
N
471 561.85 468 556.65 465 561.85 468 561.85 4 Y
V
468 574.65 468 561.85 2 L
N
432 529.65 522 556.65 R
N
(i/o processing) 449.1 539.74 T
477 529.65 477 502.65 2 L
N
383.2 499.65 378 502.65 383.2 505.65 383.2 502.65 4 Y
V
383.2 502.65 477 502.65 2 L
N
422.67 592.32 512.67 610.32 R
N
(start child processes) 427.4 597.91 T
471 615.2 468 610 465 615.2 468 615.2 4 Y
V
468 624.33 468 615.2 2 L
N
468 591.33 468 574.65 2 L
N
297 615.33 351 633.33 9 RR
N
294.33 495.99 357.33 513.99 9 RR
N
296.33 576.66 350.33 594.66 9 RR
N
270 457.65 387 484.65 R
N
(Handle Signal) 300.03 467.74 T
266 651.99 383 669.99 R
N
(User Process) 298.54 657.58 T
(Receive Info) 405 509.5 T
326.33 638.53 323.33 633.33 320.33 638.53 323.33 638.53 4 Y
V
323.33 652 323.33 638.53 2 L
N
326.33 598.53 323.33 593.33 320.33 598.53 323.33 598.53 4 Y
V
323.33 615.33 323.33 598.53 2 L
N
327 561.86 324 556.67 321 561.86 324 561.86 4 Y
V
324 576 324 561.86 2 L
N
327 519.2 324 514 321 519.2 324 519.2 4 Y
V
324 528.67 324 519.2 2 L
N
(Figure 5: Asynchronous I/O operation) 312.14 437.42 T
72 89.3 558 687.33 C
0 0 612 792 C
FMENDPAGE
%%EndPage: "21" 22
%%Page: "22" 22
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 189 739.85 T
(ime Programming Features) 242.77 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(22) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
-0.14 (fying a value other than 0 in the) 189 680.66 P
5 F
-0.14 (aio_r) 317.77 680.66 P
-0.14 (eqprio) 339.06 680.66 P
1 F
-0.14 ( \336eld of the) 365.15 680.66 P
5 F
-0.14 (aiocb) 412.89 680.66 P
1 F
-0.14 (. This value will be added) 435.09 680.66 P
(to the process priority to determine the request\325) 189 668.66 T
(s order in the queue.) 378.04 668.66 T
(The) 189 644.66 T
5 F
(lio_listio\0503\051) 207.04 644.66 T
1 F
( allows multiple I/O requests to be made in a single function call. The) 254.24 644.66 T
(user process can simultaneously enqueue a number of aio requests to a device and) 189 632.66 T
-0.03 (optionally receive a queued signal when the request completes. The operation to be per-) 189 620.66 P
(formed \050read or write\051 is speci\336ed in the) 189 608.66 T
5 F
(aio_lio_opcode) 352.76 608.66 T
1 F
( \336eld of each) 414.95 608.66 T
5 F
(iocb) 469.35 608.66 T
1 F
(.) 486.56 608.66 T
(The user process can choose to synchronously wait a speci\336ed amount of time for aio) 189 584.66 T
(completion, using the) 189 572.66 T
5 F
(aio_suspend\0503\051) 277.84 572.66 T
1 F
( call. This gives a program the capability of queu-) 339.47 572.66 T
-0.04 (ing a number of aio requests, and then waiting until at least one of them has completed,) 189 560.66 P
(or the program is interrupted by a signal, or the timeout speci\336ed in the call expires.) 189 548.66 T
(When) 189 536.66 T
5 F
(aio_suspend) 215.37 536.66 T
1 F
( is used with) 265.34 536.66 T
5 F
(aio_err) 318.09 536.66 T
(or\0503\051) 347.7 536.66 T
1 F
( and) 368.24 536.66 T
5 F
(aio_r) 387.67 536.66 T
(eturn\0503\051) 408.96 536.66 T
1 F
(, the user process incurs) 441.71 536.66 T
(the least amount of overhead using asynchronous I/O: upon return from) 189 524.66 T
5 F
(aio_suspend) 477.96 524.66 T
1 F
(,) 527.93 524.66 T
(the functions) 189 512.66 T
5 F
(aio_err) 243.41 512.66 T
(or) 273.02 512.66 T
1 F
( and) 281.91 512.66 T
5 F
(aio_r) 301.34 512.66 T
(eturn) 322.63 512.66 T
1 F
( can be applied to the individual) 343.73 512.66 T
5 F
(aiocb) 474.47 512.66 T
1 F
( for com-) 496.68 512.66 T
(pletion status.) 189 500.66 T
(Alternatively) 189 476.66 T
(, the user process can continue executing after the aio request has been) 241.09 476.66 T
-0.23 (queued, and be noti\336ed of I/O completion by a signal. The signal type is speci\336ed either) 189 464.66 P
(in the) 189 452.66 T
5 F
(aio_sigevent.sevt_signo) 213.99 452.66 T
1 F
( \336eld of the) 309.2 452.66 T
5 F
(aiocb) 357.51 452.66 T
1 F
(, or as the) 379.71 452.66 T
5 F
(sig.sevt_signo) 421.07 452.66 T
1 F
( ar) 477.43 452.66 T
(gument to) 487.52 452.66 T
5 F
-0.18 (lio_listio) 189 440.66 P
1 F
-0.18 (. Because of the overhead of asynchronous signal delivery) 224.55 440.66 P
-0.18 (, this method is most) 455.36 440.66 P
(appropriate when the number of outstanding asynchronous I/O requests is small, or) 189 428.66 T
(when the process cannot af) 189 416.66 T
(ford to block because it has other time-sensitive tasks to) 297.06 416.66 T
(complete.) 189 404.66 T
(The) 189 380.66 T
5 F
(aio_err) 207.04 380.66 T
(or) 236.65 380.66 T
1 F
( and) 245.54 380.66 T
5 F
(aio_r) 264.97 380.66 T
(eturn) 286.26 380.66 T
1 F
( calls can be used to determine the error status and return) 307.36 380.66 T
(status, respectively) 189 368.66 T
(, of an aio operation while it is proceeding.) 264.41 368.66 T
(Pending aio requests can be cancelled using) 189 344.66 T
5 F
(aio_cancel\0503\051.) 366.92 344.66 T
1 F
( In compliance with the) 424.93 344.66 T
(POSIX standard, any requested signal will be delivered to the process that initiated the) 189 332.66 T
(request.) 189 320.66 T
0 F
(4.3) 166.11 290.66 T
(External Interrupts) 189 290.66 T
1 F
(CHALLENGE and Onyx systems provide six I/O lines \050two inputs and four outputs\051) 189 274.66 T
-0.13 (designed to be connected to external equipment. The interface to these lines is provided) 189 262.66 P
(by the special device \336le) 189 250.66 T
5 F
(/dev/ei) 290.31 250.66 T
1 F
( \050see) 316.96 250.66 T
5 F
(ei\0507\051) 338.05 250.66 T
1 F
(\051. This interface allows separate machines to) 356.92 250.66 T
-0.25 (send and receive interrupts over a dedicated wire for purposes of inter) 189 238.66 P
-0.25 (-machine synchro-) 465.59 238.66 P
(nization.) 189 226.66 T
(The eternal interrupt device driver maintains per) 189 202.66 T
(-process state information, allowing) 382.53 202.66 T
(any number of processes to open this device and use it without interfering with each) 189 190.66 T
(other) 189 178.66 T
(. In order to distribute the overhead associated with the) 208.99 178.66 T
5 F
( ioctl) 428.83 178.66 T
1 F
( calls, a user) 449.1 178.66 T
(-process) 498.3 178.66 T
(can specify which CPU executes the device driver system calls \050EIIOCSETSYSCPU\051) 189 166.66 T
(and which CPU executes the interrupt handlers \050EIIOCSETINTRCPU\051.) 189 154.66 T
-0.07 (The device driver maintains queues of incoming interrupts for each process that has the) 189 130.66 P
-0.11 (device \336le open. There are two interrupt queues for each process: one for use by the sig-) 189 118.66 P
(nal handler and the other for use by the busy wait function, as explained below) 189 106.66 T
(. The) 503.4 106.66 T
FMENDPAGE
%%EndPage: "22" 23
%%Page: "23" 23
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 207 739.85 T
(ime Programming Features) 260.77 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(23) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
-0.35 (interrupt queues allow software to determine how many interrupts have arrived but have) 207 680.66 P
(not yet been retrieved by the process. The queue can be \337ushed by the user program.) 207 668.66 T
(A user process can enable or disable interrupts using the EIIOCENABLE and EIIO-) 207 644.66 T
-0.19 (CDISABLE commands. Interrupts are automatically disabled when the device is closed) 207 632.66 P
-0.24 (by the last process. A process can assert \050EIIOCSETHI\051 or de-assert \050EIIOCSETLO\051 an) 207 620.66 P
(interrupt on any of the four output pins and generate an outgoing interrupt pulse) 207 608.66 T
(\050EIIOCSTROBE\051.) 207 596.66 T
(Incoming interrupts can be handled in a number of ways. Using the EIIOCSETSIG) 207 572.66 T
-0.08 (command, a process can instruct the driver to send a signal when each interrupt arrives.) 207 560.66 P
(The interrupt queue permits the signal handler to know exactly how many interrupts) 207 548.66 T
(have arrived, even if a signal was discarded. Or a user process may request to block in) 207 536.66 T
(an) 207 524.66 T
5 F
(ioctl\050\051) 218.93 524.66 T
1 F
( until an interrupt is received. Finally) 243.36 524.66 T
(, in situations where the overhead of a) 391.23 524.66 T
(system call is unacceptable \050for example, when interrupts occur frequently\051, a process) 207 512.66 T
(can busy wait for an interrupt to arrive, using the) 207 500.66 T
5 F
(eicbusywait) 404.91 500.66 T
1 F
( library function. The) 452.11 500.66 T
-0.01 (interrupt queue maintained for this function insures that an interrupt arriving before the) 207 488.66 P
(library call is made will still be available to the calling process.) 207 476.66 T
-0.22 (A process can specify the value in microseconds of the outgoing pulse width \050EIIOCSE-) 207 452.66 P
-0.45 (T) 207 440.66 P
-0.45 (OPW\051, the expected incoming pulse width \050EIIOCSETIPW\051, and the threshold beyond) 212.93 440.66 P
(which an incoming pulse is considered to be \322stuck\323 \050EIIOCSETSPW\051.) 207 428.66 T
(The outgoing pulse width determines how long the output lines are asserted when the) 207 404.66 T
(driver generates an outgoing interrupt using EIIOCSTROBE. This value should not be) 207 392.66 T
(set too high, because the processor busy waits with all interrupts blocked during this) 207 380.66 T
(time. On the other hand, too short a pulse may not be reliably received by the remote) 207 368.66 T
(machine. The default is 5) 207 356.66 T
3 F
(m) 308.31 356.66 T
1 F
(s and should not normally be changed.) 314.07 356.66 T
-0.18 (The expected incoming pulse width determines how long the interrupt handler will wait) 207 332.66 P
(before returning. The interrupt handler must not return while the input line is still) 207 320.66 T
(asserted; otherwise, multiple interrupts are received from the same input pulse, indicat-) 207 308.66 T
-0.25 (ing to the driver that the line is \322stuck\323. The value of the expected incoming pulse width) 207 296.66 P
-0.05 (should match the outgoing pulse width of the machine producing the pulse. The default) 207 284.66 P
(is 5) 207 272.66 T
3 F
(m) 221.16 272.66 T
1 F
(s.) 226.92 272.66 T
(The \322stuck\323 pulse width de\336nes the minimum allowable time between distinct input) 207 248.66 T
(pulses: any two pulses that arrive within this time are considered to be the same pulse.) 207 236.66 T
(Setting this value too low will cause a single pulse to be processed as more than one) 207 224.66 T
(interrupt; on the other hand, setting this value too high will limit the maximum rate at) 207 212.66 T
(which interrupts can be received. The default value is 500 microseconds.) 207 200.66 T
0 F
(4.4) 184.11 170.66 T
(Signals) 207 170.66 T
1 F
(A signal is a synchronous or asynchronous noti\336cation of an event that is sent to a pro-) 207 154.66 T
-0.25 (cess when the event associated with that signal occurs. Examples of such events include) 207 142.66 P
(hardware exceptions, timer expiration, terminal activity) 207 130.66 T
(, as well as calls to) 428.69 130.66 T
5 F
(kill\0502\051) 506.14 130.66 T
1 F
(,) 530.56 130.66 T
5 F
(sig-) 535.56 130.66 T
(queue\0503\051) 207 118.66 T
1 F
(,) 242.52 118.66 T
5 F
(sigsend\0502\051) 247.52 118.66 T
1 F
(, or) 289.15 118.66 T
5 F
(raise\0503c\051) 304.98 118.66 T
1 F
(. In some cases, a single event generates signals for) 341.06 118.66 T
(multiple processes. A process may request a detailed noti\336cation of the source of the) 207 106.66 T
(signal and the reason why it was generated \050see) 207 94.66 T
5 F
(siginfo\0505\051\051.) 399.34 94.66 T
FMENDPAGE
%%EndPage: "23" 24
%%Page: "24" 24
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 189 739.85 T
(ime Programming Features) 242.77 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(24) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
-0.33 (IRIX with REACT supports the signal functions in BSD4.3 and System V) 189 680.66 P
-0.33 (, as well as the) 480.58 680.66 P
-0.3 (POSIX P1003.1b-1993 real-time signals extension. The basic dif) 189 668.66 P
-0.3 (ferences between these) 446.27 668.66 P
(signal interfaces are summarized in T) 189 656.66 T
(able 1. Because only the POSIX convention pro-) 338.46 656.66 T
(vides reliable and deterministic signal noti\336cation, the remaining discussion in this sec-) 189 644.66 T
(tion will be con\336ned to just those signals.) 189 632.66 T
(IRIX with REACT supports signal numbers between 0 and 64. The signals between 0) 189 474.66 T
(and 32 have prede\336ned names \050see) 189 462.66 T
5 F
(/var/include/sys/signal.h) 331.1 462.66 T
1 F
(\051. The POSIX standard) 429.11 462.66 T
(reserves all signals between 33 \050SIGR) 189 450.66 T
(TMIN\051 and 64 \050SIGR) 340.79 450.66 T
(TMAX\051 for real-time appli-) 427.07 450.66 T
(cations.The signals between 1 and 32 are of equal priority) 189 438.66 T
(, but have a higher priority) 419.84 438.66 T
-0.37 (than real-time signals. The real-time signals are prioritized such that the lower the signal) 189 426.66 P
(number) 189 414.66 T
(, the higher the signal\325) 219.13 414.66 T
(s priority) 308.24 414.66 T
(.) 343.96 414.66 T
(Each process may specify a system action to be taken in response to each signal type) 189 390.66 T
-0.1 (sent to it, called the signal\325) 189 378.66 P
-0.1 (s) 295.67 378.66 P
5 F
-0.1 ( disposition) 299.56 378.66 P
1 F
-0.1 (.The set of system signal actions for a process is) 345.84 378.66 P
-0.21 (initialized from that of its parent. Once a disposition has been installed for a speci\336c sig-) 189 366.66 P
-0.17 (nal, it usually remains installed until another disposition is explicitly requested by a call) 189 354.66 P
(to either) 189 342.66 T
5 F
(sigaction\0502\051,) 224.53 342.66 T
1 F
( or until the process execs. When a process execs, all signals) 275.33 342.66 T
-0.15 (whose disposition have been set to catch the signal will be set to the default disposition,) 189 330.66 P
(SIG_DFL. Alternatively) 189 318.66 T
(, a process may request that the system automatically reset the) 286.07 318.66 T
(disposition of a signal to SIG_DFL after it has been caught \050see) 189 306.66 T
5 F
(sigaction\0502\051) 446.05 306.66 T
1 F
(\051.) 494.35 306.66 T
(A signal is said to be delivered to a process when the appropriate action for the process) 189 282.66 T
(and signal is taken. During the time between the generation of a signal and its delivery) 189 270.66 T
(,) 534.22 270.66 T
-0.21 (the signal is said to be pending \050see) 189 258.66 P
5 F
-0.21 (sigpending\0502\051) 331.65 258.66 P
1 F
-0.21 (\051. A process can determine the signals) 387.17 258.66 P
-0.04 (that are currently pending using) 189 246.66 P
5 F
-0.04 (sigpending) 318.45 246.66 P
1 F
-0.04 (.When a pending signal is delivered, the sig-) 362.32 246.66 P
(nal will remain pending if there are additional signals queued to that signal number) 189 234.66 T
(.) 520.73 234.66 T
(Otherwise the pending indication is reset.) 189 222.66 T
-0.14 (Because a signal\324s disposition is determined at the time it is delivered, rather than when) 189 198.66 P
(it is caught, a signal\324s disposition can change while it is pending. When multiple) 189 186.66 T
(unblocked signals are pending, the highest priority signal will be delivered \336rst. On the) 189 174.66 T
(other hand, a lower priority signal cannot preempt a higher priority signal handler) 189 162.66 T
(.) 515.16 162.66 T
(Each process has a signal mask that de\336nes the set of signals currently blocked from) 189 138.66 T
-0.26 (delivery to it \050see) 189 126.66 P
5 F
-0.26 (sigpr) 260.12 126.66 P
-0.26 (ocmask\0502\051) 280.3 126.66 P
1 F
-0.26 (\051. The signal mask for a process is initialized from that) 321.93 126.66 P
(of its parent. A signal that is blocked by a process will not be lost, but will be queued) 189 114.66 T
54 600.33 540 623.33 C
189 608.33 540 608.33 2 L
0.25 H
2 Z
0 X
0 K
N
54 608.33 180 608.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 594.33 T
(ABLE 1.) 58.83 594.33 T
6 F
(Signal Functions Summary) 189 594.33 T
0 8 Q
(System V) 189 570.99 T
(BSD4.3) 285 570.99 T
(Posix 1003.1) 375 570.99 T
(Posix 1003.1b-1993) 462.57 570.99 T
1 9 Q
(32 signals) 189 556.33 T
(32 signals) 285 556.33 T
(32 signals) 375 556.33 T
(64 signals) 462.57 556.33 T
(Not reliable) 189 541.33 T
(Reliable) 285 541.33 T
(Reliable) 375 541.33 T
(Reliable) 462.57 541.33 T
(Error if signal occurs) 189 526.33 T
(during system call) 189 515.33 T
(Restarts system call) 285 526.33 T
(on signal) 285 515.33 T
(Restarts system call) 375 526.33 T
(on signal) 375 515.33 T
(Restarts system call) 462.57 526.33 T
(on signal) 462.57 515.33 T
(Signals not queued) 189 500.33 T
(Signals not queued) 285 500.33 T
(Signals not queued) 375 500.33 T
(Signals queued) 462.57 500.33 T
FMENDPAGE
%%EndPage: "24" 25
%%Page: "25" 25
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Other Real-T) 207 739.85 T
(ime Programming Features) 260.77 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(25) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 F
(and left pending, so that if it is later unblocked \050) 207 680.66 T
5 F
(sigsuspend\0502\051) 399.37 680.66 T
1 F
(\051 the signal will be deliv-) 454.89 680.66 T
(ered. A process can also block a signal by setting its disposition to SIG_IGN.) 207 668.66 T
-0.05 (If the disposition of a signal is the address of a function, and the signal\324s SA_SIGINFO) 207 644.66 P
(\337ag is set \050see) 207 632.66 T
5 F
(sigaction\0502\051) 265.85 632.66 T
1 F
(\051, the handler will be passed a pointer to the) 314.15 632.66 T
5 F
(siginfo_t) 491.52 632.66 T
1 F
( struc-) 526.51 632.66 T
-0.29 (ture, containing the signal\325) 207 620.66 P
-0.29 (s cause, as well as a pointer to the structure) 312.74 620.66 P
5 F
-0.29 (ucontext_t,) 485.01 620.66 P
1 F
-0.29 ( which) 529.15 620.66 P
(contains the receiving process\325 context when the signal was delivered. When the signal) 207 608.66 T
-0.01 (handler returns, the receiving process resumes execution at the point it was interrupted,) 207 596.66 P
(unless the signal handler makes other arrangements.) 207 584.66 T
(A process can wait for the occurrence of a signal in a number of ways. It can wait for a) 207 560.66 T
(number of signals to occur with a speci\336ed timeout \050) 207 548.66 T
5 F
(sigtimedwait) 417.69 548.66 T
1 F
(\051 or without timeout) 468.79 548.66 T
(\050) 207 536.66 T
5 F
(sigwaitrt) 210.33 536.66 T
1 F
(\051. It can unblock a signal and then wait for that signal in a single atomic oper-) 245.88 536.66 T
(ation \050) 207 524.66 T
5 F
(sigsuspend\0503\051) 232.82 524.66 T
1 F
(\051. Or it can simply return the value for a queued signal \050) 288.33 524.66 T
5 F
(sigwait-) 511.22 524.66 T
(info\0503\051) 207 512.66 T
1 F
(\051.) 234.21 512.66 T
FMENDPAGE
%%EndPage: "25" 26
%%Page: "26" 26
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(VME Bus Capabilities and Use) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(26) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 672.33 540 675.33 C
189 674.48 540 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
54 674.48 180 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(5.0) 189 679.33 T
( VME Bus Capabilities and Use) 205.67 679.33 T
1 10 Q
(The system VME interface is a high performance implementation which provides full) 189 657.66 T
-0.18 (support for all features of Revision C.2 of the VME Speci\336cation plus the A64 and D64) 189 645.66 P
(modes as de\336ned in Revision D. The VME interface is designed to allow both direct) 189 633.66 T
(access of addresses on the POWERpath-2 bus by devices on the VME bus and direct) 189 621.66 T
(access of addresses on the VME bus by devices on the POWERpath-2. Address map-) 189 609.66 T
(ping is provided which allows VME devices to perform DMA access to user) 189 597.66 T
(-process) 494.69 597.66 T
(virtual addresses.) 189 585.66 T
0 F
(5.1) 166.11 555.66 T
(Con\336gurations) 189 555.66 T
1 F
-0.13 (All CHALLENGE and Onyx systems contain a 9U VME bus in their main card cage as) 189 539.66 P
(part of the standard I/O complement. Rack con\336gurations may optionally include an) 189 527.66 T
(auxiliary 9U VME card cage. This cage may be con\336gured as one, two, or four VME) 189 515.66 T
-0.06 (busses. T) 189 503.66 P
-0.06 (able 2 illustrates the number of VME slots available in various CHALLENGE) 225.43 503.66 P
(and Onyx con\336gurations:) 189 491.66 T
(Determining whether to split the auxiliary VME cage into multiple busses should be) 189 326.66 T
(done by examining the bandwidth required. Each additional VME bus which is con\336g-) 189 314.66 T
(ured requires an F cable output from an F-HIO card installed in a POWERchannel-2) 189 302.66 T
(board and a Remote VCAM board installed in the auxiliary VME cage.) 189 290.66 T
(Up to a total of three VME busses \050two in auxiliary cage\051 may be supported using the) 189 266.66 T
-0.23 (\336rst POWERchannel-2 board in a system; four or more busses requires the addition of a) 189 254.66 P
-0.33 (second POWERchannel-2. T) 189 242.66 P
-0.33 (able 3 illustrates the con\336guration requirements for various) 303.38 242.66 P
(numbers of VME busses.) 189 230.66 T
54 459.33 540 482.33 C
189 467.33 540 467.33 2 L
0.25 H
2 Z
0 X
0 K
N
54 467.33 180 467.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 453.33 T
(ABLE 2.) 58.83 453.33 T
6 F
(CHALLENGE / Onyx VME Slots) 189 453.33 T
0 8 Q
-0.1 (Main Cage) 276 420.99 P
(VME Slots) 276 411.99 T
(Aux Cage) 330 429.99 T
(VME Slots) 330 420.99 T
(- 1 Bus) 330 411.99 T
(Aux Cage) 384 429.99 T
(VME slots) 384 420.99 T
(- 2 Busses) 384 411.99 T
(Aux Cage) 438 429.99 T
(VME Slots) 438 420.99 T
(- 4 Busses) 438 411.99 T
1 9 Q
(CHALLENGE L) 189 397.33 T
(5) 276 397.33 T
(none) 330 397.33 T
(none) 384 397.33 T
(none) 438 397.33 T
(Onyx Deskside) 189 382.33 T
(3) 276 382.33 T
(none) 330 382.33 T
(none) 384 382.33 T
(none) 438 382.33 T
(Challenge XL) 189 367.33 T
(5) 276 367.33 T
(20) 330 367.33 T
(10 / 9) 384 367.33 T
(5 / 4 / 4 / 4) 438 367.33 T
(Onyx Rack) 189 352.33 T
(4) 276 352.33 T
(20) 330 352.33 T
(10 / 9) 384 352.33 T
(5 / 4 / 4 / 4) 438 352.33 T
FMENDPAGE
%%EndPage: "26" 27
%%Page: "27" 27
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(VME Bus Capabilities and Use) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(27) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 9 Q
(Note that F-HIO Short modules, which are intended for use only on POWERchannel-2) 219 504.33 T
-0.16 (#1, have only a single F Cable output, while regular F-HIO modules provide two F Cable) 219 494.33 P
(outputs. This explains why a second POWERchannel-2 board is required for 4 or more) 219 484.33 T
0 (VME busses, but the HIO slots on POWERchannel-2 #1 is not used in this con\336guration.) 219 474.33 P
0 10 Q
(5.2) 184.11 445.66 T
(Memory Mapping) 207 445.66 T
1 F
-0.04 (The system supports mapping of VME addresses into the POWERpath-2 address space) 207 429.66 P
(for programmed I/O \050PIO\051 control of VME devices and supports mapping of POWER-) 207 417.66 T
(path-2 addresses into the address space of the VME bus for direct memory accesses) 207 405.66 T
(\050DMA\051 by devices on the VME bus. The implementation and operation of these two) 207 393.66 T
(mappings dif) 207 381.66 T
(fer) 259.29 381.66 T
(, as described below) 269.98 381.66 T
(.) 350.38 381.66 T
0 9 Q
(5.2.1) 178.01 358.33 T
(PIO Mapping) 207 358.33 T
1 10 Q
-0.15 (PIO mapping is based on opening a 128 megabyte) 207 345.66 P
5 F
-0.15 (window) 409.12 345.66 P
1 F
-0.15 ( from the POWERpath-2 bus) 440.22 345.66 P
(address map into the VME address spaces. Each VME bus in the system has its own) 207 333.66 T
(window) 207 321.66 T
(. This window is divided into sixteen 8 Mb segments. The \336rst of these seg-) 238.55 321.66 T
(ments contains VCAM control registers and the A16 VME address space.) 207 309.66 T
-0.02 (The other 15 segments are used to access the VME bus through a 15 entry Map Ram in) 207 285.66 P
(the VMECC. Each Map Ram entry contains a six bit Address Modi\336er and nine high-) 207 273.66 T
-0.01 (order address bits. When a reference is made to one of the segments, these bits are read) 207 261.66 P
-0.31 (from the Map Ram and combined with the of) 207 249.66 P
-0.31 (fset into the 8 Mb segment to form an A64,) 385.35 249.66 P
-0.08 (A32, or A24 VME address. One of the VCAM control registers stores the additional 32) 207 237.66 P
(high order address bits which are used to form A64 addresses.) 207 225.66 T
-0.01 (PIO Map Ram entries are set up by making a system call. Parameters of the call are the) 207 201.66 P
-0.3 (VME address range to be mapped and the Address Modi\336er code to use in accessing the) 207 189.66 P
-0.35 (VME bus. The service returns a pointer to the virtual address at which the VME bus will) 207 177.66 P
(be accessed. The mapping remains established for the life of the calling process unless) 207 165.66 T
(another call is made to close the mapping. See) 207 153.66 T
5 F
(usrvme\0507\051.) 394.65 153.66 T
0 9 Q
(5.2.2) 178.01 130.33 T
(DMA Mapping) 207 130.33 T
1 10 Q
(DMA mapping is based on the use of page tables which are stored in the system main) 207 117.66 T
(memory) 207 105.66 T
(. This scheme allows VME DMA devices to reference a stream of contiguous) 239.66 105.66 T
(virtual addresses which correspond to virtual addresses in the user process\325 space.) 207 93.66 T
72 648.33 558 671.33 C
207 656.33 558 656.33 2 L
0.25 H
2 Z
0 X
0 K
N
72 656.33 198 656.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 72 642.33 T
(ABLE 3.) 76.83 642.33 T
6 F
(POWERchannel-2 \050Pc-2\051 Con\336gurations vs. Number of VME Busses) 207 642.33 T
0 8 Q
(# VME) 207 618.99 T
(Busses) 207 609.99 T
(Pc-2 #1 Slot) 261 618.99 T
(1) 261 609.99 T
(Pc-2 #1 Slot) 322.67 618.99 T
(2) 322.67 609.99 T
(Pc-2 #2) 384.35 618.99 T
(Slot 1) 384.35 609.99 T
(Pc-2 #2) 438.35 618.99 T
(Slot 2) 438.35 609.99 T
1 9 Q
(1) 207 595.33 T
(open) 261 595.33 T
(open) 322.67 595.33 T
(not req.) 384.35 595.33 T
(not req.) 438.35 595.33 T
(2) 207 580.33 T
(F-HIO Short) 261 580.33 T
(open) 322.67 580.33 T
(not req.) 384.35 580.33 T
(not req.) 438.35 580.33 T
(3 \0501 Pc-2\051) 207 565.33 T
(F-HIO Short) 261 565.33 T
(F-HIO Short) 322.67 565.33 T
(not req.) 384.35 565.33 T
(not req.) 438.35 565.33 T
(3 \0502 Pc-2\051) 207 550.33 T
(open) 261 550.33 T
(open) 322.67 550.33 T
(F-HIO) 384.35 550.33 T
(open) 438.35 550.33 T
(4) 207 535.33 T
(open) 261 535.33 T
(open) 322.67 535.33 T
(F-HIO) 384.35 535.33 T
(F-HIO) 438.35 535.33 T
(5) 207 520.33 T
(open) 261 520.33 T
(open) 322.67 520.33 T
(F-HIO) 384.35 520.33 T
(F-HIO) 438.35 520.33 T
FMENDPAGE
%%EndPage: "27" 28
%%Page: "28" 28
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(VME Bus Capabilities and Use) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(28) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
-0.38 (These virtual addresses may refer to scattered physical pages in main memory) 189 681.36 P
-0.38 (. Thus, the) 496.44 681.36 P
(VME device is able to view the addresses it references in the same way as the user pro-) 189 669.36 T
-0.09 (cess, and DMA transfers which span multiple pages can be performed as a single opera-) 189 657.37 P
(tion.) 189 645.37 T
(Each DMA stream from the VME bus is assigned a VME V) 189 621.37 T
(irtual Base address which) 428.51 621.37 T
(corresponds to a pointer into a translation ram on the POWERchannel-2. The contents) 189 609.37 T
(of this ram point to the beginning of a page table in main memory) 189 597.37 T
(. Bits 20:12 of the) 451.8 597.37 T
(VME V) 189 585.37 T
(irtual Address are used as the of) 220.32 585.37 T
(fset into the page table. The page table entry is) 348.37 585.37 T
(used to translate the VME V) 189 573.37 T
(irtual Address into a physical address on the POWERchan-) 302.49 573.37 T
(nel-2.) 189 561.37 T
(Each VME I/O adapter on the POWERchannel-2 caches sixteen translations internally) 189 537.37 T
(.) 534.2 537.37 T
(Whenever a VME device performs a memory reference, the translation cache is) 189 525.36 T
-0.1 (checked. If a hit occurs, the cache entry is used to translate the VME V) 189 513.37 P
-0.1 (irtual Address to) 471.18 513.37 P
(a POWERpath-2 bus physical address. If a miss occurs, the POWERchannel-2 hard-) 189 501.37 T
(ware automatically fetches a new translation from the page tables in main memory and) 189 489.37 T
-0.22 (loads the new translation into the cache, replacing the least recently used entry) 189 477.37 P
-0.22 (. Because) 499.64 477.37 P
(each VME bus has its own translation cache with eight pairs of entries, up to eight) 189 465.37 T
(DMA streams can be simultaneously active on a single VME bus without incurring a) 189 453.37 T
(loss of performance due to thrashing.) 189 441.37 T
(A kernel-resident device driver is required to set up DMA mapping. See) 189 417.37 T
5 F
(IRIX Device) 480.17 417.37 T
(Driver Pr) 189 405.37 T
(ogramming Guide) 227.77 405.37 T
1 F
( for more information.) 300.78 405.37 T
0 F
(5.3) 166.11 375.37 T
(Optimizing Bandwidth and Latency) 189 375.37 T
1 F
-0.35 (The system architecture is designed to maximize the total available I/O connectivity and) 189 359.37 P
(bandwidth. Most high performance I/O devices operate by performing block-mode) 189 347.37 T
-0.27 (DMA, and this is the mode of operation which yields the best results. For devices which) 189 335.37 P
(are not capable of DMA operation, the system provides the option of accessing these) 189 323.37 T
(boards via programmed I/O. In addition, the system provides a DMA engine in the) 189 311.37 T
-0.39 (VME interface which can perform DMA with non-DMA VME devices to optimize their) 189 299.37 P
(performance.) 189 287.37 T
(T) 189 269.37 T
(able 4 summarizes the performance of the system VME bus using a VME DMA) 194.41 269.37 T
(device to access system memory in various transfer modes. Actual performance may) 189 257.37 T
(vary somewhat depending on the timing of the DMA controller used. The system has) 189 245.37 T
-0.13 (enough bandwidth that performance is nearly independent of whether other I/O streams) 189 233.37 P
-0.19 (\050from other VME busses or other controllers on the POWERchannel-2\051 are active at the) 189 221.37 P
(same time.) 189 209.37 T
54 177.03 540 200.03 C
189 185.03 540 185.03 2 L
0.25 H
2 Z
0 X
0 K
N
54 185.03 180 185.03 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 171.03 T
(ABLE 4.) 58.83 171.03 T
6 F
(VME Bus DMA Performance \050using DMA board on VME\051) 189 171.03 T
0 8 Q
(READ) 251.19 147.7 T
(WRITE) 305.19 147.7 T
1 9 Q
(D8) 189 133.03 T
(0.4 Mb / S) 251.19 133.03 T
(0.6 Mb / S) 305.19 133.03 T
(D16) 189 118.03 T
(0.8 Mb / S) 251.19 118.03 T
(1.3 Mb / S) 305.19 118.03 T
(D32) 189 103.03 T
(1.6 Mb / S) 251.19 103.03 T
(2.6 Mb / S) 305.19 103.03 T
FMENDPAGE
%%EndPage: "28" 29
%%Page: "29" 29
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(VME Bus Capabilities and Use) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(29) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
0 9 Q
(5.3.1) 178.01 568.03 T
(PIO Operations) 207 568.03 T
1 10 Q
(Some VME devices are only capable of operating in a slave mode. For these boards,) 207 555.37 T
(there are two alternative ways to access them: using PIO operations from a CPU or) 207 543.37 T
(using the DMA engine included in the POWERpath-2 architecture. PIO is the most) 207 531.36 T
(straightforward method and will generally require little or no rewriting to port applica-) 207 519.36 T
(tion software from other systems. However) 207 507.36 T
(, the bandwidth available through this) 379.8 507.36 T
(method is limited, especially for reads \050see T) 207 495.36 T
(able 5.\051. This is because PIO operations) 386.17 495.36 T
(cannot be pipelined - the entire path from the POWERchannel-2 to the VME bus and) 207 483.36 T
-0.08 (the CPU itself remains occupied from the time a PIO read starts to its completion. Each) 207 471.36 P
(PIO read operation requires two transfers over the POWERpath-2 bus; one to send the) 207 459.36 T
(VME address to be read, and another to retrieve the data. W) 207 447.37 T
(rite operations to the VME) 446.68 447.37 T
(bus are somewhat faster) 207 435.37 T
(, requiring data to be passed in only one direction. \050In contrast,) 302.91 435.37 T
(DMA transfers can be extensively pipelined through the use of data prefetching, which) 207 423.37 T
(is performed by the hardware.\051 Latency for single PIO reads from the VME bus is) 207 411.37 T
(approximately 4 microseconds.) 207 399.37 T
-0.38 (If multiple VME busses are in use, PIO bandwidth may be increased by using a dif) 207 375.37 P
-0.38 (ferent) 532.57 375.37 P
(CPU to perform PIO accesses to each VME bus. Using more than one CPU to do PIO) 207 363.37 T
(accesses to devices on the same VME bus will result in little or no increase in overall) 207 351.37 T
(bandwidth, due to the fact that the POWERpath-2 bus uses split transactions.) 207 339.37 T
0 9 Q
(5.3.2) 178.01 184.03 T
(DMA Engine) 207 184.03 T
1 10 Q
(Because of the modest PIO transfer rates achievable, a DMA engine is included as part) 207 171.37 T
-0.06 (of each VME bus in a POWERpath-2 system. The DMA engine enables ef) 207 159.37 P
-0.06 (\336cient block-) 505.04 159.37 P
(mode DMA transfers of data between system memory and VME boards which support) 207 147.37 T
(only slave mode \050PIO\051 operations.) 207 135.37 T
(Provided that blocks of data of at least 32 contiguous bytes are used, this DMA engine) 207 111.37 T
-0.25 (can transfer data at a higher rate than that achieved using PIO. The DMA engine is capa-) 207 99.37 P
1 9 Q
(D32 BLOCK) 207 621.03 T
(22 Mb / S) 269.19 621.03 T
(24 Mb / S) 323.19 621.03 T
(D64 BLOCK) 207 606.03 T
(55 Mb / S) 269.19 606.03 T
(58 Mb / S) 323.19 606.03 T
72 283.03 558 306.03 C
207 291.03 558 291.03 2 L
0.25 H
2 Z
0 X
0 K
N
72 291.03 198 291.03 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 72 277.03 T
(ABLE 5.) 76.83 277.03 T
6 F
(VME PIO Bandwidth \050CPU accessing Slave on VME Bus\051) 207 277.03 T
0 8 Q
(READ) 261 253.7 T
(WRITE) 315 253.7 T
1 9 Q
(D8) 207 239.03 T
(0.2 Mb / S) 261 239.03 T
-0.15 (0.75 Mb / S) 315 239.03 P
(D16) 207 224.03 T
(0.5 Mb / S) 261 224.03 T
(1.5 Mb / S) 315 224.03 T
(D32) 207 209.03 T
(1 Mb / S) 261 209.03 T
(3 Mb / S) 315 209.03 T
72 665.03 558 688.03 C
207 673.03 558 673.03 2 L
0.25 H
2 Z
0 X
0 K
N
72 673.03 198 673.03 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 72 659.03 T
(ABLE 4.) 76.83 659.03 T
6 F
(VME Bus DMA Performance \050using DMA board on VME\051) 207 659.03 T
0 8 Q
(READ) 269.19 635.7 T
(WRITE) 323.19 635.7 T
FMENDPAGE
%%EndPage: "29" 30
%%Page: "30" 30
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(VME Bus Capabilities and Use) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(30) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
1 10 Q
-0.37 (ble of performing D8, D16, D32, D32 Block, and D64 Block data transfers in A16, A24,) 189 680.66 P
(and A32 address spaces.) 189 668.66 T
-0.26 (T) 189 644.66 P
-0.26 (able 6 illustrates the performance of the DMA engine versus the size of the transfer for) 194.41 644.66 P
(a typical VME slave device using D32 accesses. The performance increases with) 189 632.66 T
(increasing block size because the start-up cost of using the DMA engine is amortized) 189 620.66 T
-0.11 (over a lar) 189 608.66 P
-0.11 (ger number of bytes. In systems with multiple VME busses, each bus includes) 226.34 608.66 P
-0.37 (an independent DMA engine, with the result that simultaneous performance on each bus) 189 596.66 P
(will be as shown in T) 189 584.66 T
(able 6. Performance using D64 transfers will be approximately) 274.08 584.66 T
(\050though somewhat less than\051 twice the performance shown in T) 189 572.66 T
(able 6.) 442.28 572.66 T
(A set of library functions for controlling the DMA engine from a user process is pro-) 189 548.66 T
(vided in IRIX with REACT) 189 536.66 T
(. These allow the user to set up buf) 299.31 536.66 T
(fers, map the DMA) 438.75 536.66 T
(engine into a process\325 virtual address space, and initiate DMA operations. \050See) 189 524.66 T
5 F
(usr) 189 512.66 T
(dma\0507\051) 201.4 512.66 T
1 F
( and) 230.27 512.66 T
5 F
(udmalib\0503\051) 249.7 512.66 T
1 F
(\051. The initialization routines use system calls, but the actual) 294.11 512.66 T
-0.23 (transfers are completed in user mode, eliminating the overhead of making a system call.) 189 305.66 P
(This keeps very low the overhead involved in using the DMA engine, resulting in a net) 189 293.66 T
(performance increase compared with PIOs for transfers of 32 bytes and lar) 189 281.66 T
(ger) 487.18 281.66 T
(.) 499.39 281.66 T
0 9 Q
(5.3.3) 160.01 258.33 T
(Intelligent I/O Controllers) 189 258.33 T
1 10 Q
(In addition to the techniques described above, it is possible to use a VME CPU board) 189 245.66 T
-0.3 (\050non-SGI\051 to act as an intelligent DMA engine to copy data between a slave VME board) 189 233.66 P
(and system memory) 189 221.66 T
(. This may of) 268.86 221.66 T
(fer advantages if non-contiguous blocks of data must) 321.98 221.66 T
-0.06 (be transferred, or if it is desirable to do some preprocessing of the data before writing it) 189 209.66 P
(to system memory) 189 197.66 T
(.) 262.2 197.66 T
54 480.33 540 503.33 C
189 488.33 540 488.33 2 L
0.25 H
2 Z
0 X
0 K
N
54 488.33 180 488.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 474.33 T
(ABLE 6.) 58.83 474.33 T
6 F
(VME DMA Engine Performance vs. Block Size \050MB / sec, D32 transfers\051) 189 474.33 T
0 8 Q
(Size \050bytes\051) 189 450.99 T
(READ) 245.43 450.99 T
(WRITE) 304.52 450.99 T
(BLOCK READ) 368.94 450.99 T
(BLOCK WRITE) 434.24 450.99 T
1 9 Q
(32) 189 436.33 T
(2.8) 245.43 436.33 T
(2.6) 304.52 436.33 T
(2.7) 368.94 436.33 T
(2.7) 434.24 436.33 T
(64) 189 421.33 T
(3.8) 245.43 421.33 T
(3.8) 304.52 421.33 T
(4.0) 368.94 421.33 T
(3.9) 434.24 421.33 T
(128) 189 406.33 T
(5.0) 245.43 406.33 T
(5.3) 304.52 406.33 T
(5.6) 368.94 406.33 T
(5.8) 434.24 406.33 T
(256) 189 391.33 T
(6.0) 245.43 391.33 T
(6.7) 304.52 391.33 T
(6.4) 368.94 391.33 T
(7.3) 434.24 391.33 T
(512) 189 376.33 T
(6.4) 245.43 376.33 T
(7.7) 304.52 376.33 T
(7.0) 368.94 376.33 T
(8.0) 434.24 376.33 T
(1024) 189 361.33 T
(6.8) 245.43 361.33 T
(8.0) 304.52 361.33 T
(7.5) 368.94 361.33 T
(8.8) 434.24 361.33 T
(2048) 189 346.33 T
(7.0) 245.43 346.33 T
(8.4) 304.52 346.33 T
(7.8) 368.94 346.33 T
(9.2) 434.24 346.33 T
(4096) 189 331.33 T
(7.1) 245.43 331.33 T
(8.7) 304.52 331.33 T
(7.9) 368.94 331.33 T
(9.4) 434.24 331.33 T
FMENDPAGE
%%EndPage: "30" 31
%%Page: "31" 31
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(SCSI Capabilities and Use) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(31) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
72 672.33 558 675.33 C
207 674.48 558 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
72 674.48 198 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(6.0) 207 679.33 T
( SCSI Capabilities and Use) 223.67 679.33 T
1 10 Q
(The system includes two SCSI-2 controllers on each POWERchannel-2 board, and has) 207 657.66 T
(the capability to add additional controllers on HIO modules in groups of three. Since) 207 645.66 T
-0.1 (these controllers are capable of dif) 207 633.66 P
-0.1 (ferential output, SCSI devices can be cabled long dis-) 344.24 633.66 P
(tances from the system cabinet. The SCSI controllers are inexpensive and ef) 207 621.66 T
(\336cient) 511.59 621.66 T
(DMA devices which make near) 207 609.66 T
(-optimum use of the POWERpath-2 bus bandwidth.) 333.36 609.66 T
(Using 16-bit SCSI, useful bandwidths of up to 14 megabytes per second may be) 207 585.66 T
(achieved on each SCSI channel. Using 8-bit SCSI, approximately 7 megabytes per sec-) 207 573.66 T
(ond is available. These bandwidths may be achieved by con\336guring the system to per-) 207 561.66 T
(form DMA directly into the user process\325 address space without buf) 207 549.66 T
(fering.) 478.84 549.66 T
(Although SCSI represents a non-traditional approach to controlling real-time external) 207 525.66 T
(hardware, some of our real-time customers are \336nding that it can be used to provide a) 207 513.66 T
(more cost-ef) 207 501.66 T
(fective interface than VME for controlling remote devices. The ability to) 257.05 501.66 T
(cable it long distances and the high density \050up to eight SCSI channels per POWER-) 207 489.66 T
(channel-2 Board\051 of connections make SCSI a particularly attractive option in the sys-) 207 477.66 T
(tem.) 207 465.66 T
FMENDPAGE
%%EndPage: "31" 32
%%Page: "32" 32
612 792 0 FMBEGINPAGE
54 750.68 540 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Summary of REACT System Functions) 189 739.85 T
54 726.98 540 726.98 2 L
0.25 H
N
54 75.33 540 75.33 2 L
2 Z
N
0 10 Q
(32) 54 60.96 T
0 9 Q
( of) 65.11 60.96 T
0 10 Q
( 33) 76.1 60.96 T
0 9 Q
(REACT In IRIX V) 189 60.96 T
(.5 T) 258.09 60.96 T
(echnical Report) 272.91 60.96 T
54 672.33 540 675.33 C
189 674.48 540 674.48 2 L
0.25 H
2 Z
0 X
0 K
N
54 674.48 180 674.48 2 L
0 Z
N
0 0 612 792 C
0 12 Q
0 X
0 K
(7.0) 189 679.33 T
( Summary of REACT System Functions) 205.67 679.33 T
54 619.33 540 642.33 C
189 627.33 540 627.33 2 L
0.25 H
2 Z
0 X
0 K
N
54 627.33 180 627.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 54 613.33 T
(ABLE 7.) 58.83 613.33 T
6 F
(REACT System Functions) 189 613.33 T
0 8 Q
(System Call Name) 189 589.99 T
(Description) 276 589.99 T
1 9 Q
(realtime\0505\051) 189 575.33 T
(Introduction to IRIX real-time facilities) 276 575.33 T
(sproc\0502\051) 189 560.33 T
(Creates share group process) 276 560.33 T
(ei\0507\051) 189 545.33 T
(External interrupt interface speci\336cation) 276 545.33 T
(ftimer\0501\051) 189 530.33 T
(Reports status of high-resolution interval timer) 276 530.33 T
(timers\0505\051) 189 515.33 T
(Description of BSD4.3 interval timers) 276 515.33 T
(systune\0501M\051) 189 500.33 T
(Displays or sets system tuning parameters) 276 500.33 T
(sleep\0502\051) 189 485.33 T
(Suspends process execution for speci\336ed time) 276 485.33 T
(time\0502\051) 189 470.33 T
(Returns time in seconds since 1/1/70) 276 470.33 T
(times\0502\051) 189 455.33 T
(Returns time since start of process) 276 455.33 T
(gettimeofday\0502\051) 189 440.33 T
(Returns current time in seconds and microseconds) 276 440.33 T
(syssgi\0502\051) 189 425.33 T
(Returns system-dependent information) 276 425.33 T
(mmap\0502\051) 189 410.33 T
(Maps range of I/O addresses to user) 276 410.33 T
(\325) 405.62 410.33 T
(s address space) 408.11 410.33 T
(frs_create\0503\051) 189 395.33 T
(Creates frame scheduler process group) 276 395.33 T
(frs_enqueue\0503\051) 189 380.33 T
(Enqueues a process on a minor frame) 276 380.33 T
(frs_join\0503\051) 189 365.33 T
(Connects an enqueued process to the frame scheduler) 276 365.33 T
(frs_start\0503\051) 189 350.33 T
(Starts frame scheduler) 276 350.33 T
(frs_yield\0503\051) 189 335.33 T
(Causes an enqueued process to yield the processor to another process) 276 335.33 T
(frs_destroy\0503\051) 189 320.33 T
(T) 276 320.33 T
(erminates a frame scheduler) 280.86 320.33 T
(sigaction\0502\051) 189 305.33 T
(Speci\336es and reports on handling of individual POSIX signals) 276 305.33 T
(sigaltstack\0502\051) 189 290.33 T
(Sets or gets signal on alternate stack) 276 290.33 T
(sigblock\0503B\051) 189 275.33 T
(Blocks signals from delivery to process \050BSD4.3\051) 276 275.33 T
(siginfo\0505\051) 189 260.33 T
(Returns information about signal generation) 276 260.33 T
(signal\0502\051) 189 245.33 T
(Interface to \050unreliable\051 System V UNIX signals) 276 245.33 T
(signal\0503B\051) 189 230.33 T
(Interface to \050reliable\051 BSD4.3 signals) 276 230.33 T
(signal\0505\051) 189 215.33 T
(Description of POSIX signal mechanism) 276 215.33 T
(sigpending\0502\051) 189 200.33 T
(Returns set of pending signals \050POSIX\051) 276 200.33 T
(sigprocmask\0502\051) 189 185.33 T
(Manipulates signals blocked from delivery to process \050POSIX\051) 276 185.33 T
(sigqueue\0503\051) 189 170.33 T
(Queues a signal to process or group of processes) 276 170.33 T
(sigsend\0502\051) 189 155.33 T
(Sends signal to process or group of processes) 276 155.33 T
(sigsuspend\0502\051) 189 140.33 T
(Releases blocked signals and waits for interrupt \050POSIX\051) 276 140.33 T
(sigsetops\0503\051) 189 125.33 T
(Manipulates and examines POSIX signal dispositions) 276 125.33 T
(sigset\0502\051) 189 110.33 T
(Manages signal disposition \050System V\051) 276 110.33 T
(sigstack\0502\051) 189 95.33 T
(Sets or gets signal stack context) 276 95.33 T
FMENDPAGE
%%EndPage: "32" 33
%%Page: "33" 33
612 792 0 FMBEGINPAGE
72 750.68 558 750.68 2 L
2 H
0 Z
0 X
0 K
N
0 9 Q
(Summary of REACT System Functions) 207 739.85 T
72 726.98 558 726.98 2 L
0.25 H
N
72 75.33 558 75.33 2 L
2 Z
N
(REACT In IRIX V) 207 60.96 T
(.5 T) 276.09 60.96 T
(echnical Report) 290.91 60.96 T
0 10 Q
(33) 522.29 60.96 T
0 9 Q
( of) 533.41 60.96 T
0 10 Q
(33) 546.89 60.96 T
1 9 Q
(sigtimedwait\0503\051) 207 620.33 T
(W) 294 620.33 T
(aits on set of signals with timeout) 301.77 620.33 T
(sigvec\0503B\051) 207 605.33 T
(Speci\336es and reports on disposition of individual BSD4.3 signals) 294 605.33 T
(sigwait\0503\051) 207 590.33 T
(Blocks process and waits for signal) 294 590.33 T
(sigwaitinfo\0503\051) 207 575.33 T
(Returns value of queued signal) 294 575.33 T
(sigwaitrt\0503\051) 207 560.33 T
(W) 294 560.33 T
(aits for queued signals \050IRIX 5.2 only\051) 301.77 560.33 T
(mpin\0502\051) 207 545.33 T
(Locks speci\336ed range of addresses in memory) 294 545.33 T
(munpin\0502\051) 207 530.33 T
(Unlocks speci\336ed range of addresses in memory) 294 530.33 T
(plock\0502\051) 207 515.33 T
(Locks entire virtual space in memory) 294 515.33 T
(punlock\0502\051) 207 500.33 T
(Unlocks entire virtual space) 294 500.33 T
(aio_read\0503\051) 207 485.33 T
(Issues aio read request) 294 485.33 T
(aio_write\0503\051) 207 470.33 T
(Issues aio write request) 294 470.33 T
(aio_cancel\0503\051) 207 455.33 T
(Cancels one or more aio requests) 294 455.33 T
(aio_error\0503\051) 207 440.33 T
(Returns error status of an aio request) 294 440.33 T
(aio_init\0503\051) 207 425.33 T
(Initializes POSIX asynchronous I/O interface) 294 425.33 T
(aio_return\0503\051) 207 410.33 T
(Returns error status of an aio request) 294 410.33 T
(aio_suspend\0503\051) 207 395.33 T
(Suspends calling process until aio request completes) 294 395.33 T
(lio_listio\0503\051) 207 380.33 T
(Issues multiple aio requests) 294 380.33 T
(schedctl\0502\051) 207 365.33 T
(Sets non-degrading priorities) 294 365.33 T
(pset\0501M\051) 207 350.33 T
(Displays and manages processor set information) 294 350.33 T
(usinit\0503P\051) 207 335.33 T
(Initializes shared arena) 294 335.33 T
(usmalloc\0503P\051) 207 320.33 T
(Allocates shared memory from shared arena) 294 320.33 T
(usnewlock\0503P\051) 207 305.33 T
(Allocates and initializes lock from shared arena) 294 305.33 T
(usnewsema\0503P\051) 207 290.33 T
(Allocates and initializes semaphore from shared arena) 294 290.33 T
(poll\0502\051) 207 275.33 T
(W) 294 275.33 T
(aits for completion of multiple \336le operations) 301.77 275.33 T
(usnewpollsema\0503P\051) 207 260.33 T
(Allocates and initializes pollable semaphore) 294 260.33 T
(blockproc\0502\051) 207 245.33 T
(Blocks a process) 294 245.33 T
(runon\0501\051) 207 230.33 T
(Locks process to a speci\336ed processor) 294 230.33 T
(mpa) 207 215.33 T
5 10 Q
(sysmp\0502\051) 222.48 215.33 T
1 9 Q
(dmin\050) 258.56 215.33 T
(1\051) 207 204.33 T
(Controls and reports processor status) 294 215.33 T
(sysmp\0502\051) 207 189.33 T
(Sets multiprocessing system parameters) 294 189.33 T
(1boot\0501M\051) 207 174.33 T
(Implements updates of) 294 174.33 T
5 10 Q
(/var/sysgen/system) 378.12 174.33 T
1 9 Q
(udmalib\0503X\051) 207 159.33 T
(Library of routines for using the DMA engine) 294 159.33 T
72 664.33 558 687.33 C
207 672.33 558 672.33 2 L
0.25 H
2 Z
0 X
0 K
N
72 672.33 198 672.33 2 L
0 Z
N
0 0 612 792 C
0 9 Q
0 X
0 K
(T) 72 658.33 T
(ABLE 7.) 76.83 658.33 T
6 F
(REACT System Functions) 207 658.33 T
0 8 Q
(System Call Name) 207 634.99 T
(Description) 294 634.99 T
FMENDPAGE
%%EndPage: "33" 34
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 33 1
%%DocumentFonts: Helvetica-Bold
%%+ Times-Roman
%%+ Times-Bold
%%+ Symbol
%%+ Courier-Bold
%%+ Times-Italic
%%+ Helvetica