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

6466 lines
168 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 /Palatino-Roman FMFONTDEFINE
1 0 /Helvetica-Bold FMFONTDEFINE
2 0 /Palatino-Italic FMFONTDEFINE
3 0 /Times-Roman FMFONTDEFINE
4 0 /Helvetica FMFONTDEFINE
5 0 /Palatino-Bold FMFONTDEFINE
6 0 /Courier 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
234 483.31 549 612 R
7 X
0 K
V
0 18 Q
0 X
-0.05 (The Real-time Frame Scheduler in IRIX) 234 600 P
(Pr) 234 578 T
(ogrammer) 251.65 578 T
(\325s Guide) 336.4 578 T
234 176.74 549 188.74 R
7 X
V
FMENDPAGE
%%EndPage: "1" 2
%%Page: "2" 2
612 792 0 FMBEGINPAGE
216 171 549 216 R
7 X
0 K
V
0 9 Q
0 X
(The Real-time Frame Scheduler in IRIX Pr) 216 210 T
(ogrammer) 382.35 210 T
(\325s Guide) 424.69 210 T
(CONTRIBUT) 216 669 T
(ORS) 269.28 669 T
(W) 216 648 T
(ritten by Luis Stevens) 224.32 648 T
(Edited by David Cortesi) 216 637 T
(Illustrated by Luis Stevens) 216 626 T
(\251 Copyright 1994 Silicon Graphics, Inc.\321 All Rights Reserved) 216 603 T
(This document contains pr) 216 591 T
(oprietary and con\336dential information of Silicon) 322.11 591 T
(Graphics, Inc. The contents of this document may not be disclosed to thir) 216 580 T
(d parties,) 505.54 580 T
(copied, or duplicated in any form, in whole or in part, without the prior written) 216 569 T
(permission of Silicon Graphics, Inc.) 216 558 T
(RESTRICTED RIGHTS LEGEND) 216 535 T
(Use, duplication, or disclosur) 216 523 T
(e of the technical data contained in this document by) 332.56 523 T
(the Government is subject to r) 216 512 T
(estrictions as set forth in subdivision \050c\051 \0501\051 \050ii\051 of the) 335.21 512 T
(Rights in T) 216 501 T
(echnical Data and Computer Softwar) 258.61 501 T
(e clause at DF) 405.9 501 T
(ARS 52.227-7013 and/) 460.3 501 T
(or in similar or successor clauses in the F) 216 490 T
(AR, or in the DOD or NASA F) 377.05 490 T
(AR) 496.73 490 T
(Supplement. Unpublished rights r) 216 479 T
(eserved under the Copyright Laws of the United) 351.85 479 T
(States. Contractor/manufactur) 216 468 T
(er is Silicon Graphics, Inc., 201) 338.28 468 T
(1 N. Shor) 458.42 468 T
(eline Blvd.,) 495.36 468 T
(Mountain V) 216 457 T
(iew) 263.57 457 T
(, CA 94039-731) 277.16 457 T
(1.) 335.71 457 T
(Silicon Graphics and IRIS ar) 216 434 T
(e r) 327.51 434 T
(egister) 337.45 434 T
(ed trademarks and IRIX is a trademark of) 363.8 434 T
(Silicon Graphics, Inc. Apollo is a r) 216 423 T
(egister) 350.61 423 T
(ed trademark of Apollo Computer) 376.96 423 T
(, Inc.) 512.99 423 T
-0.17 (FrameMaker is a r) 216 412 P
-0.17 (egister) 287.67 412 P
-0.17 (ed trademark of Frame technology) 314.03 412 P
-0.17 (, Inc. Hewlett-Packar) 450.18 412 P
-0.17 (d is) 532.92 412 P
-0.23 (a r) 216 401 P
-0.23 (egister) 225.9 401 P
-0.23 (ed trademark of Hewlett-Packar) 252.25 401 P
-0.23 (d Company) 379.58 401 P
-0.23 (. IBM is a r) 425.43 401 P
-0.23 (egister) 467.07 401 P
-0.23 (ed trademark) 493.42 401 P
-0.66 (of International Business Machines Corporation. Macintosh is a r) 216 390 P
-0.66 (egister) 467.94 390 P
-0.66 (ed trademark) 494.29 390 P
(of Apple Computer) 216 379 T
(, Inc.) 293.27 379 T
FMENDPAGE
%%EndPage: "2" 3
%%Page: "3" 3
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(3) 562 109.2 T
63 669.5 567 680.25 C
63 673.99 567 673.99 2 L
0.3 H
2 Z
0 X
0 K
N
234 674.45 277.57 677.45 R
V
0.5 H
0 Z
N
9 72 603 720 C
0 16 Q
0 X
0 K
(Contents) 234 658.84 T
0 10 Q
(What is Frame Scheduling 5) 234 596.84 T
(IRIX Process Scheduling 5) 234 581.84 T
(Operation of the FRS 5) 234 566.84 T
(Major and Minor Frames 6) 252 551.84 T
(Using Minor Frames 6) 252 536.84 T
(Using Multiple Processors 7) 252 521.84 T
(Defining the Time Base 8) 252 506.84 T
(Programming with the Frame Scheduler 8) 234 491.84 T
(Designing with the Frame Scheduler 8) 252 476.84 T
(Frame Scheduling Disciplines 9) 252 461.84 T
(Using the Background Discipline 10) 270 446.84 T
(Multiple Executions In A Major Frame 10) 270 431.84 T
(Using Multiple Consecutive Minor Frames 10) 270 416.84 T
(Preparing the System 11) 252 401.84 T
(Implementing a Single FRS 12) 252 386.84 T
(Implementing Multiple Synchronized Schedulers 13) 252 371.84 T
(Frame Scheduler Methods 14) 234 356.84 T
(Interrupt Sources 14) 252 341.84 T
(On-Chip Timer Interrupt 14) 270 326.84 T
(High-Resolution Timer 15) 270 311.84 T
(External Interrupts 15) 270 296.84 T
(Vertical Sync Interrupt 15) 270 281.84 T
(Device Driver Interrupt 15) 270 266.84 T
(Software Interrupt 16) 270 251.84 T
(Interrupt Isolation 16) 252 236.84 T
(Interrupt Synchronization 16) 252 221.84 T
(Startup Synchronization 17) 252 206.84 T
(Scheduling Within A Minor Frame 17) 252 191.84 T
(Frame Scheduler Signals 18) 252 176.84 T
FMENDPAGE
%%EndPage: "3" 4
%%Page: "4" 4
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(4) 45 109.2 T
0 F
(Contents) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(The Frame Scheduler API 19) 216 632.33 T
(Creating a Master or Slave Frame Scheduler 20) 234 617.33 T
(Enqueuing Processes to a Frame Scheduler 22) 234 602.33 T
(Joining a Frame Scheduler 24) 234 587.33 T
(Starting the Frame Scheduler 25) 234 572.33 T
(Yielding Control at the End of a Frame 26) 234 557.33 T
(Delivering Time-Base Interrupts to a Frame Scheduler 28) 234 542.33 T
(Stopping and Resuming Frame Schedulers 29) 234 527.33 T
(Dynamic Management of Scheduler Queues 30) 234 512.33 T
(Destroying a Frame Scheduler 32) 234 497.33 T
(The Frame Scheduler DDI 33) 216 482.33 T
(Frame Scheduler Initialization Function 33) 234 467.33 T
(Example of Initialization Function 34) 252 452.33 T
(Frame Scheduler Termination Function 35) 234 437.33 T
(Example of Termination Function 35) 252 422.33 T
(Exporting the Initialization and Termination Functions 35) 234 407.33 T
(Example of Exporting Entry Points 36) 252 392.33 T
(Generating Interrupts 36) 234 377.33 T
(Example of Generating Interrupt 36) 252 362.33 T
(Using a Device Driver 37) 234 347.33 T
(Examples 38) 216 332.33 T
(Basic Example 38) 234 317.33 T
(Real-time Application Specification 38) 252 302.33 T
(Frame Scheduler Design 39) 252 287.33 T
(Example of Scheduling Separate Programs 39) 234 272.33 T
(Example of Multiple Synchronized Schedulers 41) 234 257.33 T
(Example of Device Driver 42) 234 242.33 T
(Example of a 60 Hz Frame Rate 42) 234 227.33 T
(Example of Memory and Cache Management 43) 234 212.33 T
FMENDPAGE
%%EndPage: "4" 5
%%Page: "5" 5
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(5) 562 109.2 T
1 12 Q
(What is Frame Scheduling) 63 682.55 T
0 10 Q
-0.04 (A frame scheduler is a pr) 234 656.88 P
-0.04 (ocess execution manager that schedules pr) 344.91 656.88 P
-0.04 (ocesses) 532.36 656.88 P
(in a pr) 234 644.88 T
(ede\336ned, cyclic sequence. The scheduling period, or) 262.49 644.88 T
2 F
(frame) 495.04 644.88 T
0 F
(, is) 517.8 644.88 T
(determined by a r) 234 632.88 T
(epetitive time base, usually a pr) 312.68 632.88 T
(ocessor interr) 452.78 632.88 T
(upt.) 512.43 632.88 T
(The REACT/Pr) 234 608.88 T
(o Frame Scheduler \050FRS\051 pr) 302.86 608.88 T
(ovides this basic scheduling) 424.4 608.88 T
(service, but extends it with additional featur) 234 596.88 T
(es to cr) 429.32 596.88 T
(eate a powerful) 460.27 596.88 T
(development framework for r) 234 584.88 T
(eal-time applications, allowing r) 365.57 584.88 T
(eal-time) 507.96 584.88 T
(application developers to mor) 234 572.88 T
(e easily exploit the PowerPath-2 ar) 366.64 572.88 T
(chitectur) 519.42 572.88 T
(e.) 558.12 572.88 T
1 12 Q
(IRIX Process Scheduling) 63 531.55 T
0 10 Q
-0.19 (The normal IRIX scheduler is \337exible and tunable. Real-time executives can) 234 505.89 P
(use IRIX system calls to set r) 234 493.89 T
(eal-time priorities, to isolate and r) 359.28 493.89 T
(eserve) 508.4 493.89 T
(pr) 234 481.89 T
(ocessors, and to achieve low-over) 243.77 481.89 T
(head synchr) 391.77 481.89 T
(onization of multiple) 445.61 481.89 T
(pr) 234 469.89 T
(ocesses. \050These standar) 243.77 469.89 T
(d kernel featur) 345.72 469.89 T
(es ar) 410.79 469.89 T
(e described in the REACT) 431.08 469.89 T
(T) 234 457.89 T
(echnical Report.\051 However) 239.21 457.89 T
(, the designer of a r) 356.81 457.89 T
(eal-time application is) 441.37 457.89 T
(r) 234 445.89 T
(equir) 237.77 445.89 T
(ed to understand and integrate a variety of privileged system calls) 260.86 445.89 T
-0.66 (while cr) 234 433.89 P
-0.66 (eating a multipr) 268.8 433.89 P
-0.66 (ocessor scheduling mechanism\321work that is at best) 338.49 433.89 P
(a distraction fr) 234 421.89 T
(om the r) 298.42 421.89 T
(eal task of designing a high-performance r) 335.33 421.89 T
(eal-time) 522.08 421.89 T
(pr) 234 409.89 T
(ogram.) 243.77 409.89 T
(The REACT/Pr) 234 385.89 T
(o Frame Scheduler integrates the IRIX scheduler featur) 302.86 385.89 T
(es) 544.71 385.89 T
(and extends them, pr) 234 373.89 T
(oviding an ef) 327.53 373.89 T
(\336cient and easy-to-use framework for) 385.68 373.89 T
(r) 234 361.89 T
(eal-time application development.) 237.77 361.89 T
1 12 Q
(Operation of the FRS) 63 320.55 T
0 10 Q
(A single FRS is a kernel object that cyclicly schedules a set of pr) 234 294.89 T
(ocesses,) 515.87 294.89 T
(accor) 234 282.89 T
(ding to pr) 257.1 282.89 T
(ogram-de\336ned r) 300.97 282.89 T
(ules, on a speci\336c pr) 373.1 282.89 T
(ocessor) 462.46 282.89 T
(. The FRS) 494.29 282.89 T
-0.38 (super) 234 270.89 P
-0.38 (cedes the IRIX scheduler) 258.83 270.89 P
-0.38 (, so that only FRS-scheduled pr) 365.8 270.89 P
-0.38 (ocesses r) 501.47 270.89 P
-0.38 (un on) 539.64 270.89 P
(that pr) 234 258.89 T
(ocessor) 263.6 258.89 T
(.) 295.43 258.89 T
(The application designer determines how many pr) 234 234.89 T
(ocessors ar) 457.62 234.89 T
(e r) 505.68 234.89 T
(equir) 516.73 234.89 T
(ed to) 539.82 234.89 T
-0.73 (meet the performance r) 234 222.89 P
-0.73 (equir) 334.92 222.89 P
-0.73 (ements, and initiates one FRS for each pr) 358.01 222.89 P
-0.73 (ocessor) 532.67 222.89 P
(to be used.) 234 210.89 T
FMENDPAGE
%%EndPage: "5" 6
%%Page: "6" 6
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(6) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Major and Minor Frames) 216 631.33 T
0 10 Q
-0.67 (W) 216 606.83 P
-0.67 (ithin one FRS, each scheduling cycle is initiated by a r) 225.45 606.83 P
-0.67 (eal-time event. These) 455.17 606.83 P
(r) 216 594.83 T
(epetitive events divide time into intervals called) 219.77 594.83 T
2 9 Q
(minor frames) 434.48 594.83 T
0 10 Q
(. A \336xed) 482.67 594.83 T
(number of minor frames is de\336ned as a) 216 582.83 T
2 9 Q
(major frame) 391.81 582.83 T
0 10 Q
(. The major frame is the) 435.5 582.83 T
(basic r) 216 570.83 T
(epetitive unit.) 244.37 570.83 T
-0.09 (Each minor frame has a private pr) 216 546.83 P
-0.09 (ocess queue listing all the pr) 366.05 546.83 P
-0.09 (ocesses to be) 490.55 546.83 P
(r) 216 534.83 T
(un within the minor frame interval, as shown in the following \336gur) 219.87 534.83 T
(e.) 517.27 534.83 T
-0.64 (W) 216 264.52 P
-0.64 (ithin a minor frame, pr) 225.45 264.52 P
-0.64 (ocesses ar) 323.71 264.52 P
-0.64 (e dispatched in the or) 366.52 264.52 P
-0.64 (der that they appear) 459.22 264.52 P
(in the queue. \050Normal Irix pr) 216 252.52 T
(ocess priorities ar) 343.73 252.52 T
(e ignor) 421.02 252.52 T
(ed by the FRS.\051) 451.81 252.52 T
1 11.5 Q
(Using Minor Frames) 216 215.52 T
0 10 Q
(Pr) 216 191.02 T
(ocesses ar) 225.8 191.02 T
(e enqueued to one or mor) 269.25 191.02 T
(e minor frames. The queues they) 382.7 191.02 T
(appear on, and their or) 216 179.02 T
(der in those queues, determines their r) 317.37 179.02 T
(elative) 487.4 179.02 T
(execution sequence within the major frame. Pr) 216 167.02 T
(ocesses can be queued to) 420.77 167.02 T
-0.47 (mor) 216 155.02 P
-0.47 (e than one queue, so as to be scheduled mor) 234.05 155.02 P
-0.47 (e than once in a major frame.) 423.98 155.02 P
198 285.19 549 531.5 C
510.46 435.81 522 432.5 510.46 429.19 510.46 432.5 4 Y
0 X
0 K
V
216 432.5 510.46 432.5 2 L
1 H
2 Z
N
234 441.5 234 423.5 2 L
3 H
N
342 441.5 342 423.5 2 L
N
450 441.5 450 423.5 2 L
N
270 441.5 270 423.5 2 L
0.5 H
N
306 441.5 306 423.5 2 L
N
378 441.5 378 423.5 2 L
N
414 441.5 414 423.5 2 L
N
486 441.5 486 423.5 2 L
N
342 504.5 342 441.5 2 L
1 X
N
234 504.5 234 441.5 2 L
N
450 504.5 450 441.5 2 L
N
270 468.5 270 441.5 2 L
N
306 468.5 306 441.5 2 L
N
378 468.5 378 441.5 2 L
N
245.54 465.19 234 468.5 245.54 471.81 245.54 468.5 4 Y
0 X
V
258.46 471.81 270 468.5 258.46 465.19 258.46 468.5 4 Y
V
245.54 468.5 258.46 468.5 2 L
0 Z
N
281.54 465.19 270 468.5 281.54 471.81 281.54 468.5 4 Y
V
294.46 471.81 306 468.5 294.46 465.19 294.46 468.5 4 Y
V
281.54 468.5 294.46 468.5 2 L
N
317.54 465.19 306 468.5 317.54 471.81 317.54 468.5 4 Y
V
330.46 471.81 342 468.5 330.46 465.19 330.46 468.5 4 Y
V
317.54 468.5 330.46 468.5 2 L
N
414 468.5 414 441.5 2 L
2 Z
1 X
N
353.54 465.19 342 468.5 353.54 471.81 353.54 468.5 4 Y
0 X
V
366.46 471.81 378 468.5 366.46 465.19 366.46 468.5 4 Y
V
353.54 468.5 366.46 468.5 2 L
0 Z
N
389.54 465.19 378 468.5 389.54 471.81 389.54 468.5 4 Y
V
402.46 471.81 414 468.5 402.46 465.19 402.46 468.5 4 Y
V
389.54 468.5 402.46 468.5 2 L
N
425.54 465.19 414 468.5 425.54 471.81 425.54 468.5 4 Y
V
438.46 471.81 450 468.5 438.46 465.19 438.46 468.5 4 Y
V
425.54 468.5 438.46 468.5 2 L
N
486 468.5 486 441.5 2 L
2 Z
1 X
N
461.54 465.19 450 468.5 461.54 471.81 461.54 468.5 4 Y
0 X
V
474.46 471.81 486 468.5 474.46 465.19 474.46 468.5 4 Y
V
461.54 468.5 474.46 468.5 2 L
0 Z
N
245.54 501.19 234 504.5 245.54 507.81 245.54 504.5 4 Y
V
330.46 507.81 342 504.5 330.46 501.19 330.46 504.5 4 Y
V
245.54 504.5 330.46 504.5 2 L
N
353.54 501.19 342 504.5 353.54 507.81 353.54 504.5 4 Y
V
438.46 507.81 450 504.5 438.46 501.19 438.46 504.5 4 Y
V
353.54 504.5 438.46 504.5 2 L
N
461.54 501.19 450 504.5 461.54 507.81 461.54 504.5 4 Y
V
461.54 504.5 486 504.5 2 L
2 Z
N
351 333.5 369 405.5 R
0 Z
N
351 333.5 351 315.5 2 L
2 Z
N
369 333.5 369 315.5 2 L
N
351 351.5 369 351.5 2 L
N
351 369.5 369 369.5 2 L
N
351 387.5 369 387.5 2 L
N
356.69 411.96 360 423.5 363.31 411.96 360 411.96 4 Y
V
360 405.5 360 411.96 2 L
N
387 333.5 405 405.5 R
0 Z
N
387 333.5 387 315.5 2 L
2 Z
N
405 333.5 405 315.5 2 L
N
387 351.5 405 351.5 2 L
N
387 369.5 405 369.5 2 L
N
387 387.5 405 387.5 2 L
N
392.69 411.96 396 423.5 399.31 411.96 396 411.96 4 Y
V
396 405.5 396 411.96 2 L
N
423 333.5 441 405.5 R
0 Z
N
423 333.5 423 315.5 2 L
2 Z
N
441 333.5 441 315.5 2 L
N
423 351.5 441 351.5 2 L
N
423 369.5 441 369.5 2 L
N
423 387.5 441 387.5 2 L
N
428.69 411.96 432 423.5 435.31 411.96 432 411.96 4 Y
V
432 405.5 432 411.96 2 L
N
3 10 Q
(Major Frame) 370.54 515.68 T
(Major Frame) 261 515.68 T
3 7 Q
(Minor) 243 477.5 T
(-0) 260.33 477.5 T
(Minor) 279 477.5 T
(-1) 296.33 477.5 T
(Minor) 315 477.5 T
(-2) 332.33 477.5 T
(Minor) 351 477.5 T
(-0) 368.33 477.5 T
(Minor) 387 477.5 T
(-1) 404.33 477.5 T
(Minor) 423 477.5 T
(-2) 440.33 477.5 T
3 8 Q
(TIME) 504 414.5 T
(Q0) 351 306.5 T
(Q1) 387 306.5 T
(Q2) 423 306.5 T
338.69 411.96 342 423.5 345.31 411.96 342 411.96 4 Y
V
342 411.96 342 405.5 2 L
N
482.69 411.96 486 423.5 489.31 411.96 486 411.96 4 Y
V
486 411.96 486 405.5 2 L
N
446.69 411.96 450 423.5 453.31 411.96 450 411.96 4 Y
V
450 411.96 450 405.5 2 L
N
410.69 411.96 414 423.5 417.31 411.96 414 411.96 4 Y
V
414 411.96 414 405.5 2 L
N
374.69 411.96 378 423.5 381.31 411.96 378 411.96 4 Y
V
378 411.96 378 405.5 2 L
N
302.69 411.96 306 423.5 309.31 411.96 306 411.96 4 Y
V
306 411.96 306 405.5 2 L
N
266.69 411.96 270 423.5 273.31 411.96 270 411.96 4 Y
V
270 411.96 270 405.5 2 L
N
230.69 411.96 234 423.5 237.31 411.96 234 411.96 4 Y
V
234 411.96 234 405.5 2 L
N
(Real-time Event Interrupts) 234 396.5 T
(Process Queues) 450 342.5 T
9 72 603 720 C
26 151.69 27 197.69 R
0 X
0 K
V
FMENDPAGE
%%EndPage: "6" 7
%%Page: "7" 7
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Operation of the FRS) 483.18 679.44 T
1 F
(7) 562 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(A pr) 234 632.33 T
(ocess is enqueued under one of a variety of scheduling disciplines) 254.05 632.33 T
(\050described later\051, allowing even mor) 234 620.33 T
(e \337exibility) 393.87 620.33 T
(.) 442.05 620.33 T
1 11.5 Q
(Using Multiple Processors) 234 583.33 T
0 10 Q
-0.06 (Cr) 234 558.83 P
-0.06 (eating an FRS establishes its contr) 244.85 558.83 P
-0.06 (ol over a single pr) 393.52 558.83 P
-0.06 (ocessor) 472.47 558.83 P
-0.06 (. An FRS may) 504.29 558.83 P
(be invoked on all but one of the pr) 234 546.83 T
(ocessors in a Challenge or Onyx system.) 385.97 546.83 T
-0.1 (\050One pr) 234 534.83 P
-0.1 (ocessor) 267.96 534.83 P
-0.1 (, usually pr) 299.79 534.83 P
-0.1 (ocessor 0 by convention, must be left available to) 349.52 534.83 P
(r) 234 522.83 T
(un daemons and other normal UNIX housekeeping pr) 237.87 522.83 T
(ocesses.\051) 477.21 522.83 T
-0.32 (Once invoked, an FRS has full contr) 234 498.83 P
-0.32 (ol over its pr) 390 498.83 P
-0.32 (ocessor) 444.92 498.83 P
-0.32 (. For multipr) 476.74 498.83 P
-0.32 (ocessor) 532.26 498.83 P
(applications, the pr) 234 486.83 T
(ogrammer cr) 319.07 486.83 T
(eates one FRS per pr) 376.12 486.83 T
(ocessor) 466.24 486.83 T
(, and de\336nes a) 498.07 486.83 T
(master) 234 474.83 T
(-slave r) 263.87 474.83 T
(elationship among the FRSs. The interr) 296.05 474.83 T
(upts that de\336ne the) 470.19 474.83 T
(scheduling time base ar) 234 462.83 T
(e br) 338.19 462.83 T
(oadcast to the FRSs by an) 354.77 462.83 T
2 F
(interrupt gr) 469.45 462.83 T
(oup) 517.86 462.83 T
0 F
(,) 532.86 462.83 T
(implemented using the interr) 234 450.83 T
(upt multicasting capability available on the) 363.51 450.83 T
(Challenge \050see the paper \322Gr) 234 438.83 T
(oup Interr) 361.8 438.83 T
(upts on Challenge and Onyx) 406.83 438.83 T
(Systems,\323 distributed with REACT/Pr) 234 426.83 T
(o\051 to keep them in synchr) 404.17 426.83 T
(ony) 516.34 426.83 T
(.) 532.07 426.83 T
231.87 223.62 567 423.5 C
5 X
0 K
90 450 9 9 270 325.02 G
0.5 H
0 Z
0 X
90 450 9 9 270 325.02 A
7 X
90 450 18 18 342 379.02 G
0 X
90 450 18 18 342 379.02 A
7 X
90 450 18 18 342 325.02 G
0 X
90 450 18 18 342 325.02 A
7 X
90 450 18 18 342 271.02 G
0 X
90 450 18 18 342 271.02 A
3 8 Q
(CPU1) 333 379.02 T
(CPU2) 333 325.02 T
(CPU3) 333 271.02 T
546.47 382.33 558 379.02 546.47 375.72 546.47 379.02 4 Y
V
396 379.02 546.47 379.02 2 L
7 X
V
1 H
2 Z
0 X
N
414 388.02 414 370.02 2 L
7 X
V
3 H
0 X
N
450 388.02 450 370.02 2 L
7 X
V
0.5 H
0 X
N
486 388.02 486 370.02 2 L
7 X
V
0 X
N
522 388.02 522 370.02 2 L
7 X
V
3 H
0 X
N
423 343.02 441 361.02 R
0.5 H
0 Z
N
428.69 367.49 432 379.02 435.31 367.49 432 367.49 4 Y
V
432 361.02 432 367.49 2 L
2 Z
N
423 352.02 441 352.02 2 L
N
459 343.02 477 361.02 R
0 Z
N
464.69 367.49 468 379.02 471.31 367.49 468 367.49 4 Y
V
468 361.02 468 367.49 2 L
2 Z
N
459 352.02 477 352.02 2 L
N
495 343.02 513 361.02 R
0 Z
N
500.69 367.49 504 379.02 507.31 367.49 504 367.49 4 Y
V
504 361.02 504 367.49 2 L
2 Z
N
495 352.02 513 352.02 2 L
N
546.47 328.33 558 325.02 546.47 321.72 546.47 325.02 4 Y
V
396 325.02 546.47 325.02 2 L
1 H
N
414 334.02 414 316.02 2 L
3 H
N
450 334.02 450 316.02 2 L
0.5 H
N
486 334.02 486 316.02 2 L
N
522 334.02 522 316.02 2 L
3 H
N
423 289.02 441 307.02 R
0.5 H
0 Z
N
428.69 313.49 432 325.02 435.31 313.49 432 313.49 4 Y
V
432 307.02 432 313.49 2 L
2 Z
N
423 298.02 441 298.02 2 L
N
459 289.02 477 307.02 R
0 Z
N
464.69 313.49 468 325.02 471.31 313.49 468 313.49 4 Y
V
468 307.02 468 313.49 2 L
2 Z
N
459 298.02 477 298.02 2 L
N
495 289.02 513 307.02 R
0 Z
N
500.69 313.49 504 325.02 507.31 313.49 504 313.49 4 Y
V
504 307.02 504 313.49 2 L
2 Z
N
495 298.02 513 298.02 2 L
N
546.47 274.33 558 271.02 546.47 267.72 546.47 271.02 4 Y
V
396 271.02 546.47 271.02 2 L
1 H
N
414 280.02 414 262.02 2 L
3 H
N
450 280.02 450 262.02 2 L
0.5 H
N
486 280.02 486 262.02 2 L
N
522 280.02 522 262.02 2 L
3 H
N
423 235.02 441 253.02 R
0.5 H
0 Z
N
428.69 259.49 432 271.02 435.31 259.49 432 259.49 4 Y
V
432 253.02 432 259.49 2 L
2 Z
N
423 244.02 441 244.02 2 L
N
459 235.02 477 253.02 R
0 Z
N
464.69 259.49 468 271.02 471.31 259.49 468 259.49 4 Y
V
468 253.02 468 259.49 2 L
2 Z
N
459 244.02 477 244.02 2 L
N
495 235.02 513 253.02 R
0 Z
N
500.69 259.49 504 271.02 507.31 259.49 504 259.49 4 Y
V
504 253.02 504 259.49 2 L
2 Z
N
495 244.02 513 244.02 2 L
N
414 379.02 414 271.02 2 L
1 H
4 X
N
450 379.02 450 271.02 2 L
N
486 379.02 486 271.02 2 L
N
522 379.02 522 271.02 2 L
N
313.03 365.15 324 370.03 317.28 360.08 315.15 362.62 4 Y
0 X
V
270 325.02 315.16 362.62 2 L
0.5 H
N
312.46 328.33 324 325.02 312.46 321.72 312.46 325.02 4 Y
V
270 325.02 312.46 325.02 2 L
N
317.28 289.97 324 280.03 313.03 284.9 315.15 287.43 4 Y
V
270 325.02 315.16 287.43 2 L
N
(Interrupt) 252 298.02 T
(Source) 252 290.02 T
(Synchronous) 396 406.02 T
(Frame Schedulers) 396 398.02 T
(Multicast) 270 379.02 T
(Interrupts) 270 371.02 T
9 72 603 720 C
44 629 45 639 R
0 X
0 K
V
FMENDPAGE
%%EndPage: "7" 8
%%Page: "8" 8
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(8) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(De\336ning the T) 216 631.33 T
(ime Base) 292.4 631.33 T
0 10 Q
(Synchr) 216 606.83 T
(onization to any interr) 246.64 606.83 T
(upt sour) 345.43 606.83 T
(ce on a Challenge or Onyx system is) 382.71 606.83 T
(possible, including synchr) 216 594.83 T
(onization to:) 331.69 594.83 T
4 9 Q
(\245) 216 576.83 T
0 10 Q
(A speci\336ed frame interval measur) 234 576.83 T
(ed by a high-pr) 383.89 576.83 T
(ecision clock that is) 451.56 576.83 T
(synchr) 234 564.83 T
(onized in all pr) 263.63 564.83 T
(ocessors) 330.52 564.83 T
4 9 Q
(\245) 216 546.83 T
0 10 Q
-0.18 (An external interr) 234 546.83 P
-0.18 (upt \050r) 312.48 546.83 P
-0.18 (efer to the ei\0507\051 man page for details on external) 337.18 546.83 P
(interr) 234 534.83 T
(upt support\051) 258.59 534.83 T
4 9 Q
(\245) 216 516.83 T
0 10 Q
(The vertical r) 234 516.83 T
(etrace interr) 292.39 516.83 T
(upt fr) 345.69 516.83 T
(om the graphics subsystem) 370.58 516.83 T
4 9 Q
(\245) 216 498.83 T
0 10 Q
(A call generated by a kernel-level device driver) 234 498.83 T
4 9 Q
(\245) 216 480.83 T
0 10 Q
(Pr) 234 480.83 T
(ogram-supplied interr) 243.8 480.83 T
(upts fr) 341.99 480.83 T
(om a pr) 371.11 480.83 T
(ogram-de\336ned time base \050most) 405.17 480.83 T
(often used for debugging\051) 234 468.83 T
(The master FRS sets up an interr) 216 444.83 T
(upt gr) 359.21 444.83 T
(oup, to synchr) 386.33 444.83 T
(onize the slave FRSs.) 449.66 444.83 T
1 12 Q
(Programming with the Frame Scheduler) 45 403.5 T
0 10 Q
(This section summarizes the pr) 216 377.83 T
(ocess of designing and implementing a) 353.41 377.83 T
(r) 216 365.83 T
(eal-time application based on the REACT/Pr) 219.77 365.83 T
(o Frame Scheduler) 418.19 365.83 T
(.) 500.08 365.83 T
1 11.5 Q
(Designing with the Frame Scheduler) 216 328.83 T
0 10 Q
-0.1 (Use of the Frame Scheduler permits the designer to plan in terms of a set of) 216 304.33 P
(abstract activities that must be completed in each major frame. A typical) 216 292.33 T
-0.17 (pr) 216 280.33 P
-0.17 (ogram would consist of a par) 225.77 280.33 P
-0.17 (ent pr) 353.96 280.33 P
-0.17 (ocess that initializes r) 379.93 280.33 P
-0.17 (esour) 473.82 280.33 P
-0.17 (ces; cr) 498.1 280.33 P
-0.17 (eates) 524.6 280.33 P
(the needed FRSs; then cr) 216 268.33 T
(eates each activity in the form of a lightweight) 324.35 268.33 T
(pr) 216 256.33 T
(ocess started with spr) 225.77 256.33 T
(oc\0502\051 or with fork\0502\051.) 321.35 256.33 T
(The \336rst step of each child pr) 216 232.33 T
(ocess would be to join its assigned Frame) 344.28 232.33 T
(Scheduler) 216 220.33 T
(. Ther) 259.33 220.33 T
(eafter each child pr) 284.82 220.33 T
(ocess is dispatched by the FRS at the) 369.42 220.33 T
(appr) 216 208.33 T
(opriate time within a major frame, when it r) 236.78 208.33 T
(uns until it yields contr) 430.69 208.33 T
(ol.) 533.1 208.33 T
FMENDPAGE
%%EndPage: "8" 9
%%Page: "9" 9
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Programming with the Frame Scheduler) 406.23 679.44 T
1 F
(9) 562 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(T) 234 632.33 T
(o take advantage of this model, the designer would:) 239.21 632.33 T
4 9 Q
(\245) 234 614.33 T
0 10 Q
(Specify the r) 252 614.33 T
(eal-time pr) 306.9 614.33 T
(ogram in terms of logically-independent) 354.97 614.33 T
-0.03 (abstract activities, noting which must r) 252 602.33 P
-0.03 (un serially and which could r) 423.2 602.33 P
-0.03 (un) 552.69 602.33 P
(concurr) 252 590.33 T
(ently) 285.89 590.33 T
(.) 307.11 590.33 T
4 9 Q
(\245) 234 572.33 T
0 10 Q
(Estimate the execution time of each activity) 252 572.33 T
(.) 442.33 572.33 T
4 9 Q
(\245) 234 554.33 T
0 10 Q
(Allocate the activities to as few pr) 252 554.33 T
(ocessors as possible, based on the) 400.91 554.33 T
(execution times and the possibilities for concurr) 252 542.33 T
(ent execution.) 463.34 542.33 T
4 9 Q
(\245) 234 524.33 T
0 10 Q
(Plan the frame schedule in terms of the interr) 252 524.33 T
(upt sour) 451.62 524.33 T
(ce to use, the) 488.9 524.33 T
(number of minor frames per major frame, and the queue that each) 252 512.33 T
(pr) 252 500.33 T
(ocess should join.) 261.77 500.33 T
1 11.5 Q
(Frame Scheduling Disciplines) 234 463.33 T
0 10 Q
(In the simplest case, the pr) 234 438.83 T
(ocess that r) 351.31 438.83 T
(epr) 400.56 438.83 T
(esents an activity should start) 415.12 438.83 T
-0.42 (during the minor frame to which it is queued, and should complete its work) 234 426.83 P
(and yield within the same minor frame.) 234 414.83 T
-0.37 (If the pr) 234 390.83 P
-0.37 (ocess is not r) 268.6 390.83 P
-0.37 (eady to r) 323.6 390.83 P
-0.37 (un \050for example, is blocked on I/O\051 during the) 361.9 390.83 P
(entir) 234 378.83 T
(e minor frame, an) 254.54 378.83 T
2 F
(underrun) 335.47 378.83 T
0 F
( err) 374.36 378.83 T
(or is said to occur) 389.36 378.83 T
(. If the pr) 466.44 378.83 T
(ocess fails to) 506.77 378.83 T
(complete its work and yield within the minor frame interval, an) 234 366.83 T
2 F
(overrun) 518.17 366.83 T
0 F
(err) 234 354.83 T
(or is said to occur) 246.5 354.83 T
(.) 323.58 354.83 T
(The Frame Scheduler calls this strict discipline the Realtime scheduling) 234 330.83 T
(discipline. However) 234 318.83 T
(, a number of other disciplines ar) 322.56 318.83 T
(e supported for) 468.06 318.83 T
(\337exibility of design.) 234 306.83 T
(Underr) 234 288.83 T
(unnable) 266.3 288.83 T
(Underr) 306 276.83 T
(un err) 338.3 276.83 T
(ors ar) 365.15 276.83 T
(e ignor) 390.05 276.83 T
(ed but overr) 420.85 276.83 T
(un err) 475.26 276.83 T
(ors ar) 502.1 276.83 T
(e) 527.01 276.83 T
(detected. Underr) 306 264.83 T
(unable pr) 380.83 264.83 T
(ocesses ar) 423.17 264.83 T
(e allowed to skip) 466.61 264.83 T
(frames; however) 306 252.83 T
(, if they do r) 379.16 252.83 T
(un they must yield befor) 432.74 252.83 T
(e the) 541.48 252.83 T
(end of the frame, or they cause an overrr) 306 240.83 T
(un err) 485.51 240.83 T
(or) 512.36 240.83 T
(.) 521.02 240.83 T
(Overr) 234 222.83 T
(unnable) 260.11 222.83 T
(Overr) 306 210.83 T
(un err) 332.11 210.83 T
(ors ar) 358.95 210.83 T
(e ignor) 383.86 210.83 T
(ed but underrr) 414.65 210.83 T
(un err) 479.85 210.83 T
(ors ar) 506.7 210.83 T
(e) 531.61 210.83 T
(detected. Overr) 306 198.83 T
(unable pr) 374.63 198.83 T
(ocesses must execute on every) 416.97 198.83 T
(frame to which they ar) 306 186.83 T
(e queued, but they ar) 406.1 186.83 T
(e not r) 499.7 186.83 T
(equir) 527.79 186.83 T
(ed) 550.87 186.83 T
(to yield befor) 306 174.83 T
(e the end of the frame.) 364.85 174.83 T
44 303.5 45 313.5 R
V
FMENDPAGE
%%EndPage: "9" 10
%%Page: "10" 10
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(10) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(Underr) 216 632.33 T
(unnable + Overr) 248.3 632.33 T
(unnable) 321.34 632.33 T
(Neither err) 288 620.33 T
(or is detected. These pr) 336.81 620.33 T
(ocesses can skip frames) 438.92 620.33 T
(and overr) 288 608.33 T
(un them.) 331.13 608.33 T
(Overr) 216 590.33 T
(unnable + Continuable) 242.11 590.33 T
(This discipline is used to allow a pr) 288 578.33 T
(ocess to extend its) 444 578.33 T
(execution beyond a single minor frame.) 288 566.33 T
(Backgr) 216 548.33 T
(ound) 246.42 548.33 T
(A pr) 288 536.33 T
(ocess with Backgr) 308.05 536.33 T
(ound discipline r) 386.95 536.33 T
(uns only when all) 462.24 536.33 T
(Realtime pr) 288 524.33 T
(ocesses in its queue have yielded, that is, only) 339.42 524.33 T
-0.6 (when the pr) 288 512.33 P
-0.6 (ocessor would otherwise be idle. Underr) 340.19 512.33 P
-0.6 (un and) 516.44 512.33 P
(overr) 288 500.33 T
(un err) 311.71 500.33 T
(ors ar) 338.55 500.33 T
(e not r) 363.46 500.33 T
(elevant to this discipline.) 391.54 500.33 T
1 9.5 Q
(Using the Background Discipline) 216 472.67 T
0 10 Q
(The backgr) 216 448.83 T
(ound discipline is mutually exclusive with the other discipline) 265.07 448.83 T
-0.33 (types. The Frame Scheduler only dispatches a Backgr) 216 436.83 P
-0.33 (ound pr) 448.41 436.83 P
-0.33 (ocess when all) 483.76 436.83 P
(other pr) 216 424.83 T
(ocesses queued to that minor frame have r) 251.54 424.83 T
(un and have yielded.) 438.55 424.83 T
(Since the Backgr) 216 412.83 T
(ound pr) 288.48 412.83 T
(ocess cannot be sur) 324.16 412.83 T
(e it will r) 408.94 412.83 T
(un and cannot pr) 448.32 412.83 T
(edict) 524.14 412.83 T
(how much time it will have, the concepts of underr) 216 400.83 T
(un and overr) 441.6 400.83 T
(un do not) 499.06 400.83 T
(apply to it.) 216 388.83 T
4 9 Q
-0.44 (Note:) 216 364.83 P
0 10 Q
-0.44 (A pr) 241.59 364.83 P
-0.44 (ocess with the Backgr) 261.2 364.83 P
-0.44 (ound discipline must be queued to its frame) 355.12 364.83 P
(following all non-Backgr) 216 352.83 T
(ound pr) 325.33 352.83 T
(ocesses. Do not queue a r) 361.01 352.83 T
(eal-time pr) 471.9 352.83 T
(ocess) 519.97 352.83 T
(after a Backgr) 216 340.83 T
(ound pr) 276.74 340.83 T
(ocess.) 312.42 340.83 T
1 9.5 Q
(Multiple Executions In A Major Frame) 216 313.17 T
0 10 Q
(A pr) 216 289.33 T
(ocess can be scheduled to r) 236.05 289.33 T
(un and yield mor) 355.06 289.33 T
(e than once in a major) 431.64 289.33 T
(frame, by queueing it to mor) 216 277.33 T
(e than one minor frame.) 342.4 277.33 T
4 9 Q
(Note:) 216 253.33 T
0 10 Q
(A pr) 242.48 253.33 T
(ocess cannot be queued for dispatch by mor) 262.53 253.33 T
(e than one FRS. A) 456.24 253.33 T
(pr) 216 241.33 T
(ocess can be dispatched in multiple minor frames, but on only one) 225.77 241.33 T
(pr) 216 229.33 T
(ocessor) 225.77 229.33 T
(. T) 257.6 229.33 T
(o r) 267.8 229.33 T
(un the same pr) 279.62 229.33 T
(ocess on multiple FRSs at once, start multiple) 345.45 229.33 T
(instances of the pr) 216 217.33 T
(ocess.) 296.42 217.33 T
1 9.5 Q
(Using Multiple Consecutive Minor Frames) 216 189.67 T
0 10 Q
-0.3 (The Continuable discipline is used for a pr) 216 165.83 P
-0.3 (ocess that may r) 401.56 165.83 P
-0.3 (equir) 471.8 165.83 P
-0.3 (e mor) 494.88 165.83 P
-0.3 (e than) 519.92 165.83 P
(one minor frame to complete its work. T) 216 153.83 T
(o allow a pr) 392.98 153.83 T
(ocess to use multiple) 445.31 153.83 T
26 545 27 555 R
V
26 150.5 27 479 R
V
FMENDPAGE
%%EndPage: "10" 11
%%Page: "11" 11
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Programming with the Frame Scheduler) 406.23 679.44 T
1 F
(11) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
-0.16 (consecutive minor frames, it must be enqueued in each of the minor frames) 234 632.33 P
(in which it can r) 234 620.33 T
(un. The discipline settings for each frame should be:) 305.32 620.33 T
(First frame) 234 602.33 T
-0.5 (Realtime + Overr) 306 602.33 P
-0.5 (unnable + Continuable\321the pr) 381.32 602.33 P
-0.5 (ocess must) 517.49 602.33 P
-0.32 (start in this frame \050not Underr) 306 590.33 P
-0.32 (unable\051 but is not r) 437.58 590.33 P
-0.32 (equir) 519.95 590.33 P
-0.32 (ed to) 543.03 590.33 P
-0.69 (yield \050Overr) 306 578.33 P
-0.69 (unable\051. If it yields, it will not be r) 359.51 578.33 P
-0.69 (estarted in the) 503.6 578.33 P
(following minor frame \050Continuable\051.) 306 566.33 T
(Intermediate) 234 548.33 T
(Realtime+Underr) 306 548.33 T
(unable+Overr) 383.51 548.33 T
(unnable+Continuable\321) 445.73 548.33 T
-0.39 (the pr) 306 536.33 P
-0.39 (ocess need not start \050it might alr) 331.74 536.33 P
-0.39 (eady have yielded, or) 470.81 536.33 P
-0.75 (might be blocked\051 but is not r) 306 524.33 P
-0.75 (equir) 431.56 524.33 P
-0.75 (ed to yield. If it does yield) 454.64 524.33 P
(\050or if it had yielded in a pr) 306 512.33 T
(eceding minor frame\051, it is not) 422.21 512.33 T
(r) 306 500.33 T
(estarted in the following minor frame \050Continuable\051.) 309.77 500.33 T
(Final frame) 234 482.33 T
(Realtime+Underr) 306 482.33 T
(unable\321the pr) 383.51 482.33 T
(ocess need not start \050it) 449.7 482.33 T
(might alr) 306 470.33 T
(eady have yielded\051 but if it starts it must yield in) 346.54 470.33 T
-0.03 (this frame \050not Overr) 306 458.33 P
-0.03 (unnable\051. The pr) 399.47 458.33 P
-0.03 (ocess can start a new) 472.62 458.33 P
(r) 306 446.33 T
(un in the next minor frame to which it is queued \050not) 309.87 446.33 T
(Continuable\051.) 306 434.33 T
(In general terms, the Continuable \337ag allows the pr) 234 410.33 T
(ogrammer to alter the) 461.1 410.33 T
-0.56 (ef) 234 398.33 P
-0.56 (fective length of a minor frame for one particular pr) 241.94 398.33 P
-0.56 (ocess. A pr) 465.35 398.33 P
-0.56 (ocess can be) 512.45 398.33 P
(enqueued for one or mor) 234 386.33 T
(e of these multi-frame sequences in one major) 344.18 386.33 T
-0.4 (frame. For example, suppose that the minor frame rate is 60 Hz, and a major) 234 374.33 P
(frame contains 60 minor frames \0501 Hz\051. Y) 234 362.33 T
(ou have a pr) 414.59 362.33 T
(ocess that should r) 469.59 362.33 T
(un) 551.99 362.33 T
-0.21 (at a rate of 5 Hz and can use up to 3/60 second at each dispatch. Y) 234 350.33 P
-0.21 (ou would) 522.11 350.33 P
(enqueue the pr) 234 338.33 T
(ocess to 5 sequences of 3 consecutive frames, starting in) 300.46 338.33 T
-0.22 (frames 0, 12, 24, 36, and 48. The disciplines in each of the 3-frame sequences) 234 326.33 P
(would be those shown in the pr) 234 314.33 T
(eceding list.) 373.72 314.33 T
(In implementation dependent terms, the Continuable \337ag allows the) 234 290.33 T
(pr) 234 278.33 T
(ogramer to contr) 243.77 278.33 T
(ol the place wher) 317.74 278.33 T
(e the) 393.31 278.33 T
2 F
(frs_run) 416.96 278.33 T
0 F
( and the) 447.51 278.33 T
2 F
(frs_yield) 485.79 278.33 T
0 F
( \337ags ar) 520.78 278.33 T
(e) 555.41 278.33 T
(r) 234 266.33 T
(eset \050see \322Scheduling W) 237.77 266.33 T
(ithin A Minor Frame\323 on page) 343.53 266.33 T
(17\051.) 480.33 266.33 T
1 11.5 Q
(Preparing the System) 234 229.33 T
0 10 Q
(The Challenge or Onyx pr) 234 204.83 T
(ocessors that will be used by FRSs must be) 348.96 204.83 T
(pr) 234 192.83 T
(epar) 243.77 192.83 T
(ed for use by a r) 263.33 192.83 T
(eal-time pr) 334.36 192.83 T
(ogram. The designer must:) 382.43 192.83 T
4 9 Q
(\245) 234 174.83 T
0 10 Q
(Select the gr) 252 174.83 T
(oup of pr) 305.61 174.83 T
(ocessors on the machine that will be used for) 346.66 174.83 T
(r) 252 162.83 T
(eal-time execution. Pr) 255.77 162.83 T
(ocessor 0 \050at least\051 must be r) 351.51 162.83 T
(eserved for IRIX) 475.59 162.83 T
(system functions.) 252 150.83 T
44 617 45 639 R
V
44 563 45 573 R
V
44 497 45 531 R
V
44 443 45 465 R
V
44 311 45 417 R
V
FMENDPAGE
%%EndPage: "11" 12
%%Page: "12" 12
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(12) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
4 F
(\245) 216 632.33 T
0 10 Q
(Specify which pr) 234 632.33 T
(ocessors will handle I/O interr) 308.36 632.33 T
(upts. By default, IRIX) 444.51 632.33 T
(distributes I/O interr) 234 620.33 T
(upts \050r) 328.07 620.33 T
(eferr) 357.19 620.33 T
(ed to as) 377.81 620.33 T
2 F
(spraying) 414.15 620.33 T
0 F
(\051 acr) 449.69 620.33 T
(oss all available) 468.72 620.33 T
(pr) 234 608.33 T
(ocessors as a means of balancing the load. Real-time pr) 243.77 608.33 T
(ocessors) 485.79 608.33 T
(should be r) 234 596.33 T
(emoved fr) 283.63 596.33 T
(om the distribution set. This is done using the) 328.84 596.33 T
(dir) 234 584.33 T
(ective) 246.78 584.33 T
4 9 Q
(NOINTR:) 275.11 584.33 T
2 10 Q
(cpu#) 314.55 584.33 T
4 9 Q
([) 336.67 584.33 T
2 10 Q
(cpu#) 339.17 584.33 T
4 9 Q
(]*) 358.79 584.33 T
0 10 Q
( in the) 364.78 584.33 T
4 9 Q
(/var/sysgen/system/irix.sm) 394.87 584.33 T
0 10 Q
( \336le) 500.24 584.33 T
4 8 Q
(.) 516.48 584.33 T
0 10 Q
(After) 520.92 584.33 T
(modifying) 234 572.33 T
4 9 Q
(irix.sm) 282.96 572.33 T
0 10 Q
(, r) 308.92 572.33 T
(ebuild the kernel using the command) 317.68 572.33 T
4 9 Q
(/etc/autocon\336g) 234 560.33 T
(-vf) 294.95 560.33 T
4 8 Q
(.) 304.94 560.33 T
4 9 Q
(\245) 216 542.33 T
0 10 Q
(Make sur) 234 542.33 T
(e that none of the r) 275.33 542.33 T
(eal-time pr) 358.23 542.33 T
(ocessors is acting as the) 406.3 542.33 T
2 9 Q
(clock) 512.82 542.33 T
(pr) 234 530.33 T
(ocessor) 241.83 530.33 T
(.) 266.79 530.33 T
0 10 Q
(See mpadmin\0501\051. This is the pr) 271.28 530.33 T
(ocessor that \336elds 10ms) 406.11 530.33 T
-0.19 (scheduler interr) 234 518.33 P
-0.19 (upts, and the r) 303.96 518.33 P
-0.19 (esponsibility would typically be given to) 367.48 518.33 P
(pr) 234 506.33 T
(ocessor 0.) 243.77 506.33 T
4 9 Q
(\245) 216 488.33 T
0 10 Q
(Make sur) 234 488.33 T
(e none of the r) 275.33 488.33 T
(eal-time pr) 338.4 488.33 T
(ocessors is acting as the) 386.48 488.33 T
2 F
(fasthz) 492.99 488.33 T
(pr) 234 476.33 T
(ocessor) 242.71 476.33 T
0 F
(. See mpadmin\0501\051. This is the pr) 270.46 476.33 T
(ocessor that is interr) 410.28 476.33 T
(upted at) 499.4 476.33 T
(the rate set by the F) 234 464.33 T
(ASTHZ kernel parameter when high-pr) 319.39 464.33 T
(ecision) 494.84 464.33 T
(itimers ar) 234 452.33 T
(e in use. If fast itimers ar) 276.14 452.33 T
(e used by the r) 384.35 452.33 T
(eal-time pr) 449 452.33 T
(ogram, it) 497.08 452.33 T
(would be best to give the fasthz interr) 234 440.33 T
(upt to a dif) 401.15 440.33 T
(fer) 449.81 440.33 T
(ent pr) 461.7 440.33 T
(ocessor than) 487.83 440.33 T
(0, pr) 234 428.33 T
(ovided ther) 253.77 428.33 T
(e is another pr) 304.91 428.33 T
(ocessor not commited to r) 368.2 428.33 T
(eal-time use.) 482.37 428.33 T
1 11.5 Q
(Implementing a Single FRS) 216 391.33 T
0 10 Q
-0.32 (The general steps that a r) 216 366.83 P
-0.32 (eal-time pr) 325.04 366.83 P
-0.32 (ogram needs to carry out ar) 372.8 366.83 P
-0.32 (e as follows.) 493.31 366.83 P
(This model assumes a single FRS.) 216 354.83 T
(1.) 216 336.83 T
(The par) 234 336.83 T
(ent pr) 268 336.83 T
(ocess initializes any global r) 294.14 336.83 T
(esour) 417.42 336.83 T
(ces such as) 441.7 336.83 T
(memory-mapped segments, memory ar) 234 324.83 T
(enas, \336les and other objects.) 409.12 324.83 T
(2.) 216 306.83 T
(The par) 234 306.83 T
(ent pr) 268 306.83 T
(ocess locks down the addr) 294.14 306.83 T
(ess space it will shar) 410.44 306.83 T
(e with) 500.21 306.83 T
(lightweight pr) 234 294.83 T
(ocesses\321see plock\0502\051 and mpin\0502\051.) 297.39 294.83 T
(3.) 216 276.83 T
(The par) 234 276.83 T
(ent pr) 268 276.83 T
(ocess cr) 294.14 276.83 T
(eates the Frame Scheduler using the call) 328 276.83 T
5 F
(frs_create_master\050\051) 234 264.83 T
0 F
( \050see page) 320.04 264.83 T
(20\051.) 366.03 264.83 T
(4.) 216 246.83 T
(The par) 234 246.83 T
(ent pr) 268 246.83 T
(ocess cr) 294.14 246.83 T
(eates the activity pr) 328 246.83 T
(ocesses using either) 414.17 246.83 T
5 F
(sproc\050\051) 503.9 246.83 T
0 F
(\321) 534.98 246.83 T
(pr) 234 234.83 T
(eferr) 243.77 234.83 T
(ed\321or) 264.39 234.83 T
5 F
(fork\050\051) 297.18 234.83 T
0 F
(. \050If) 323.28 234.83 T
5 F
(fork\050\051) 340.8 234.83 T
0 F
( is used, each child pr) 366.9 234.83 T
(ocess must lock its) 462.18 234.83 T
(own addr) 234 222.83 T
(ess space.\051) 277.09 222.83 T
(5.) 216 204.83 T
-0.02 (The par) 234 204.83 P
-0.02 (ent uses) 267.98 204.83 P
5 F
-0.02 (frs_enqueue\050\051) 306.09 204.83 P
0 F
-0.02 ( to queue each child to the FRS queue or) 369.37 204.83 P
(queues on which it is to r) 234 192.83 T
(un \050see page) 344.94 192.83 T
(22\051.) 402.77 192.83 T
26 387.5 27 399 R
V
26 351.5 27 361.5 R
V
FMENDPAGE
%%EndPage: "12" 13
%%Page: "13" 13
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Programming with the Frame Scheduler) 406.23 679.44 T
1 F
(13) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(6.) 234 632.33 T
-0.3 (Each pr) 252 632.33 P
-0.3 (ocess uses) 285.33 632.33 P
5 F
-0.3 (frs_join\050\051) 332.18 632.33 P
0 F
-0.3 ( \050page) 374.37 632.33 P
-0.3 (24\051 to let the FRS know the pr) 403.75 632.33 P
-0.3 (ocess is) 532.29 632.33 P
(r) 252 620.33 T
(eady to start r) 255.77 620.33 T
(eal-time execution. This call blocks until frame) 316.89 620.33 T
(scheduling begins, then r) 252 608.33 T
(eturns during the \336rst frame dispatch of the) 362.88 608.33 T
(pr) 252 596.33 T
(ocess.) 261.77 596.33 T
(7.) 234 578.33 T
(The par) 252 578.33 T
(ent pr) 286 578.33 T
(ocess uses) 312.14 578.33 T
5 F
(frs_start\050\051) 359.58 578.33 T
0 F
( \050page) 403.43 578.33 T
(25\051 to enable scheduling. The) 433.1 578.33 T
-0.38 (Frame Scheduler will start scheduling pr) 252 566.33 P
-0.38 (ocesses as soon as all pr) 429.9 566.33 P
-0.38 (ocesses) 532.7 566.33 P
(have called) 252 554.33 T
5 F
(frs_join\050\051) 304.39 554.33 T
0 F
(.) 346.58 554.33 T
(8.) 234 536.33 T
(After completing its work for a minor frame, a pr) 252 536.33 T
(ocess calls) 469.09 536.33 T
5 F
(frs_yield\050\051) 516.73 536.33 T
0 F
(\050page) 252 524.33 T
(26\051 to yield the pr) 279.17 524.33 T
(ocessor until its next scheduled dispatch.) 357.11 524.33 T
(9.) 234 506.33 T
(The par) 252 506.33 T
(ent pr) 286 506.33 T
(ocess waits for err) 312.14 506.33 T
(or and termination signals fr) 391.76 506.33 T
(om the) 517.82 506.33 T
(Frame Scheduler and other pr) 252 494.33 T
(ocesses.) 384.14 494.33 T
(10.) 234 476.33 T
(T) 252 476.33 T
(o terminate frame scheduling, any pr) 257.21 476.33 T
(ocess calls) 420.88 476.33 T
5 F
(frs_destroy\050\051) 468.52 476.33 T
0 F
(\050page) 252 464.33 T
(32\051.) 279.17 464.33 T
(In the typical r) 234 440.33 T
(eal-time pr) 298.39 440.33 T
(ogram the r) 346.46 440.33 T
(eal-time pr) 397.87 440.33 T
(ocesses ar) 445.94 440.33 T
(e lightweight) 489.39 440.33 T
-0.65 (pr) 234 428.33 P
-0.65 (ocesses cr) 243.77 428.33 P
-0.65 (eated with spr) 286.01 428.33 P
-0.65 (oc\050\051. However) 347.98 428.33 P
-0.65 (, this is not a r) 409.41 428.33 P
-0.65 (estriction of the Frame) 467.82 428.33 P
(Scheduler) 234 416.33 T
(. The Frame Scheduler can manage pr) 277.33 416.33 T
(ocesses cr) 443.73 416.33 T
(eated with fork\050\051.) 486.62 416.33 T
(Mor) 234 404.33 T
(eover) 252.68 404.33 T
(, the r) 276.57 404.33 T
(eal-time pr) 301.69 404.33 T
(ocesses do not have to be child pr) 349.77 404.33 T
(ocesses of the) 497.77 404.33 T
(frs-master pr) 234 392.33 T
(ocess. For an example, see \322Example of Scheduling Separate) 291.17 392.33 T
(Pr) 234 380.33 T
(ograms\323 on page) 243.8 380.33 T
(39.) 321.94 380.33 T
1 11.5 Q
(Implementing Multiple Synchronized Schedulers) 234 343.33 T
0 10 Q
(When the r) 234 318.83 T
(eal-time application r) 283.04 318.83 T
(equir) 377.31 318.83 T
(es the power of multiple CPUs, the) 400.4 318.83 T
(pr) 234 306.83 T
(ogram design is only slightly dif) 243.77 306.83 T
(fer) 386.67 306.83 T
(ent fr) 398.55 306.83 T
(om that shown above. The) 422.01 306.83 T
-0.69 (pr) 234 294.83 P
-0.69 (ogram will cr) 243.77 294.83 P
-0.69 (eate multiple FRSs, one master and one or mor) 301.45 294.83 P
-0.69 (e slaves. Ther) 502.17 294.83 P
-0.69 (e) 560.4 294.83 P
-0.26 (is a r) 234 282.83 P
-0.26 (estriction that each FRS must have a unique frs-master pr) 254.38 282.83 P
-0.26 (ocess. That is,) 504.79 282.83 P
(one pr) 234 270.83 T
(ocess can cr) 262.33 270.83 T
(eate only one FRS, master or slave.) 313.95 270.83 T
(A variety of designs is possible but the simplest is pr) 234 246.83 T
(obably to r) 466.28 246.83 T
(eplicate the) 513.74 246.83 T
(model in the pr) 234 234.83 T
(eceding section, as follows:) 301.94 234.83 T
(1.) 234 216.83 T
(The par) 252 216.83 T
(ent pr) 286 216.83 T
(ocess initializes any global r) 312.14 216.83 T
(esour) 435.42 216.83 T
(ces such as) 459.7 216.83 T
(memory-mapped segments, memory ar) 252 204.83 T
(enas, \336les and other objects.) 427.12 204.83 T
(One of these global r) 252 192.83 T
(esour) 343.25 192.83 T
(ces is the pr) 367.53 192.83 T
(ocess ID of the par) 419.27 192.83 T
(ent pr) 500.94 192.83 T
(ocess.) 527.08 192.83 T
(2.) 234 174.83 T
(The par) 252 174.83 T
(ent pr) 286 174.83 T
(ocess locks down the addr) 312.14 174.83 T
(ess space it will shar) 428.44 174.83 T
(e with) 518.21 174.83 T
(lightweight pr) 252 162.83 T
(ocesses\321see plock\0502\051 and mpin\0502\051.) 315.39 162.83 T
44 575 45 585 R
V
44 159.5 45 483 R
V
FMENDPAGE
%%EndPage: "13" 14
%%Page: "14" 14
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(14) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(3.) 216 632.33 T
(The par) 234 632.33 T
(ent pr) 268 632.33 T
(ocess cr) 294.14 632.33 T
(eates the Frame Scheduler using the call) 328 632.33 T
5 F
(frs_create_master\050\051) 234 620.33 T
0 F
(, and stor) 320.04 620.33 T
(es its handle in a global location.) 361.18 620.33 T
(4.) 216 602.33 T
-0.15 (The par) 234 602.33 P
-0.15 (ent pr) 267.85 602.33 P
-0.15 (ocess cr) 293.84 602.33 P
-0.15 (eates one sub-par) 327.55 602.33 P
-0.15 (ent pr) 404.28 602.33 P
-0.15 (ocess for each pr) 430.26 602.33 P
-0.15 (ocessor to) 503.02 602.33 P
(be used.) 234 590.33 T
(5.) 216 572.33 T
(Each sub-par) 234 572.33 T
(ent cr) 291.75 572.33 T
(eates a Frame Scheduler using) 316.32 572.33 T
5 F
(frs_create_slave\050\051) 452.6 572.33 T
0 F
(,) 531.43 572.33 T
(specifying information about the master FRS.) 234 560.33 T
(Now the par) 216 536.33 T
(ent and each sub-par) 271.73 536.33 T
(ent pr) 363.94 536.33 T
(oceed to cr) 390.07 536.33 T
(eate and enqueue the) 437.57 536.33 T
(r) 216 524.33 T
(eal-time pr) 219.77 524.33 T
(ocesses that will be dispatched. When all pr) 267.84 524.33 T
(ocesses ar) 460.39 524.33 T
(e) 503.83 524.33 T
(enqueued, the par) 216 512.33 T
(ent and sub-par) 296.07 512.33 T
(ents each start their r) 365.74 512.33 T
(espective FRS. Each) 458.06 512.33 T
(r) 216 500.33 T
(eal-time pr) 219.77 500.33 T
(ocess begins with and) 267.84 500.33 T
5 F
(frs_join\050\051) 367.07 500.33 T
0 F
( call to its assigned FRS.) 409.25 500.33 T
(For an example of this kind of pr) 216 476.33 T
(ogram str) 360.69 476.33 T
(uctur) 403.34 476.33 T
(e, r) 426.85 476.33 T
(efer to \322Example of) 440.41 476.33 T
(Multiple Synchr) 216 464.33 T
(onized Schedulers\323 on page) 287.4 464.33 T
(41.) 413.39 464.33 T
1 12 Q
(Frame Scheduler Methods) 45 423 T
0 10 Q
(This section describes the details of the concepts and abstractions that the) 216 397.33 T
(Frame Scheduler uses.) 216 385.33 T
1 11.5 Q
(Interrupt Sources) 216 348.33 T
0 10 Q
-0.54 (The pr) 216 323.83 P
-0.54 (ogram speci\336es an interr) 244.46 323.83 P
-0.54 (upt sour) 351.98 323.83 P
-0.54 (ce to be the time base when it cr) 388.72 323.83 P
-0.54 (eates) 524.97 323.83 P
(the master FRS. The Frame Scheduler takes car) 216 311.83 T
(e of initializing har) 422.34 311.83 T
(dwar) 505.88 311.83 T
(e) 529.09 311.83 T
(r) 216 299.83 T
(esour) 219.77 299.83 T
(ces and r) 244.04 299.83 T
(edir) 283.19 299.83 T
(ecting the interr) 300.76 299.83 T
(upt to the appr) 370.98 299.83 T
(opriate pr) 437.12 299.83 T
(ocessor and) 480.75 299.83 T
(handler) 216 287.83 T
(.) 249.64 287.83 T
1 9.5 Q
(On-Chip T) 216 260.17 T
(imer Interrupt) 261.7 260.17 T
0 10 Q
(Each pr) 216 236.33 T
(ocessor chip contains a USYNC timer which is used by IRIX for) 249.63 236.33 T
(normal pr) 216 224.33 T
(ocess scheduling. This timer is not synchr) 260.23 224.33 T
(onized between) 443.61 224.33 T
(pr) 216 212.33 T
(ocessors, so it cannot be used to drive multiple FRSs in a master) 225.77 212.33 T
(-slave) 507.23 212.33 T
(r) 216 200.33 T
(elationship. This timer can be used as an FRS time-base when the) 219.77 200.33 T
(application cr) 216 188.33 T
(eates only one FRS and ther) 276.41 188.33 T
(e is a r) 398.8 188.33 T
(eason to not use the SYNC) 426.99 188.33 T
(timer) 216 176.33 T
(.) 238.99 176.33 T
26 461 27 639 R
V
26 233 27 266.5 R
V
FMENDPAGE
%%EndPage: "14" 15
%%Page: "15" 15
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Frame Scheduler Methods) 461.92 679.44 T
1 F
(15) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 9.5 Q
(High-Resolution T) 234 632.67 T
(imer) 315.56 632.67 T
0 10 Q
-0.2 (The high-r) 234 608.83 P
-0.2 (esolution timer and clock is a timer that is synchr) 280.22 608.83 P
-0.2 (onous acr) 495.17 608.83 P
-0.2 (oss all) 537.66 608.83 P
-0.37 (pr) 234 596.83 P
-0.37 (ocessors, and is ideal to drive synchr) 243.77 596.83 P
-0.37 (onous FRSs. On Challenge and Onyx) 403.37 596.83 P
(systems this timer is based on a high r) 234 584.83 T
(esolution counter found on the CC) 402.02 584.83 T
(chip.) 234 572.83 T
-0.07 (The IRIX uses this timer for managing timeout events. At cr) 234 548.83 P
-0.07 (eation time, the) 496.35 548.83 P
-0.55 (master FRS migrates all timeout events dependent on this timer to pr) 234 536.83 P
-0.55 (ocessor) 532.49 536.83 P
(0, leaving the timer on the FRS pr) 234 524.83 T
(ocessor fr) 381.59 524.83 T
(ee.) 423.75 524.83 T
1 9.5 Q
(External Interrupts) 234 497.17 T
0 10 Q
(An external interr) 234 473.33 T
(upt is generated via a signal applied to the external) 312.84 473.33 T
(interr) 234 461.33 T
(upt sockets on a Challenge or Onyx system \050r) 258.59 461.33 T
(efer to ei\0507\051 for details\051.) 458.57 461.33 T
-0.12 (At FRS cr) 234 449.33 P
-0.12 (eation time, the system allocates an interr) 275.47 449.33 P
-0.12 (upt gr) 457.39 449.33 P
-0.12 (oup which is used) 484.38 449.33 P
(to make the interr) 234 437.33 T
(upt simultaneously available to all pr) 312.83 437.33 T
(ocessors r) 477.55 437.33 T
(unning) 520.71 437.33 T
(r) 234 425.33 T
(elated FRSs.) 237.77 425.33 T
4 9 Q
(Note:) 234 401.33 T
0 10 Q
(External output signals can be generated by softwar) 260.48 401.33 T
(e using) 489.72 401.33 T
5 F
(ioctl\050\051) 524.05 401.33 T
0 F
( to) 550.69 401.33 T
(the external interr) 234 389.33 T
(upt driver) 313.11 389.33 T
(. An imaginative designer might think of) 357.5 389.33 T
(connecting the external output jacks to the external interr) 234 377.33 T
(upt input jacks,) 486.23 377.33 T
(thus cr) 234 365.33 T
(eating softwar) 264.04 365.33 T
(e-contr) 327.25 365.33 T
(olled external interr) 358.1 365.33 T
(upts as an FRS time base.) 445.51 365.33 T
-0.2 (This would work in principle. However) 234 353.33 P
-0.2 (, if the interr) 408.21 353.33 P
-0.2 (upts ar) 462.29 353.33 P
-0.2 (e generated by a) 492.89 353.33 P
(user pr) 234 341.33 T
(ocess that makes any other system calls, ther) 265.27 341.33 T
(e is a possibility of) 461.82 341.33 T
(system deadlock.) 234 329.33 T
1 9.5 Q
(V) 234 301.67 T
(ertical Sync Interrupt) 239.81 301.67 T
0 10 Q
(An interr) 234 277.83 T
(upt is generated for every vertical r) 274.68 277.83 T
(etrace by the graphics) 430.27 277.83 T
-0.64 (subsystem \050see gsync\0503g\051 for details\051. Similar to what is done for the external) 234 265.83 P
-0.74 (interr) 234 253.83 P
-0.74 (upts, the Frame Scheduler allocates an interr) 258.59 253.83 P
-0.74 (upt gr) 450.58 253.83 P
-0.74 (oup to distribute the) 476.95 253.83 P
(VSYNC interr) 234 241.83 T
(upt.) 295.61 241.83 T
1 9.5 Q
(Device Driver Interrupt) 234 214.17 T
0 10 Q
(A user) 234 190.33 T
(-written, kernel-level device driver can supply the FRS time-base) 263.09 190.33 T
-0.7 (interr) 234 178.33 P
-0.7 (upt. See \322The Frame Scheduler DDI\323 on page) 258.59 178.33 P
-0.7 (33. The Frame Scheduler) 458.42 178.33 P
(allocates an interr) 234 166.33 T
(upt gr) 312.39 166.33 T
(oup to which the device driver must dir) 339.5 166.33 T
(ect) 515.53 166.33 T
(interr) 234 154.33 T
(upts.) 258.59 154.33 T
44 605.5 45 639 R
V
44 470 45 503.5 R
V
44 262.5 45 408 R
V
44 187 45 220.5 R
V
FMENDPAGE
%%EndPage: "15" 16
%%Page: "16" 16
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(16) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 9.5 Q
(Software Interrupt) 216 632.67 T
0 10 Q
-0.01 (A pr) 216 608.83 P
-0.01 (ogrammed, softwar) 236.04 608.83 P
-0.01 (e-generated interr) 322.91 608.83 P
-0.01 (upt can be used as the time base.) 402.15 608.83 P
(Any user pr) 216 596.83 T
(ocess can send this interr) 268.92 596.83 T
(upt to the gr) 379.08 596.83 T
(oup of synchr) 433.77 596.83 T
(onous FRSs) 494.68 596.83 T
(using the call) 216 584.83 T
5 F
(frs_userintr\050\051) 277.16 584.83 T
0 F
( \050see \322Delivering T) 337.1 584.83 T
(ime-Base Interr) 419.32 584.83 T
(upts to a) 486.84 584.83 T
(Frame Scheduler\323 on page) 216 572.83 T
(28\051.) 335.79 572.83 T
(When a user cr) 216 548.83 T
(eates an FRS with this interr) 282.11 548.83 T
(upt sour) 406.1 548.83 T
(ce, the system allocates) 443.37 548.83 T
(an interr) 216 536.83 T
(upt gr) 253.9 536.83 T
(oup that is used to send the interr) 281.01 536.83 T
(upt simultaneously to all) 429.74 536.83 T
(pr) 216 524.83 T
(ocessors involved in the execution of the r) 225.77 524.83 T
(eal-time application.) 410.98 524.83 T
(Softwar) 216 500.83 T
(e interr) 250.39 500.83 T
(upts ar) 282.26 500.83 T
(e primarily intended for application debugging. It is) 313.06 500.83 T
(not feasible for a user pr) 216 488.83 T
(ocess to generate interr) 323.01 488.83 T
(upts with the kind of) 424.9 488.83 T
(r) 216 476.83 T
(egularity that a r) 219.77 476.83 T
(eal-time scheduler r) 293.31 476.83 T
(equir) 380.93 476.83 T
(es.) 404.02 476.83 T
4 9 Q
-0.22 (Note:) 216 452.83 P
0 10 Q
-0.22 (User interr) 242.04 452.83 P
-0.22 (upts ar) 289.66 452.83 P
-0.22 (e normally trigger) 320.24 452.83 P
-0.22 (ed by a pr) 399.79 452.83 P
-0.22 (ocess r) 443.38 452.83 P
-0.22 (unning on cpu 0.) 472.69 452.83 P
(This can lead to system deadlock if the user pr) 216 440.83 T
(ocess generating the) 420.48 440.83 T
(interr) 216 428.83 T
(upts issues system calls other than) 240.59 428.83 T
5 F
(frs_userintr\050\051) 395.09 428.83 T
0 F
(.) 455.04 428.83 T
1 11.5 Q
(Interrupt Isolation) 216 391.83 T
0 10 Q
(When an FRS is cr) 216 367.33 T
(eated on a pr) 296.06 367.33 T
(ocessor and the r) 353.53 367.33 T
(eal-time event interr) 428.14 367.33 T
(upt is) 517.82 367.33 T
-0.26 (set, all other interr) 216 355.33 P
-0.26 (upts ar) 296.16 355.33 P
-0.26 (e either shut of) 326.69 355.33 P
-0.26 (f or r) 391.64 355.33 P
-0.26 (edir) 412.61 355.33 P
-0.26 (ected, except for some I/O) 430.18 355.33 P
(interr) 216 343.33 T
(upts if the pr) 240.59 343.33 T
(ocessor belongs to the set of pr) 297.48 343.33 T
(ocessors that ar) 432.75 343.33 T
(e) 500.64 343.33 T
0 9 Q
(sprayable) 507.93 343.33 T
0 10 Q
(\050see \322Pr) 216 331.33 T
(eparing the System\323 on page) 250.44 331.33 T
(1) 380.35 331.33 T
(1\051.) 384.8 331.33 T
1 11.5 Q
(Interrupt Synchronization) 216 294.33 T
0 10 Q
(Frame Schedulers r) 216 269.83 T
(unning on dif) 301.28 269.83 T
(fer) 361.66 269.83 T
(ent pr) 373.54 269.83 T
(ocessors can be synchr) 399.68 269.83 T
(onized. T) 499.17 269.83 T
(o) 539.45 269.83 T
(make this possible, Frame Schedulers ar) 216 257.83 T
(e categorized as synchr) 392.63 257.83 T
(onization) 495.03 257.83 T
(masters or synchr) 216 245.83 T
(onization slaves. The synchr) 294.33 245.83 T
(onization type of an FRS is) 419.12 245.83 T
-0.17 (speci\336ed at cr) 216 233.83 P
-0.17 (eation time via the) 276.44 233.83 P
2 F
-0.17 (sync_master) 360.19 233.83 P
0 F
-0.17 ( parameter of) 410.9 233.83 P
5 F
-0.17 (frs_create\050\051) 472.24 233.83 P
0 F
-0.17 (. This) 522.75 233.83 P
-0.47 (takes the value FRS_SYNC_MASTER for the master FRS, and the pr) 216 221.83 P
-0.47 (ocess ID) 510.68 221.83 P
(of the pr) 216 209.83 T
(ocess that cr) 253.42 209.83 T
(eated the master FRS when cr) 307.11 209.83 T
(eating a slave FRS.) 437.9 209.83 T
(The master FRS acts as a r) 216 185.83 T
(epr) 330.19 185.83 T
(esentative for the whole gr) 344.75 185.83 T
(oup of FRSs. It) 462.45 185.83 T
(allocates the interr) 216 173.83 T
(upt gr) 297.43 173.83 T
(oup they will use. It also synchr) 324.55 173.83 T
(onizes the startup) 464.92 173.83 T
(pr) 216 161.83 T
(ocedur) 225.77 161.83 T
(e: it waits for all its slaves to be r) 256.36 161.83 T
(eady to start r) 399.6 161.83 T
(eal-time execution,) 460.73 161.83 T
26 605.5 27 639 R
V
26 425.5 27 507.5 R
V
FMENDPAGE
%%EndPage: "16" 17
%%Page: "17" 17
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Frame Scheduler Methods) 461.92 679.44 T
1 F
(17) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
-0.71 (which happens only when every slave has done an) 234 632.33 P
5 F
-0.71 (frs_start\050\051) 454.93 632.33 P
0 F
-0.71 ( and all queued) 498.77 632.33 P
(pr) 234 620.33 T
(ocesses have called) 243.77 620.33 T
5 F
(frs_join\050\051) 330.85 620.33 T
0 F
(.) 373.03 620.33 T
-0.39 (After the startup pr) 234 596.33 P
-0.39 (ocedur) 318.8 596.33 P
-0.39 (e, the frames ar) 349.38 596.33 P
-0.39 (e kept synchr) 415.75 596.33 P
-0.39 (onous via one of two) 474 596.33 P
(mechanisms, depending on the interr) 234 584.33 T
(upt sour) 399 584.33 T
(ce. For the SYNC T) 436.28 584.33 T
(imer) 519.7 584.33 T
(, all) 539.43 584.33 T
-0.57 (FRS\325s use the same CC Counter Base and clock. For the user) 234 572.33 P
-0.57 (, external, driver) 491.45 572.33 P
-0.57 (,) 562.57 572.33 P
-0.75 (and vsync interr) 234 560.33 P
-0.75 (upts, the frame schedulers use interr) 304.7 560.33 P
-0.75 (upt gr) 462.16 560.33 P
-0.75 (oups to br) 488.52 560.33 P
-0.75 (oadcast) 531.76 560.33 P
(one interr) 234 548.33 T
(upt to several pr) 277.15 548.33 T
(ocessors simultaneously) 349.74 548.33 T
(.) 455.88 548.33 T
1 11.5 Q
(Startup Synchronization) 234 511.33 T
0 10 Q
(A Frame Scheduler cannot start r) 234 486.83 T
(eal-time execution until all its managed) 379.7 486.83 T
(pr) 234 474.83 T
(ocesses have done their own initial setup and ar) 243.77 474.83 T
(e r) 455.4 474.83 T
(eady to r) 466.45 474.83 T
(un their) 505.48 474.83 T
(r) 234 462.83 T
(eal-time loop. When) 237.77 462.83 T
5 F
(frs_start\050\051) 329.81 462.83 T
0 F
(is invoked in or) 376.15 462.83 T
(der to trigger the startup) 445.02 462.83 T
-0.14 (pr) 234 450.83 P
-0.14 (ocedur) 243.77 450.83 P
-0.14 (e, the FRS waits for all pr) 274.36 450.83 P
-0.14 (ocesses in its queues to invoke) 384.17 450.83 P
5 F
-0.14 (frs_join\050\051) 519.96 450.83 P
0 F
-0.14 (.) 562.15 450.83 P
-0.67 (When this state is r) 234 438.83 P
-0.67 (eached the FRS waits for the next r) 315.42 438.83 P
-0.67 (eal-time interr) 463.64 438.83 P
-0.67 (upt, then) 525.86 438.83 P
(pr) 234 426.83 T
(oceeds to schedule the pr) 243.77 426.83 T
(ocesses as speci\336ed in the queues.) 355.04 426.83 T
(The pr) 234 402.83 T
(ocess that cr) 263 402.83 T
(eates a frame scheduler becomes the) 316.7 402.83 T
2 F
( frs-master pr) 477.12 402.83 T
(ocess) 531.91 402.83 T
0 F
(.) 552.08 402.83 T
(This pr) 234 390.83 T
(ocess may not be frame scheduled \050that is, enqueued on any of the) 265.36 390.83 T
(minor frames queues\051. The frs-master pr) 234 378.83 T
(ocess becomes the r) 412.26 378.83 T
(epr) 498.61 378.83 T
(esentative) 513.17 378.83 T
(for an FRS, and is sent all the err) 234 366.83 T
(or and termination signals that ar) 376.86 366.83 T
(e sent to) 524.42 366.83 T
(the pr) 234 354.83 T
(ocesses in the FRS queues.) 260.14 354.83 T
1 11.5 Q
(Scheduling W) 234 317.83 T
(ithin A Minor Frame) 309.87 317.83 T
0 10 Q
(Pr) 234 293.33 T
(ocesses in a minor frame queue ar) 243.8 293.33 T
(e activated in queue or) 393.53 293.33 T
(der) 493.89 293.33 T
(. \050Initially) 507.99 293.33 T
(queue or) 234 281.33 T
(der is the or) 272.95 281.33 T
(der in which pr) 325.52 281.33 T
(ocesses wer) 393.67 281.33 T
(e named in) 445.24 281.33 T
5 F
(frs_enqueue\050\051) 496.79 281.33 T
0 F
-0.6 (calls. The queues can be r) 234 269.33 P
-0.6 (eor) 343.02 269.33 P
-0.6 (der) 357.03 269.33 P
-0.6 (ed dynamically; see \322Dynamic Management) 371.7 269.33 P
(of Scheduler Queues\323 on page) 234 257.33 T
(30.\051) 370.68 257.33 T
(The FRS keeps two status \337ags per queued pr) 234 233.33 T
(ocess. If a pr) 435.36 233.33 T
(ocess is r) 489.98 233.33 T
(eady to) 529.05 233.33 T
(r) 234 221.33 T
(un when its turn comes, it is activated and its) 237.87 221.33 T
2 F
(frs_run) 440.19 221.33 T
0 F
( \337ag is set to indicate) 470.74 221.33 T
(that this pr) 234 209.33 T
(ocess has r) 282.32 209.33 T
(un at least once within this minor frame.) 329.4 209.33 T
-0.16 (When a pr) 234 185.33 P
-0.16 (ocess yields, its) 279.86 185.33 P
2 F
-0.16 (frs_yield) 349.45 185.33 P
0 F
-0.16 ( \337ag is set to indicate that the pr) 384.44 185.33 P
-0.16 (ocess has) 524.11 185.33 P
-0.14 (alr) 234 173.33 P
-0.14 (eady r) 245.67 173.33 P
-0.14 (un and r) 273.35 173.33 P
-0.14 (eleased the pr) 310.6 173.33 P
-0.14 (ocessor) 371.56 173.33 P
-0.14 (. It will not be activated again within) 403.38 173.33 P
(this minor frame.) 234 161.33 T
FMENDPAGE
%%EndPage: "17" 18
%%Page: "18" 18
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(18) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(If a pr) 216 632.33 T
(ocess is not r) 242.46 632.33 T
(eady \050usually because it is blocked waiting for IO\051, it is) 298.57 632.33 T
-0.44 (skipped. Upon r) 216 620.33 P
-0.44 (eaching the end of the queue, the scheduler goes back to the) 287.04 620.33 P
(beginning, in a r) 216 608.33 T
(ound-r) 288.18 608.33 T
(obin fashion, sear) 318.68 608.33 T
(ching for pr) 396.24 608.33 T
(ocesses that have not) 448.28 608.33 T
-0.28 (yielded and may have become r) 216 596.33 P
-0.28 (eady to r) 355.37 596.33 P
-0.28 (un. If no r) 393.83 596.33 P
-0.28 (eady to r) 436.55 596.33 P
-0.28 (un pr) 475.01 596.33 P
-0.28 (ocesses ar) 498.84 596.33 P
-0.28 (e) 542 596.33 P
-0.63 (found, the FRS goes into idle mode until a pr) 216 584.33 P
-0.63 (ocess becomes available or until) 408.44 584.33 P
(the end of the frame.) 216 572.33 T
(When a r) 216 548.33 T
(eal-time interr) 256.18 548.33 T
(upt is r) 319.06 548.33 T
(eceived, indicating end of minor frame, the) 350.27 548.33 T
-0.52 (FRS checks the \337ags for each pr) 216 536.33 P
-0.52 (ocesse. If the) 351.89 536.33 P
2 F
-0.52 (frs_run) 408.83 536.33 P
0 F
-0.52 ( \337ag has not been set, the) 439.38 536.33 P
(pr) 216 524.33 T
(ocess never ran and ther) 225.77 524.33 T
(efor) 333.23 524.33 T
(e is a candidate for an) 350.57 524.33 T
2 F
(underrun) 449.45 524.33 T
0 F
( err) 488.34 524.33 T
(or) 503.34 524.33 T
(. If the) 512.01 524.33 T
2 F
-0.5 (frs_run) 216 512.33 P
0 F
-0.5 ( \337ag is set and the) 246.55 512.33 P
2 F
-0.5 (frs_yield) 325.36 512.33 P
0 F
-0.5 ( \337ag is not, the pr) 360.35 512.33 P
-0.5 (ocess is a candidate for an) 434.77 512.33 P
2 F
-0.08 (overrun) 216 500.33 P
0 F
-0.08 ( err) 248.21 500.33 P
-0.08 (or) 263.14 500.33 P
-0.08 (. Whether these err) 271.8 500.33 P
-0.08 (ors ar) 355.36 500.33 P
-0.08 (e declar) 380.2 500.33 P
-0.08 (ed depends on the scheduling) 414.41 500.33 P
(discipline assigned to a pr) 216 488.33 T
(ocess \050see \322Frame Scheduling Disciplines\323 on) 331.16 488.33 T
(page) 216 476.33 T
(9\051.) 239.85 476.33 T
-0.09 (At the end of a minor frame, the FRS r) 216 452.33 P
-0.09 (esets all) 383.55 452.33 P
2 F
-0.09 (frs_run) 420.49 452.33 P
0 F
-0.09 ( \337ags. It also r) 451.05 452.33 P
-0.09 (esets all) 512.05 452.33 P
2 F
-0.71 (frs_yield) 216 440.33 P
0 F
-0.71 ( \337ags except for those of pr) 250.99 440.33 P
-0.71 (ocesses that ar) 365.85 440.33 P
-0.71 (e Continuable in that minor) 427.69 440.33 P
(frame. For those pr) 216 428.33 T
(ocesses, the r) 300.17 428.33 T
(esidual) 357.48 428.33 T
2 F
(frs_yield) 391.95 428.33 T
0 F
( \337ags will keep pr) 426.94 428.33 T
(ocesses) 505.78 428.33 T
(that have yielded fr) 216 416.33 T
(om being dispatched in the next minor frame. All) 302.33 416.33 T
(frs_yield \337ags ar) 216 404.33 T
(e r) 289.41 404.33 T
(eset at the end of a major frame.) 300.46 404.33 T
(Underr) 216 380.33 T
(un and overr) 248.3 380.33 T
(un err) 305.77 380.33 T
(ors ar) 332.62 380.33 T
(e communicated via IRIX signals\0505\051. These) 357.52 380.33 T
(signals ar) 216 368.33 T
(e sent to) 257.93 368.33 T
2 F
(all) 297.02 368.33 T
0 F
( pr) 307.02 368.33 T
(ocesses in the FRS queues \050see \322Frame Scheduler) 319.29 368.33 T
(Signals\323 on page) 216 356.33 T
(18\051.) 292.79 356.33 T
1 11.5 Q
(Frame Scheduler Signals) 216 319.33 T
0 10 Q
(The frame scheduler uses 3 signals. By default they ar) 216 294.83 T
(e set as follows:) 452.87 294.83 T
4 9 Q
(\245) 216 276.83 T
0 10 Q
(Overr) 234 276.83 T
(un Signal is SIGUSR2) 260.11 276.83 T
4 9 Q
(\245) 216 258.83 T
0 10 Q
(Underr) 234 258.83 T
(un Signal is SIGUSR1) 266.3 258.83 T
4 9 Q
(\245) 216 240.83 T
0 10 Q
(T) 234 240.83 T
(ermination Signal is SIGHUP) 239.21 240.83 T
(Signals ar) 216 216.83 T
(e sent to all queued pr) 258.94 216.83 T
(ocesses and to the frs-master pr) 356.95 216.83 T
(ocess. The) 495.8 216.83 T
(overr) 216 204.83 T
(un and underr) 239.71 204.83 T
(un signals ar) 304.02 204.83 T
(e sent following detection of those err) 360.29 204.83 T
(ors.) 526.51 204.83 T
(The termination signal is sent after invocation of) 216 192.83 T
5 F
(frs_destroy\050\051) 432.18 192.83 T
0 F
(.) 489.92 192.83 T
(Signals ar) 216 168.83 T
(e deliver) 258.94 168.83 T
(ed to pr) 297.14 168.83 T
(ocesses during kernel-to-user transitions. In) 331.52 168.83 T
(timeshar) 216 156.83 T
(ed mode these transitions happen at least once every scheduler) 254.6 156.83 T
26 401 27 447 R
V
FMENDPAGE
%%EndPage: "18" 19
%%Page: "19" 19
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(19) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(clock interr) 234 632.33 T
(upt \05010 ms for Irix\051. However) 283.88 632.33 T
(, while in frame scheduler mode,) 412.53 632.33 T
(these transitions ar) 234 620.33 T
(e mor) 317.49 620.33 T
(e sporadic; they only happen at minor frame) 342.83 620.33 T
(boundaries and pr) 234 608.33 T
(ocesses context switches due to system calls or yielding.) 315.51 608.33 T
1 12 Q
(The Frame Scheduler API) 63 567 T
0 10 Q
(The authorized pr) 234 541.33 T
(ogramming interface \050API\051 to the Frame Scheduler is) 313.81 541.33 T
(composed of system calls, which ar) 234 529.33 T
(e available to either C or FOR) 389.56 529.33 T
(TRAN) 519.45 529.33 T
(pr) 234 517.33 T
(ograms, and library calls, which pr) 243.77 517.33 T
(ovide a C pr) 397.58 517.33 T
(ogram with a mor) 451.84 517.33 T
(e) 531.49 517.33 T
-0.43 (convenient interface to the system calls. Calls ar) 234 505.33 P
-0.43 (e pr) 441.83 505.33 P
-0.43 (ovided for the following) 458.45 505.33 P
(operations:) 234 493.33 T
4 9 Q
(\245) 234 475.33 T
0 10 Q
(Cr) 252 475.33 T
(eating a master or slave Frame Scheduler) 262.85 475.33 T
4 9 Q
(\245) 234 457.33 T
0 10 Q
(Enqueuing pr) 252 457.33 T
(ocesses to a Frame Scheduler) 312.92 457.33 T
4 9 Q
(\245) 234 439.33 T
0 10 Q
(Joining a Frame Scheduler) 252 439.33 T
4 9 Q
(\245) 234 421.33 T
0 10 Q
(Y) 252 421.33 T
(ielding contr) 258.12 421.33 T
(ol at the end of a frame) 314.35 421.33 T
4 9 Q
(\245) 234 403.33 T
0 10 Q
(Delivering user) 252 403.33 T
(-de\336ned time-base interr) 320.32 403.33 T
(upts) 429.54 403.33 T
4 9 Q
(\245) 234 385.33 T
0 10 Q
(Stopping and r) 252 385.33 T
(esuming Frame Schedulers) 317.94 385.33 T
4 9 Q
(\245) 234 367.33 T
0 10 Q
(Dynamic Management of scheduler queues) 252 367.33 T
4 9 Q
(\245) 234 349.33 T
0 10 Q
(Destr) 252 349.33 T
(oying a Frame Scheduler) 275.79 349.33 T
FMENDPAGE
%%EndPage: "19" 20
%%Page: "20" 20
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(20) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Creating a Master or Slave Frame Scheduler) 216 631.33 T
2 9.5 Q
(Data Structur) 45 619.17 T
(es) 99.57 619.17 T
4 8 Q
(typedef struct frs_fsched_info {) 216 604.67 T
(int) 246 593.67 T
(cpu;) 276 593.67 T
(int) 246 582.67 T
(intr_source;) 276 582.67 T
(int) 246 571.67 T
(intr_qualifier;) 276 571.67 T
(int) 246 560.67 T
(n_minors;) 276 560.67 T
(int) 246 549.67 T
(sync_master;) 276 549.67 T
(int*) 246 538.67 T
(sync_slaves;) 276 538.67 T
(int) 246 527.67 T
(num_slaves;) 276 527.67 T
(} frs_fsched_info_t;) 216 516.67 T
(typedef struct frs {) 216 505.67 T
(frs_fsched_info_t) 246 494.67 T
(frs_info;) 306.89 494.67 T
(int) 246 483.67 T
(sync_master_pid;) 306 483.67 T
(} frs_t;) 216 472.67 T
2 9.5 Q
(System Call) 45 463.67 T
4 8 Q
(int) 216 449.17 T
(schedctl) 246 449.17 T
(\050) 277.55 449.17 T
(MPTS_FRS_CREATE, frs_fsched_info_t* frs_fsched_info) 282.44 449.17 T
(\051) 489.07 449.17 T
(;) 493.95 449.17 T
2 9.5 Q
(Library Calls) 45 440.17 T
4 8 Q
(frs_t*) 216 425.67 T
(frs_create) 246 425.67 T
(\050) 283.77 425.67 T
(int cpu,) 288.66 425.67 T
(int intr_source, int intr_qualifier, int n_minors,) 314.43 425.67 T
(int sync_master_pid, int* sync_slaves, int num_slaves) 306 414.67 T
(\051) 498.85 414.67 T
(;) 503.74 414.67 T
(frs_t*) 216 403.67 T
(frs_create_master) 246 403.67 T
(\050) 312.65 403.67 T
(int cpu, int intr_source, int intr_qualifier, int n_minors,) 317.54 403.67 T
(int* sync_slaves, int num_slaves) 306 392.67 T
(\051) 423.31 392.67 T
(;) 428.2 392.67 T
(frs_t*) 216 370.67 T
(frs_create_slave) 246 370.67 T
(\050) 306.88 370.67 T
(int cpu, frs_t* sync_master_frs) 311.76 370.67 T
(\051) 421.52 370.67 T
(;) 426.4 370.67 T
0 10 Q
(A Frame Scheduler can be cr) 216 338.33 T
(eated using any of the calls above. Both) 342.22 338.33 T
5 F
(schedctl\050\051) 216 326.33 T
0 F
( and) 259.84 326.33 T
5 F
(frs_create\050\051) 281.75 326.33 T
0 F
( allow for the cr) 332.27 326.33 T
(eation of either kind of FRS.) 401.67 326.33 T
-0.37 (The pr) 216 302.33 P
-0.37 (ocess that cr) 244.63 302.33 P
-0.37 (eates an FRS becomes the frs-master pr) 297.58 302.33 P
-0.37 (ocess for that FRS.) 467.29 302.33 P
(The pr) 216 290.33 T
(ocess ID of the frs-master serves to identify the master FRS. As a) 245 290.33 T
(r) 216 278.33 T
(esult, the frs-master pr) 219.77 278.33 T
(ocess is r) 319.51 278.33 T
(estricted in several ways:) 358.58 278.33 T
4 9 Q
(\245) 216 260.33 T
0 10 Q
(That pr) 234 260.33 T
(ocess cannot cr) 266.47 260.33 T
(eate another FRS. Y) 332.62 260.33 T
(ou must cr) 417.75 260.33 T
(eate a separate) 464.78 260.33 T
(pr) 234 248.33 T
(ocess \050usually with) 243.77 248.33 T
5 F
(sproc\050\051) 330.74 248.33 T
0 F
(\051 for each FRS, master or slave.) 361.82 248.33 T
4 9 Q
(\245) 216 230.33 T
0 10 Q
(The frs-master pr) 234 230.33 T
(ocess cannot be enqueued on any FRS.) 310.4 230.33 T
4 9 Q
(\245) 216 212.33 T
0 10 Q
(The frs-master r) 234 212.33 T
(eceives the signals generated by its FRS.) 304.39 212.33 T
(The call) 216 188.33 T
5 F
(frs_create_master\050\051) 252.98 188.33 T
0 F
( is a wrapper that uses) 339.02 188.33 T
5 F
(frs_create\050\051) 440.81 188.33 T
0 F
( to cr) 491.32 188.33 T
(eate an) 513.24 188.33 T
(FRS with) 216 176.33 T
2 F
(sync_master_pid) 258.8 176.33 T
0 F
( set to FRS_SYNC_MASTER. Similarly) 327.28 176.33 T
(,) 496.04 176.33 T
5 F
(frs_create_slave\050\051) 216 164.33 T
0 F
( is a wrapper that calls) 294.83 164.33 T
5 F
(frs_create\050\051) 396.81 164.33 T
0 F
( using the parameters) 447.32 164.33 T
(found in the speci\336ed) 216 152.33 T
2 F
(sync_master_frs) 314.64 152.33 T
0 F
(.) 380.9 152.33 T
26 209 27 309 R
V
FMENDPAGE
%%EndPage: "20" 21
%%Page: "21" 21
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(21) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
2 9.5 Q
(Parameters) 63 632.67 T
2 10 Q
(cpu) 234 613.83 T
0 F
(The pr) 306 613.83 T
(ocessor that will be managed by the cr) 335 613.83 T
(eated frame) 504 613.83 T
-0.35 (scheduler) 306 601.83 P
-0.35 (. Pr) 348.32 601.83 P
-0.35 (ocessors ar) 362.77 601.83 P
-0.35 (e number) 410.49 601.83 P
-0.35 (ed fr) 452.18 601.83 P
-0.35 (om 0, but pr) 472.32 601.83 P
-0.35 (ocessor 0) 525.14 601.83 P
(cannot be used by an FRS.) 306 589.83 T
2 F
(intr_sour) 234 571.83 T
(ce) 272.14 571.83 T
0 F
(The interr) 306 571.83 T
(upt sour) 349.82 571.83 T
(ce, which must be one of:) 387.1 571.83 T
4 9 Q
(\245) 306 553.83 T
0 10 Q
-0.41 (FRS_INTRSOURCE_R4KTIMER for the R4K timer \050not) 324 553.83 P
(allowed for a slave FRS\051) 324 541.83 T
4 9 Q
(\245) 306 523.83 T
0 10 Q
(FRS_INTRSOURCE_CCTIMER for the synchr) 324 523.83 T
(onous) 526.33 523.83 T
(timer) 324 511.83 T
4 9 Q
(\245) 306 493.83 T
0 10 Q
(FRS_INTRSOURCE_EXTINTR for external interr) 324 493.83 T
(upts) 540.55 493.83 T
4 9 Q
(\245) 306 475.83 T
0 10 Q
(FRS_INTRSOURCE_VSYNC for vsync interr) 324 475.83 T
(upts) 521.73 475.83 T
4 9 Q
(\245) 306 457.83 T
0 10 Q
(FRS_INTRSOURCE_DRIVER for device driver) 324 457.83 T
(interr) 324 445.83 T
(upts) 348.59 445.83 T
4 9 Q
(\245) 306 427.83 T
0 10 Q
(FRS_INTRSOURCE_USER for user generated) 324 427.83 T
(interr) 324 415.83 T
(upts) 348.59 415.83 T
2 F
(intr_quali\336er) 234 397.83 T
3 F
(Additional information about the) 306 397.83 T
2 F
(Intr_sour) 440.37 397.83 T
(ce) 479.05 397.83 T
3 F
(:) 487.01 397.83 T
4 9 Q
(\245) 306 379.83 T
0 10 Q
(The minor frame interval in micr) 324 379.83 T
(oseconds when the) 469 379.83 T
(interr) 324 367.83 T
(upt sour) 348.59 367.83 T
(ce is either timer) 385.87 367.83 T
4 9 Q
(\245) 306 349.83 T
0 10 Q
(The graphic pipe when the interr) 324 349.83 T
(upt sour) 469.81 349.83 T
(ce is vsync) 507.09 349.83 T
4 9 Q
(\245) 306 331.83 T
0 10 Q
-0.47 (The device driver identi\336er number when the interr) 324 331.83 P
-0.47 (upt) 549.68 331.83 P
(sour) 324 319.83 T
(ce is a device driver \050see \322Exporting the) 343.49 319.83 T
(Initialization and T) 324 307.83 T
(ermination Functions\323 on page) 407.63 307.83 T
(35\051) 547.49 307.83 T
2 F
(n_minors) 234 289.83 T
0 F
(The number of minor frames per major frame.) 306 289.83 T
2 F
(sync_master_pid) 234 271.83 T
0 F
(Specify whether the cr) 306 271.83 T
(eated FRS is a master or a slave:) 404.59 271.83 T
4 9 Q
(\245) 306 253.83 T
0 10 Q
(FRS_SYNC_MASTER speci\336es a master) 324 253.83 T
4 9 Q
(\245) 306 235.83 T
0 10 Q
(The pr) 324 235.83 T
(ocess id of the frs-master pr) 353 235.83 T
(ocess of the master) 474.99 235.83 T
(FRS speci\336es that the new FRS is a slave) 324 223.83 T
2 F
(sync_slaves) 234 205.83 T
0 F
(When cr) 306 205.83 T
(eating a master FRS, the addr) 343.12 205.83 T
(ess of an array of) 472.81 205.83 T
(length) 306 193.83 T
2 F
(num_slaves) 336.64 193.83 T
0 F
(. Each array element contains the CPU) 384.41 193.83 T
(number of a pr) 306 181.83 T
(ocessor that will r) 371.98 181.83 T
(un a slave FRS. This) 450.3 181.83 T
-0.23 (information lets the master FRS allocate an interr) 306 169.83 P
-0.23 (upt gr) 520.35 169.83 P
-0.23 (oup) 547.24 169.83 P
FMENDPAGE
%%EndPage: "21" 22
%%Page: "22" 22
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(22) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(and determine who it should wait for when starting) 288 632.33 T
-0.07 (r) 288 620.33 P
-0.07 (eal-time execution. When cr) 291.77 620.33 P
-0.07 (eating a slave FRS,) 414.6 620.33 P
2 F
-0.07 (sync_slaves) 499.19 620.33 P
0 F
(is NULL.) 288 608.33 T
2 F
(num_slaves) 216 590.33 T
0 F
(The number of slave FRSs listed in) 288 590.33 T
2 F
(sync_slaves) 443.17 590.33 T
0 F
(, or 0.) 490.55 590.33 T
2 9.5 Q
(Return V) 45 578.67 T
(alues) 80.95 578.67 T
5 10 Q
(frs_create\050\051) 216 553.83 T
0 F
(,) 266.51 553.83 T
5 F
(frs_create_master\050\051) 271.51 553.83 T
0 F
(, and) 357.55 553.83 T
5 F
(frs_create_slave\050\051) 381.97 553.83 T
0 F
( r) 460.8 553.83 T
(eturn a pointer to) 467.06 553.83 T
-0.29 (an frs_t str) 216 541.83 P
-0.29 (uctur) 262.36 541.83 P
-0.29 (e when the cr) 285.87 541.83 P
-0.29 (eation was succesful, or NULL in case of err) 344.1 541.83 P
-0.29 (or) 535.63 541.83 P
-0.29 (.) 544.3 541.83 P
(The) 216 529.83 T
5 F
(schedctl\050\051) 235.23 529.83 T
0 F
( call r) 279.07 529.83 T
(eturns 0 to indicate success, and -1 to indicate err) 303.08 529.83 T
(or) 519.16 529.83 T
(. In) 527.83 529.83 T
(case of err) 216 517.83 T
(or) 260.74 517.83 T
(,) 269.41 517.83 T
2 F
(errno) 274.41 517.83 T
0 F
( is set to) 296.07 517.83 T
4 9 Q
(\245) 216 499.83 T
0 10 Q
(EINV) 234 499.83 T
(AL for invalid parameters) 257.89 499.83 T
4 9 Q
(\245) 216 481.83 T
0 10 Q
(EF) 234 481.83 T
(AUL) 244.92 481.83 T
(T if the frs_fsched_info_t* parameter is NULL) 265.84 481.83 T
4 9 Q
(\245) 216 463.83 T
0 10 Q
(ENOSPC if the system could not allocate an interr) 234 463.83 T
(upt gr) 454.25 463.83 T
(oup) 481.36 463.83 T
4 9 Q
(\245) 216 445.83 T
0 10 Q
(ENOMEM if the system could not allocate memory for the FRS Object) 234 445.83 T
4 9 Q
(\245) 216 427.83 T
0 10 Q
(EEXIST if an FRS Object alr) 234 427.83 T
(eady exists for the speci\336ed pr) 354.52 427.83 T
(ocessor) 488.74 427.83 T
4 9 Q
(\245) 216 409.83 T
0 10 Q
(EBUSY is the speci\336ed pr) 234 409.83 T
(ocessor is the clock pr) 346 409.83 T
(ocessor) 442.14 409.83 T
4 9 Q
(\245) 216 391.83 T
0 10 Q
(EPERM for lack of permission) 234 391.83 T
4 9 Q
(\245) 216 373.83 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 373.83 T
1 11.5 Q
(Enqueuing Processes to a Frame Scheduler) 216 336.83 T
2 9.5 Q
(Data Structur) 45 324.67 T
(e) 99.57 324.67 T
4 8 Q
(typedef struct frs_queue_info {) 216 310.17 T
( int) 246 299.17 T
(cpu;) 276 299.17 T
( int) 246 288.17 T
(pid;) 276 288.17 T
( int) 246 277.17 T
(minor_index;) 276 277.17 T
( int) 246 266.17 T
(discipline;) 276 266.17 T
(} frs_queue_info_t;) 216 255.17 T
2 9.5 Q
(System Call) 45 246.17 T
4 8 Q
(int) 216 231.67 T
(schedctl) 246 231.67 T
(\050) 277.55 231.67 T
(MPTS_FRS_ENQUEUE, frs_queue_info_t* frs_queue_info) 282.44 231.67 T
(\051) 493.52 231.67 T
(;) 498.4 231.67 T
2 9.5 Q
(Library Call) 45 222.67 T
4 8 Q
(int) 216 208.17 T
(frs_enqueue) 246 208.17 T
(\050) 292.67 208.17 T
(frs_t* frs, int pid, int minor_index, uint discipline) 297.56 208.17 T
(\051) 466.42 208.17 T
(;) 471.3 208.17 T
0 10 Q
-0.41 (Pr) 216 175.83 P
-0.41 (ocesses may be cr) 225.8 175.83 P
-0.41 (eated using) 302.14 175.83 P
5 F
-0.41 (fork\050\051) 354.79 175.83 P
0 F
-0.41 ( or) 380.89 175.83 P
5 F
-0.41 (sproc\050\051) 394.46 175.83 P
0 F
-0.41 (. Using the child pr) 427.62 175.83 P
-0.41 (ocess ID) 510.57 175.83 P
(r) 216 163.83 T
(eturned by these system calls, a pr) 219.77 163.83 T
(ocess may be enqueued on a frame) 371.12 163.83 T
FMENDPAGE
%%EndPage: "22" 23
%%Page: "23" 23
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(23) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
-0.18 (scheduler minor frame queue using either of the calls above.) 234 632.33 P
5 F
-0.18 (frs_enqueue\050\051) 501.4 632.33 P
0 F
(is just a wrapper for the dir) 234 620.33 T
(ect) 354.4 620.33 T
5 F
(schedctl\050\051) 369.39 620.33 T
0 F
( call.) 413.22 620.33 T
-0.15 (The frs-master pr) 234 596.33 P
-0.15 (ocess is r) 310.09 596.33 P
-0.15 (esponsible for enqueueing the pr) 348.85 596.33 P
-0.15 (ocesses that will) 493.39 596.33 P
(be scheduled by an FRS, on the queues associated with the minor frames) 234 584.33 T
(wher) 234 572.33 T
(e they ar) 256.71 572.33 T
(e to r) 294.68 572.33 T
(un.) 317.04 572.33 T
(A pr) 234 548.33 T
(ocess may be enqueued on several queues simultaneously) 254.05 548.33 T
(. Hence the) 509.22 548.33 T
(same pr) 234 536.33 T
(ocess may be activated on dif) 269.12 536.33 T
(fer) 398.3 536.33 T
(ent minor frames within the same) 410.18 536.33 T
(major frame. A pr) 234 524.33 T
(ocess should not be enqueued to mor) 313 524.33 T
(e than one FRS.) 477.25 524.33 T
(Enqueueing a pr) 234 500.33 T
(ocess on one or mor) 307.2 500.33 T
(e frame queues does not mean that it) 395.14 500.33 T
-0.24 (will immediately start being scheduled by the frame scheduler) 234 488.33 P
-0.24 (. The queued) 507.66 488.33 P
(pr) 234 476.33 T
(ocess itself has to use) 243.77 476.33 T
5 F
(frs_join\050\051) 339.67 476.33 T
0 F
( to join the frame scheduler) 381.86 476.33 T
(, and the) 501.65 476.33 T
(frs-master pr) 234 464.33 T
(ocess has to or) 291.17 464.33 T
(der the scheduler to start its operation. Further) 354.81 464.33 T
(,) 560.62 464.33 T
(the scheduler will not start scheduling pr) 234 452.33 T
(ocesses, even if it has been) 415.58 452.33 T
-0.36 (signalled to start, until all pr) 234 440.33 P
-0.36 (ocesses in its queues have joined \050see \322Joining a) 357.36 440.33 P
(Frame Scheduler\323 on page) 234 428.33 T
(24\051. And in the case of multiple, synchr) 353.79 428.33 T
(onized) 526.4 428.33 T
(frame schedulers, execution will not start until all pr) 234 416.33 T
(ocesses on all frame) 465.1 416.33 T
(schedulers have joined.) 234 404.33 T
2 9.5 Q
(Parameters) 63 392.67 T
2 10 Q
(frs) 234 373.83 T
0 F
(The frame scheduler descriptor r) 306 373.83 T
(eturned by) 450.53 373.83 T
5 F
(frs_create\050\051) 501.34 373.83 T
2 F
(frs_queue_info) 234 355.83 T
0 F
(For) 306 355.83 T
5 F
(schedctl\050\051) 323.46 355.83 T
0 F
(, a str) 367.3 355.83 T
(uctur) 391.15 355.83 T
(e containing the following values.) 414.67 355.83 T
2 F
(pid) 234 337.83 T
0 F
(The child pr) 306 337.83 T
(ocess ID to be enqueued) 359.68 337.83 T
2 F
(minor-index) 234 319.83 T
0 F
(The minor frame wher) 306 319.83 T
(e the pr) 405.77 319.83 T
(ocess should r) 439.2 319.83 T
(un. Minor) 501.77 319.83 T
(frame 0 is the \336rst minor frame in the major frame.) 306 307.83 T
2 F
(cpu) 234 289.83 T
0 F
(This \336eld of the) 306 289.83 T
2 F
(frs_queue_info) 377.58 289.83 T
0 F
( parameter in the) 437.2 289.83 T
5 F
(schedctl\050\051) 515.34 289.83 T
0 F
(call identi\336es the pr) 306 277.83 T
(ocessor being managed by the) 393.24 277.83 T
(destination FRS.) 306 265.83 T
2 F
(discipline) 234 247.83 T
0 F
(The scheduling discipline for this child pr) 306 247.83 T
(ocess on this) 490.26 247.83 T
(queue. See \322Frame Scheduling Disciplines\323 on page) 306 235.83 T
(9. The) 537.27 235.83 T
(parameter must be an arithmetic combination of:) 306 223.83 T
4 9 Q
(\245) 306 205.83 T
0 10 Q
(FRS_DISC_R) 324 205.83 T
(T for the Realtime discipline, used with) 381.22 205.83 T
(every pr) 324 193.83 T
(ocess that is not FRS_DISC_BACKGROUND.) 361 193.83 T
4 9 Q
(\245) 306 175.83 T
0 10 Q
(FRS_DISC_UNDERRUNNABLE, added to) 324 175.83 T
(FRS_DISC_R) 324 163.83 T
(T to pr) 381.22 163.83 T
(event detection of underr) 410.83 163.83 T
(un err) 522.78 163.83 T
(ors.) 549.63 163.83 T
44 581 45 603 R
V
FMENDPAGE
%%EndPage: "23" 24
%%Page: "24" 24
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(24) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
4 F
(\245) 288 632.33 T
0 10 Q
(FRS_DISC_OVERRUNNABLE, added to) 306 632.33 T
(FRS_DISC_R) 306 620.33 T
(T to pr) 363.22 620.33 T
(event detection of overr) 392.83 620.33 T
(un err) 497.93 620.33 T
(ors.) 524.78 620.33 T
4 9 Q
(\245) 288 602.33 T
0 10 Q
(FRS_DISC_CONT) 306 602.33 T
(, added to FRS_DISC_R) 385.55 602.33 T
(T and) 489.58 602.33 T
(FRS_DISC_OVERRUNNABLE to allow the pr) 306 590.33 T
(ocess to) 508.88 590.33 T
(extend its execution over consecutive minor frames.) 306 578.33 T
4 9 Q
(\245) 288 560.33 T
0 10 Q
(FRS_DISC_BACKGROUND for a pr) 306 560.33 T
(ocess that has no) 466.11 560.33 T
(r) 306 548.33 T
(eal-time constraints, and r) 309.77 548.33 T
(uns only in idle time.) 424.73 548.33 T
(FRS_DISC_BACKGROUND and FRS_DISC_R) 216 530.33 T
(T ar) 420.25 530.33 T
(e mutually exclusive.) 437.64 530.33 T
4 9 Q
(Note:) 216 506.33 T
0 10 Q
(Pr) 242.48 506.33 T
(ocesses using the FRS_DISC_BACKGROUND discipline must be) 252.28 506.33 T
(enqueued last, after all FRS_DISC_R) 216 494.33 T
(T pr) 376.18 494.33 T
(ocesses have been enqueued.) 394.58 494.33 T
2 9.5 Q
(Return V) 45 482.67 T
(alues) 80.95 482.67 T
5 10 Q
(frs_enqueue\050\051) 216 457.83 T
0 F
(and the corr) 281.51 457.83 T
(esponding) 334.9 457.83 T
5 F
(schedctl\050\051) 384.09 457.83 T
0 F
( call r) 427.93 457.83 T
(eturn 0 to indicate) 451.94 457.83 T
(success and a negative integer to \337ag a failur) 216 445.83 T
(e. In case of err) 413.41 445.83 T
(or) 479.62 445.83 T
(,) 488.29 445.83 T
2 F
(errno) 493.29 445.83 T
0 F
( will) 514.95 445.83 T
(contain one of the following codes:) 216 433.83 T
4 9 Q
(\245) 216 415.83 T
0 10 Q
(EINV) 234 415.83 T
(AL for invalid parameters) 257.89 415.83 T
4 9 Q
(\245) 216 397.83 T
0 10 Q
(EF) 234 397.83 T
(AUL) 244.92 397.83 T
(T if the frs_queue_info_t* parameter is NULL) 265.84 397.83 T
4 9 Q
(\245) 216 379.83 T
0 10 Q
(EPERM for lack of permission) 234 379.83 T
4 9 Q
(\245) 216 361.83 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 361.83 T
1 11.5 Q
(Joining a Frame Scheduler) 216 324.83 T
2 9.5 Q
(System Call) 45 312.67 T
4 8 Q
(int) 216 298.17 T
(schedctl) 246 298.17 T
(\050) 277.55 298.17 T
(MPTS_FRS_JOIN, int cpu) 282.44 298.17 T
(\051) 377.97 298.17 T
(;) 382.85 298.17 T
2 9.5 Q
(Library Call) 45 289.17 T
4 8 Q
(int) 216 274.67 T
(frs_join) 246 274.67 T
(\050) 273.99 274.67 T
(frs_t* frs) 278.88 274.67 T
(\051) 310.87 274.67 T
0 10 Q
(Real-time pr) 216 253.33 T
(ocesses need to allocate r) 270.75 253.33 T
(esour) 380.66 253.33 T
(ces and set up befor) 404.94 253.33 T
(e they start) 492.5 253.33 T
(r) 216 241.33 T
(eal-time execution. This includes pinning down stacks and dynamic) 219.77 241.33 T
(memory \050memory allocated befor) 216 229.33 T
(e an) 364.35 229.33 T
5 F
(sproc\050\051) 384.95 229.33 T
0 F
( can be pinned by the par) 416.03 229.33 T
(ent) 527.75 229.33 T
(pr) 216 217.33 T
(ocess, but memory allocated by the child, and the addr) 225.77 217.33 T
(ess space cr) 467.37 217.33 T
(eated) 518.3 217.33 T
-0.74 (by) 216 205.33 P
5 F
-0.74 (fork\050\051) 228.84 205.33 P
0 F
-0.74 (, need to be pinned by the child\051, opening I/O r) 254.94 205.33 P
-0.74 (esour) 457.35 205.33 P
-0.74 (ces, initializing) 481.63 205.33 P
(data str) 216 193.33 T
(uctur) 249.22 193.33 T
(es, locks, and semaphor) 272.74 193.33 T
(es, etc.) 377.67 193.33 T
-0.29 (A pr) 216 169.33 P
-0.29 (ocess uses either of these calls to notify the Frame Scheduler to which it) 235.75 169.33 P
(is queued that it is initialized and r) 216 157.33 T
(eady to start r) 369.8 157.33 T
(eal-time execution.) 430.93 157.33 T
FMENDPAGE
%%EndPage: "24" 25
%%Page: "25" 25
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(25) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(The frs-master pr) 234 632.33 T
(ocess cannot call) 310.4 632.33 T
5 F
(frs_enqueue\050\051) 386.09 632.33 T
0 F
( until it has cr) 449.37 632.33 T
(eated the) 509.71 632.33 T
-0.12 (child pr) 234 620.33 P
-0.12 (ocess; however the child pr) 268.33 620.33 P
-0.12 (ocess typically calls) 388.08 620.33 P
5 F
-0.12 (frs_join\050\051) 476.4 620.33 P
0 F
-0.12 ( soon after) 518.58 620.33 P
-0.54 (it is cr) 234 608.33 P
-0.54 (eated. Hence ther) 259.44 608.33 P
-0.54 (e\325s a race between the action of enqueueing a pr) 335.57 608.33 P
-0.54 (ocess) 541.88 608.33 P
(and the action of joining the frame scheduler) 234 596.33 T
(. If the enqueueing happens) 430.8 596.33 T
(\336rst, ther) 234 584.33 T
(e is a potential pr) 274.12 584.33 T
(oblem if the scheduler starts r) 350.22 584.33 T
(unning befor) 481.17 584.33 T
(e the) 538.48 584.33 T
(pr) 234 572.33 T
(ocess joins. This is avoided by having the scheduler wait for all its) 243.77 572.33 T
(enqueued pr) 234 560.33 T
(ocesses to join befor) 290.21 560.33 T
(e it starts r) 377.99 560.33 T
(eal-time execution. This) 424.14 560.33 T
-0.67 (synchr) 234 548.33 P
-0.67 (onization is done by the frame scheduler) 263.63 548.33 P
-0.67 (, so the pr) 438.71 548.33 P
-0.67 (ogrammer does not) 480.04 548.33 P
-0.75 (need to be concerned with this race. Ther) 234 536.33 P
-0.75 (e\325s no pr) 410.06 536.33 P
-0.75 (oblem if) 446.41 536.33 P
5 F
-0.75 (frs_join\050\051) 483.65 536.33 P
0 F
-0.75 ( happens) 525.84 536.33 P
(\336rst, unless, of course, the frs-master for) 234 524.33 T
(gets to ever enqueue the pr) 410.98 524.33 T
(ocess,) 530.67 524.33 T
(which will have the expected ef) 234 512.33 T
(fect of keeping the unenqueued pr) 373.24 512.33 T
(ocess) 525.17 512.33 T
(waiting for) 234 500.33 T
(ever) 282.83 500.33 T
(.) 301.26 500.33 T
2 9.5 Q
(Parameters) 63 488.67 T
2 10 Q
(frs) 234 469.83 T
0 F
(An FRS descriptor as r) 306 469.83 T
(eturned by) 405.17 469.83 T
5 F
(frs_create\050\051) 455.98 469.83 T
0 F
(.) 506.49 469.83 T
2 F
(cpu) 234 451.83 T
0 F
(Speci\336es the pr) 306 451.83 T
(ocessor being managed by the destination) 373.09 451.83 T
(FRS.) 306 439.83 T
2 9.5 Q
(Return V) 63 428.17 T
(alues) 98.95 428.17 T
0 10 Q
(In case of success both calls r) 234 403.33 T
(eturn a value gr) 361.14 403.33 T
(eater or equal to zer) 431.16 403.33 T
(o; and in) 518.92 403.33 T
(case of err) 234 391.33 T
(or) 278.74 391.33 T
(, -1 is r) 287.41 391.33 T
(eturned and) 316.64 391.33 T
2 F
(errno) 373.29 391.33 T
0 F
( is set to one of these values:) 394.95 391.33 T
4 9 Q
(\245) 234 373.33 T
0 10 Q
(EINV) 252 373.33 T
(AL for invalid parameters) 275.89 373.33 T
4 9 Q
(\245) 234 355.33 T
0 10 Q
(EPERM for lack of permission) 252 355.33 T
4 9 Q
(\245) 234 337.33 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 252 337.33 T
1 11.5 Q
(Starting the Frame Scheduler) 234 300.33 T
2 9.5 Q
(System Call) 63 288.17 T
4 8 Q
(int) 234 273.67 T
(schedctl) 264 273.67 T
(\050) 295.55 273.67 T
(MPTS_FRS_START, int cpu) 300.44 273.67 T
(\051) 403.96 273.67 T
(;) 408.85 273.67 T
2 9.5 Q
(Library Call) 63 264.67 T
4 8 Q
(int) 234 250.17 T
(frs_start) 264 250.17 T
(\050) 295.1 250.17 T
(frs_t* frs) 299.99 250.17 T
(\051) 331.98 250.17 T
(;) 336.86 250.17 T
0 10 Q
-0.64 (When all pr) 234 228.83 P
-0.64 (ocesses to be scheduled have been enqueued , the master pr) 284.71 228.83 P
-0.64 (ocess) 541.99 228.83 P
(commands the frame scheduler to start activating pr) 234 216.83 T
(ocesses. This is done) 464.97 216.83 T
(using either of the calls above.) 234 204.83 T
(The scheduler waits for all enqueued pr) 234 180.83 T
(ocesses to call) 409.77 180.83 T
5 F
(frs_join\050\051) 473.42 180.83 T
0 F
( befor) 515.6 180.83 T
(e it) 540.97 180.83 T
(starts r) 234 168.83 T
(eal-time operation. Once all pr) 264.2 168.83 T
(ocesses have joined, the scheduler) 398.62 168.83 T
FMENDPAGE
%%EndPage: "25" 26
%%Page: "26" 26
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(26) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(enables the event interr) 216 632.33 T
(upt \050if necessary\051, waits for the next interr) 319.3 632.33 T
(upt, and) 504.22 632.33 T
(starts scheduling the member pr) 216 620.33 T
(ocesses in r) 358.87 620.33 T
(eal-time.) 408.54 620.33 T
(When multiple synchr) 216 596.33 T
(onized FRSs ar) 314.68 596.33 T
(e used, each FRS must be started) 380.23 596.33 T
-0.26 (individually) 216 584.33 P
-0.26 (. Slave FRSs do not start until the master FRS sends an enabling) 269.69 584.33 P
(signal. The master FRS does not send the signal until all slave FRSs r) 216 572.33 T
(eport) 517.82 572.33 T
(that all pr) 216 560.33 T
(ocesses have joined.) 258.92 560.33 T
2 9.5 Q
(Parameters) 45 548.67 T
2 10 Q
(cpu) 216 529.83 T
0 F
(Speci\336es the pr) 288 529.83 T
(ocessor managed by the frame scheduler) 355.09 529.83 T
(that is being started) 288 517.83 T
2 F
(frs) 216 499.83 T
0 F
(Speci\336es an FRS descriptor as r) 288 499.83 T
(eturned by) 425.35 499.83 T
5 F
(frs_create\050\051) 476.16 499.83 T
2 9.5 Q
(Return V) 45 488.17 T
(alues) 80.95 488.17 T
0 10 Q
(Both calls r) 216 463.33 T
(eturn 0 for sucess and -1 for err) 264.89 463.33 T
(or) 402.4 463.33 T
(. In case of err) 411.06 463.33 T
(or) 472.49 463.33 T
(,) 481.15 463.33 T
2 F
(errno) 486.15 463.33 T
0 F
( is set to) 507.81 463.33 T
(one of the following values:) 216 451.33 T
4 9 Q
(\245) 216 433.33 T
0 10 Q
(EINV) 234 433.33 T
(AL for invalid parameters) 257.89 433.33 T
4 9 Q
(\245) 216 415.33 T
0 10 Q
(EPERM for lack of permission) 234 415.33 T
4 9 Q
(\245) 216 397.33 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 397.33 T
1 11.5 Q
(Y) 216 360.33 T
(ielding Control at the End of a Frame) 223.24 360.33 T
2 9.5 Q
(System Call) 45 348.17 T
4 8 Q
(int) 216 333.67 T
(schedctl) 246 333.67 T
(\050) 277.55 333.67 T
(MPTS_FRS_YIELD) 282.44 333.67 T
(\051) 354.86 333.67 T
(;) 359.74 333.67 T
2 9.5 Q
(Library Call) 45 324.67 T
4 8 Q
(int) 216 310.17 T
(frs_yield) 246 310.17 T
(\050) 277.99 310.17 T
(void) 282.88 310.17 T
(\051) 299.76 310.17 T
(;) 304.65 310.17 T
0 10 Q
-0.05 (A pr) 216 277.83 P
-0.05 (ocess under contr) 236 277.83 P
-0.05 (ol of a frame scheduler is never pr) 313.48 277.83 P
-0.05 (eempted within its) 463.64 277.83 P
(minor frame time period. After it \336nishes its work for that frame, it has to) 216 265.83 T
(explicitly yield the pr) 216 253.83 T
(ocessor using either of the calls above.) 310.24 253.83 T
(The concept of yielding is dif) 216 229.83 T
(fer) 344.07 229.83 T
(ent than the concept of blocking. When a) 355.95 229.83 T
(pr) 216 217.83 T
(ocess blocks \050by r) 225.77 217.83 T
(equesting some system service\051 it becomes unavailable) 302.73 217.83 T
(to r) 216 205.83 T
(un until it is unblocked. On the other hand, when a pr) 231.08 205.83 T
(ocess yields by) 469.33 205.83 T
-0.77 (using) 216 193.83 P
5 F
-0.77 (frs_yield\050\051) 242.28 193.83 P
0 F
-0.77 (, it r) 289.46 193.83 P
-0.77 (emains available for execution \050r) 305.36 193.83 P
-0.77 (eady to r) 446.01 193.83 P
-0.77 (un\051, so that the) 483.51 193.83 P
-0.54 (frame scheduler can r) 216 181.83 P
-0.54 (eadily activate it when its turn to r) 309.84 181.83 P
-0.54 (un comes again. The) 458.07 181.83 P
(frame scheduler does not contr) 216 169.83 T
(ol framed r) 352.8 169.83 T
(eal-time execution by blocking) 401.92 169.83 T
FMENDPAGE
%%EndPage: "26" 27
%%Page: "27" 27
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(27) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(and unblocking pr) 234 632.33 T
(ocesses, but rather by activating them only when their) 315.7 632.33 T
(turn comes.) 234 620.33 T
(Pr) 234 596.33 T
(ocesses within the same frame queue ar) 243.8 596.33 T
(e activated in a non-pr) 418.61 596.33 T
(eemptable) 517.7 596.33 T
-0.2 (r) 234 584.33 P
-0.2 (ound r) 237.77 584.33 P
-0.2 (obin fashion until they yield. This means that a pr) 267.24 584.33 P
-0.2 (ocess may r) 485.12 584.33 P
-0.2 (equest) 536.01 584.33 P
-0.54 (system services, block, unblock, and continue r) 234 572.33 P
-0.54 (unning within a single minor) 438.05 572.33 P
(frame. It is only the yield operation that causes a pr) 234 560.33 T
(ocess to be pr) 460.48 560.33 T
(evented) 519.93 560.33 T
(fr) 234 548.33 T
(om r) 241.1 548.33 T
(unning again within its minor frame.) 261.74 548.33 T
-0.85 (At the end of a minor frame the scheduler pr) 234 524.33 P
-0.85 (eempts whatever is r) 423.76 524.33 P
-0.85 (unning and) 513.19 524.33 P
-0.03 (veri\336es that all pr) 234 512.33 P
-0.03 (ocesses in the frame queue wer) 311.7 512.33 P
-0.03 (e activated at least once. If) 448.84 512.33 P
-0.65 (a pr) 234 500.33 P
-0.65 (ocess was never activated because it was always blocked and the pr) 250.62 500.33 P
-0.65 (ocess) 541.99 500.33 P
-0.63 (is not Underr) 234 488.33 P
-0.63 (unnable, the scheduler raises an underr) 291.72 488.33 P
-0.63 (un exception. Similarly) 462.84 488.33 P
-0.63 (,) 562.63 488.33 P
(the scheduler veri\336es that all pr) 234 476.33 T
(ocesses in the frame queue have yielded. If) 373.69 476.33 T
-0.63 (it \336nds one that has not yielded but is not Overr) 234 464.33 P
-0.63 (unnable , it raises an overr) 439.77 464.33 P
-0.63 (un) 553.29 464.33 P
(exception.) 234 452.33 T
(The scheduler r) 234 428.33 T
(esets the yield state of a pr) 302.55 428.33 T
(ocess at the end of each minor) 419.08 428.33 T
-0.03 (frame, unless the pr) 234 416.33 P
-0.03 (ocess has been de\336ned to be Continuable in which case) 321.44 416.33 P
(the yield state carries over to the next minor frame. This is the mechanism) 234 404.33 T
(that pr) 234 392.33 T
(events a Continuable pr) 263.6 392.33 T
(ocess fr) 369 392.33 T
(om being r) 401.75 392.33 T
(edispatched once it has) 449.39 392.33 T
(yielded. \050See \322Scheduling W) 234 380.33 T
(ithin A Minor Frame\323 on page) 359.36 380.33 T
(17.\051) 496.16 380.33 T
2 9.5 Q
(Parameters) 63 368.67 T
0 10 Q
(This call takes no parameters.) 234 343.83 T
2 9.5 Q
(Return V) 63 332.17 T
(alues) 98.95 332.17 T
0 10 Q
(When the operation is succesful, this call r) 234 307.33 T
(eturns the number of the last) 419.72 307.33 T
(minor frame wher) 234 295.33 T
(e this pr) 314.55 295.33 T
(ocess yielded or was pr) 350.33 295.33 T
(eempted. \050Minor frames) 453.39 295.33 T
-0.7 (ar) 234 283.33 P
-0.7 (e number) 242.76 283.33 P
-0.7 (ed fr) 284.1 283.33 P
-0.7 (om 0 within each major frame.\051 In case of err) 303.89 283.33 P
-0.7 (or) 494.67 283.33 P
-0.7 (, -1 is r) 503.33 283.33 P
-0.7 (eturned) 530.47 283.33 P
(with) 234 271.33 T
2 F
(errno) 256.82 271.33 T
0 F
( set to one of the following values:) 278.48 271.33 T
4 9 Q
(\245) 234 253.33 T
0 10 Q
(EINV) 252 253.33 T
(AL for invalid parameters) 275.89 253.33 T
4 9 Q
(\245) 234 235.33 T
0 10 Q
(EPERM for lack of permission) 252 235.33 T
4 9 Q
(\245) 234 217.33 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 252 217.33 T
44 377 45 435 R
V
FMENDPAGE
%%EndPage: "27" 28
%%Page: "28" 28
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(28) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Delivering T) 216 631.33 T
(ime-Base Interrupts to a Frame Scheduler) 281.56 631.33 T
2 9.5 Q
(System Call) 45 619.17 T
4 8 Q
(int) 216 604.67 T
(schedctl) 246 604.67 T
(\050) 277.55 604.67 T
(MPTS_FRS_INTR, int cpu) 282.44 604.67 T
(\051) 378.41 604.67 T
(;) 383.29 604.67 T
2 9.5 Q
(Library Call) 45 595.67 T
4 8 Q
(int) 216 581.17 T
(frs_userintr) 246 581.17 T
(\050) 288.21 581.17 T
(frs_t* frs) 293.09 581.17 T
(\051) 325.08 581.17 T
(;) 329.97 581.17 T
0 10 Q
(These calls allow the frs-master pr) 216 559.83 T
(ocess to send r) 366.88 559.83 T
(eal-time interr) 430.96 559.83 T
(upts to one) 493.85 559.83 T
(or several synchr) 216 547.83 T
(onous frame schedulers. When multiple, synchr) 291.35 547.83 T
(onized) 502.69 547.83 T
(FRSs ar) 216 535.83 T
(e in use, the speci\336ed FRS must be the master FRS.) 248.98 535.83 T
-0.12 (This capability is intended to be used as a debugging aid by giving you full) 216 511.83 P
-0.69 (contr) 216 499.83 P
-0.69 (ol of when each minor frame begins. T) 238.74 499.83 P
-0.69 (ypically you would have a debug) 402.74 499.83 P
(version of your application in which, by conditional compilation, the) 216 487.83 T
-0.38 (frs-master pr) 216 475.83 P
-0.38 (ocess generates the interr) 272.79 475.83 P
-0.38 (upt signal on some user input such as) 382.95 475.83 P
(a mouse click.) 216 463.83 T
4 9 Q
-0.54 (Note:) 216 439.83 P
0 10 Q
-0.54 (It would not be practical to drive a pr) 241.4 439.83 P
-0.54 (oduction r) 402.18 439.83 P
-0.54 (eal-time pr) 447.38 439.83 P
-0.54 (ogram fr) 494.92 439.83 P
-0.54 (om) 532.76 439.83 P
(softwar) 216 427.83 T
(e-supplied interr) 249.38 427.83 T
(upts, owing to the unpr) 323.57 427.83 T
(edictable and varying) 427.86 427.83 T
(latency in the scheduling of the interr) 216 415.83 T
(upt-generating pr) 381.18 415.83 T
(ocess. T) 459.51 415.83 T
(o drive a) 492.87 415.83 T
(Frame Scheduler fr) 216 403.83 T
(om a custom interr) 300.27 403.83 T
(upt sour) 383.88 403.83 T
(ce, use the device driver) 421.16 403.83 T
(interface \050see \322The Frame Scheduler DDI\323 on page) 216 391.83 T
(33\051.) 441.77 391.83 T
2 9.5 Q
(Parameters) 45 380.17 T
2 10 Q
(cpu) 216 361.33 T
0 F
(Speci\336es the pr) 288 361.33 T
(ocessor being managed by the destination) 355.09 361.33 T
(frame scheduler) 288 349.33 T
2 F
(frs) 216 331.33 T
0 F
(Speci\336es an FRS descriptor as r) 288 331.33 T
(eturned by) 425.35 331.33 T
5 F
(frs_create) 476.16 331.33 T
0 F
(.) 520.01 331.33 T
2 9.5 Q
(Return V) 45 319.67 T
(alues) 80.95 319.67 T
0 10 Q
(Both calls r) 216 294.83 T
(eturn 0 for sucess and -1 for err) 264.89 294.83 T
(or) 402.4 294.83 T
(. In case of err) 411.06 294.83 T
(or) 472.49 294.83 T
(,) 481.15 294.83 T
2 F
(errno) 486.15 294.83 T
0 F
( is set to) 507.81 294.83 T
(one of the following values:) 216 282.83 T
4 9 Q
(\245) 216 264.83 T
0 10 Q
(EINV) 234 264.83 T
(AL for invalid parameters) 257.89 264.83 T
4 9 Q
(\245) 216 246.83 T
0 10 Q
(EPERM for lack of permission) 234 246.83 T
4 9 Q
(\245) 216 228.83 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 228.83 T
FMENDPAGE
%%EndPage: "28" 29
%%Page: "29" 29
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(29) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Stopping and Resuming Frame Schedulers) 234 631.33 T
2 9.5 Q
(System Calls) 63 619.17 T
4 8 Q
(int) 234 604.67 T
(schedctl) 264 604.67 T
(\050) 295.55 604.67 T
(MPTS_FRS_STOP, int cpu) 300.44 604.67 T
(\051) 399.53 604.67 T
(;) 404.41 604.67 T
(int) 234 593.67 T
(schedctl) 264 593.67 T
(\050) 295.55 593.67 T
(MPTS_FRS_RESUME, int cpu) 300.44 593.67 T
(\051) 411.96 593.67 T
(;) 416.84 593.67 T
2 9.5 Q
(Library Calls) 63 584.67 T
4 8 Q
(int) 234 570.17 T
(frs_stop) 264 570.17 T
(\050) 294.66 570.17 T
(frs_t* frs) 299.55 570.17 T
(\051) 331.54 570.17 T
(;) 336.42 570.17 T
(int) 234 559.17 T
(frs_resume) 264 559.17 T
(\050) 306.21 559.17 T
(frs_t* frs) 311.09 559.17 T
(\051) 343.08 559.17 T
(:) 347.97 559.17 T
0 10 Q
-0.14 (These calls pr) 234 526.83 P
-0.14 (ovide a way to stop and r) 293.73 526.83 P
-0.14 (esume a Frame Scheduler) 405 526.83 P
-0.14 (. When the) 517.16 526.83 P
(stop call is issued, the scheduler state is changed such that the time-base) 234 514.83 T
(interr) 234 502.83 T
(upts ar) 258.59 502.83 T
(e ignor) 289.38 502.83 T
(ed. The scheduler continues executing all pr) 320.17 502.83 T
(ocesses in) 514.42 502.83 T
-0.32 (the curr) 234 490.83 P
-0.32 (ent minor frame until they have all yielded. Then the scheduler falls) 268.22 490.83 P
(into an idle loop.) 234 478.83 T
-0.62 (The r) 234 454.83 P
-0.62 (esume call enables the r) 256.38 454.83 P
-0.62 (eception of time-base interr) 358.51 454.83 P
-0.62 (upts. Upon the next) 477.63 454.83 P
(interr) 234 442.83 T
(upt, the scheduler starts scheduling the pr) 258.59 442.83 T
(ocesses on the queue) 444.46 442.83 T
-0.6 (associated with the minor frame immediately after the minor frame that was) 234 430.83 P
(active when the stop call was issued.) 234 418.83 T
(If the stop and r) 234 394.83 T
(esume calls ar) 304.2 394.83 T
(e issued so close together that no event) 366.12 394.83 T
-0.22 (interr) 234 382.83 P
-0.22 (upt gets ignor) 258.59 382.83 P
-0.22 (ed, the r) 319.79 382.83 P
-0.22 (esulting ef) 355.38 382.83 P
-0.22 (fect is null. The stop and r) 401.1 382.83 P
-0.22 (esume calls) 514.28 382.83 P
(always change the length of a major frame by a whole number of minor) 234 370.83 T
(frame periods \050possibly zer) 234 358.83 T
(o\051.) 354.55 358.83 T
(When multiple synchr) 234 334.83 T
(onized FRSs ar) 332.68 334.83 T
(e in use, all FRSs start and stop) 398.23 334.83 T
(independently) 234 322.83 T
(. Stopping one FRS while others continue can r) 297.55 322.83 T
(esult in their) 503.63 322.83 T
(major frames being out of synchr) 234 310.83 T
(onization \050pr) 379.94 310.83 T
(esuming all major frames) 437.16 310.83 T
(wer) 234 298.83 T
(e the same length to begin with\051. Y) 250.89 298.83 T
(ou can keep all FRSs in a gr) 403.23 298.83 T
(oup in) 524.17 298.83 T
(major) 234 286.83 T
(-frame synchr) 259.39 286.83 T
(ony by stopping and starting all of them at the same) 320.73 286.83 T
(ef) 234 274.83 T
(fective time. This can be done because a scheduler does not actually stop) 241.94 274.83 T
-0.58 (or start until a time-base event happens. Thus if you stop all FRSs within one) 234 262.83 P
(minor frame interval, and if you r) 234 250.83 T
(esume all FRSs in the interval after one) 382.57 250.83 T
(time-base event and befor) 234 238.83 T
(e the next, the gr) 348.24 238.83 T
(oup of FRSs will r) 421.59 238.83 T
(emain) 500.4 238.83 T
(synchr) 234 226.83 T
(onized to the same minor frame.) 263.63 226.83 T
2 9.5 Q
(Parameters) 63 215.17 T
2 10 Q
(cpu) 234 196.33 T
0 F
(Speci\336es the pr) 306 196.33 T
(ocessor being managed by the destination) 373.09 196.33 T
(frame scheduler) 306 184.33 T
2 F
(frs) 234 166.33 T
0 F
(Speci\336es an FRS descriptor as r) 306 166.33 T
(eturned by) 443.35 166.33 T
5 F
(frs_create\050\051) 494.16 166.33 T
0 F
(.) 544.67 166.33 T
FMENDPAGE
%%EndPage: "29" 30
%%Page: "30" 30
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(30) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
2 9.5 Q
(Return V) 45 632.67 T
(alues) 80.95 632.67 T
0 10 Q
-0.44 (All calls r) 216 607.83 P
-0.44 (eturn 0 for sucess and -1 for err) 256.96 607.83 P
-0.44 (or) 391.34 607.83 P
-0.44 (. In case of err) 400.01 607.83 P
-0.44 (or) 459.65 607.83 P
-0.44 (,) 468.32 607.83 P
2 F
-0.44 (errno) 472.87 607.83 P
0 F
-0.44 ( is set to one) 494.53 607.83 P
(of the following values:) 216 595.83 T
4 9 Q
(\245) 216 577.83 T
0 10 Q
(EINV) 234 577.83 T
(AL for invalid parameters) 257.89 577.83 T
4 9 Q
(\245) 216 559.83 T
0 10 Q
(EPERM for lack of permission) 234 559.83 T
4 9 Q
(\245) 216 541.83 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 541.83 T
1 11.5 Q
(Dynamic Management of Scheduler Queues) 216 504.83 T
2 9.5 Q
(System Calls) 45 492.67 T
4 8 Q
(int) 216 478.17 T
(schedctl) 246 478.17 T
(\050) 277.55 478.17 T
(MPTS_FRS_GETQUEUELEN, frs_queue_info_t* frs_queue_info) 282.44 478.17 T
(\051) 514.4 478.17 T
(;) 519.29 478.17 T
(int) 216 467.17 T
(schedctl) 246 467.17 T
(\050) 277.55 467.17 T
(MPTS_FRS_READQUEUE, frs_queue_info_t* frs_queue_info,) 282.44 467.17 T
(int* pidlist) 426 456.17 T
(\051) 462.44 456.17 T
(;) 467.32 456.17 T
(int) 216 445.17 T
(schedctl) 246 445.17 T
(\050) 277.55 445.17 T
(MPTS_FRS_PREMOVE, frs_queue_info_t* frs_queue_info) 282.44 445.17 T
(\051) 493.97 445.17 T
(;) 498.85 445.17 T
(int) 216 434.17 T
(schedctl) 246 434.17 T
(\050) 277.55 434.17 T
(MPTS_FRS_PINSERT, frs_queue_info_t* frs_queue_info, int base_pid) 282.44 434.17 T
(\051) 536.19 434.17 T
(;) 541.08 434.17 T
2 9.5 Q
(Library Calls) 45 425.17 T
4 8 Q
(int) 216 410.67 T
(frs_getqueuelen) 246 410.67 T
(\050) 305.56 410.67 T
(frs_t* frs, int minor_index) 310.45 410.67 T
(\051) 401.09 410.67 T
(;) 405.98 410.67 T
(int) 216 399.67 T
(frs_readqueue) 246 399.67 T
(\050) 299.78 399.67 T
(frs_t* frs, int minor_index, int* pidlist) 304.66 399.67 T
(\051) 433.97 399.67 T
(;) 438.85 399.67 T
(int) 216 388.67 T
(frs_premove) 246 388.67 T
(\050) 292.65 388.67 T
(frs_t* frs, int minor_index, int remove_pid) 297.54 388.67 T
(\051) 445.07 388.67 T
(;) 449.95 388.67 T
(int) 216 377.67 T
(frs_pinsert) 246 377.67 T
(\050) 285.55 377.67 T
(frs_t* frs, int minor_index, int insert_pid, int discipline, int base_pid) 290.43 377.67 T
(\051) 526.4 377.67 T
(;) 531.28 377.67 T
0 10 Q
(These functions ar) 216 345.33 T
(e used to dynamically contr) 296.81 345.33 T
(ol the minor frame pr) 419.22 345.33 T
(ocess) 514.06 345.33 T
(queues while the Frame Scheduler is r) 216 333.33 T
(unning.) 384.27 333.33 T
4 9 Q
(Note:) 216 309.33 T
0 10 Q
(Queue manipulation entails considerable over) 242.48 309.33 T
(head, taking up) 446.37 309.33 T
(valuable time fr) 216 297.33 T
(om a frame and possibly leading to overr) 285.67 297.33 T
(un err) 467.59 297.33 T
(ors.) 494.44 297.33 T
-0.5 (The length of a queue is obtained using) 216 273.33 P
5 F
-0.5 (frs_getqueuelen\050\051) 388.46 273.33 P
0 F
-0.5 (. The length of the) 468.96 273.33 P
(queue speci\336ed by minor_index is r) 216 261.33 T
(eturned as the function r) 373.76 261.33 T
(esult.) 482.4 261.33 T
(The list of pr) 216 237.33 T
(ocesses in a queue can be r) 272.1 237.33 T
(ead using) 389.55 237.33 T
5 F
(frs_readqueue\050\051) 434.99 237.33 T
0 F
(. All) 507.16 237.33 T
(pr) 216 225.33 T
(ocess IDs ar) 225.77 225.33 T
(e r) 278.04 225.33 T
(eturned in queue or) 289.09 225.33 T
(der to the speci\336ed array) 376.49 225.33 T
(. The array) 485.56 225.33 T
(must be long enough to r) 216 213.33 T
(eceive them all.) 326.84 213.33 T
-0.57 (The call) 216 189.33 P
5 F
-0.57 (frs_premove\050\051) 251.83 189.33 P
0 F
-0.57 ( r) 315.69 189.33 P
-0.57 (emoves a speci\336c pr) 321.38 189.33 P
-0.57 (ocess fr) 408.53 189.33 P
-0.57 (om a queue. The pr) 440.71 189.33 P
-0.57 (ocess) 523.92 189.33 P
-0.4 (stops being scheduled for execution and is temporarily suspended. It can be) 216 177.33 P
(r) 216 165.33 T
(e-inserted in the queue.) 219.77 165.33 T
FMENDPAGE
%%EndPage: "30" 31
%%Page: "31" 31
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler API) 464.36 679.44 T
1 F
(31) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
5 10 Q
-0.3 (frs_pinsert\050\051) 234 632.33 P
0 F
-0.3 ( inserts a pr) 290.06 632.33 P
-0.3 (ocess in a queue following) 340.63 632.33 P
2 F
-0.3 (base_pid) 458.41 632.33 P
0 F
-0.3 ( in the queue. T) 493.02 632.33 P
-0.3 (o) 559.34 632.33 P
(insert a pr) 234 620.33 T
(ocess at the head of the queue, specify 0 for) 278.73 620.33 T
2 F
(base_pid) 472.06 620.33 T
0 F
(. The pr) 506.67 620.33 T
(ocess) 540.67 620.33 T
(is dispatched again in its corr) 234 608.33 T
(ect turn.) 363.32 608.33 T
4 9 Q
(Note:) 234 584.33 T
0 10 Q
(Only pr) 260.48 584.33 T
(ocesses that have been queued with) 294.89 584.33 T
5 F
(frs_enqueue\050\051) 455.21 584.33 T
0 F
( can be) 518.49 584.33 T
(inserted. The) 234 572.33 T
5 F
(frs_premove\050\051) 294.08 572.33 T
0 F
( and) 357.93 572.33 T
5 F
(frs_pinsert\050\051) 379.85 572.33 T
0 F
( calls ar) 435.91 572.33 T
(e designed for the) 469.16 572.33 T
-0.22 (purpose of r) 234 560.33 P
-0.22 (e-or) 287.59 560.33 P
-0.22 (dering the queues of existing pr) 304.93 560.33 P
-0.22 (ocesses, or for changing the) 443.99 560.33 P
(discipline of existing pr) 234 548.33 T
(ocesses. They ar) 337.71 548.33 T
(e not intended for the purpose of) 408.44 548.33 T
(adding new pr) 234 536.33 T
(ocesses to the dispatch queue.) 299.2 536.33 T
4 9 Q
-0.44 (Note:) 234 512.33 P
0 10 Q
-0.44 (Do not r) 259.59 512.33 P
-0.44 (earrange the queue so as to place a Backgr) 295.2 512.33 P
-0.44 (ound pr) 477.78 512.33 P
-0.44 (ocess ahead) 513.02 512.33 P
(of a r) 234 500.33 T
(eal-time pr) 256.55 500.33 T
(ocess. A Backgr) 304.62 500.33 T
(ound pr) 373.47 500.33 T
(ocess must always be the last in its) 409.15 500.33 T
(queue.) 234 488.33 T
2 9.5 Q
(Parameters) 63 476.67 T
2 10 Q
(frs_queue_info) 234 457.83 T
0 F
(Speci\336es a str) 306 457.83 T
(uctur) 365.82 457.83 T
(e in which the) 389.33 457.83 T
2 F
(cpu) 454.02 457.83 T
0 F
( \336eld identi\336es the) 468.64 457.83 T
(frame scheduler) 306 445.83 T
(, and the other \336elds specify information) 376.7 445.83 T
(about a queued pr) 306 433.83 T
(ocess.) 386.87 433.83 T
2 F
(frs) 234 415.83 T
0 F
(Speci\336es an FRS descriptor as r) 306 415.83 T
(eturned by) 443.35 415.83 T
5 F
(frs_create\050\051) 494.16 415.83 T
0 F
(.) 544.67 415.83 T
2 F
(minor_index) 234 397.83 T
0 F
(As a parameter or a \336eld in) 306 397.83 T
2 F
(frs_queue_info) 429.03 397.83 T
0 F
(, speci\336es the) 488.65 397.83 T
(minor frame. Minor frames ar) 306 385.83 T
(e number) 437.81 385.83 T
(ed fr) 479.84 385.83 T
(om 0.) 500.33 385.83 T
2 F
(pidlist) 234 367.83 T
0 F
(Addr) 306 367.83 T
(ess of a vector of integers long enough to r) 329.76 367.83 T
(eceive the) 516.59 367.83 T
(pr) 306 355.83 T
(ocess IDs of all pr) 315.77 355.83 T
(ocesses in one queue.) 393.64 355.83 T
2 F
(r) 234 337.83 T
(emove_pid) 237.71 337.83 T
0 F
(Pr) 306 337.83 T
(ocess ID of a queued pr) 315.8 337.83 T
(ocess to be r) 419.45 337.83 T
(emoved fr) 472.9 337.83 T
(om the) 518.1 337.83 T
(queue.) 306 325.83 T
2 F
(base_pid) 234 307.83 T
0 F
(Pr) 306 307.83 T
(ocess_ID of a pr) 315.8 307.83 T
(ocess in the queue, or 0.) 386.12 307.83 T
2 F
(insert_pid) 234 289.83 T
0 F
-0.59 (Pr) 306 289.83 P
-0.59 (ocess ID of a pr) 315.8 289.83 P
-0.59 (ocess to be inserted in the queue following) 381.24 289.83 P
2 F
(base_pid) 306 277.83 T
0 F
(.) 340.61 277.83 T
2 F
(discipline) 234 259.83 T
0 F
(The scheduling discipline for the inserted pr) 306 259.83 T
(ocess \050see) 501.57 259.83 T
(\322Frame Scheduling Disciplines\323 on page) 306 247.83 T
(9\051.) 487.73 247.83 T
2 9.5 Q
(Return V) 63 236.17 T
(alues) 98.95 236.17 T
0 10 Q
-0.44 (All calls r) 234 211.33 P
-0.44 (eturn 0 for sucess and -1 for err) 274.96 211.33 P
-0.44 (or) 409.34 211.33 P
-0.44 (. In case of err) 418.01 211.33 P
-0.44 (or) 477.65 211.33 P
-0.44 (,) 486.32 211.33 P
2 F
-0.44 (errno) 490.87 211.33 P
0 F
-0.44 ( is set to one) 512.53 211.33 P
(of the following values:) 234 199.33 T
4 9 Q
(\245) 234 181.33 T
0 10 Q
(EINV) 252 181.33 T
(AL for invalid parameters) 275.89 181.33 T
4 9 Q
(\245) 234 163.33 T
0 10 Q
(EPERM for lack of permission) 252 163.33 T
44 485 45 519 R
V
FMENDPAGE
%%EndPage: "31" 32
%%Page: "32" 32
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(32) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
4 F
(\245) 216 632.33 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed) 234 632.33 T
4 9 Q
(\245) 216 614.33 T
0 10 Q
(EF) 234 614.33 T
(AUL) 244.92 614.33 T
(T to indicate that pidlist cannot be accessed.) 265.84 614.33 T
1 11.5 Q
(Destroying a Frame Scheduler) 216 577.33 T
2 9.5 Q
(System Call) 45 565.17 T
4 8 Q
(int) 216 550.67 T
(schedctl) 246 550.67 T
(\050) 277.55 550.67 T
(MPTS_FRS_DESTROY, int cpu) 282.44 550.67 T
(\051) 398.4 550.67 T
(;) 403.29 550.67 T
2 9.5 Q
(Library Call) 45 541.67 T
4 8 Q
(int) 216 527.17 T
(frs_destroy) 246 527.17 T
(\050) 287.77 527.17 T
(frs_t* frs) 292.65 527.17 T
(\051) 324.64 527.17 T
(;) 329.53 527.17 T
0 10 Q
(Any user pr) 216 494.83 T
(ocess may initiate the termination of a frame scheduler using) 268.92 494.83 T
(either of the calls above.) 216 482.83 T
(This call causes termination signals to be sent to all member pr) 216 458.83 T
(ocesses and) 492.33 458.83 T
(to the frs-master pr) 216 446.83 T
(ocess \050see \322Frame Scheduler Signals\323 on page) 300.74 446.83 T
(18\051.) 505 446.83 T
-0.49 (The FRS dequeues all pr) 216 422.83 P
-0.49 (ocesses fr) 321.18 422.83 P
-0.49 (om the frame scheduler and unisolates the) 362.46 422.83 P
(cpu it was attached to. The IRIX scheduler r) 216 410.83 T
(esumes contr) 408.7 410.83 T
(ol of the CPU.) 466.84 410.83 T
-0.58 (Pr) 216 398.83 P
-0.58 (ocesses continue execution in normal mode. Frame scheduler calls such as) 225.8 398.83 P
5 F
(frs_yield\050\051) 216 386.83 T
0 F
( r) 263.18 386.83 T
(eturn err) 269.45 386.83 T
(ors. The best way to avoid pr) 308.29 386.83 T
(oblems is to have the) 436.46 386.83 T
(termination signal handler wrap up all pr) 216 374.83 T
(ocessing and then cause the) 399.69 374.83 T
(pr) 216 362.83 T
(ocess to exit.) 225.77 362.83 T
2 9.5 Q
(Parameters) 45 351.17 T
2 10 Q
(cpu) 216 332.33 T
0 F
(Speci\336es the pr) 288 332.33 T
(ocessor being managed by the destination) 355.09 332.33 T
(frame scheduler) 288 320.33 T
2 F
(frs) 216 302.33 T
0 F
(Speci\336es an FRS descriptor as r) 288 302.33 T
(eturned by) 425.35 302.33 T
5 F
(frs_create\050\051) 476.16 302.33 T
0 F
(.) 526.67 302.33 T
2 9.5 Q
(Return V) 45 290.67 T
(alues) 80.95 290.67 T
0 10 Q
(Both calls r) 216 265.83 T
(eturn 0 for sucess and -1 for err) 264.89 265.83 T
(or) 402.4 265.83 T
(. In case of err) 411.06 265.83 T
(or) 472.49 265.83 T
(,) 481.15 265.83 T
2 F
(errno) 486.15 265.83 T
0 F
( is set to) 507.81 265.83 T
(one of the following values:) 216 253.83 T
4 9 Q
(\245) 216 235.83 T
0 10 Q
(EINV) 234 235.83 T
(AL for invalid parameters) 257.89 235.83 T
4 9 Q
(\245) 216 217.83 T
0 10 Q
(EPERM for lack of permission) 234 217.83 T
4 9 Q
(\245) 216 199.83 T
0 10 Q
(ENODEV to indicate the FRS subsystem has not been installed.) 234 199.83 T
FMENDPAGE
%%EndPage: "32" 33
%%Page: "33" 33
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler DDI) 462.87 679.44 T
1 F
(33) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 12 Q
(The Frame Scheduler DDI) 63 631 T
0 10 Q
-0.38 (The Frame Scheduler pr) 234 605.33 P
-0.38 (ovides a device driver interface to allow any device) 339.04 605.33 P
-0.01 (with a kernel-level device driver to generate the frame scheduler time-base) 234 593.33 P
-0.29 (interr) 234 581.33 P
-0.29 (upt. The system can contain up to 16 dif) 258.59 581.33 P
-0.29 (fer) 432.51 581.33 P
-0.29 (ent drivers that support the) 444.39 581.33 P
-0.55 (Frame Scheduler) 234 569.33 P
-0.55 (. The Frame Scheduler distinguishes them by an) 307.39 569.33 P
2 9 Q
-0.49 (frs_driver_id) 517.8 569.33 P
0 10 Q
(in the range 0 thr) 234 557.33 T
(ough 15.) 309.53 557.33 T
-0.52 (In or) 234 533.33 P
-0.52 (der to interact with the frame scheduler) 254.38 533.33 P
-0.52 (, a driver pr) 425.58 533.33 P
-0.52 (ovides two r) 476.12 533.33 P
-0.52 (outines,) 530.03 533.33 P
-0.5 (one for initialization and one for termination, which it exports during driver) 234 521.33 P
-0.29 (initialization. After an FRS initializes a device driver) 234 509.33 P
-0.29 (, the driver calls an FRS) 462.28 509.33 P
(entry point to signal the event of an interr) 234 497.33 T
(upt.) 418.29 497.33 T
4 9 Q
-0.04 (Note:) 234 473.33 P
0 10 Q
-0.04 (The str) 260.4 473.33 P
-0.04 (uctur) 290.95 473.33 P
-0.04 (e of an IRIX kernel-level device driver is discussed in the) 314.47 473.33 P
2 F
(IRIX Device Driver Pr) 234 461.33 T
(ogramming Guide) 326.46 461.33 T
0 F
(. The latest version, for IRIX 5.3, has) 400.04 461.33 T
(part number 007-091) 234 449.33 T
(1-044.) 324.9 449.33 T
1 11.5 Q
(Frame Scheduler Initialization Function) 234 412.33 T
0 10 Q
-0.54 (The device driver must pr) 234 387.83 P
-0.54 (ovide a function with the following pr) 346.73 387.83 P
-0.54 (ototype \050the) 512.1 387.83 P
(actual function name is not signi\336cant\051:) 234 375.83 T
6 9 Q
(void prefix_frs_func_set) 252 358.5 T
(\050) 386.81 358.5 T
(intrgroup_t* intrgroup) 397.6 358.5 T
(\051) 521.62 358.5 T
(;) 532.41 358.5 T
0 10 Q
(This function is called by a new FRS when the FRS is cr) 234 334.83 T
(eated with an) 477.37 334.83 T
2 F
(inter_sour) 234 322.83 T
(ce) 276.03 322.83 T
0 F
( of FRS_INTRSOURCE_DRIVER and) 283.98 322.83 T
2 F
(inter_quali\336er) 450.16 322.83 T
0 F
( specifying) 507.83 322.83 T
(this device driver) 234 310.83 T
(\325s number \050see \322Cr) 311.98 310.83 T
(eating a Master or Slave Frame) 394.41 310.83 T
(Scheduler\323 on page) 234 298.83 T
(20\051.) 323.18 298.83 T
-0.78 (The ar) 234 274.83 P
-0.78 (gument) 261.21 274.83 P
2 F
-0.78 (intr) 297.2 274.83 P
-0.78 (gr) 312.57 274.83 P
-0.78 (oup) 321.28 274.83 P
0 F
-0.78 ( identi\336es the interr) 336.27 274.83 P
-0.78 (upt gr) 420.73 274.83 P
-0.78 (oup allocated for the newly) 447.06 274.83 P
(cr) 234 262.83 T
(eated instance of the frame scheduler) 242.21 262.83 T
(. The device driver must set the) 405.75 262.83 T
-0.29 (har) 234 250.83 P
-0.29 (dwar) 248.58 250.83 P
-0.29 (e devices it manages so that interr) 271.79 250.83 P
-0.29 (upts ar) 419.71 250.83 P
-0.29 (e dir) 450.21 250.83 P
-0.29 (ected to this interr) 469.99 250.83 P
-0.29 (upt) 549.5 250.83 P
(gr) 234 238.83 T
(oup \050see the paper \322Gr) 243.32 238.83 T
(oup Interr) 343.95 238.83 T
(upts on Challenge and Onyx Systems\323) 388.98 238.83 T
-0.16 (distributed with REACT/Pr) 234 226.83 P
-0.16 (o\051. The actual gr) 357.7 226.83 P
-0.16 (oup identi\336er may be obtained) 428.69 226.83 P
(using the macr) 234 214.83 T
(o:) 299.43 214.83 T
6 9 Q
(intrgroup_get_groupid\050intrgroup\051) 252 197.5 T
0 10 Q
(The ef) 234 173.83 T
(fective destination may be obtained using the following macr) 261.17 173.83 T
(o:) 531.53 173.83 T
6 9 Q
(EVINTR_GROUPDEST\050intrgroup_get_groupid\050intrgroup\051\051) 252 156.5 T
FMENDPAGE
%%EndPage: "33" 34
%%Page: "34" 34
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(34) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
4 F
(Note:) 216 632.33 T
0 10 Q
(When the device driver has dir) 242.48 632.33 T
(ected the har) 379.1 632.33 T
(dwar) 435.92 632.33 T
(e interr) 459.13 632.33 T
(upt to the) 491 632.33 T
-0.29 (interr) 216 620.33 P
-0.29 (upt gr) 240.59 620.33 P
-0.29 (oup speci\336ed, the har) 267.41 620.33 P
-0.29 (dwar) 361.78 620.33 P
-0.29 (e interr) 384.98 620.33 P
-0.29 (upt will be pr) 416.56 620.33 P
-0.29 (esented at every) 475.62 620.33 P
(CPU in the gr) 216 608.33 T
(oup. That is, the interr) 276.31 608.33 T
(upt will be taken concurr) 374.58 608.33 T
(ently on each) 485.55 608.33 T
(CPU occupied by the master or a slave FRS. The device driver interr) 216 596.33 T
(upt) 516.34 596.33 T
(handler code is enter) 216 584.33 T
(ed concurr) 308.23 584.33 T
(ently on each CPU on each interr) 355.51 584.33 T
(upt.) 500.94 584.33 T
1 9.5 Q
(Example of Initialization Function) 216 556.67 T
6 9 Q
(/*) 216 545.5 T
(** Frame Scheduler initialization function) 216 534.5 T
(** for the External Interrupts Driver) 216 523.5 T
(*/) 216 512.5 T
(void) 216 501.5 T
(eintr_frs_func_set\050intrgroup_t* intrgroup\051) 216 490.5 T
({) 216 479.5 T
(int s;) 234 468.5 T
(ASSERT\050intrgroup != 0\051;) 234 457.5 T
(/*) 234 446.5 T
(** locking and spl level management) 234 435.5 T
(** specific to this \050ei\051 driver) 234 424.5 T
(*/) 234 413.5 T
(s = EILOCK\050\051;) 234 402.5 T
(DISABLE_INTR\050\051;) 234 391.5 T
(/*) 234 380.5 T
(** setting up the hardware to send intr to) 234 369.5 T
(** the appropriate destination.) 234 358.5 T
(*/) 234 347.5 T
(evintr_connect\050) 234 336.5 T
(\050evreg_t *\051\050epcbase + EPC_IIDINTR4\051,) 288 325.5 T
(EVINTR_LEVEL_EPC_INTR4,) 288 314.5 T
(SPLDEV,) 288 303.5 T
(EVINTR_GROUPDEST\050intrgroup_get_groupid\050intrgroup\051\051,) 252 292.5 T
(\050EvIntrFunc*\051eiintr,) 288 281.5 T
(\050void *\0510\051;) 288 270.5 T
(/*) 234 259.5 T
(** Epilog specific to this driver) 234 248.5 T
(*/) 234 237.5 T
(ENABLE_INTR\050\051;) 234 226.5 T
(setsyscpu\050-1\051;) 234 215.5 T
(intr_enabled = 1;) 234 204.5 T
(EIUNLOCK\050s\051;) 234 193.5 T
(}) 216 182.5 T
FMENDPAGE
%%EndPage: "34" 35
%%Page: "35" 35
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler DDI) 462.87 679.44 T
1 F
(35) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Frame Scheduler T) 234 631.33 T
(ermination Function) 336.59 631.33 T
0 10 Q
-0.54 (The device driver must pr) 234 606.83 P
-0.54 (ovide a function with the following pr) 346.73 606.83 P
-0.54 (ototype \050the) 512.1 606.83 P
(actual function name is not signi\336cant\051:) 234 594.83 T
6 9 Q
(void prefix_frs_func_clear) 252 577.5 T
(\050) 397.6 577.5 T
(void) 408.38 577.5 T
(\051) 435.34 577.5 T
(;) 446.13 577.5 T
0 10 Q
(A Frame Scheduler that initialized a device driver calls this function when) 234 553.83 T
-0.4 (the Frame Scheduler is terminating \050see \322Destr) 234 541.83 P
-0.4 (oying a Frame Scheduler\323 on) 437.77 541.83 P
(page) 234 529.83 T
(32\051. The Frame Scheduler deallocates the interr) 257.85 529.83 T
(upt gr) 464.9 529.83 T
(oup to which) 492.02 529.83 T
(interr) 234 517.83 T
(upts wer) 258.59 517.83 T
(e dir) 297.51 517.83 T
(ected.) 317.57 517.83 T
(The device driver should clean up data str) 234 493.83 T
(uctur) 420.5 493.83 T
(es and make sur) 444.02 493.83 T
(e that the) 515.66 493.83 T
(device is in a safe state.) 234 481.83 T
1 9.5 Q
(Example of T) 234 454.17 T
(ermination Function) 292.37 454.17 T
6 9 Q
(/*) 234 443 T
(** Frame Scheduler termination function) 234 432 T
(** for the External Interrupts Driver) 234 421 T
(*/) 234 410 T
(void) 234 399 T
(eintr_frs_func_clear\050void\051) 234 388 T
({) 234 377 T
(/*) 252 366 T
(** Epilog specific to this) 252 355 T
(** particular \050ei\051 driver) 252 344 T
(*/) 252 333 T
(disable_intr\050\051;) 252 322 T
(setintrcpu\050config_intrcpu\051;) 252 311 T
(setsyscpu\050config_syscallcpu\051;) 252 300 T
(}) 234 289 T
1 11.5 Q
(Exporting the Initialization and T) 234 252.33 T
(ermination Functions) 410.63 252.33 T
0 10 Q
(A device driver must export the Frame Scheduler interface functions to) 234 227.83 T
-0.02 (make them known to the Frame Scheduler) 234 215.83 P
-0.02 (. This call, which is made during) 420.75 215.83 P
(the device driver) 234 203.83 T
(\325s own initialization, also makes the driver known as a) 309.62 203.83 T
(sour) 234 191.83 T
(ce of time-base interr) 253.49 191.83 T
(upts:) 346.24 191.83 T
6 9 Q
(frs_driver_export\050int frs_driver_id,) 252 174.5 T
(void \050*frs_func_set\051\050intrgroup_t*\051,) 306 163.5 T
(void \050*frs_func_clear\051\050void\051\051;) 306 152.5 T
FMENDPAGE
%%EndPage: "35" 36
%%Page: "36" 36
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(36) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
-0.56 (The parameter) 216 632.33 P
2 F
-0.56 (frs_driver_id) 282.16 632.33 P
0 F
-0.56 (is the driver identi\336cation number) 336.66 632.33 P
-0.56 (. It is speci\336ed) 485.66 632.33 P
(in the) 216 620.33 T
2 F
(intr_quali\336er) 243.59 620.33 T
0 F
( parameter to) 297.36 620.33 T
5 F
(frs_create\050\051) 359.13 620.33 T
0 F
( in or) 409.64 620.33 T
(der to select this driver as) 432.59 620.33 T
(the sour) 216 608.33 T
(ce of interr) 251.85 608.33 T
(upts. The identi\336er is an integer between 0 and 15.) 299.44 608.33 T
(Dif) 216 596.33 T
(fer) 229.79 596.33 T
(ent drivers must use dif) 241.68 596.33 T
(fer) 346.68 596.33 T
(ent identi\336ers.) 358.56 596.33 T
1 9.5 Q
(Example of Exporting Entry Points) 216 568.67 T
6 9 Q
(/*) 216 557.5 T
(** Function called by the External Interrupts) 216 546.5 T
(** driver to export its Frame Scheduler interface) 216 535.5 T
(** functions.) 216 524.5 T
(*/) 216 513.5 T
(frs_driver_export\05012,) 216 502.5 T
( eintr_frs_func_set,) 288 491.5 T
( eintr_frs_func_clear\051;) 288 480.5 T
1 11.5 Q
(Generating Interrupts) 216 443.83 T
0 10 Q
(A driver has to call the frame scheduler interr) 216 419.33 T
(upt handler fr) 417.52 419.33 T
(om within its) 479.29 419.33 T
(interr) 216 407.33 T
(upt handler) 240.59 407.33 T
(. This handler will be enter) 292.02 407.33 T
(ed concurr) 410.27 407.33 T
(ently on each) 457.56 407.33 T
(pr) 216 395.33 T
(ocessor wher) 225.77 395.33 T
(e the master or a slave FRS is r) 283.54 395.33 T
(unning. It delivers the) 417.71 395.33 T
(interr) 216 383.33 T
(upt to the FRS on that pr) 240.59 383.33 T
(ocessor) 349.31 383.33 T
(. The function to be invoked is:) 381.13 383.33 T
6 9 Q
(void frs_handle_driverintr\050void\051;) 234 366 T
0 10 Q
(It is possible for a handler to be enter) 216 342.33 T
(ed at a time when the FRS for its) 379.39 342.33 T
-0.79 (pr) 216 330.33 P
-0.79 (ocessor is not active. However) 225.77 330.33 P
-0.79 (, the frs_handle_driverintr\050\051 function checks) 355.91 330.33 P
(for this and does nothing when nothing is r) 216 318.33 T
(equir) 407.39 318.33 T
(ed.) 430.47 318.33 T
1 9.5 Q
(Example of Generating Interrupt) 216 290.67 T
6 9 Q
(void eiintr\050struct eframe_s *ep, unsigned int arg\051) 216 273.5 T
({) 216 262.5 T
(/*) 234 251.5 T
(** Do anything required by the hardware...) 234 240.5 T
(** ...then call the Frame Scheduler:) 234 229.5 T
(*/) 234 218.5 T
(frs_handle_driverintr\050\051;) 234 207.5 T
(/*) 234 196.5 T
(** Do any additional processing needed.) 234 185.5 T
(*/) 234 174.5 T
(return;) 234 163.5 T
(}) 216 152.5 T
26 315 27 349 R
V
26 160.5 27 257.5 R
V
FMENDPAGE
%%EndPage: "36" 37
%%Page: "37" 37
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(The Frame Scheduler DDI) 462.87 679.44 T
1 F
(37) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Using a Device Driver) 234 631.33 T
0 10 Q
(This is the sequence of actions that occur when a device driver is used as a) 234 606.83 T
(sour) 234 594.83 T
(ce of time-base interr) 253.49 594.83 T
(upts for the Frame Scheduler) 346.24 594.83 T
(.) 473.8 594.83 T
(During its initialization at system boot time, the driver exports the) 234 570.83 T
5 F
(pre\336x_frs_func_set\050\051) 234 558.83 T
0 F
( and) 327.26 558.83 T
5 F
(pre\336x_frs_func_clear\050\051) 349.18 558.83 T
0 F
( functions, specifying a) 451.32 558.83 T
(unique driver identi\336er between 0 and 15. After these functions have been) 234 546.83 T
-0.54 (exported the frame scheduler is awar) 234 534.83 P
-0.54 (e of the existence of this driver and will) 395.38 534.83 P
(allow pr) 234 522.83 T
(ograms to r) 270.88 522.83 T
(equest it as the sour) 321.38 522.83 T
(ce of interr) 408.82 522.83 T
(upts.) 456.42 522.83 T
(Later) 234 498.83 T
(, a pr) 256.36 498.83 T
(ogram cr) 278.62 498.83 T
(eates a frame scheduler specifying this driver as the) 318.11 498.83 T
-0.21 (sour) 234 486.83 P
-0.21 (ce of interr) 253.49 486.83 P
-0.21 (upts. The scheduler veri\336es that this driver has exported the) 300.65 486.83 P
(initialization and termination functions and invokes) 234 474.83 T
5 F
(pre\336x_frs_func_set\050) 234 462.83 T
2 F
(intr) 323.93 462.83 T
(gr) 339.3 462.83 T
(oup) 348.01 462.83 T
5 F
(\051) 363 462.83 T
0 F
( for this particular driver) 366.33 462.83 T
(.) 475.32 462.83 T
(As long as the FRS exists, the driver invokes) 234 438.83 T
5 F
(frs_handle_driverintr\050\051) 431.52 438.83 T
0 F
( each) 536.44 438.83 T
(time its interr) 234 426.83 T
(upt handling r) 293.77 426.83 T
(outine is enter) 357.75 426.83 T
(ed. This informs the FRS that an) 420.57 426.83 T
(interr) 234 414.83 T
(upt has been r) 258.59 414.83 T
(eceived.) 321.11 414.83 T
-0.32 (When the FRS is \336nally destr) 234 390.83 P
-0.32 (oyed, it invokes) 360.2 390.83 P
5 F
-0.32 (pre\336x_frs_func_clear\050\051) 431.72 390.83 P
0 F
-0.32 (for the) 536.04 390.83 P
-0.68 (associated driver) 234 378.83 P
-0.68 (. The driver ceases calling) 307.85 378.83 P
5 F
-0.68 (frs_handle_driverintr\050\051) 420.56 378.83 P
0 F
-0.68 ( until it is) 525.48 378.83 P
(again initialized by an FRS.) 234 366.83 T
FMENDPAGE
%%EndPage: "37" 38
%%Page: "38" 38
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(38) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
1 12 Q
(Examples) 45 631 T
0 10 Q
(The following example pr) 216 605.33 T
(ograms ar) 330.15 605.33 T
(e pr) 374.43 605.33 T
(ovided:) 391.49 605.33 T
2 F
(simple) 216 587.33 T
0 F
(A frame scheduler r) 288 587.33 T
(unning several pr) 376.08 587.33 T
(ocesses on a single) 454.11 587.33 T
(pr) 288 575.33 T
(ocessor) 297.77 575.33 T
2 F
(mpr) 216 557.33 T
(ogs) 232.48 557.33 T
0 F
(A frame scheduler setup with independent pr) 288 557.33 T
(ocesses) 490.32 557.33 T
2 F
(multi) 216 539.33 T
0 F
(Thr) 288 539.33 T
(ee synchr) 303.71 539.33 T
(onous frame schedulers r) 345.42 539.33 T
(unning lightweight) 456.96 539.33 T
(pr) 288 527.33 T
(ocesses on thr) 297.77 527.33 T
(ee pr) 359.07 527.33 T
(ocessors) 380.92 527.33 T
2 F
(driver) 216 509.33 T
0 F
(A pseudo-driver that demonstrates the frame scheduler) 288 509.33 T
(device driver interface.) 288 497.33 T
2 F
(sixtyhz) 216 479.33 T
0 F
(A very simple example r) 288 479.33 T
(unning one pr) 396.72 479.33 T
(ocess at 60Hz) 459.5 479.33 T
2 F
(memlock) 216 461.33 T
0 F
(An example that takes car) 288 461.33 T
(e of locking memory down and) 402.43 461.33 T
-0.13 (which skips the \336rst minor frame to account for initial cold) 288 449.33 P
(caches.) 288 437.33 T
(The code for each example is in a subdir) 216 413.33 T
(ectory named for the example.) 393.19 413.33 T
1 11.5 Q
(Basic Example) 216 376.33 T
0 10 Q
-0.15 (This example shows how to map a r) 216 351.83 P
-0.15 (eal-time application speci\336cation into a) 374.01 351.83 P
(Frame Scheduler speci\336cation and also how to write the corr) 216 339.83 T
(esponding) 483.52 339.83 T
(pr) 216 327.83 T
(ogram using the Frame Scheduler API.) 225.77 327.83 T
1 9.5 Q
(Real-time Application Speci\336cation) 216 300.17 T
0 10 Q
(The application consists of 2 pr) 216 276.33 T
(ocesses that have to periodically execute a) 353.08 276.33 T
(speci\336c sequence of code. The period for the \336rst pr) 216 264.33 T
(ocess, pr) 443.7 264.33 T
(ocess A, is 600) 481.63 264.33 T
(milliseconds \050ms\051. The period for the other pr) 216 252.33 T
(ocess, pr) 416.83 252.33 T
(ocess B, is 2400 ms.) 454.76 252.33 T
4 9 Q
-0.19 (Note:) 216 228.33 P
0 10 Q
-0.19 (Such long periods ar) 242.1 228.33 P
-0.19 (e unr) 332.52 228.33 P
-0.19 (ealistic for r) 355.23 228.33 P
-0.19 (eal-time applications. However) 406.79 228.33 P
-0.19 (,) 544.19 228.33 P
(they allow the use of printf statements within the \322r) 216 216.33 T
(eal-time\323 loops in this) 444.61 216.33 T
(sample pr) 216 204.33 T
(ogram.) 260.04 204.33 T
FMENDPAGE
%%EndPage: "38" 39
%%Page: "39" 39
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Examples) 527.81 679.44 T
1 F
(39) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 9.5 Q
(Frame Scheduler Design) 234 632.67 T
0 10 Q
(The two periods and their ratio determine the selection of the minor frame) 234 608.83 T
(period\321600 ms\321and the number of minor frames per major frame\3214, for) 234 596.83 T
(a total of 2400 ms.) 234 584.83 T
(The discipline for pr) 234 560.83 T
(ocess A is strict r) 323.76 560.83 T
(eal-time \050FRS_DISC_R) 397.65 560.83 T
(T\051. Underr) 496.5 560.83 T
(un) 543.25 560.83 T
(and overrr) 234 548.83 T
(un err) 281.07 548.83 T
(ors should cause signals.) 307.92 548.83 T
(Pr) 234 524.83 T
(ocess B should r) 243.8 524.83 T
(un only once in 2400 ms, so it operates as Continuable) 314.98 524.83 T
(over as many as 4 minor frames. For the \336rst 3 frames, its discipline is) 234 512.83 T
(Overr) 234 500.83 T
(unnable and Continuable. For the last frame it is strict r) 260.11 500.83 T
(eal-time. The) 504.22 500.83 T
(Overr) 234 488.83 T
(unnable discipline allows pr) 260.11 488.83 T
(ocess B to r) 385.13 488.83 T
(un without yielding past the) 434.47 488.83 T
(end of each frame. The Continuable discipline ensur) 234 476.83 T
(es that once pr) 464.39 476.83 T
(ocess B) 528.52 476.83 T
(does yield, it is not r) 234 464.83 T
(esumed until the fourth minor frames has passed. The) 323.46 464.83 T
-0.55 (combination allows pr) 234 452.83 P
-0.55 (ocess B to extend its execution to the allowable period) 331.93 452.83 P
-0.34 (of 2400 ms, and the strict r) 234 440.83 P
-0.34 (eal-time discipline at the end makes certain that it) 347.88 440.83 P
(yields by the end of the major frame.) 234 428.83 T
-0.38 (Ther) 234 404.83 P
-0.38 (e is a single FRS so a single pr) 254.5 404.83 P
-0.38 (ocessor is used by both pr) 382.75 404.83 P
-0.38 (ocesses. Pr) 495.12 404.83 P
-0.38 (ocess) 541.72 404.83 P
(A r) 234 392.83 T
(uns within a minor frame until yielding or until the expiration of the) 248.14 392.83 T
(minor frame period. In the latter case the frame scheduler generates an) 234 380.83 T
(overr) 234 368.83 T
(un err) 257.71 368.83 T
(or signaling that pr) 284.55 368.83 T
(ocess A is misbehaving.) 369.27 368.83 T
(When pr) 234 344.83 T
(ocess A yields, the frame scheduler immediately activates pr) 272.69 344.83 T
(ocess) 539.59 344.83 T
(B. It r) 234 332.83 T
(uns until yielding, or until the end of the minor frame wher) 258.1 332.83 T
(e it is) 520.72 332.83 T
(pr) 234 320.83 T
(eempted. This is not an err) 243.77 320.83 T
(or since pr) 361.41 320.83 T
(ocess B is Overr) 407.77 320.83 T
(unable.) 477.79 320.83 T
(Starting the next minor frame, the FRS allows pr) 234 296.83 T
(ocess A to execute again.) 449.66 296.83 T
(After it yields, pr) 234 284.83 T
(ocess B is allowed to r) 309.54 284.83 T
(esume r) 406.42 284.83 T
(unning, if it has not yet) 441.46 284.83 T
-0.55 (yielded. Again in the thir) 234 272.83 P
-0.55 (d and fourth minor frame, A is started, followed by) 342.87 272.83 P
-0.04 (B if it has not yet yielded. At the interr) 234 260.83 P
-0.04 (upt that signals the end of the fourth) 402.98 260.83 P
(frame \050and the end of the major frame\051, pr) 234 248.83 T
(ocess B must have yielded, or an) 420.4 248.83 T
(overr) 234 236.83 T
(un err) 257.71 236.83 T
(or is signalled.) 284.55 236.83 T
1 11.5 Q
(Example of Scheduling Separate Programs) 234 199.83 T
0 10 Q
-0.19 (The code in dir) 234 175.33 P
-0.19 (ectory) 299.96 175.33 P
2 F
-0.19 (mpr) 329.72 175.33 P
-0.19 (ogs) 346.2 175.33 P
0 F
-0.19 (is based on the code for the basic example \050see) 361.84 175.33 P
-0.65 (\322Basic Example\323 on page) 234 163.33 P
-0.65 (38\051. However) 346.13 163.33 P
-0.65 (, the scheduled pr) 404.34 163.33 P
-0.65 (ocesses A and B ar) 481.23 163.33 P
-0.65 (e) 560.36 163.33 P
-0.45 (physically loaded as separate commands. The main pr) 234 151.33 P
-0.45 (ogram establishes the) 470.52 151.33 P
FMENDPAGE
%%EndPage: "39" 40
%%Page: "40" 40
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(40) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(single FRS. The r) 216 632.33 T
(eal-time pr) 290.19 632.33 T
(ocesses ar) 338.26 632.33 T
(e started as separate pr) 381.71 632.33 T
(ograms. They) 483.11 632.33 T
(communicate with the main pr) 216 620.33 T
(ogram using SVR4-compatible interpr) 352.27 620.33 T
(ocess) 520.17 620.33 T
(communication messages \050see intr) 216 608.33 T
(o\0502\051 and msgget\0502\051\051.) 367.23 608.33 T
(Ther) 216 584.33 T
(e ar) 236.5 584.33 T
(e thr) 252.55 584.33 T
(ee separate executables in the mpr) 272.68 584.33 T
(ogs example. The master) 423.87 584.33 T
(pr) 216 572.33 T
(ogram, in master) 225.77 572.33 T
(.c, is a command that has the following syntax:) 300.09 572.33 T
6 9 Q
(master [-p) 234 555 T
2 10 Q
(cpu-number) 293.32 555 T
6 9 Q
(] [-s) 342.56 555 T
2 10 Q
(slave-count) 374.92 555 T
6 9 Q
(]) 421.18 555 T
0 10 Q
(The) 216 531.33 T
2 F
(cpu-number) 235.23 531.33 T
0 F
( speci\336es which pr) 284.47 531.33 T
(ocessor to use for the one FRS this) 366.51 531.33 T
(pr) 216 519.33 T
(ogram cr) 225.77 519.33 T
(eates. The default is pr) 265.26 519.33 T
(ocessor 1. The) 364.89 519.33 T
2 F
(slave-count) 429.17 519.33 T
0 F
( tells the master) 475.44 519.33 T
(how many subor) 216 507.33 T
(dinate pr) 290.82 507.33 T
(ograms will be enqueued to the FRS. The default) 330.97 507.33 T
(is 2 pr) 216 495.33 T
(ograms.) 242.91 495.33 T
(The pr) 216 471.33 T
(oblems that need to be solved in this example ar) 245 471.33 T
(e as follows:) 457.42 471.33 T
4 9 Q
(\245) 216 453.33 T
0 10 Q
(The frs-master pr) 234 453.33 T
(ogram must enqueue the subor) 310.4 453.33 T
(dinate pr) 448.23 453.33 T
(ocesses but,) 488.38 453.33 T
(since they ar) 234 441.33 T
(e started as separate pr) 289.37 441.33 T
(ograms, the master has to be) 390.77 441.33 T
(informed of their pr) 234 429.33 T
(ocess IDs after they start.) 321.95 429.33 T
4 9 Q
(\245) 216 411.33 T
0 10 Q
(The subor) 234 411.33 T
(dinates need to specify upon which minor frames they) 278.25 411.33 T
(should be enqueued, and with what discipline.) 234 399.33 T
4 9 Q
(\245) 216 381.33 T
0 10 Q
(The master needs to enqueue the subor) 234 381.33 T
(dinates in the pr) 406.93 381.33 T
(oper or) 478.9 381.33 T
(der on) 510.83 381.33 T
(their minor frames, so they will be dispatched in the pr) 234 369.33 T
(oper sequence.) 476.8 369.33 T
(Ther) 234 357.33 T
(efor) 254.5 357.33 T
(e the master has to distinguish the subor) 271.84 357.33 T
(dinates in some way) 450.46 357.33 T
(.) 539.88 357.33 T
4 9 Q
(\245) 216 339.33 T
0 10 Q
(The subor) 234 339.33 T
(dinate pr) 278.25 339.33 T
(ograms must join the FRS, so they need the handle) 318.39 339.33 T
(of the FRS to use as an ar) 234 327.33 T
(gument to) 344.2 327.33 T
5 F
(frs_join\050\051) 392.18 327.33 T
0 F
(. However) 434.37 327.33 T
(, this) 479.9 327.33 T
(information is in the master) 234 315.33 T
(\325s addr) 357.24 315.33 T
(ess space.) 387.74 315.33 T
4 9 Q
(\245) 216 297.33 T
0 10 Q
(If an err) 234 297.33 T
(or occurs when enqueueing, the master needs to tell the) 269.01 297.33 T
(subor) 234 285.33 T
(dinate so it can terminate in an or) 259.02 285.33 T
(derly way) 406.85 285.33 T
(.) 450.43 285.33 T
(Ther) 216 261.33 T
(e ar) 236.5 261.33 T
(e many ways in which these objectives could be met. In this) 252.55 261.33 T
-0.57 (example, the master and subor) 216 249.33 P
-0.57 (dinates communicate using a simple pr) 349.55 249.33 P
-0.57 (otocol) 520.09 249.33 P
(of messages exchanged using msgget\0502\051 and msgput\0502\051. The sequence of) 216 237.33 T
(operations is as follows:) 216 225.33 T
(1.) 216 207.33 T
(The master pr) 234 207.33 T
(ogram cr) 295.56 207.33 T
(eates a Frame Scheduler) 335.04 207.33 T
(.) 441.05 207.33 T
(2.) 216 189.33 T
-0.31 (The master sends a message inviting the most important subor) 234 189.33 P
-0.31 (dinate to) 508.04 189.33 P
(r) 234 177.33 T
(eply) 237.77 177.33 T
(. \050All the message queue handling is in module ipc.c.\051) 255.92 177.33 T
(3.) 216 159.33 T
(The subor) 234 159.33 T
(dinate compiled fr) 278.25 159.33 T
(om the \336le pr) 359.65 159.33 T
(ocessA.c r) 418.81 159.33 T
(eplies to this) 462.94 159.33 T
(message, sending its pr) 234 147.33 T
(ocess ID and r) 336.83 147.33 T
(equesting the FRS handle.) 399.28 147.33 T
26 144 27 591 R
V
FMENDPAGE
%%EndPage: "40" 41
%%Page: "41" 41
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Examples) 527.81 679.44 T
1 F
(41) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
0 10 Q
(4.) 234 632.33 T
(The subor) 252 632.33 T
(dinate pr) 296.25 632.33 T
(ocessA sends a series of messages, one for each) 336.39 632.33 T
(minor queue on which it should enqueue. The master enqueues it as) 252 620.33 T
(r) 252 608.33 T
(equested.) 255.77 608.33 T
(5.) 234 590.33 T
(The subor) 252 590.33 T
(dinate pr) 296.25 590.33 T
(ocessA sends a \322r) 336.39 590.33 T
(eady\323 message.) 413.77 590.33 T
(6.) 234 572.33 T
-0.41 (The master sends a message inviting the next most important pr) 252 572.33 P
-0.41 (ocess to) 530.96 572.33 P
(r) 252 560.33 T
(eply) 255.77 560.33 T
(.) 273.92 560.33 T
(7.) 234 542.33 T
(The pr) 252 542.33 T
(ogram compiled fr) 281 542.33 T
(om pr) 363.32 542.33 T
(ocessB.c will r) 389.87 542.33 T
(eply to this r) 451.9 542.33 T
(equest, and) 507.36 542.33 T
(the sequence 3-6 is r) 252 530.33 T
(epeated for as many slaves as the) 340.57 530.33 T
2 F
(slave-count) 489.87 530.33 T
0 F
(parameter to the master pr) 252 518.33 T
(ogram. \050Only two slaves ar) 369.95 518.33 T
(e pr) 489.33 518.33 T
(ovided.) 506.39 518.33 T
(However) 252 506.33 T
(, you can easily cr) 292.54 506.33 T
(eate mor) 370.92 506.33 T
(e using pr) 409.3 506.33 T
(ocessB.c as a pattern.\051) 453.41 506.33 T
(8.) 234 488.33 T
(The master issues) 252 488.33 T
5 F
(frs_start\050\051) 332.72 488.33 T
0 F
(, and waits for the termination signal.) 376.56 488.33 T
(9.) 234 470.33 T
(The subor) 252 470.33 T
(dinates independently issue) 296.25 470.33 T
5 F
(frs_join\050\051) 422.72 470.33 T
0 F
( and the r) 464.9 470.33 T
(eal-time) 506.95 470.33 T
(dispatching begins.) 252 458.33 T
1 11.5 Q
(Example of Multiple Synchronized Schedulers) 234 421.33 T
0 10 Q
(The example) 234 396.83 T
2 F
(multi) 293.2 396.83 T
0 F
( demonstrates the cr) 315.42 396.83 T
(eation of thr) 404.7 396.83 T
(ee synchr) 458.55 396.83 T
(onized FRSs.) 500.25 396.83 T
(The thr) 234 384.83 T
(ee FRSs use the SYNC timer to establish a minor frame interval of) 266.07 384.83 T
(50) 234 372.83 T
(ms. All thr) 246.49 372.83 T
(ee have 20 minor frames per major frame, for a major frame) 293.49 372.83 T
(rate of 1 Hz.) 234 360.83 T
(The following pr) 234 336.83 T
(ocesses ar) 308.18 336.83 T
(e scheduled in this example:) 351.62 336.83 T
4 9 Q
(\245) 234 318.83 T
0 10 Q
(Pr) 252 318.83 T
(ocesses A and D r) 261.8 318.83 T
(equir) 340.18 318.83 T
(e a fr) 363.27 318.83 T
(equency of 20 Hz) 385.15 318.83 T
4 9 Q
(\245) 234 300.83 T
0 10 Q
(Pr) 252 300.83 T
(ocess B r) 261.8 300.83 T
(equir) 299.83 300.83 T
(es a fr) 322.92 300.83 T
(equency of 10 Hz and can consume up to 100 ms) 349.04 300.83 T
(of execution time each time) 252 288.83 T
4 9 Q
(\245) 234 270.83 T
0 10 Q
-0.35 (Pr) 252 270.83 P
-0.35 (ocess C r) 261.8 270.83 P
-0.35 (equir) 300.1 270.83 P
-0.35 (es a fr) 323.19 270.83 P
-0.35 (equence of 5 Hz and can consume up to 200 ms of) 348.6 270.83 P
(execution time each time) 252 258.83 T
4 9 Q
(\245) 234 240.83 T
0 10 Q
-0.34 (Pr) 252 240.83 P
-0.34 (ocess E r) 261.8 240.83 P
-0.34 (equir) 299.15 240.83 P
-0.34 (es a fr) 322.24 240.83 P
-0.34 (equency of 4 Hz and can consume up to 250 ms of) 347.67 240.83 P
(execution time each time) 252 228.83 T
4 9 Q
(\245) 234 210.83 T
0 10 Q
-0.31 (Pr) 252 210.83 P
-0.31 (ocess F r) 261.8 210.83 P
-0.31 (equir) 298.67 210.83 P
-0.31 (es a fr) 321.76 210.83 P
-0.31 (equency of 2 Hz and can consume up to 500 ms of) 347.26 210.83 P
(execution time each time) 252 198.83 T
4 9 Q
(\245) 234 180.83 T
0 10 Q
(Pr) 252 180.83 T
(ocesses K1, K2 and K3 ar) 261.8 180.83 T
(e backgr) 371.42 180.83 T
(ound pr) 408.55 180.83 T
(ocesses that should r) 444.23 180.83 T
(un as) 535.66 180.83 T
(often as possible, when time is available.) 252 168.83 T
44 455 45 639 R
V
FMENDPAGE
%%EndPage: "41" 42
%%Page: "42" 42
612 792 0 FMBEGINPAGE
1 9 Q
0 X
0 K
(42) 45 109.2 T
0 F
(:) 45 679.44 T
45 675 549 675 2 L
0.3 H
2 Z
N
0 10 Q
(The pr) 216 632.33 T
(ocesses ar) 245 632.33 T
(e assigned to pr) 288.45 632.33 T
(ocessors as follows:) 357.87 632.33 T
4 9 Q
(\245) 216 614.33 T
0 10 Q
(FRS 1 r) 234 614.33 T
(uns pr) 265.34 614.33 T
(ocesses A \05020 Hz\051 and K1 \050backgr) 293.7 614.33 T
(ound\051) 440.96 614.33 T
4 9 Q
(\245) 216 596.33 T
0 10 Q
(FRS 2 r) 234 596.33 T
(uns pr) 265.34 596.33 T
(ocesses B \05010 Hz\051, C \0505 Hz\051 and K2 \050backgr) 293.7 596.33 T
(ound\051) 481.33 596.33 T
4 9 Q
(\245) 216 578.33 T
0 10 Q
(FRS 3 r) 234 578.33 T
(uns pr) 265.34 578.33 T
(ocesses D \05020Hz\051, E \0504 Hz\051 and F \0502 Hz\051 and K3.) 293.7 578.33 T
-0.62 (In or) 216 554.33 P
-0.62 (der to simplify the coding of the example, all r) 236.29 554.33 P
-0.62 (eal-time pr) 434.8 554.33 P
-0.62 (ocesses use the) 482.26 554.33 P
(same function body) 216 542.33 T
(,) 302.43 542.33 T
5 F
(process_skeleton\050\051) 307.43 542.33 T
0 F
(, which is parameterized with the) 391.8 542.33 T
(pr) 216 530.33 T
(ocess name, the number of the FRS it is to join, and the \322r) 225.77 530.33 T
(eal-time\323) 477.86 530.33 T
-0.61 (function it is to execute. In the sample code, all r) 216 518.33 P
-0.61 (eal-time functions ar) 422.37 518.33 P
-0.61 (e empty) 512 518.33 P
(function bodies.) 216 506.33 T
1 11.5 Q
(Example of Device Driver) 216 469.33 T
0 10 Q
(The code in dir) 216 444.83 T
(ectory) 282.52 444.83 T
2 F
(driver) 312.47 444.83 T
0 F
( contains a skeletal test-bed for a kernel-level) 336.9 444.83 T
(device driver that interacts with the Frame Scheduler) 216 432.83 T
(. Most of the driver) 450.11 432.83 T
-0.71 (functions consist of minimal or empty stubs. However) 216 420.83 P
-0.71 (, the) 450.27 420.83 P
5 F
-0.71 (ioctl\050\051) 470.2 420.83 P
0 F
-0.71 ( entry point) 496.83 420.83 P
-0.66 (to the driver \050see ioctl\0502\051\051 simulates a har) 216 408.83 P
-0.66 (dwar) 391.68 408.83 P
-0.66 (e interr) 414.89 408.83 P
-0.66 (upt and calls the Frame) 446.11 408.83 P
-0.57 (Scheduler entry point,) 216 396.83 P
5 F
-0.57 (frs_handle_driverintr\050\051) 315.16 396.83 P
0 F
-0.57 ( \050see \322Generating Interr) 420.08 396.83 P
-0.57 (upts\323) 522.55 396.83 P
(on page) 216 384.83 T
(36\051. This allows you to test the driver) 253.62 384.83 T
(. Calling its) 416.63 384.83 T
5 F
(ioctl\050\051) 469.21 384.83 T
0 F
( entry is) 495.85 384.83 T
(equivalent to using) 216 372.83 T
5 F
(frs_usrintr\050\051) 303.49 372.83 T
0 F
( \050see \322Delivering T) 358.44 372.83 T
(ime-Base Interr) 440.66 372.83 T
(upts to a) 508.18 372.83 T
(Frame Scheduler\323 on page) 216 360.83 T
(28\051.) 335.79 360.83 T
1 11.5 Q
(Example of a 60 Hz Frame Rate) 216 323.83 T
0 10 Q
(The example in dir) 216 299.33 T
(ectory) 299.2 299.33 T
2 F
(sixtyhz) 329.15 299.33 T
0 F
( demonstrates the ability to schedule a) 358.57 299.33 T
(pr) 216 287.33 T
(ocess at a frame rate of 60 Hz, a common tar) 225.77 287.33 T
(get rate in visual simulators.) 420.48 287.33 T
(A single FRS is cr) 216 275.33 T
(eated. It uses the high-pr) 292.82 275.33 T
(ecision timer with an interval of) 402.23 275.33 T
(16,666 micr) 216 263.33 T
(oseconds \05016.66 ms, appr) 265.92 263.33 T
(oximately 60 Hz\051. Ther) 376.11 263.33 T
(e is one minor) 477.1 263.33 T
(frame per major frame.) 216 251.33 T
(One r) 216 227.33 T
(eal-time pr) 240.73 227.33 T
(ocess is enqueued to the FRS. By changing the compiler) 288.8 227.33 T
-0.04 (constant LOGLOOPS you can change the amount of work it attempts to do) 216 215.33 P
(in each frame.) 216 203.33 T
FMENDPAGE
%%EndPage: "42" 43
%%Page: "43" 43
612 792 0 FMBEGINPAGE
0 9 Q
0 X
0 K
(Examples) 527.81 679.44 T
1 F
(43) 557.01 109.2 T
63 675 567 675 2 L
0.3 H
2 Z
N
1 11.5 Q
(Example of Memory and Cache Management) 234 631.33 T
0 10 Q
(The example in dir) 234 606.83 T
(ectory) 317.2 606.83 T
2 F
(memlock) 347.15 606.83 T
0 F
( is almost identical to that in dir) 382.31 606.83 T
(ectory) 522.31 606.83 T
2 F
(sixtyhz) 234 594.83 T
0 F
(. \050Use dif) 263.42 594.83 T
(f\0501\051 to display the alter) 303.21 594.83 T
(ed code.\051) 403.21 594.83 T
(The functional dif) 234 570.83 T
(fer) 312.85 570.83 T
(ence between the two examples is that the r) 324.73 570.83 T
(eal-time) 516.58 570.83 T
-0.46 (pr) 234 558.83 P
-0.46 (ocess in memlock.c locks its own virtual addr) 243.77 558.83 P
-0.46 (ess space so as to avoid page) 440.92 558.83 P
(faults. Also, it executes one major frame\325s worth of) 234 546.83 T
5 F
(frs_yield\050\051) 460.4 546.83 T
0 F
( calls) 507.58 546.83 T
(immediately after r) 234 534.83 T
(eturn fr) 318.95 534.83 T
(om) 352.39 534.83 T
5 F
(frs_join\050\051) 369.17 534.83 T
0 F
(. The purpose of this is to \322warm) 411.35 534.83 T
-0.47 (up\323 the pr) 234 522.83 P
-0.47 (ocessor cache with copies of the pr) 278.73 522.83 P
-0.47 (ocess code and data. \050An actual) 428.54 522.83 P
-0.03 (application pr) 234 510.83 P
-0.03 (ocess could access its major data str) 295.94 510.83 P
-0.03 (uctur) 452.66 510.83 P
-0.03 (es prior to this yield) 476.17 510.83 P
(in or) 234 498.83 T
(der to speed up the caching pr) 254.45 498.83 T
(ocess.\051) 388.57 498.83 T
FMENDPAGE
%%EndPage: "43" 44
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 43 1
%%DocumentFonts: Palatino-Roman
%%+ Helvetica-Bold
%%+ Palatino-Italic
%%+ Times-Roman
%%+ Helvetica
%%+ Palatino-Bold
%%+ Courier