From: Jack Lange Date: Tue, 28 Apr 2009 22:54:56 +0000 (-0500) Subject: removed manual from release X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=commitdiff_plain;h=320320a1c8681f2d8258a03dd087b3aed18b48a1 removed manual from release --- diff --git a/manual/Makefile b/manual/Makefile deleted file mode 100755 index 27cd1b6..0000000 --- a/manual/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -LATEX2E = pdflatex -BIBTEX = bibtex -DVIPS = dvips -XDVI = xdvi -PS2PDF = ps2pdf -dMaxSubsetPct=100 -dCompatibilityLevel=1.2 -dSubsetFonts=true -dEmbedAllFonts=true -dPDFSETTINGS=/prepress - -TEXDOCS = manual.tex -WORDDOCS= -DVIDOCS = $(TEXDOCS:.tex=.dvi) -ERASEABLEPSDOCS=$(TEXDOCS:.tex=.ps) -PSDOCS = $(ERASEABLEPSDOCS) $(WORDDOCS:.doc=.ps) -PDFDOCS = $(PSDOCS:.ps=.pdf) - -all: $(PDFDOCS) - -#%.pdf: %.ps -#% $(PS2PDF) $< $(@F) - -#%.ps : %.dvi -# $(DVIPS) -t letter -Ppdf -G0 -f $< -o $(@F) - -#%.dvi: %.tex *.eps -# $(LATEX2E) $< - -%.pdf: %.tex - $(LATEX2E) $< - -bib: - $(LATEX2E) manual - $(LATEX2E) manual - - -clean: - -rm -f *.dvi manual.pdf $(ERASEABLEPSDOCS) diff --git a/manual/dev_chart.eps b/manual/dev_chart.eps deleted file mode 100755 index 009391d..0000000 --- a/manual/dev_chart.eps +++ /dev/null @@ -1,787 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Title: Microsoft PowerPoint - figs.ppt -%%Creator: PScript5.dll Version 5.2.2 -%%CreationDate: 2/27/2009 16:40:43 -%%For: jarusl -%%BoundingBox: 21 20 3649 3648 -%%Pages: 1 -%%Orientation: Landscape -%%PageOrder: Ascend -%%DocumentNeededResources: (atend) -%%DocumentSuppliedResources: (atend) -%%DocumentData: Clean7Bit -%%TargetDevice: (WMF2EPS Color PS) (2010.0) 2 -%%LanguageLevel: 2 -%%EndComments - -%%BeginDefaults -%%PageBoundingBox: 21 20 3649 3648 -%%ViewingOrientation: 0 1 -1 0 -%%EndDefaults - -%%BeginProlog -%%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 -/currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false -setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype -ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch -def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 -rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def -/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def -typeprint nl}def/typeprint{dup type exec}readonly def/lmargin 72 def/rmargin 72 -def/tprint{dup length cp add rmargin gt{nl/cp 0 def}if dup length cp add/cp -exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def -/integertype{cvsprint}readonly def/realtype{cvsprint}readonly def/booleantype -{cvsprint}readonly def/operatortype{(--)tprint =string cvs tprint(-- )tprint} -readonly def/marktype{pop(-mark- )tprint}readonly def/dicttype{pop -(-dictionary- )tprint}readonly def/nulltype{pop(-null- )tprint}readonly def -/filetype{pop(-filestream- )tprint}readonly def/savetype{pop(-savelevel- ) -tprint}readonly def/fonttype{pop(-fontid- )tprint}readonly def/nametype{dup -xcheck not{(/)tprint}if cvsprint}readonly def/stringtype{dup rcheck{(\()tprint -tprint(\))tprint}{pop(-string- )tprint}ifelse}readonly def/arraytype{dup rcheck -{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint}forall(]) -tprint}ifelse}{pop(-array- )tprint}ifelse}readonly def/packedarraytype{dup -rcheck{dup xcheck{({)tprint{typeprint}forall(})tprint}{([)tprint{typeprint} -forall(])tprint}ifelse}{pop(-packedarray- )tprint}ifelse}readonly def/courier -/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin -$error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 -ne{grestoreall}if errorname(VMerror)ne{showpage}if initgraphics courier setfont -lmargin 720 moveto errorname(VMerror)eq{userdict/ehsave known{clear userdict -/ehsave get restore 2 vmreclaim}if vmstatus exch pop exch pop PrtVMMsg}{ -(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt -$error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==} -repeat}if}ifelse systemdict/showpage get exec(%%[ Error: )print errorname -=print(; OffendingCommand: )print/command load =print( ]%%)= flush}if end end -end}dup 0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking -where{pop/setpacking where{pop oldpack setpacking}if}if -%%EndResource -userdict /Pscript_WinNT_Incr 230 dict dup begin put -%%BeginResource: file Pscript_FatalError 5.0 0 -userdict begin/FatalErrorIf{{initgraphics findfont 1 index 0 eq{exch pop}{dup -length dict begin{1 index/FID ne{def}{pop pop}ifelse}forall/Encoding -{ISOLatin1Encoding}stopped{StandardEncoding}if def currentdict end -/ErrFont-Latin1 exch definefont}ifelse exch scalefont setfont counttomark 3 div -cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def end -%%EndResource -userdict begin/PrtVMMsg{vmstatus exch sub exch pop gt{[ -(This job requires more memory than is available in this printer.)100 500 -(Try one or more of the following, and then print again:)100 485 -(For the output format, choose Optimize For Portability.)115 470 -(In the Device Settings page, make sure the Available PostScript Memory is accurate.) -115 455(Reduce the number of fonts in the document.)115 440 -(Print the document in parts.)115 425 12/Times-Roman showpage -(%%[ PrinterError: Low Printer VM ]%%)= true FatalErrorIf}if}bind def end -version cvi 2016 ge{/VM?{pop}bind def}{/VM? userdict/PrtVMMsg get def}ifelse -%%BeginResource: file Pscript_Win_Basic 5.0 0 -/d/def load def/,/load load d/~/exch , d/?/ifelse , d/!/pop , d/`/begin , d/^ -/index , d/@/dup , d/+/translate , d/$/roll , d/U/userdict , d/M/moveto , d/- -/rlineto , d/&/currentdict , d/:/gsave , d/;/grestore , d/F/false , d/T/true , -d/N/newpath , d/E/end , d/Ac/arc , d/An/arcn , d/A/ashow , d/D/awidthshow , d/C -/closepath , d/V/div , d/O/eofill , d/L/fill , d/I/lineto , d/-c/curveto , d/-M -/rmoveto , d/+S/scale , d/Ji/setfont , d/Lc/setlinecap , d/Lj/setlinejoin , d -/Lw/setlinewidth , d/Lm/setmiterlimit , d/sd/setdash , d/S/show , d/LH/showpage -, d/K/stroke , d/W/widthshow , d/R/rotate , d/L2? false/languagelevel where{pop -languagelevel 2 ge{pop true}if}if d L2?{/xS/xshow , d/yS/yshow , d/zS/xyshow , -d}if/b{bind d}bind d/bd{bind d}bind d/xd{~ d}bd/ld{, d}bd/bn/bind ld/lw/Lw ld -/lc/Lc ld/lj/Lj ld/sg/setgray ld/ADO_mxRot null d/self & d/OrgMx matrix -currentmatrix d/reinitialize{: OrgMx setmatrix[/TextInit/GraphInit/UtilsInit -counttomark{@ where{self eq}{F}?{cvx exec}{!}?}repeat cleartomark ;}b -/initialize{`{/Pscript_Win_Data where{!}{U/Pscript_Win_Data & put}?/ADO_mxRot ~ -d/TextInitialised? F d reinitialize E}{U/Pscript_Win_Data 230 dict @ ` put -/ADO_mxRot ~ d/TextInitialised? F d reinitialize}?}b/terminate{!{& self eq -{exit}{E}?}loop E}b/suspend/terminate , d/resume{` Pscript_Win_Data `}b U ` -/lucas 21690 d/featurebegin{countdictstack lucas[}b/featurecleanup{stopped -{cleartomark @ lucas eq{! exit}if}loop countdictstack ~ sub @ 0 gt{{E}repeat} -{!}?}b E/snap{transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ -itransform}b/dsnap{dtransform round ~ round ~ idtransform}b/nonzero_round{@ 0.5 -ge{round}{@ -0.5 lt{round}{0 ge{1}{-1}?}?}?}b/nonzero_dsnap{dtransform -nonzero_round ~ nonzero_round ~ idtransform}b U<04>cvn{}put/rr{1 ^ 0 - 0 ~ - -neg 0 - C}b/irp{4 -2 $ + +S fx 4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rp{4 2 $ M 1 ^ 0 -- 0 ~ - neg 0 -}b/solid{[]0 sd}b/g{@ not{U/DefIf_save save put}if U/DefIf_bool -2 ^ put}b/DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e -{DefIf_El !}b/UDF{L2?{undefinefont}{!}?}b/UDR{L2?{undefineresource}{! !}?}b -/freeVM{/Courier findfont[40 0 0 -40 0 0]makefont Ji 2 vmreclaim}b/hfRedefFont -{findfont @ length dict `{1 ^/FID ne{d}{! !}?}forall & E @ ` ~{/CharStrings 1 -dict `/.notdef 0 d & E d}if/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for d -E definefont !}bind d/hfMkCIDFont{/CIDFont findresource @ length 2 add dict `{1 -^ @/FID eq ~ @/XUID eq ~/UIDBase eq or or{! !}{d}?}forall/CDevProc ~ d/Metrics2 -16 dict d/CIDFontName 1 ^ d & E 1 ^ ~/CIDFont defineresource ![~]composefont !} -bind d -%%EndResource -%%BeginResource: file Pscript_Win_Utils_L2 5.0 0 -/rf/rectfill , d/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 -1 $ @ 0 ge -{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ -snap + +S fx rf}b/rs/rectstroke , d/rc/rectclip , d/UtilsInit{currentglobal{F -setglobal}if}b/scol{! setcolor}b/colspA/DeviceGray d/colspABC/DeviceRGB d -/colspRefresh{colspABC setcolorspace}b/SetColSpace{colspABC setcolorspace}b -/resourcestatus where{!/ColorRendering/ProcSet resourcestatus{! ! T}{F}?}{F}? -not{/ColorRendering<>/defineresource where{!/ProcSet -defineresource !}{! !}?}if/buildcrdname{/ColorRendering/ProcSet findresource ` -mark GetHalftoneName @ type @/nametype ne ~/stringtype ne and{!/none}if(.) -GetPageDeviceName @ type @/nametype ne ~/stringtype ne and{!/none}if(.)5 ^ 0 5 --1 1{^ length add}for string 6 1 $ 5 ^ 5{~ 1 ^ cvs length 1 ^ length 1 ^ sub -getinterval}repeat ! cvn 3 1 $ ! ! E}b/definecolorrendering{~ buildcrdname ~ -/ColorRendering defineresource !}b/findcolorrendering where{!}{ -/findcolorrendering{buildcrdname @/ColorRendering resourcestatus{! ! T}{ -/ColorRendering/ProcSet findresource ` GetSubstituteCRD E F}?}b}? -/selectcolorrendering{findcolorrendering !/ColorRendering findresource -setcolorrendering}b/G2UBegin{findresource/FontInfo get/GlyphNames2Unicode get -`}bind d/G2CCBegin{findresource/FontInfo get/GlyphNames2HostCode get `}bind d -/G2UEnd{E}bind d/AddFontInfoBegin{/FontInfo 8 dict @ `}bind d/AddFontInfo{ -/GlyphNames2Unicode 16 dict d/GlyphNames2HostCode 16 dict d}bind d -/AddFontInfoEnd{E d}bind d/T0AddCFFMtx2{/CIDFont findresource/Metrics2 get ` d -E}bind d -%%EndResource -end -%%EndProlog - -%%BeginSetup -[ 0 1 -1 0 0 0 ] false Pscript_WinNT_Incr dup /initialize get exec -1 setlinecap 1 setlinejoin -/mysetup [ 72 600 V 0 0 -72 600 V 20.00126 3647.99902 ] def -%%EndSetup - -%%Page: 1 1 -%%PageBoundingBox: 21 20 3649 3648 -%%EndPageComments -%%BeginPageSetup -/DeviceRGB dup setcolorspace /colspABC exch def -mysetup concat colspRefresh -%%EndPageSetup - -Pscript_WinNT_Incr begin -%%BeginResource: file Pscript_WinNT_Compat 5.0 0 -userdict/Pscript_WinNT_Compat 19 dict dup begin/bd{bind def}bind def/ld{load -def}bd/$x matrix def/ANSIVec[16#0/grave 16#1/acute 16#2/circumflex 16#3/tilde -16#4/macron 16#5/breve 16#6/dotaccent 16#7/dieresis 16#8/ring 16#9/cedilla 16#A -/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle 16#60 -/grave 16#7C/bar 16#82/quotesinglbase 16#83/florin 16#84/quotedblbase 16#85 -/ellipsis 16#86/dagger 16#87/daggerdbl 16#88/circumflex 16#89/perthousand 16#8A -/Scaron 16#8B/guilsinglleft 16#8C/OE 16#91/quoteleft 16#92/quoteright 16#93 -/quotedblleft 16#94/quotedblright 16#95/bullet 16#96/endash 16#97/emdash 16#98 -/tilde 16#99/trademark 16#9A/scaron 16#9B/guilsinglright 16#9C/oe 16#9F -/Ydieresis 16#A0/space 16#A1/exclamdown 16#A4/currency 16#A5/yen 16#A6 -/brokenbar 16#A7/section 16#A8/dieresis 16#A9/copyright 16#AA/ordfeminine 16#AB -/guillemotleft 16#AC/logicalnot 16#AD/hyphen 16#AE/registered 16#AF/macron -16#B0/degree 16#B1/plusminus 16#B2/twosuperior 16#B3/threesuperior 16#B4/acute -16#B5/mu 16#B6/paragraph 16#B7/periodcentered 16#B8/cedilla 16#B9/onesuperior -16#BA/ordmasculine 16#BB/guillemotright 16#BC/onequarter 16#BD/onehalf 16#BE -/threequarters 16#BF/questiondown 16#C0/Agrave 16#C1/Aacute 16#C2/Acircumflex -16#C3/Atilde 16#C4/Adieresis 16#C5/Aring 16#C6/AE 16#C7/Ccedilla 16#C8/Egrave -16#C9/Eacute 16#CA/Ecircumflex 16#CB/Edieresis 16#CC/Igrave 16#CD/Iacute 16#CE -/Icircumflex 16#CF/Idieresis 16#D0/Eth 16#D1/Ntilde 16#D2/Ograve 16#D3/Oacute -16#D4/Ocircumflex 16#D5/Otilde 16#D6/Odieresis 16#D7/multiply 16#D8/Oslash -16#D9/Ugrave 16#DA/Uacute 16#DB/Ucircumflex 16#DC/Udieresis 16#DD/Yacute 16#DE -/Thorn 16#DF/germandbls 16#E0/agrave 16#E1/aacute 16#E2/acircumflex 16#E3 -/atilde 16#E4/adieresis 16#E5/aring 16#E6/ae 16#E7/ccedilla 16#E8/egrave 16#E9 -/eacute 16#EA/ecircumflex 16#EB/edieresis 16#EC/igrave 16#ED/iacute 16#EE -/icircumflex 16#EF/idieresis 16#F0/eth 16#F1/ntilde 16#F2/ograve 16#F3/oacute -16#F4/ocircumflex 16#F5/otilde 16#F6/odieresis 16#F7/divide 16#F8/oslash 16#F9 -/ugrave 16#FA/uacute 16#FB/ucircumflex 16#FC/udieresis 16#FD/yacute 16#FE/thorn -16#FF/ydieresis]def currentdict{dup type/operatortype eq{[exch]cvx def}{pop -pop}ifelse}forall/initialize{currentdict exch begin begin}bind def/terminate{ -/@FL where not{pop end end}{pop}ifelse}bind def/suspend/terminate load def -/resume/initialize load def/RS{/pagesave where{pop pagesave restore}{$x matrix -invertmatrix concat}ifelse}def/SS{/pagesave save def}def/CB{pop pop pop pop}def -/B{pop pop pop pop}def/:/gsave load def/;/grestore load def/N/newpath load def -end put -%%EndResource -end reinitialize -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -NP 0 3779 m 30233 3779 l 30233 26454 l 0 26454 l CP -eoclip -1 1 1 SC -NP 0 3779 m 30233 3779 l 30233 26454 l 0 26454 l CP -eofill -GSE -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -1 setlinecap -0 setlinejoin -8 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 15117 9322 m 15117 11337 l 22675 11337 l 22675 9322 l CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol Pscript_WinNT_Incr begin -%%BeginResource: file Pscript_Text 5.0 0 -/TextInit{TextInitialised? not{/Pscript_Windows_Font & d/TextInitialised? T d -/fM[1 0 0 1 0 0]d/mFM matrix d/iMat[1 0 0.212557 1 0 0]d}if}b/copyfont{1 ^ -length add dict `{1 ^/FID ne{d}{! !}?}forall & E}b/EncodeDict 11 dict d/bullets -{{/bullet}repeat}b/rF{3 copyfont @ ` ~ EncodeDict ~ get/Encoding ~ 3 ^/0 eq{& -/CharStrings known{CharStrings/Eth known not{! EncodeDict/ANSIEncodingOld get} -if}if}if d E}b/mF{@ 7 1 $ findfont ~{@/Encoding get @ StandardEncoding eq{! T}{ -{ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get -StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{1 ^ ~ rF}{0 copyfont}? 6 -2 $ -! ! ~ !/pd_charset @ where{~ get 128 eq{@ FDV 2 copy get @ length array copy -put pd_CoverFCRange}if}{!}? 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM -makefont Pscript_Windows_Font 3 1 $ put}b/sLT{: Lw -M currentpoint snap M 0 - 0 -Lc K ;}b/xUP null d/yUP null d/uW null d/xSP null d/ySP null d/sW null d/sSU{N -/uW ~ d/yUP ~ d/xUP ~ d}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ d/ySP ~ d/xSP ~ d}b/sT -{xSP ySP sW sLT}b/sR{: + R 0 0 M}b/sRxy{: matrix astore concat 0 0 M}b/eR/; , d -/AddOrigFP{{&/FontInfo known{&/FontInfo get length 6 add}{6}? dict ` -/WinPitchAndFamily ~ d/WinCharSet ~ d/OrigFontType ~ d/OrigFontStyle ~ d -/OrigFontName ~ d & E/FontInfo ~ d}{! ! ! ! !}?}b/mFS{makefont -Pscript_Windows_Font 3 1 $ put}b/mF42D{0 copyfont `/FontName ~ d 2 copy ~ sub 1 -add dict `/.notdef 0 d 2 copy 1 ~{@ 3 ^ sub Encoding ~ get ~ d}for & E -/CharStrings ~ d ! ! & @ E/FontName get ~ definefont}b/mF42{15 dict ` @ 4 1 $ -FontName ~ d/FontType 0 d/FMapType 2 d/FontMatrix[1 0 0 1 0 0]d 1 ^ 254 add 255 -idiv @ array/Encoding ~ d 0 1 3 -1 $ 1 sub{@ Encoding 3 1 $ put}for/FDepVector -Encoding length array d/CharStrings 2 dict `/.notdef 0 d & E d 0 1 Encoding -length 1 sub{@ @ 10 lt{! FontName length 1 add string}{100 lt{FontName length 2 -add string}{FontName length 3 add string}?}? @ 0 FontName @ length string cvs -putinterval @ 3 -1 $ @ 4 1 $ 3 string cvs FontName length ~ putinterval cvn 1 ^ -256 mul @ 255 add 3 -1 $ 4 ^ findfont mF42D FDepVector 3 1 $ put}for & @ E -/FontName get ~ definefont ! ! ! mF}b/mF_OTF_V{~ ! ~ ! 4 -1 $ ! findfont 2 ^ ~ -definefont fM @ @ 4 6 -1 $ neg put 5 0 put 90 matrix R matrix concatmatrix -makefont Pscript_Windows_Font 3 1 $ put}b/mF_TTF_V{3{~ !}repeat 3 -1 $ ! -findfont 1 ^ ~ definefont Pscript_Windows_Font 3 1 $ put}b/UmF{L2? -{Pscript_Windows_Font ~ undef}{!}?}b/UmF42{@ findfont/FDepVector get{/FontName -get undefinefont}forall undefinefont}b -%%EndResource -end reinitialize -Pscript_WinNT_Incr begin -%%BeginResource: file Pscript_Encoding256 5.0 0 -/CharCol256Encoding[/.notdef/breve/caron/dotaccent/dotlessi/fi/fl/fraction -/hungarumlaut/Lslash/lslash/minus/ogonek/ring/Zcaron/zcaron/.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/Euro/.notdef/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/.notdef -/.notdef/.notdef/.notdef/quoteleft/quoteright/quotedblleft/quotedblright/bullet -/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/.notdef/.notdef -/Ydieresis/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar/section -/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/.notdef/registered -/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph -/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter -/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis -/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute -/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis -/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls -/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute -/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve -/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis]def EncodeDict/256 CharCol256Encoding put -%%EndResource -end reinitialize - -%%IncludeResource: font Helvetica -Pscript_WinNT_Incr begin -%%BeginResource: file Pscript_Win_Euro_L2 5.0 0 -/UseT3EuroFont{/currentdistillerparams where{pop currentdistillerparams -/CoreDistVersion get 4000 le}{false}ifelse}bind def/NewEuroT3Font?{dup/FontType -get 3 eq{dup/EuroFont known exch/BaseFont known and}{pop false}ifelse}bind def -/T1FontHasEuro{dup/CharStrings known not{dup NewEuroT3Font?{dup/EuroGlyphName -get exch/EuroFont get/CharStrings get exch known{true}{false}ifelse}{pop false} -ifelse}{dup/FontType get 1 eq{/CharStrings get/Euro known}{dup/InfoDict known{ -/InfoDict get/Euro known}{/CharStrings get/Euro known}ifelse}ifelse}ifelse}bind -def/FontHasEuro{findfont dup/Blend known{pop true}{T1FontHasEuro}ifelse}bind -def/EuroEncodingIdx 1 def/EuroFontHdr{12 dict begin/FontInfo 10 dict dup begin -/version(001.000)readonly def/Notice(Copyright (c)1999 Adobe Systems -Incorporated. All Rights Reserved.)readonly def/FullName(Euro)readonly def -/FamilyName(Euro)readonly def/Weight(Regular)readonly def/isFixedPitch false -def/ItalicAngle 0 def/UnderlinePosition -100 def/UnderlineThickness 50 def end -readonly def/FontName/Euro def/Encoding 256 array 0 1 255{1 index exch/.notdef -put}for def/PaintType 0 def/FontType 1 def/FontMatrix[0.001 0 0 0.001 0 0]def -/FontBBox{-25 -23 1500 804}readonly def currentdict end dup/Private 20 dict dup -begin/ND{def}def/NP{put}def/lenIV -1 def/RD{string currentfile exch -readhexstring pop}def/-|{string currentfile exch readstring pop}executeonly def -/|-{def}executeonly def/|{put}executeonly def/BlueValues[-20 0 706 736 547 572] -|-/OtherBlues[-211 -203]|-/BlueScale 0.0312917 def/MinFeature{16 16}|-/StdHW -[60]|-/StdVW[71]|-/ForceBold false def/password 5839 def/Erode{8.5 dup 3 -1 -roll 0.1 mul exch 0.5 sub mul cvi sub dup mul 71 0 dtransform dup mul exch dup -mul add le{pop pop 1.0 1.0}{pop pop 0.0 1.5}ifelse}def/OtherSubrs[{}{}{} -{systemdict/internaldict known not{pop 3}{1183615869 systemdict/internaldict -get exec dup/startlock known{/startlock get exec}{dup/strtlck known{/strtlck -get exec}{pop 3}ifelse}ifelse}ifelse}executeonly]|-/Subrs 5 array dup 0 -<8E8B0C100C110C110C210B>put dup 1<8B8C0C100B>put dup 2<8B8D0C100B>put dup 3<0B> -put dup 4<8E8C8E0C100C110A0B>put |- 2 index/CharStrings 256 dict dup begin -/.notdef<8b8b0d0e>def end end put put dup/FontName get exch definefont pop}bind -def/AddEuroGlyph{2 index exch EuroEncodingIdx 1 eq{EuroFontHdr}if systemdict -begin/Euro findfont dup dup/Encoding get 5 1 roll/Private get begin/CharStrings -get dup 3 index known{pop pop pop pop end end}{begin 1 index exch def end end -end EuroEncodingIdx dup 1 add/EuroEncodingIdx exch def exch put}ifelse}bind def -/GetNewXUID{currentdict/XUID known{[7 XUID aload pop]true}{currentdict/UniqueID -known{[7 UniqueID]true}{false}ifelse}ifelse}bind def/BuildT3EuroFont{exch 16 -dict begin dup/FontName exch def findfont dup/Encoding get/Encoding exch def -dup length 1 add dict copy dup/FID undef begin dup dup/FontName exch def -/Encoding 256 array 0 1 255{1 index exch/.notdef put}for def GetNewXUID{/XUID -exch def}if currentdict end definefont pop/BaseFont exch findfont 1000 -scalefont def/EuroFont exch findfont 1000 scalefont def pop/EuroGlyphName exch -def/FontType 3 def/FontMatrix[.001 0 0 .001 0 0]def/FontBBox BaseFont/FontBBox -get def/Char 1 string def/BuildChar{exch dup begin/Encoding get 1 index get -/Euro eq{BaseFont T1FontHasEuro{false}{true}ifelse}{false}ifelse{EuroFont -setfont pop userdict/Idx 0 put EuroFont/Encoding get{EuroGlyphName eq{exit} -{userdict/Idx Idx 1 add put}ifelse}forall userdict/Idx get}{dup dup Encoding -exch get BaseFont/Encoding get 3 1 roll put BaseFont setfont}ifelse Char 0 3 -1 -roll put Char stringwidth newpath 0 0 moveto Char true charpath flattenpath -pathbbox setcachedevice 0 0 moveto Char show end}bind def currentdict end dup -/FontName get exch definefont pop}bind def/AddEuroToT1Font{dup findfont dup -length 10 add dict copy dup/FID undef begin/EuroFont 3 -1 roll findfont 1000 -scalefont def CharStrings dup length 1 add dict copy begin/Euro{EuroFont -setfont pop EuroGBBox aload pop setcachedevice 0 0 moveto EuroGName glyphshow} -bind def currentdict end/CharStrings exch def GetNewXUID{/XUID exch def}if 3 1 -roll/EuroGBBox exch def/EuroGName exch def currentdict end definefont pop}bind -def/BuildNewFont{UseT3EuroFont{BuildT3EuroFont}{pop AddEuroToT1Font}ifelse}bind -def/UseObliqueEuro{findfont/FontMatrix get dup 2 get 0 eq exch dup 0 get exch 3 -get eq and UseT3EuroFont or}bind def -%%EndResource -end reinitialize -/Helvetica FontHasEuro not -{ -/Euro.Helvetica - [556 0 24 -19 541 703 ] - -AddEuroGlyph -/Euro /Helvetica /Helvetica-Copy BuildNewFont -} if -F /F0 0 /256 T /Helvetica mF -/F0S2F4 F0 [756 0 0 -756 0 0 ] mFS -F0S2F4 Ji -17741 10256 M (Master)[630 420 378 210 420 0]xS -/F0S24C F0 [588 0 0 -588 0 0 ] mFS -F0S24C Ji -15243 10997 M (\(~)[194 0]xS -15779 10997 M (palacios/palacios_master)[325 327 130 325 294 131 326 294 162 326 327 130 325 294 131 326 293 326 488 325 294 162 326 0]xS -22360 10997 M (\))S -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -1 setlinecap -0 setlinejoin -8 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 15117 13101 m 15117 15116 l 22675 15116 l 22675 13101 l CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol F0S2F4 Ji -16250 14035 M (Current Version)[546 420 252 252 420 420 210 210 504 420 252 378 168 419 0]xS -F0S24C Ji -16298 14776 M (\(~)[194 0]xS -16834 14776 M (palacios/palacios)[325 327 130 325 294 131 326 294 162 326 327 130 325 294 131 326 0]xS -21300 14776 M (\))S -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 18518 13101 m 18518 11967 l 18770 11967 l 18770 13101 l CP -18266 12093 m 18644 11337 l 19022 12093 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol F0S2F4 Ji -19400 12345 M (Pull)[504 420 168 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -1 setlinecap -1 setlinejoin -10 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 15621 18896 m 14368 18896 13353 19403 13353 20029 c 13353 20656 14368 21163 15621 21163 c 16873 21163 17888 20656 17888 20029 c 17888 19403 16873 18896 15621 18896 c CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol /F0S498 F0 [1176 0 0 -1176 0 0 ] mFS -F0S498 Ji -14413 20470 M (Jack)[588 656 588 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -1 setlinecap -1 setlinejoin -10 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 7684 21163 m 6780 21163 6047 21558 6047 22045 c 6047 22532 6780 22927 7684 22927 c 8589 22927 9322 22532 9322 22045 c 9322 21558 8589 21163 7684 21163 c CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol /F0S348 F0 [840 0 0 -840 0 0 ] mFS -F0S348 Ji -6818 22360 M (DEV)[609 562 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 9294 21863 m 13043 19988 l 13100 20101 l 9350 21975 l CP -12931 19903 m 13353 19903 l 13100 20241 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol F0S24C Ji -10886 21883 M (Email )[392 490 327 131 131 0]xS -10886 22586 M (Patch)[392 327 163 293 0]xS -F0S2F4 Ji -19452 17012 M (Push)[504 420 378 0]xS -6855 18775 M (Pull)[504 420 168 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 15117 14172 m 15030 14172 l 14944 14174 l 14858 14177 l 14772 14182 l 14686 14188 l 14599 14194 l 14514 14202 l 14428 14212 l 14342 14222 l 14256 14234 l 14170 14247 l 14085 14261 l 13999 14276 l 13914 14293 l 13829 14310 l 13744 14329 l 13659 14348 l 13574 14369 l 13490 14391 l 13406 14414 l 13321 14439 l 13238 14464 l 13154 14490 l 13070 14517 l 12987 14546 l 12904 14575 l 12822 14606 l 12739 14637 l 12657 14669 l 12575 14703 l 12412 14773 l 12251 14847 l 12091 14924 l 11933 15005 l 11776 15090 l 11621 15178 l 11468 15270 l 11316 15365 l 11167 15463 l 11019 15565 l 10874 15670 l 10730 15777 l 10589 15888 l 10451 16002 l 10314 16118 l 10181 16238 l 10050 16359 l 9922 16484 l 9796 16611 l 9673 16740 l 9554 16871 l 9437 17005 l 9323 17141 l 9213 17279 l 9106 17419 l 9003 17561 l 8902 17705 l 8806 17851 l 8713 17998 l 8624 18146 l 8538 18297 l 8457 18448 l 8418 18524 l 8379 18601 l 8342 18678 l 8306 18755 l 8271 18833 l 8237 18911 l 8203 18989 l 8171 19067 l 8141 19146 l 8111 19225 l 8082 19304 l 8054 19383 l 8028 19463 l 8002 19542 l 7978 19622 l 7955 19702 l 7933 19783 l 7912 19863 l 7893 19944 l 7874 20024 l 7857 20105 l 7841 20186 l 7826 20267 l 7813 20349 l 7800 20430 l 7789 20511 l 7780 20593 l 7771 20674 l 7764 20756 l 7759 20852 l 7633 20845 l 7638 20744 l 7646 20661 l 7654 20578 l 7664 20494 l 7676 20411 l 7688 20328 l 7702 20245 l 7717 20162 l 7734 20079 l 7751 19996 l 7770 19914 l 7790 19832 l 7811 19749 l 7834 19667 l 7858 19586 l 7882 19504 l 7908 19423 l 7935 19342 l 7963 19261 l 7993 19180 l 8023 19100 l 8055 19020 l 8087 18940 l 8121 18860 l 8156 18781 l 8192 18702 l 8229 18623 l 8267 18545 l 8306 18467 l 8346 18389 l 8429 18234 l 8516 18082 l 8606 17930 l 8701 17781 l 8799 17633 l 8901 17487 l 9006 17343 l 9115 17201 l 9227 17060 l 9342 16922 l 9460 16787 l 9582 16653 l 9706 16522 l 9834 16393 l 9964 16267 l 10097 16144 l 10233 16023 l 10371 15905 l 10511 15789 l 10655 15677 l 10800 15567 l 10948 15461 l 11097 15358 l 11249 15258 l 11403 15162 l 11559 15069 l 11716 14979 l 11875 14893 l 12036 14811 l 12199 14732 l 12363 14657 l 12528 14586 l 12611 14552 l 12694 14519 l 12778 14487 l 12862 14456 l 12947 14426 l 13031 14398 l 13116 14370 l 13201 14343 l 13287 14317 l 13372 14293 l 13458 14269 l 13544 14247 l 13630 14226 l 13717 14206 l 13804 14187 l 13890 14169 l 13977 14152 l 14064 14137 l 14152 14122 l 14239 14109 l 14326 14097 l 14414 14087 l 14502 14077 l 14589 14069 l 14677 14062 l 14765 14056 l 14853 14052 l 14941 14048 l 15029 14046 l 15116 14046 l CP -7887 20793 m 7684 21163 l 7510 20778 l CP -fill -GSE -GpPBeg1 -1 setlinecap -0 setlinejoin -8 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 15369 5543 m 15369 7054 l 22675 7054 l 22675 5543 l CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol 17237 6577 M (Web Repo)[714 420 420 210 546 420 420 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 18266 9322 m 18266 7684 l 18518 7684 l 18518 9322 l CP -18014 7810 m 18392 7054 l 18770 7810 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol 19200 8949 M (Pull)[504 420 168 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 15369 6361 m 15278 6362 l 15187 6364 l 15097 6368 l 15006 6372 l 14916 6378 l 14826 6385 l 14736 6394 l 14647 6404 l 14558 6414 l 14469 6426 l 14381 6440 l 14293 6454 l 14206 6469 l 14120 6486 l 14033 6504 l 13948 6522 l 13863 6542 l 13780 6563 l 13614 6607 l 13452 6655 l 13373 6681 l 13295 6707 l 13218 6734 l 13142 6762 l 13066 6791 l 12993 6820 l 12920 6851 l 12849 6882 l 12779 6913 l 12711 6946 l 12644 6979 l 12578 7013 l 12514 7047 l 12452 7082 l 12391 7118 l 12332 7154 l 12275 7190 l 12219 7227 l 12165 7265 l 12114 7303 l 12064 7341 l 12015 7380 l 11969 7419 l 11925 7459 l 11883 7499 l 11844 7539 l 11806 7579 l 11771 7619 l 11738 7660 l 11707 7701 l 11678 7742 l 11652 7783 l 11628 7824 l 11607 7865 l 11588 7906 l 11572 7947 l 11558 7987 l 11546 8028 l 11538 8069 l 11531 8109 l 11528 8150 l 11526 8190 l 11525 8234 l 11520 8283 l 11513 8331 l 11503 8378 l 11489 8426 l 11473 8473 l 11454 8520 l 11433 8567 l 11409 8613 l 11382 8659 l 11353 8704 l 11322 8749 l 11288 8794 l 11252 8838 l 11214 8882 l 11174 8925 l 11131 8968 l 11087 9010 l 11040 9052 l 10992 9093 l 10941 9134 l 10889 9174 l 10835 9214 l 10779 9253 l 10721 9291 l 10662 9329 l 10600 9367 l 10538 9403 l 10473 9439 l 10407 9475 l 10340 9510 l 10271 9544 l 10201 9577 l 10129 9609 l 10056 9641 l 9982 9672 l 9906 9703 l 9830 9732 l 9752 9761 l 9673 9788 l 9593 9815 l 9512 9841 l 9347 9890 l 9179 9935 l 9093 9956 l 9007 9977 l 8920 9996 l 8832 10014 l 8744 10030 l 8655 10046 l 8565 10061 l 8476 10074 l 8385 10087 l 8294 10098 l 8203 10108 l 8112 10116 l 8020 10124 l 7876 10131 l 7870 10005 l 8010 9998 l 8100 9991 l 8190 9982 l 8279 9973 l 8368 9962 l 8457 9950 l 8545 9936 l 8633 9922 l 8720 9907 l 8807 9890 l 8893 9873 l 8978 9854 l 9063 9834 l 9146 9814 l 9311 9769 l 9473 9721 l 9553 9696 l 9631 9669 l 9708 9642 l 9785 9614 l 9860 9586 l 9933 9556 l 10006 9526 l 10077 9495 l 10147 9463 l 10215 9431 l 10282 9398 l 10348 9364 l 10412 9330 l 10474 9295 l 10535 9259 l 10594 9223 l 10651 9187 l 10707 9149 l 10760 9112 l 10812 9074 l 10862 9036 l 10910 8997 l 10956 8958 l 11000 8918 l 11042 8879 l 11082 8839 l 11119 8799 l 11155 8758 l 11188 8718 l 11219 8677 l 11247 8636 l 11273 8596 l 11297 8555 l 11319 8514 l 11338 8473 l 11354 8433 l 11368 8392 l 11380 8351 l 11389 8311 l 11395 8271 l 11399 8230 l 11401 8186 l 11402 8138 l 11407 8090 l 11415 8042 l 11425 7994 l 11439 7947 l 11455 7900 l 11474 7853 l 11495 7806 l 11519 7760 l 11546 7715 l 11575 7670 l 11606 7625 l 11640 7580 l 11676 7536 l 11714 7493 l 11754 7450 l 11797 7407 l 11841 7365 l 11888 7323 l 11936 7282 l 11987 7241 l 12039 7201 l 12093 7162 l 12149 7123 l 12207 7084 l 12266 7046 l 12328 7009 l 12390 6972 l 12455 6936 l 12521 6901 l 12588 6866 l 12657 6832 l 12727 6799 l 12799 6766 l 12872 6734 l 12946 6703 l 13021 6673 l 13098 6644 l 13176 6615 l 13255 6588 l 13335 6561 l 13416 6535 l 13581 6486 l 13749 6441 l 13835 6419 l 13921 6399 l 14008 6380 l 14096 6362 l 14184 6345 l 14273 6330 l 14362 6315 l 14452 6302 l 14543 6289 l 14633 6278 l 14725 6268 l 14816 6260 l 14908 6252 l 15000 6246 l 15092 6242 l 15184 6238 l 15277 6236 l 15368 6235 l CP -7942 10255 m 7558 10078 l 7930 9877 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol 10382 7186 M (Pull)[504 420 168 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -1 setlinecap -1 setlinejoin -10 setmiterlimit -31.4930 setlinewidth -[] 0 setdash -0 0 0 SC -NP 5291 8818 m 4038 8818 3023 9382 3023 10078 c 3023 10773 4038 11337 5291 11337 c 6543 11337 7558 10773 7558 10078 c 7558 9382 6543 8818 5291 8818 c CP -stroke -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol 3910 9905 M (External)[504 378 210 420 252 420 420 0]xS -3574 10813 M (Developer)[546 420 378 420 168 420 420 420 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 5589 11294 m 13183 19379 l 13092 19465 l 5497 11380 l CP -13232 19247 m 13353 19651 l 12957 19505 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol F0S24C Ji -7611 12561 M (Email )[392 490 327 131 131 0]xS -7611 13264 M (Patch)[392 327 163 293 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 17883 19967 m 17907 19965 l 17898 19966 l 17921 19961 l 17937 19954 l 17953 19945 l 17971 19933 l 17990 19918 l 18009 19899 l 18030 19876 l 18050 19851 l 18071 19822 l 18093 19789 l 18114 19754 l 18136 19715 l 18158 19673 l 18179 19629 l 18201 19581 l 18222 19531 l 18244 19478 l 18265 19422 l 18286 19363 l 18307 19302 l 18327 19239 l 18348 19173 l 18368 19105 l 18388 19034 l 18408 18961 l 18427 18887 l 18446 18809 l 18465 18730 l 18483 18649 l 18501 18566 l 18519 18481 l 18537 18394 l 18554 18306 l 18570 18216 l 18587 18124 l 18603 18030 l 18618 17936 l 18633 17839 l 18648 17741 l 18662 17642 l 18675 17541 l 18688 17440 l 18701 17337 l 18713 17233 l 18725 17128 l 18736 17021 l 18747 16914 l 18766 16697 l 18783 16477 l 18798 16254 l 18810 16029 l 18820 15803 l 18827 15575 l 18829 15430 l 18955 15432 l 18953 15578 l 18946 15808 l 18936 16036 l 18924 16263 l 18909 16487 l 18892 16708 l 18872 16927 l 18861 17035 l 18850 17141 l 18838 17247 l 18826 17352 l 18813 17456 l 18800 17558 l 18786 17660 l 18772 17760 l 18757 17858 l 18742 17956 l 18727 18052 l 18711 18146 l 18694 18239 l 18677 18330 l 18660 18419 l 18643 18507 l 18625 18593 l 18606 18677 l 18587 18759 l 18568 18840 l 18549 18918 l 18529 18994 l 18509 19068 l 18489 19140 l 18468 19210 l 18447 19278 l 18426 19343 l 18404 19406 l 18383 19466 l 18360 19525 l 18338 19580 l 18315 19633 l 18293 19684 l 18269 19732 l 18246 19777 l 18222 19819 l 18198 19859 l 18173 19896 l 18148 19930 l 18122 19962 l 18096 19990 l 18069 20016 l 18041 20038 l 18011 20057 l 17981 20072 l 17949 20084 l 17925 20089 l 17923 20090 17920 20090 17916 20090 c 17893 20092 l CP -18703 15492 m 18896 15116 l 19081 15496 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -/DeviceRGB dup setcolorspace /colspABC exch def -0 0 0 1 scol F0S2F4 Ji -15169 16508 M (Pull)[504 420 168 0]xS -Pscript_WinNT_Compat begin /$x mysetup def end -Pscript_WinNT_Incr dup /suspend get exec -Pscript_WinNT_Compat dup /initialize get exec -%%BeginDocument: Pscript_Win_PassThrough -/languagelevel where {pop languagelevel} {1} ifelse -2 ge dup {currentglobal exch true setglobal globaldict} {userdict} ifelse -/GpPBeg1 { - gsave initclip - 16 dict begin - /c {curveto} def /l {lineto} def /m {moveto} def - /rc {rcurveto} def /rl {rlineto} def - /NP {newpath} def /CP {closepath} def /SC {setrgbcolor} def - /GSE {end grestore} def -} put -{setglobal} if -GpPBeg1 -0 0 0 SC -NP 15118 14172 m 15101 14172 l 15087 14174 l 15073 14176 l 15059 14179 l 15028 14188 l 14999 14200 l 14970 14215 l 14940 14234 l 14910 14256 l 14880 14281 l 14850 14310 l 14820 14342 l 14790 14377 l 14761 14415 l 14733 14455 l 14705 14498 l 14678 14544 l 14652 14591 l 14627 14642 l 14603 14694 l 14581 14748 l 14559 14803 l 14539 14861 l 14520 14920 l 14503 14980 l 14487 15041 l 14473 15104 l 14460 15167 l 14449 15231 l 14440 15296 l 14433 15361 l 14428 15427 l 14425 15492 l 14424 15558 l 14425 15624 l 14427 15691 l 14432 15756 l 14438 15822 l 14445 15887 l 14454 15951 l 14465 16015 l 14477 16078 l 14490 16139 l 14505 16200 l 14521 16259 l 14538 16316 l 14556 16372 l 14575 16426 l 14595 16479 l 14616 16529 l 14638 16577 l 14660 16623 l 14683 16666 l 14707 16707 l 14732 16745 l 14756 16780 l 14782 16812 l 14807 16840 l 14832 16865 l 14857 16887 l 14882 16905 l 14906 16920 l 14930 16931 l 14952 16938 l 14962 16940 l 14972 16942 l 14983 16943 l 14993 16943 l 15008 16944 l 15029 16947 l 15049 16951 l 15069 16957 l 15088 16965 l 15107 16974 l 15125 16984 l 15143 16996 l 15161 17009 l 15178 17023 l 15194 17039 l 15211 17055 l 15227 17073 l 15242 17091 l 15258 17111 l 15273 17131 l 15288 17153 l 15302 17175 l 15330 17222 l 15358 17273 l 15385 17327 l 15411 17385 l 15436 17446 l 15460 17509 l 15483 17576 l 15505 17645 l 15527 17717 l 15547 17791 l 15565 17868 l 15583 17946 l 15600 18026 l 15615 18108 l 15629 18192 l 15641 18276 l 15652 18363 l 15661 18450 l 15670 18577 l 15544 18585 l 15536 18463 l 15527 18378 l 15516 18295 l 15504 18212 l 15491 18131 l 15476 18051 l 15460 17974 l 15443 17898 l 15425 17824 l 15406 17753 l 15385 17684 l 15364 17617 l 15342 17554 l 15319 17493 l 15296 17436 l 15272 17383 l 15247 17333 l 15222 17287 l 15197 17244 l 15184 17224 l 15171 17206 l 15159 17189 l 15146 17173 l 15133 17158 l 15121 17144 l 15109 17131 l 15097 17120 l 15085 17110 l 15073 17101 l 15062 17093 l 15051 17087 l 15040 17081 l 15031 17077 l 15021 17074 l 15011 17071 l 15003 17070 l 14989 17069 l 14969 17068 l 14950 17066 l 14931 17063 l 14911 17057 l 14875 17044 l 14840 17027 l 14807 17006 l 14774 16982 l 14743 16954 l 14712 16923 l 14682 16889 l 14654 16852 l 14626 16813 l 14599 16771 l 14573 16726 l 14547 16679 l 14523 16629 l 14499 16578 l 14477 16524 l 14456 16468 l 14436 16411 l 14417 16352 l 14399 16291 l 14382 16229 l 14367 16166 l 14353 16101 l 14341 16035 l 14330 15969 l 14320 15901 l 14312 15833 l 14306 15765 l 14302 15696 l 14299 15626 l 14298 15556 l 14299 15487 l 14302 15417 l 14308 15347 l 14315 15278 l 14325 15210 l 14336 15142 l 14350 15076 l 14365 15010 l 14382 14945 l 14400 14881 l 14420 14819 l 14442 14758 l 14465 14699 l 14489 14641 l 14515 14585 l 14542 14531 l 14570 14479 l 14599 14430 l 14630 14383 l 14662 14338 l 14694 14295 l 14728 14256 l 14763 14219 l 14799 14185 l 14836 14154 l 14873 14127 l 14912 14103 l 14952 14083 l 14993 14067 l 15033 14055 l 15055 14051 l 15075 14048 l 15097 14046 l 15115 14046 l CP -15793 18510 m 15621 18896 l 15415 18526 l CP -fill -GSE - -%%EndDocument - -Pscript_WinNT_Compat dup /suspend get exec -Pscript_WinNT_Incr dup /resume get exec -LH -%%PageTrailer - -%%Trailer -%%DocumentNeededResources: -%%+ font Helvetica -%%DocumentSuppliedResources: -%%+ procset Pscript_WinNT_ErrorHandler 5.0 0 -%%+ procset Pscript_FatalError 5.0 0 -%%+ procset Pscript_Win_Basic 5.0 0 -%%+ procset Pscript_Win_Utils_L2 5.0 0 -%%+ procset Pscript_WinNT_Compat 5.0 0 -%%+ procset Pscript_Text 5.0 0 -%%+ procset Pscript_Encoding256 5.0 0 -%%+ procset Pscript_Win_Euro_L2 5.0 0 -Pscript_WinNT_Incr dup /terminate get exec -%%EOF diff --git a/manual/dev_chart.pdf b/manual/dev_chart.pdf deleted file mode 100644 index 82d9dde..0000000 Binary files a/manual/dev_chart.pdf and /dev/null differ diff --git a/manual/figs.ppt b/manual/figs.ppt deleted file mode 100755 index defd4b9..0000000 Binary files a/manual/figs.ppt and /dev/null differ diff --git a/manual/logo6.png b/manual/logo6.png deleted file mode 100644 index e6958ce..0000000 Binary files a/manual/logo6.png and /dev/null differ diff --git a/manual/manual.pdf b/manual/manual.pdf deleted file mode 100644 index 887fd33..0000000 Binary files a/manual/manual.pdf and /dev/null differ diff --git a/manual/manual.tex b/manual/manual.tex deleted file mode 100755 index c13651f..0000000 --- a/manual/manual.tex +++ /dev/null @@ -1,718 +0,0 @@ - -\documentclass[11pt]{article} - -\usepackage{calc} -\usepackage{graphics} -%\usepackage{latex8} -\usepackage{times} -\usepackage{epsf} -\usepackage{epsfig} -\usepackage{graphicx} -\usepackage{changebar} -\usepackage{portland} -\usepackage{lscape} - -\setlength{\textheight}{8.50in} -\setlength{\textwidth}{6.5in} -\setlength{\topmargin}{-0.3in} -%\setlength{\leftmargin}{2.9in} -%\setlength{\rightmargin}{-2.9in} -\setlength{\oddsidemargin}{0in} -\setlength{\parindent}{0.5in} -\setlength\parindent{0in} -\setlength\parskip{0.1in} - -\newcommand{\note}[1]{{$\rightarrow$ \bf Note: \emph{#1}}} - -\begin{document} - -\title{ -\includegraphics[height=1.5in]{v3vee.pdf} -\includegraphics[height=1.5in]{logo6.png} \\ -\vspace{0.5in} -Palacios Internal Developer Manual -} - - -\maketitle - - -This manual is written for Internal Palacios developers. It contains -information on how to obtain the palacios code base, how to go about -the development process, and how to commit those changes to the -mainline source tree. This assumes that the reader has read {\em An -Introduction to the Palacios Virtual Machine Monitor -- Release 1.0} -and also has a slight working knowledge of {\em git}. - - -\section{Overview} - - -Both Palacios and Kitten follow a hybrid development process that -uses both the centralized repository and distributed development -models. A central repository exists that holds the master version of -the code base. This central repository is cloned by multiple people -and in multiple places to support various development efforts. A -feature of git is that every developer actually has a fully copy of -the entire repository, and so can function independently until such -time as they need to resync with the master version. - -There are typically multiple levels of access to the central -repository, that are granted based on the type of developer being -granted access. The three basic developer types and their access -privileges are: - -\begin{itemize} -\item Core Developers: These are the lead developers and are in -charge of managing the master repository. They have full read/write -access permissions to the central repository. - -\item Internal Developers: Formal members of the development -team. These people are capable of pulling directly from the central -repository, but lack the ability to write directly to it. - -\item External Developers: People who are not actual members of the -development team. These people can only access the public repository -which is only updated to contain the release versions. -\end{itemize} - -Because internal and external developers cannot write directly to the -master repository, they need to first submit their changes to a core -developer before they can be added to the mainline. We will discuss -that process in Section~\ref{sec:submission}. - - -\section{Checking out Palacios} -The central palacios repository is located on {\em -newskysaw.cs.northwestern.edu} in {\em /home/palacios/palacios}. All -internal developers have read access to the directory. Each developer -must create their own local version of the repository, this is done -with {\em git clone}. - -\begin{verbatim} -git clone /home/palacios/palacios -\end{verbatim} - -This creates a local copy of the repository at {\em ./palacios/}. - - -All development work is done in the {\em devel} branch of the -repository. The developer can access this branch via: - -\begin{verbatim} -git checkout --track -b devel origin/devel -\end{verbatim} - -or - -\begin{verbatim} -/opt/vmm-tools/bin/checkout_branch devel -\end{verbatim} - -{\em Important:} -Note that palacios is very actively developed so the contents of the -{\em devel} branch are frequently changing. In order to keep up to -date with the latest version, it is necessary to periodically pull the -latest changes from the master repository by running \verb.git pull.. - - - -\section{Checking out Kitten} - -Kitten is available from Sandia National Labs, and is the main host OS -we are targetting with Palacios. Loosely speaking core Palacios -developers are internal Kitten developers, and internal Palacios -developers are external Kitten developers. Because we have limited -access to the Kitten repository, we are maintaining a local mirror -copy in {\em /home/palacios/kitten}. - -Kitten uses Mercurial for their source management, so you will have to -make sure the local mercurial version is configured correctly. -Specifically you should add the following python path to your shell environment. - -\begin{verbatim} -export PYTHONPATH=/usr/local/lib64/python2.4/site-packages/ -\end{verbatim} - -You can then clone Kitten from the local mirror: -\begin{verbatim} -hg clone /home/palacios/kitten -\end{verbatim} - -Both the Kitten and Palacios clone commands should be run from the -same direcotyr. This means that both repositories should be located at -the same directory level. The Kitten build process depends on this. - -{\em Important:} Like Palacios, Kitten is very actively developed so -source tree is frequently changing. In order to keep up to date with -the latest version, it is necessary to periodically pull the latest -changes from the mirror repository by running \verb.hg pull. followed -by \verb.hg update.. - -\section{Compiling Palacios} -Palacios is capable of targeting 32 and 64 bit operating systems, and -includes a build process that supports both these -architectures. Furthermore, Palacios has multiple build locations, -with multiple makefiles: a top level build directory and a Palacios -specific build directory. The Palacios build process first generates a -static library that includes the Palacios VMM. This static library is -then linked into a host operating system. Palacios internally supports -GeekOS and can generate a complete OS image via a unified build -process. To combine Palacios with Kitten, it is necessary to first -compile Palacios and then to compile Kitten externally link it with -Palacios. The output of the compilation process is a bit more complex -and generates multiple binaries, and the specifics can be found in the -Makefiles. - -The top level build directory provides a number of high level make -targets, and is located in {\em palacios/build/}. It supports building -32 and 64 bit versions of the Palacios library independently as well -as building an integrated version of GeekOS. The basic targets are: -\begin{itemize} -\item \verb.make palacios-full32. -- Generates a 32 bit version of the Palacios static library -\item \verb.make palacios-full64. -- Generates a 64 bit version of the -Palacios static library -\item \verb.make geekos. -- Compiles the GeekOS kernel, and link it with the -Palacios static library -\item \verb.make geekos-iso. -- Generate an ISO boot disk image from the -GeekOS kernel that has been compiled -\end{itemize} - -The second build directory is located at {\em palacios/palacios/build} -and handles only the Palacios compilation process. It supports a -differnt set of targets and arguments: -\begin{itemize} -\item \verb.make ARCH=32. -- iteratively compiles a 32 bit version of Palacios -\item \verb.make ARCH=64. -- iteratively compiles a 64 bit version of -Palacios -\item \verb.make ARCH=32 world. -- fully recompiles a 32 bit version of -Palacios -\item \verb.make ARCH=64 world. -- fully recompiles a 64 bit version of -Palacios -\end{itemize} - -Both build levels support compilation directives that control the -debugging messages that are generated by Palacios. These are specified -by appending a \verb.DEBUG_=1. to the end of the -\verb.make. command. The components that are currently supported are: -\begin{itemize} -\item \verb.DEBUG_ALL=1. -- enables debugging for all the VMM components -({\em Warning:} this generates a {\em lot} of debug information. -\item \verb.DEBUG_SHADOW_PAGING=1. -\item \verb.DEBUG_CTRL_REGS=1. -\item \verb.DEBUG_INTERRUPTS=1. -\item \verb.DEBUG_IO=1. -\item \verb.DEBUG_KEYBOARD=1. -\item \verb.DEBUG_PIC=1. -\item \verb.DEBUG_PIT=1. -\item \verb.DEBUG_NVRAM=1. -\item \verb.DEBUG_GENERIC=1. -\item \verb.DEBUG_EMULATOR=1. -\item \verb.DEBUG_RAMDISK=1. -\item \verb.DEBUG_XED=1. -\item \verb.DEBUG_HALT=1. -\item \verb.DEBUG_DEV_MGR=1. -\item \verb.DEBUG_APIC=1. -\end{itemize} - - - -\section{Compiling Kitten} -Kitten requires a 64 bit version of Palacios, so make sure that -Palacios has been correctly compiled before compiling Kitten. - -\subsection{Configuration} -Kitten borrows a lot of concepts from Linux, including the Linux build -process. As such it must be configured before it is actually compiled. -The Kitten configuration process is the same as Linux, and can be -accessed via any of these make targets. -\begin{itemize} -\item \verb.make xconfig. -\item \verb.make config. -\item \verb.make menuconfig. -\end{itemize} - -There are some specific configuration options that should be disabled -to work with Palacios. Because Palacios is configured by default to -provide a guest with direct access to the VGA console, the {\em VGA -console} device driver should be disbabled in the Kitten -configuration. Similarly the {\em VM console} driver should be -disabled as well. - -Furthermore, because the VGA console is not being used the {\em Kernel -Command Line Arguments} must be modified to remove the {\em VGA} -device from the console list. - -The guest OS that is booted as a VM is included as an ISO image in raw -binary format inside Kitten's {\em init\_task}. To change the guest -ISO, you must change the makefile for the init\_task. This is located -in {\em user/hello\_world/Makefile} and the syntax is well commented. -On {\em newskysaw} a collection of guest ISO images are located in -{\em /opt/vmm-tools/isos/}. - - -\subsection{Compilation} -After Kitten has been configured the compilation can be done. The -general process is to compile a reference build of Kitten, followed by -compiling Palacios support as a kernel module, and then doing a new -full recompilation of Kitten. - -The specific compilation steps are run from the top level Kitten directory: -\begin{verbatim} -make -cd palacios -make -C .. M=`pwd` -cp built-in.o ../modules/palacios-mod.o -cd .. -make -make isoimage -\end{verbatim} - -\note{This should probably explain how to change the iso (helloworld,etc)} - -This generates an ISO boot image containing Kitten, Palacios, and the -guest that will be run as a VM. The ISO image is located at {\em -./arch/x86\_64/boot/image.iso}. - - -\section{Running Palacios/Kitten} -Kitten and Palacios are capable of running under Qemu, which makes -debugging much simpler. - -The basic form of the command to start the Qemu emulator is: -\begin{verbatim} -/usr/local/qemu/bin/qemu-system-x86_64 -smp 1 -m 1024 \ - -serial file:./serial.out \ - -cdrom ./arch/x86_64/boot/image.iso \ - < /dev/null -\end{verbatim} - -The command starts up a single processor emulated machine, with 1gig -of RAM and a cdrom drive loaded with the Kitten ISO image. Furthermore -all output to the serial port is written directly to a file called -{\em serial.out}. This command can be copied into a shell script for easy access. - -\section{Development Guidelines} - -There are standard requirements we have for code entering the mainline. - -First and foremost, Palacios is designed to be OS indenpendent and -support 32 and 64 bit architectures. This means that developers should -not include any external OS specific dependencies in any Palacios -component. Also all changes need to be tested on both 32 and 64 bit -architectures to make sure that they compile as well as run corrrectly. - -\paragraph*{Coding Style} - -"The use of equal negative space, as a balance to positive space, in a -composition is considered by many as good design. This basic and often -overlooked principle of design gives the eye a "place to rest," -increasing the appeal of a composition through subtle means." -\newline\newline -Translation: Use the spacebar, newlines, and parentheses. - -Curly-brackets are not optional, even for single line conditionals. - -Tabs should be 4 characters in width. - -{\em Special:} If you are using XEmacs add the following to your \verb.init\.el. file: -\begin{verbatim} -(setq c-basic-offset 4) -(c-set-offset 'case-label 4) -\end{verbatim} - -{\em Bad} -\begin{verbatim} -if(a&&b==5||c!=0) return; -\end{verbatim} - - -{\em Good} - -\begin{verbatim} -if (((a) && (b == 5)) || - (c != 0)) { - return; -} -\end{verbatim} - - - -\paragraph*{Fail Stop} -Because booting a basic linux kernel results in over 1 million VM exits -catching silent errors is next to impossible. For this reason -ANY time your code has an error it should return -1, and expect the -execution to halt. - -This includes unimplemented features and unhandled cases. These cases -should ALWAYS return -1. - - -\paragraph*{Function names} -Externally visible function names should be used rarely and have -unique names. Currently we have several techniques for achieving this: - -\begin{enumerate} -\item \verb.#ifdefs. in the header file -\newline -When the V3 Hypervisor is compiled it defines the symbol -\verb.__V3VEE__. Any function that is not needed outside the Hypervisor -context should be inside an \verb.#ifdef __V3VEE__. block, this will make it -invisible to the host environment. - -\item Static Functions -\newline -Any utility functions that are only needed in the .c file where they -are defined should be declared as static and not included in the -header file. You should make an effort to use static functions -whenever possible. - -\item \verb.v3_. prefix -\newline -Major interface functions should be named with the prefix \verb.v3_. This -xallows easy understanding of how to interact with the subsystems. And -in the case that they need to be externally visible to the host os, -make them unlikely to collide with other functions. -\end{enumerate} - -\paragraph*{Debugging Output} -Debugging output is sent through the host os via functions in the -\verb.os_hooks. structure. These functions have various wrappers of the form -\verb.Print*., with printf style semantics. - -Two functions of note are \verb.PrintDebug. and \verb.PrintError.. - -\begin{itemize} - -\item PrintDebug: -\newline -Should be used for debugging output that will often be turned off -selectively by the VMM configuration. - -\item PrintError -\newline -Should be used when an error occurs, this will never be optimized out -and will always print. -\end{itemize} - - -\section{Code Submission} -\label{sec:submission} - -To commit changes to the central repository they need to be exported -as a patch set that can be applied directly to a mainline. Both Git -and Mercurial contain functionality to allow developers to maintain -changes as a patch set. There are also a few options that make dealing -with patches easier. - -\subsection{Palacios} - -Git includes support for directly exporting local repository commits -as a patch set. The basic operation is for a developer to commit a -change to a local repository, and then export that change as a patch -that can be applied to another git repository. While this is -functionally possible, there are a number of issues. The main problem -is that it is difficult to fully encapsulate a new feature in a single -commit, and dealing with multiple patches that often overwrite each -other is not a viable option either. Furthermore, once a patch is -applied to the mainline, it will generate a conflicting commit that -will become present when the developer next pulls from the central -repository. This can result in both repositories getting out of -sync. It is possible to deal with this by manually rebasing the local -repository, but it is difficult and error-prone. - -This approach also does not map well when patches are being revised. A -normal patch will go through multiple revisions as it is reviewed and -modified by others. This often leads to synchronization issues as well -as errors with patch revisions. Ultimately it is the responsibility of -the developer to generate a patch that will apply cleanly to the -mainline. - -For this reason most internal developers should seriously consider -{\em stacked git}. Stacked git is designed to make patch development -easier and less of a headache. The basic mode of operation is for a -developer to intialize a patch for a new feature and then continuously -apply changes to the patch. Stacked Git allows a developer to layer a -series of patches on top of a local git repository, without causing -the repository to unsync due to local commits. Basically, the -developer never commits changes to the repository itself but instead -commits the changes to a specific patch. The local patches are managed -using stack operations (push/pop) which allows a developer to apply -and unapply patches as needed. Stacked git also manages new changes to -the underlying git repository as a result of a pull operation and -prevents collisions as changes are propagated upstream. For instance -if you have a local patch that is applied to the mainline as a commit, -when the commit is pulled down the patch becomes empty because it is -effectively identical to the mainline. It also makes incorporating -external revisions to a patch easier. Stacked git is installed on {\em -newskysaw} in \verb./opt/vmm-tools/bin/. - -Brief command overview: -\begin{itemize} -\item \verb.stg init. -- Initialize stacked git in a given branch -\item \verb.stg new. -- create a new patch set, an editor will open -asking for a commit message that will be used when the patch is -ultimately committed. -\item \verb.stg pop. -- pops a patch off of the source tree. -\item \verb.stg push. -- pushes a patch back on to a source tree. -\item \verb.stg export. -- exports a patch to a directory as a file -that can then be emailed. -\item \verb.stg refresh. -- commits local changes to the patch set at -the top of the applied stack. -\item \verb.stg fold. -- Apply a patch file to the current -patch. (This is how you can manage revisions that are made by other developers). -\end{itemize} - -You should definately look at the online documentation to better -understand how stacked git works. It is not required of course, but if -you want your changes to be applied its up to you to generate a patch -that is acceptable to a core developer. Ultimately using Stacked git -should be easier than going it alone. - - -All patches should be emailed to Jack for inclusion in the -mainline. An overview of the organization is given in -Figure~\ref{fig:process}. You should assume that the first revision of -a patch will not be accepted, and that you will have to make -changes. Furthermore, the final form of the patch most likely will not -be exactly what you submitted. - - -\begin{figure}[t] -\begin{center} -\includegraphics[height=3.5in]{dev_chart.pdf} -\end{center} -\caption{Development organization} -\label{fig:process} -\end{figure} - - -\subsection{Kitten} - -Writing code for Kitten follows essentially the same process as -Palacios. The difference is that the patches need to be emailed to the -Kitten developers. To send in a patch, you can just email it to the -V3Vee development list. - - -Also, instead of Stacked git you should use Mercurial patch -queues. This feature is enabled in your .hgrc file. -\begin{verbatim} -[extensions] -hgext.mq= -\end{verbatim} - -Mercurial queues use the same stack operations as stacked git, however -it does not automatically handle the synchronization with pull -operations. Before you update from the central version of Kitten you -need to pop all of the patches, and then push them once the update is -complete. - -Basically: -\begin{verbatim} -hg qpop -a -hg pull -hg update -hg qpush -a -\end{verbatim} - - -%Also, remember that Kitten is not a Northwestern project and is being -%developed by professional developers at Sandia National Labs. So keep -%in mind that you are representing Northwestern and the rest of the -%Palacios development group. We are collaborating with them because -%Kitten and the resources they have are very important for our research -%efforts. They are collaborating with us because they believe that -%Palacios might be able to help them. Therefore it is important that we -%continue to ensure that they see value in our collaboration. In plain -%terms, we need to make sure they think we're smart and know what we're -%doing. So please keep that in mind when dealing with the Kitten group. - - -\section{Networking} - -Both the Kitten and GeekOS substrates on which Palacios can run -currently include drivers for two simple network cards, the NE2000, -and the RTL8139. The Kitten substrate is acquiring an ever increasing -set of drivers for specialized network systems. A lightweight -networking stack is included so that TCP/IP networking is possible -from within the host OS kernel and in Palacios. - -When debugging Palacios on QEMU, it is very convenient to add an -RTL8139 card to your QEMU configuration, and then drive it from within -Palacios. QEMU can be configured to provide local connectivity to the -QEMU emulated machine, including bridging the emulated machine with a -physical network. Local connectivity can be done with redirection, or -with a TAP interface. For global connectivity, a TAP interface must -be used; it is bridged to a physical interface. - -\section{Configuring the development host's QEMU network} - -To get local connectivity with redirection, no networking changes on -the host are needed. However, people usually want to use TAP-based -networking, which does require changes. For one thing, TAP interfaces -can be inspected with tools like wireshark, which makes for much -easier debugging of network code. - -In order to get QEMU networking to function, it is necessary to create -TAP interfaces, and, optionally, to bridge them to real networks. A -developmet machine typically will have several TAP interfaces, and -more can be created. Generally, each developer should have a TAP -interface of his or her own. In the following, we will use our -development machine, newskysaw, as an example. - -To set up a TAP interface on newskysaw, the following comand is used: -\begin{verbatim} -/root/util/tap_create tapX -\end{verbatim} - -When QEMU runs with a tap interface, it will use /etc/qemu-ifup to -bring up the interface. On newskysaw, /etc/qemu-ifup looks like this: - -\begin{verbatim} -#!/bin/bash -echo "Executing /etc/qemu-ifup - no external bridging" -echo "Bringing up $1 for bridged mode..." -NET=`echo $1 | cut -dp -f2` -sudo /sbin/ifconfig $1 172.2${NET}.0.1 up -sleep 2 -\end{verbatim} - -The interface tap$N$ is brought up with the IP address 172.2$N$.0.1. -ifconfig will also create a routing rule that sends 172.2$N$.0.1/16 -traffic to tap$N$. The upshot is that if the code running in QEMU -uses an IP address in this network (for example: 172.2$N$.0.2), you -will be able to talk to it from newskysaw. For example, from -newskysaw, if you ping 172.21.0.2, the packet (and ARP) will go out via -tap1. The source address will appear to be 172.21.0.1. The QEMU -machine will see these packets on its interface, and the software -controling its interface can respond to 172.21.0.1. - -This form of networking is local to the machine. You can also bridge -a TAP interface with a physical interface. The result of this is that -a packet sent on it will be sent on the physical interface. To do -this requires more effort (and is not set up by default on newskysaw). -As an example, consider that on newskysaw, the physical interface eth1 -is connected to a private network switch to which the lab test -computers (v-test-amd, v-test-amd2, etc.) are connected. To bridge, -for example, tap10, to this interface, you would do the following -(with root's help): -\begin{enumerate} -\item You need to bring up eth1 (ifconfig eth1 up {\em address} -netmask {\em mask}). It is important that the address and mask you -choose are appropriate for the network eth1 is connected to. -\item You would bring up tap10 without an address: /sbin/ifconfig -tap10 up -\item You would bridge tap10 and eth1: /usr/sbin/brctl addif br0 -tap10; /usr/sbin/brctl addif eth1. This assumes that br0 was -previously created. -\end{enumerate} - -Bridging tap$N$ with eth1 will only work (where ``work'' means sending -a packet on the network and making the packet visible on localhost) if -the IP address in the code running in QEMU is set correctly. This -means that it needs to be set to correspond to the network of eth1). -For the newskysaw configuration, this is a 10-net address. - - -\subsection{Configuring Kitten} - -Kitten needs to be explicitly configured to use networking. Currently -only a subset of the networking configurations are supported. To -enable an ethernet network you should enable the following options: - -\begin{itemize} -\item Enable TCP Support -\item Enable UDP Support -\item Enable socket API -\item Enable ARP support -\end{itemize} - -The other options are not supported, and enabling them will probably -break the kernel compilation. - -To allow Kitten to communicate with the Qemu network card you also -need to enable the appropriate device driver: \newline -\verb.NE2K Device Driver (rtl8139). - -The driver then needs to be listed as a Kernel Command Line argument -in the {\em ISOIMAGE configuration}. To do this add -\verb.net=rtl819. to the end of the argument string. - -Kitten currently does not support the dynamic assignment or IP -addresses at runtime. Because of this it is necessary to hardcode the -IP address into the device driver. For the rtl8139 network driver look -in the file {\em drivers/net/ne2k/rtl8139.c} for the function -\verb.rtl8139_init.. - -There shoule be a block of code that looks like the following: -\begin{verbatim} - struct ip_addr ipaddr = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 16 << 0) }; - struct ip_addr netmask = { htonl(0xffffff00) }; - struct ip_addr gw = { htonl(0 | 10 << 24 | 0 << 16 | 2 << 8 | 2 << 0) }; -\end{verbatim} - -This sets the ip address as 10.0.2.16, netmask 255.255.255.0 and -gateway address 10.0.2.2. Change these assignments to match your configuration. - - -\paragraph*{Kitten as the Guest OS} - -When running Kitten as a VM, the above applies except that you will -want to enable the {\em VMNET} device driver instead of the {\em rtl8139}. - - -\subsection{Running with networking} - -\paragraph*{TAP Interface} -Running with a TAP interface provides either local or global -connectivity (depending on how the TAP interface is configured and/or -bridged). From the perspective of the QEMU command line, both look -the same, however. You simply add something like this to the command -line: -\begin{verbatim} --net tap,ifname=tap2 -net nic,model=rtl8139 -\end{verbatim} -The first \verb.-net. option indicates that you want to use a tap -interface, specifically \verb.tap2.. The second \verb.-net. option -specifies that this interface will appear to code in the QEMU machine -to be a network interface card of the specific model RTL8139. Note -that this is a model for which we have a driver. If tap2 were -bridged, we'd get global connectivity. If not, we would just get -local connectivity. - - -\paragraph*{Redirection} -It is also possible to achieve limited local connectivity even if you -have no TAP support on your development machine. In redirection, QEMU -essentially acts as a proxy, translating TCP or other connections and -low-level packet operations on the network interface in the QEMU -machine. For example, the following options will redirect the host's -9555 port to the QEMU machine's 80 port: -\begin{verbatim} --net user -net nic,model=rtl8139 -redir tcp:9555:10.10.10.33:80 -\end{verbatim} -The first \verb.-net. option indicates that we are using user-level -networking (proxying). The secod \verb.-net. option indicates that -this user-level network will appear in the QEMU machine as an RTL8139 -network card. The \verb.-redir. option indicates that connections on -localhost:9555 will be translated into equivalent packet exchanges on -the RTL8139 card in the QEMU machine. However, we have to tell QEMU -which IP address and port to use on the QEMU machine's side. This is -what the 10.10.10.33 address, and port 80 are. In the example, if you -access port 9555 on localhost, say with: -\begin{verbatim} -telnet localhost 9555 -\end{verbatim} -The packets that appear in the QEMU machine will be bound for -10.10.10.33, port 80. Within the QEMU machine, your RTL8139 interface -had better then be up on that address. - -Qemu has many options to build up a virtual or real networking. See -http://www.h7.dion.ne.jp/$\sim$qemu-win/HowToNetwork-en.html for more -information. - - -For more questions, talk to Jack, Lei, or Peter. - -\end{document} diff --git a/manual/palacios.pdf b/manual/palacios.pdf deleted file mode 100755 index 5851247..0000000 Binary files a/manual/palacios.pdf and /dev/null differ diff --git a/manual/palacios.png b/manual/palacios.png deleted file mode 100755 index ffa1b92..0000000 Binary files a/manual/palacios.png and /dev/null differ diff --git a/manual/v3vee.pdf b/manual/v3vee.pdf deleted file mode 100755 index 2aa17ba..0000000 Binary files a/manual/v3vee.pdf and /dev/null differ diff --git a/manual/v3vee.png b/manual/v3vee.png deleted file mode 100644 index 586e5b0..0000000 Binary files a/manual/v3vee.png and /dev/null differ