tmp 755 0 1 0 6225022302 4520 5tmp/_lbl 755 0 1 0 6225022302 5430 5tmp/_lbl/prd=pnt 755 0 1 0 6225022302 7034 5tmp/_lbl/prd=pnt/typ=n386 755 0 1 0 6225022302 10364 5tmp/_lbl/prd=pnt/typ=n386/rel=3.0 755 0 1 0 6225022302 11464 5tmp/_lbl/prd=pnt/typ=n386/rel=3.0/vol=01 644 0 1 0 6000475446 12446 tmp/perms 755 0 1 0 6225022302 5646 5tmp/perms/pnt 644 0 1 2541 6000475524 6464 # # Copyright (C) Advanced Micro Devices, 1993-1994 # #prd=pnt #typ=n386 #rel=3.0 #set="AMD PCNET Family LLI Driver" # # User id's: # uid root 0 uid bin 2 # # Group id's: # gid root 0 gid bin 2 # # #!ALL 224 Entire Product # PERM D755 bin/bin 1 ./tmp/perms PERM F644 bin/bin 1 ./tmp/perms/pnt 01 PERM F755 bin/bin 1 ./tmp/perms/prep.pnt 01 # # PNT f644 bin/bin 1 ./usr/lib/lli/pnt/Master 01 PNT f777 bin/bin 1 ./usr/lib/lli/pciinfo 01 PNT f644 bin/bin 1 ./usr/lib/lli/pnt/System 01 PNT f644 bin/bin 1 ./usr/lib/lli/pnt/Node 01 PNT f644 bin/bin 1 ./usr/lib/lli/pnt/Space.c 01 PNT f644 bin/bin 1 ./usr/lib/lli/pnt/Driver.o 01 PNT F644 bin/bin 1 ./usr/lib/netconfig/info/pnt0 01 PNT f700 bin/bin 1 ./usr/lib/netconfig/init/pnt0 01 PNT f700 bin/bin 1 ./usr/lib/netconfig/remove/pnt0 01 PNT f700 bin/bin 1 ./usr/lib/netconfig/reconf/pnt0 01 PNT D755 bin/bin 1 ./usr/lib/lli/pnt PNT f700 bin/bin 1 ./usr/lib/custom/pnt.rmv 01 tmp/perms/prep.pnt 644 0 1 1036 5660174127 7435 # # Copyright (C) The Santa Cruz Operation, 1994. # This Module contains Proprietary Information of # The Santa Cruz Operation and should be treated as Confidential. # # PATH=/bin:/usr/bin:/etc:/etc/conf/bin chains=`netconfig -s | grep "pnt.$"` && { /bin/echo "\007" echo "\n\tBefore installing this product, please use netconfig" echo "\tto remove chains that contain the pnt driver:\n" echo "$chains" echo "\n\tPress to continue... \c" read foo exit 1 } rm -f /usr/lib/netconfig/*/pnt* rm -f /usr/lib/lli/*/pnt* exit 0 usr 755 0 1 0 6225022302 4531 5usr/lib 755 0 1 0 6225022310 5276 5usr/lib/lli 755 0 1 0 6225022304 6061 5usr/lib/lli/pciinfo 755 0 1 156331 5660174134 7601 L74.8 4bp9@@4.text@@4b .data44p94f@.bss??.commentÐET5RU RPh4j$> Ph`jUWVCECE}E@+ C CECECf Cjjh C }Ph<h5i3 j_= CtVhVh5C3 j_CGFEM k^_ÐUWV} t%+}8th2F㐐}GPh2Phq2GPh_2GPhM2wh=2GPh<+2GPh`2G Ph2G Ph1+tVh1 F|w0h1G?Ph1G>Ph;1G=Ph_1G-jY=?ts CPh, CPhH,CPht,CPh,CPhn,j,YE+ C CECfCjjh C }Vhh5d, jX= CEPuWY E=?t UE;Eu=?t E;Eu=?t E;Eu=?u5?EP=?tEEPhX+=?tEEPh8+=?tEE0h!+EG} = CE}E^_ÐUWVE th5S*^_ÐU t tRh= j5. }5*^_hjjW  } hQU t)Rhe{ff%@Ef t h@EEpt;EPE@Pff%@Ef t uxPh{,*EEjEPVW4tE PEPh f}UU sRVVW }hjV }hVs tPt hbhhhWv }h=(WtP/WfP+^_ÐUWV5?E Hw).$@@@@@@@@@}o}b}T}F}8}*}}}fGfFHGFuEPE@PPhE fEGPh+F(|h^_ÐU3;tXÐUu0u,u(u$u uuuuu uh5USVj-ju @F +qFE80|89~E8@|8Z~ E8a|!8z}+E ME 0뼋E8u+^[Ð tHt3"EE8_u C}/+댐Ex.t ^[ÐCܐEE8.t䐐^[US+ۋ+E8u j+E P+EP C|[ÐUjhujEu EPu jEjhjEEE u yEPu jEj"hjtEjhj^EjhPؐjhjBE jhdj1E j hjhdjE jh륐jh널jhuj!hjD u DPu Pj h0AHw.$@@@$@@@l@@@@@jh>jzDUDh@u uEBuud t ÐE8txt x1u E t1EPu tu jEPuE8txt xhHE t0EPu tu jEPudE8txt xz| t,E8uxu xu j^EE EPu- tu j }t}t}t܋E8tEPu tvExtEPEP tFExtEPEP tEPu/E}}uu jKE8t xtxuEPhdEPu+Ð=PtC@P=@~@-A A+ÐjhP`A }ÐP@A@밐UE=Pt =PuEu+P)@ u}u P}t@Ð=@u@Ð@8t@=@Ar@=@As @8u+Ð@ÐUhTm@Dž@Dž@hP5A }Ðu3=At惽tjj5A> @뛐@EhZu< EE+E8 t*AsME E8u΁AsME9wᐋ+++@j5@5A9 As 9@h@9Au++ÐE8 t EE8uE8tEÐUEPEpu | t+Ðh`EPBDžxhnEPjx+DPEP' xx|hpEPEEPjEPzt@u.}t Epj7rÐjEPt |EM8t/EpjMtO8tExt8xtEpjBhsu  EƀtjEPEtP huEtPNjEPEtP hwEtPjEPEtPH #EƀtCEƀuEtU@SEEEEA} uP}u [Ð+%ÍM9luÍt[ÐCÍpu+[Ð}hu hA B=A/uEEAP=Au?EA+C}5EPÍput tEEA+juSI E C}u$}t/EĉEj/PE tEÍpuEA+CÍpmÍM9luju S 뽐=Pt5AD5PE[ÐU}|0E ERE`ÐyÐU}uuj t+øzÐUEAEAÐh{hA=EtPhA!Et1EPEtP9  tEEEpv}dtÐUh<=hE>=ujH, >@=uj, >@=t 5<.E+UE tHt>>ÐÐUSV=0uS89E~M 8-u8xu ^[Ðh8M 4 u8С8M 0<:tSu8 =4tTfÈEE E 0.PE 0j/ h.Phj. jEPj. 08M 08u80?^[ÐF>:8M 0xt80@8E98|c=4tfÈEE E 0".PE 0j*. h.Phj . jEPj- A8M @80808M 08u08@^[UhPu =|hPu =}hPhT0z, hPhX1a,+ÐUSD/9>} >'}t)u, tSuhRh5s[ÐShZh5\ [ÐUSE E5u5t% 5h4uuv 5 t[Ë[ÐUSEEE@ u @ t H uuu * ؋E@ t[Ë[ÐVt$T$ :t#t:tt:tt :tu3^ËH^ÐWVt$ |$;t@uAt8u9t0u1t(u)t u!tututu u3^_W+^_ÐWV|$L$3ыϋt$+΋|$ ȁ3D$ ^_ÐU SWV]+E9E tE M |$~ +^_[ÐE8U0u2 EE8U0uǃ+tHHu EEE8 u+0t ExxtxXu U0pU0tGU0tGGɉE;9u.0u)E@U0tExxtxXu EE8EE U0twU0twwEE8U0t2U0tGU0tGGɉE;|} tE M}t^_[Ð+E뎐^_[Ð2V)ÐUSV55 u+^[Ã>tvu  t^[USV]u F8FuC{=u^[Ð;u~=t+^[ÐV|$3O|$ L$Oϋt$ +D$^Ð(ÐWVt$ |$;t1L$AIt)u*t!ItutItut Itu u3^_W+^_ø6(ÐV|$3O|$ ыt$ D$^W֋|$ 3ыt$ |$ȁD$_Ð'ÐUE%EE%EUEUÐUSWV]u } E?tEEGჽ~E܉EĀEEtEL0u UtkEH } ~ 0MEME0 ME0E9EwM}(tEL0t Uu E+E-U0tEeMME+EEEĀ:t @uEtE E VW} E E VW}_^tnE%=u;Eu}uElE%=Dž /EPEPE<~<PuuE%=ueEu8}u2E%=uEEE%=Dž /EPEPE<~<Puug }tE;E}?0t Dž //t Dž /tDž /EEEE~ ?t}| E0 EEGEu}~EE >E<~<9E~EE+E܉E-E}~ ?t}|E0 EEGEy΍t @u E }uEtE E VW} E E VW}_^E%=uOEu}u EE%=uDž /EEM EPEPE~PuuE%=EuH}uBE%=uEEU0H0 E%=uDž /EE M EEEEU0E<0E 0EPEPE~PuuUuEEu>W9~|0u}}|E9E}HE+EE= E E G>E E 8 u/t @uWljE8tMyꋅHӐK Xw.$N@ ?@M@M@,?@M@`M@M@M@M@M@H?@?@M@ ?@8?@M@?@?@?@?@?@?@?@?@?@?@M@M@M@M@M@M@M@M@M@M@M@xD@M@J@M@M@M@M@0@@M@M@M@M@M@M@M@M@M@M@M@B@M@M@M@M@M@M@M@M@M@M@hM@t@@xD@4H@J@$@@t@@M@M@@@M@<@@xB@B@M@M@M@M@A@M@M@B@}t^}tDž /EE7t Dž /tDž /EEE+ljEEEEE9E| EEEE t6u+EE E+EEEEE+EEPVjh/܋Ẻ;EvEPVh/{!h/u  Ẽ}tHEẺ;EvEPVu +u u Ẽ}tEẼ;EvEPVjujuu{ EEtEEPVjh/܋Ẻ;EvEPVh/W!h/u Ẽ~GẺ;EvEPVWWu EE܉EPVjh/܋Ẻ;EvEPVh/g!h/u EtCEẺ;EvEPVuuuuu EE9E+EEPVjh/܋Ẻ;Ev EPVh/{/h/u  EUjuuuu uÐUjuuuu uÐU SWV]E EEE uL9Et }u>EE~Sj0hB ƃBB^_[ÐE uEPu u8 iEE %-Ei@B-E}t }+ۍ{GE ~ ;~}+EEuEPuuEPEBVP E+ȉM)}}~EE}t؃}~$EPu E ME09uwEE~}?5|*09}uME1E}tu NO?9EME^_[ÐUSWVEEEMY%-E=uEPEp0 E?E#ƉE #E@# +E P+E @\2E@MAmȋE@ȋE@E@ȋE@ȋE@ȋEmȉME@MAȋEȋEȋEMAȋȋE؋E@ Eދ}EE E?E#EEE#ljE}#u#+E %@d3E@MAmȋE@ȋE@ȋEmE@ȋE@ȋE@ȋEmȉME@MAȋEȋEȋEMAȋȋE؋E@ EE?#u#}E!EEE $ÊMEM@#؃E$ƊM‰E?#ދ}} E^_[ÐMe؋EE?#]#u#}E@-$4؉EMAE@ȋEȋE؋E@ EE EӊML%?M‹M*UEu E]f%Etf=Du؋E54]ÐU SWV]} tC}t=C $<u{tC9Cu;uC DuSEE}t+^_[C <EE e9uw9u wًC9CwgC urYVuC P ;t K }++u ^_[ÐS@uE H+u +E^_[Ð}}CE+ ~ʋ+#ƋWuu );{C <+C }+;} S.+uC Dt'C uC+CPj sB t SQE^_[ÐS4 S9<w[ÐUSV] u^[ÐC t5C t+ SRC P }>C tsCC CC딐US] t E E4EM t C u)+[ÐC t{tC9CvSJC tC t [Ð뫐US] C $R C t[E[ÐUSWV]s{+sC Dt+C <+CC <+C }+;} S\ ~!WVC PU ;tK ^_[+^_[ÐUS]C $<tC u [ÐC $ C {u SJC9Cu9C Du3C <+CC <+C }+;} S+[ÐUSV]s C uG}& u 4G,CCC K4hBC tK ֐EVn t C uK @E>^[ÐUSV]C 4<+syC <C^[Ð93~3^[Ð3ÐU>EEPhTu }E>+ÐÐ6ÐUSWV]u Nú *Ȁ0 uԋ^_[ÐU SWVE}v+^_[Ã=?u6 ? ??  ?> ?>?>?}>Eu?>95?u?3tދ;w;T%;w95>B?6E}v?j>+ƃtBEe ƹ t=ƙ+ډUƋE$Nj >+ ?+Ee E;EE=vh>@}mu%@u+EP9U5?>0E+Eƃ>+ƃt>ȋ >?^ã>;s?> > 9?u >?C^_[ÐUS}t#]>%9>u?[USWV}uu e^_[Ð} uu+^_[ËuFt VF+Eu  t9]u ^_[ÐE EE9EsEEEPuSN ;sËE;rE+% ? 띐WL$|$D$ uH_3_WV|$ t$L$Njʁ^_W|$D$ L$~% ‹ʁD$_ÐT$t?Ru ?+D$ø9T$?3W|$3A_ÐÐ>ÐkT$ÐUu@uÐ+U=? uÐ?M ??+ÐUS=?u???Ky[ÐUjj9 tPj*?=?u jPwÐ0f@NL$0f@:L$0+L$0L$0 L$0Ã%3ÐÐBIOS execution error %d. READ_CONFIG_BYTE: bad call, reg=%x 0x%.8X device id: 0x%.8X vendor id: 0x%.8X status: 0x%.8X command: 0x%.8X class_revision: 0x%.8X bist: 0x%.8X header type: 0x%.8X latency timer: 0x%.8X cache line size: 0x%.8X base address[0x%.1X]: 0x%.8X expansion ROM base address: 0x%.8X max_lat: 0x%.8X min_gnt: 0x%.8X interrupt pin: 0x%.8X interrupt line: 0x%.8X %s - PCI BIOS v2.0 query program usage: %s [-d device_id] [-v vendor_id] [-c class] [-o v86opts] -d device_id print information for device_id -v vendor_id print information for vendor_id -c class print information for class -b print only the %d base address dword registers -p print only the PCI BIOS present registers -q print no output -B offset print the byte at byte offset in configuration space -W offset print the word at byte offset in configuration space -D offset print the dword at byte offset in configuration space -o v86_options options to be passed to v86bios code -d, -v, and -c can be used simultaneously, only matching configuration information will be displayed. device_id, vendor_id, and class are all numbers and can be specified in decimal, octal, or hexadecimal. %s with no options prints all configuration information for all PCI devices. %s returns 0 if at least one matching configuration section is found and 1 if none are found or an error occurs. pqbd:v:c:o:B:W:D:h%s: byte offset too large. %s: word offset too large. %s: dword offset too large. BIOS read initialization error. BIOS execution error %d PCI_BIOS_PRESENT test failed. Either this is not a PCI bus machine, or this PCI BIOS does not conform to PCI BIOS v2.0. Present status [AH]: 0x%.2X Hardware mechanism [AL]: 0x%.2X Interface level major version [BH]: 0x%.2X Interface level minor version [BL]: 0x%.2X Last PCI bus number [CL]: 0x%.2X BIOS execution error %d 0x%.2X 0x%.4X 0x%.8X /dev/memV86Initusing memfile '%s' VBiosMemLoad lowmemROM seg = %04x 1A10INT %s = %04x:%04x adprom magic=%04x size=%x VBiosMemLoad adpromVBiosChecksum badloading sysrom VBiosMemLoad sysrom,V86MemMaptick=%03d pc=%04x:%04x exception: viflag=0x%x Operand size override prefix found, code %x %x inb(%x) = %x inw(%x) = %x ind(%x) = %x outb(%x, %x) outw(%x, %x) outd(%x, %x) illegal op %02x at %04x:%04x %04x:%04x op = %02x illegal BIOS i/o to port %x write CMOS[%x] = %x read CMOS[%x] = %x Registers: AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x BP=%04x DS=%04x ES=%04x FL=%04x CS=%04x IP=%04x SS=%04x SP=%04x Stack: %04x:%04x %04x LC_CTYPEctypeLC_NUMERICnumericLC_TIMEtimeLC_COLLATEcollateLC_MESSAGESmessagesLC_MONETARYcurrency/etc/default/langLANG=english_us.ascii6@*@english_us.asciiL3@4@english_us.ascii1@02@english_us.ascii+@*@&english_us.ascii(,@`,@2;english_us.ascii,@1@Genglish_us.asciilibc: setlocale: : LANG environment variable syntax errorunable to open no line in syntax error in cannot open locale filecorrupt locale fileincomplete locale specification: unknown error CC_C.CLANGLANG=LANG=/usr/lib/lang//C_./      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~yn-$ +29AKT[dhlptx|%m/%d/%y%H:%M:%SAMPM%a %b %d %X %Z %YSundayMondayTuesdayWednesdayThursdayFridaySaturdaySunMonTueWedThuFriSatJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJanFebMarAprMayJunJulAugSepOctNovDec--: option requires an argument -- : illegal option -- Unknown error%s: %s %s Error 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo child processesNo more processesNot enough spacePermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesNot a typewriterText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument out of domainResult too largeNo message of desired typeIdentifier removedChannel number out of rangeLevel 2 not synchronizedLevel 3 haltedLevel 3 resetLink number out of rangeProtocol driver not attachedNo CSI structure availableLevel 2 haltedDeadlock situation detected/avoidedNo record locks availableError 47Error 48Error 49Bad exchange descriptorBad request descriptorMessage tables fullAnode table overflowBad request codeInvalid slotFile locking deadlockBad font file formatError 58Error 59Not a stream deviceNo data availableTimer expiredOut of stream resourcesMachine is not on the networkPackage not installedObject is remoteLink has been severedAdvertise errorSrmount errorCommunication error on sendProtocol errorError 72Error 73Multihop attemptedError 75Error 76Not a data messageFilename too longError 79Name not unique on networkFile descriptor in bad stateRemote address changedCan not access a needed shared libraryAccessing a corrupted shared library.lib section in a.out corruptedAttempting to link in more shared libraries than system limitCan not exec a shared library directlyError 88Function not implementedOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerError 109Socket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedHost is downNo route to hostProtocol not availableError 119Error 120Error 121Error 122Error 123Error 124Error 125Error 126Error 127Error 128Error 129Error 130Error 131Error 132Error 133Error 134Structure needs cleaningError 136Not a name fileNot availableIs a name fileremote i/o errorreserved for future useError 142Error 143Error 144Directory not emptyError 146Error 147Error 148Error 149too many symbolic links in pathUnknown Error`hr 1BT`v'6N[q&4Mj  0 E V c y ! !1!G!W!e!!!!!!!!!!!"-"D"k""""##7#M#g######$"$D$b$$$$$$%4%M%W%s%%%%%%&&+&5&?&I&S&]&g&q&{&&&&&&&&&&&& '','D'N'X'b'v'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''-+ 0x0X---+ ---+ --(null)-+ 000000000000000000000123456789ABCDEF0123456789abcdefnan0xNAN0XinfINF ((((( H   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~@:'i _;?U3R)E?98p)D5} [%/ -I /wb5,6)6d>n G79 85q&5 1Z$.H+jt'!]6$J !5w%^_KLza N } dP@fff&h&QG!+ A j<h"2S58C7{-_k2+/4 U# >D K) m5\W?YU }?^Fz !%ph]( ZJ(9H/9Y!,@LKLK<TK.,DO@(#) crt1.s 1.8 89/05/30 @(#) sys.i386 5.1 91/01/31 @(#) stdio.h 10.4 92/08/19 @(#) strictname.h 10.4 92/03/25 @(#) limits.h 10.3 92/07/24 @(#) errno.h 10.2 92/03/26 @(#) errno.h 25.2 92/09/09 @(#) crtn.s 1.5 88/11/14 @(#) sys.i386 5.1 91/01/31 .filegcrt1.s.text@T.data4.bss?.comment8.init@_istart@nullstr4.filegpciinfo.c.textX@.data<.data,.bss?$DGROUP<X@Usage|@$@.file/gv86bios.c.text @d.data,.data.bss? DGROUP,.texth@.data.bss@oks@errr@.file:geprint.c.textx@0.data.data.bss@DGROUP.filePgsetlocale.c.text@.data.data.bss@DGROUP @getDef#@complain@**@parse@5&@A#@L*@defre<#@defop"@expandl@.file[gcollate.c.text+@h.data.dataD.bssBDGROUP.filefgmessage.c.text(,@`.dataD.dataX.bssBDGROUPD.fileqgcurrency.c.text,@X\.dataX .datad.bssBDGROUPX.file|gtime_.c.text1@l6.datadW.data.bssBDGROUPd.filegnumeric.c.textL3@p.data.data.bssBDGROUP.fileglocaleconv.c.text4@.data0.data.bssBDGROUP.fileggetopt.c.text4@80.dataD.data4.bssBDGROUP.fileglc_ctype.c.text6@.data4.data4.bssBDGROUP4.filegopt_data.c.text|7@.data4.dataD.bssBDGROUP4.filegperror.c.text|7@l .dataD.data`.bssBDGROUPD.filegprintf.c.text7@T.data`.data`.bssBDGROUP`.filegfprintf.c.text<8@L.data`.data`.bssBDGROUP`.filegstrchr.s.text8@8.data`.bssB.commentB.filegstrcmp.s.text8@`.data`.bssB.commentB.filegerrlst.c.text 9@.data`H.data/.bssBDGROUP`.filegstrncpy.s.text 9@<.data/.bssB.commentB .filegstrtol.c.text\9@ .data/.data/.bssBDGROUP/.filegsysi86.s.text<;@.data/.bssB.commentB8.fileggetenv.c.textP;@p.data/.data/.bssBDGROUP/nvmatch;@.file(gstrncat.s.text;@8.data/.bssB.commentB .file2gread.s.text;@.data/.bssB.commentB8.file<gstrncmp.s.text <@P.data/.bssB.commentB .fileFgopen.s.text\<@.data/.bssB.commentB8.filePgstrcat.s.textp<@0.data/.bssB.commentB.fileZgstrcpy.s.text<@4.data/.bssB.commentB.filedglseek.s.text<@.data/.bssB.commentB8.fileqgdoprnt.c.text<@.data/.dataL0.bssBDGROUP/V<@_dowrite,=@.file{gctype.c.textS@.dataT0.bssB.commentBx.filegecvt.c.textS@ .data\2.data\2.bssBDGROUP\2cvtT@.filegdtop.c.textU@.data\2.data\2.bss CDGROUP\2.filegbiglitpow.s.textY@.data\2.bss C.comment C .textY@L.data4.bss C.comment Ccontwo4.filegfwrite.c.textZ@x .data4.data4.bss CDGROUP4.filegflsbuf.c.text[@(".data4.data4.bss CDGROUP4.filegclose.s.text_@.data4.bss C.comment C8.filegdata.c.text_@.data4 .bss C.comment C.filegisatty.c.text_@<.data>.data>.bss CDGROUP>.filegi386_data.s.text`@.data>.bss C.comment C .filegioctl.s.text`@.data>.bss C.comment C8.fileglct_num.c.text$`@.data>.data>.bss CDGROUP>.filegltostr.c.text$`@@.data>.data>.bss CDGROUP>.filegmalloc.c.textd`@X/.data>.data?.bss CDGROUP>.filegmall_data.s.textc@.data?.bss C.comment C .file#gmemchr.s.textc@.data?.bss C.comment C.file-gmemcpy.s.textc@$.data?.bss C.comment C.file7gmemset.s.textc@8.data?.bss C.comment C.fileBgsbrk.s.text4d@D.data?.bss C.comment C8nd?.fileLgstrlen.s.textxd@.data?.bss C.comment C.fileVgfpreal.s.textd@.data?.bss C.comment C .file`gwrite.s.textd@.data?.bss C.comment C8.filejgcerror.s.textd@ .data?.bss C.comment C.filetgcuexit.s.textd@$.data?.bss C.comment C8.filegatexit.c.textd@| .data?.data?.bss CDGROUP?excmnd@.filegabort.c.textPe@H.data?.data?.bss CDGROUP?.filegsignal.s.texte@t.data?.bss C.comment CX`f@.filegkill.s.text f@.data?.bss C.comment C8.fileggetpid.s.text$f@.data?.bss C.comment C8.text4f@.data?.bss C.comment8.init@_start@_mcountW@environ5k5u(@errno>main@exitd@reg Cprintf7@ @getopt4@,@@fprintf<8@strtol\9@_iob4vbopts|optarg@@V86Runp@sysi86<;@D@@perror|7@@$@V86Init@h@lseek<@`@Eprintx@close_@(@@read;@ @@open\<@strncmp <@nl_init*@strlenxd@strncpy 9@memsetc@'4@4L3@@+@L1@Z02@d,@q*@}`,@(,@_lc_time1@getenvP;@strcatp<@strchr8@strcmp8@writed@strncat;@6@strcpy<@memcpyc@DXmallocd`@freeb@d>4@opterr4optind8optopt<_ctypeT0_cuclcX1sys_nerr/'_doprnt=@_cerrord@_bufsync_@_xflsbuf]@fwriteZ@ecvtS@memchrc@fcvtS@<_fltused?__ctypeT0__cuclcX1frexpY@_dtopU@_ltostr$`@_bigpow\2_litpowd3_wrtchkX^@_sobuf,Cfclose[@_cleanup[@_flsbuf\@_sibuf4G_findbuf^@fflush4\@isatty_@_smbuf uy uu2uE܃\&Ef@,5uhjz *H.$HIEf@fEEPZ&Ef@,5uh j\ EPN#Ef@,5 h,j# E PW%M܉`E܋`5h1j Ef@,w Eǀ\jEPf%ffEȋEfx+EfMf9H5h6js EfMfHjEPf%fEEf@ f@9EfMf9H (5h;j Ef@, EfMfH Ef@ f@5h@j Eǀ\Ef@ EP;Vf%fEȋEfx+EfMf9H5hEjn EfMfHpEǀ\Ef@ f@ Ef@ Efx Ef@/ H: H-E܁`" #E@ PE@PE@P E}#Ef@,5hJj .}#Ef@,5hOj^ jE@PUjE@PUjXE@PUE@P_Uf%f=Ef@0 Ef@0EǀdE܃` EǀdE܁`"  EǀdE܋Mf fE܋ H4Ef@2EǀXPEPPj(EP=EfMfEfǀEǀj,EHPjEtPj$E8PE@ EԋE@EċE@ iEEEEEЋE P E},hTthghZuJ=h2h%E%EE%+E;EE%EE܋ME܋M܋E܋MME܋M܋E܋MMM,jhg%E@PjE}jhg%E@Pj\E}%5E@Puh&j/}%5E@Puh:j}%5E@PuhNjt}%5E@PuhbjE}%5E@Puhvjs}%5E@PuhjDE܃dEf@ fEf}NfmE PhPEPhPE܃x jhP;E Pj PEPj PE܃x  jjPEf@fEE܃dDEE}4fEfEPOMM܈ABEE܋MM܊IBHJf%MfAuh Jjh pJEfxE%Ph LJ?Eǀ\Ef@ EMTEEEEhEE E%Ph IE%Ph Iq^_[USWV]ip!EEEEM9hcEE}DEE}&E Ph Guh GEEuHM`EPh [GE`" EM DEM HEM L Euh F5h FEEP'G,ju.HEuh FEPGf%MfAEfx,juGEuh IqEE }$jjE0uu nEMjjkE-j?jE0u=Eu 7*E؋E@ EċE@E@@ EE@ E@jE@ PEBP EċMHE@E@u uuu|E䃼$jjE0u_u bGEDŽE@@jj6ES"E؋E@ EԋE@E@@ EE@uuuj?jE0uEu jj@E}-j?jE0uoEu iN\E؋E@ EȋE@@E@@ EE@E@E@  ƋMȉAEȋM䃼сHE@E@E@ E@$E@(E@,E@0E@4E@8E@<u vukuu]BjjE0u6)$ HH^_[USWVjjELE@ EE@E@@ EEM HEMHEMH uu^_[U(SWVE@E@pip!EE @ EE xE @@ EEE EfxE@; }KE8 E83EM H8E@ E pE @ E@ } Ex (E@ j(uEP| E@ (E @M II UJ HW }E@[ M+A4dE܃}EE@ uSq E@ E @M II HEMUEME+u܋ME+u܋MjxuEPi E@ xE @M II xHGE@U\EEfxE@EE H4jxEPj,EHPEǀEǀEǀEǀEǀE@ E xE pXE @uC@} Ex E@7juEBP E@ E @M II H} Ex E@juE

@;K8:@8A#;9;E @@ u uLE @@ E@ E xE p貽E @u u蚽^_[USWViEp!EE EE U+J4+ME U+J4+MAEM`UdUhHEMH EMHEMHEMH^_[USWVEG EE}PE@MM M E@MM M E@ƀ:^_[U SWVE ip!EEE8EEEEM94tEM 8_EMI8HMEMI8H;EMI8H)EMI8HEMI8HsEM94^_[USWVEiEp!EԋEǀ<Eԁ`"  u(jE@PjE@PEԃ\Eԃ\ Eԋ@@EpjE@P hjE@P Eԋ@@EpjE@Pͺ hjE@P豺 Eԋ@@EpjE@P茺 h@jE@Pp Eԋ@@EpjE@PK hjE@P/ Eԋ@@EpjE@P Eԋ@@EpjE@P Eԋ@@EpjE@P軹 Eԋ@@EpjE@P薹 Eԋ@(H,j E@P9f Pj E@P] Eԃx(,j E@Pf Pj E@P$ Eԃx(,j E@PǸf%Pj E@P Eԃ\Eԃ\Eԃl EǀlEԃl  Eǀl jE@Pf PjE@P蠸 EԋlPjRE@P Eԃx$1jE@Pf%PjE@P @Eԃ\0jE@P覷f%f PjE@PƷ Dž@@@;@Eԋ@MԊIB^@Eԋ@MԊIBxDžHHH%EHƀdEHƀDžHHEԋH94Dž@@@ @DŽPDž@@@H@@EԊ8EDž<<<E؊<$,Dž4 4444LPDžPE3,ADž444 441P4ƅ(Dž@@@"@P(((DDEԲ(dDEԲ(Eԋ,EEԃdEԋEEԋEDž@ @EE@ ;@Ju!8Ef8fEf:fHEf@Ef@EEԋEEԋEDž@ @EE@ ;@Cu莳8E䋍8Ef@Ef@Ef@ EDžHHEEE@;H jhE}0E5hX j Eǀ<E@ E@ Eu迲E苅HMԃ|HHMtH蓲HMԋUTHHMԋUTLEԃd5EfMfEfMfHEf@Ef@EfH#EMEf@Ef@EfHEfǀ"Efǀ$Efǀ&Efǀ(Efǀ EǀXEǀ8Eԃd=E\P菱8jE@P-Ef@0fH^hE@PjE@PE@P} PE@PjE@PjE@P:PE@P{jE@Pf8PE@PKjE@P6jE@P!YEtPR8jE@Pxf0f0f00PjE@P胰 jE@P hE@P jE@P~ E@P % PE@PM jE@P8 :PE@P jE@P 8PE@P jE@P jE@P Eԃx8jE@P)Ph] ڮj E@PPht 跮Ep$h 褮EPh 莮Ehh xEǀ<}$5h jL '"hE@P ^_[U$SWV]Eip!EE@P7 f%3f=3Ex8h5h j読EE샸<EP7Ex8h jajJE@P u AVEǀ8Ef$"Ef&Ef(@Ef$Ef&Ef(Eǀ8u 诬EE샸dE"MEEf@PEpEEf$Eǀ8Eǀ<u6K Efǀ$E"MEEf@PEpEEf$Eǀ8Eǀ<u譫 Efǀ$E"iM,EEf"EMfI f9" Efǀ"u>E샸dEf@ EEf@ EdEf@ EhEf@@Ef@@ E\Ef@E`EEf@EEf& Efǀ&Ef@Ef(E Efǀ(Ef@ EXEf@ EEf@ EdEf@ EhEf@@Ef@ @ E\Ef@ E`EEf@ EEf& Efǀ&Ef@ Ef(E Efǀ(Ef@  EXE E} ~E @M +A EE܁}7E+EPuE p E+EEE(uuE p 蓨 EEE @E xutE)EE샸dEfMffHEfHEfMffHEfHjHE@PEM$EEEǀ8^_[USWV]Eip!EEdE\P藧EEtP~EEE} E`" FEPEL Euh EDh EHEEPEE%PEP?ju2Euh ETEE Ph h EE Ph E%Ph uh jh E%Ph jE@PjE@PEM#E@PEjE@PJEPE@P2jE@PEPE@PjE@PjE@PE`" :EPEL Euh EDh EHEEPEE PEPjuEuh SE Ph h TEE Ph E Ph uh qjh bE%Ph LEM#E@P }hE@P:^_[USWV}uN3AE9u1%EuE^_[USWV}E Pu3ۢEӢE PuƢEu踢E^_[USWV}u臢3zEruj%EuWE^_[USWV}u u#1Eu uEuE^_[USWV}uġ.跡E诡u觡Eu虡E^_[USWV}u ue1XEPu uEEu7E^_[Ð1: PCI search specified, PCI bus not found!2: PCI search specified, PCI device not found!5: Open OK!6: Can't allocate memory for the board during interrupt! Please check your Streams parameters.7: Can't allocate memory for the board during reset! Please check your Streams parameters.8: PNP search specified, device not found!9: VESA search specified, device not found!10: ISA search specified, device not found!11: device not found!12: device failed checksum test!13: add_intr_handler failed! Interrupts already enabled.14: Can't locate hardware15: No more devices to open! 16: H/W reset failure in open()Device Fault..... RESET INITIATED! hw_reset.t_out !19: IRQ found for PCNET hardware doesn't match space.c!20: add_intr_handler failed! Unknown interrupt type.21: add_intr_handler failed! Out of range interrupt number22: add_intr_handler failed! Out of range IPL23: add_intr_handler failed! Vector already occupied24: add_intr_handler failed! Vector already shared at different IPL25: DMA found for PCNET hardware doesn't match space.c!26: DMA number is not necessary for PCI device 27: DMA number is not necessary for VESA device 28: DMA number is already in use by another PCNET device 29: IRQ number is already in use by another PCNET device 30: device with specified IOBASE is already in use 31: IO address is not necessary for PCI device pnt@(#)SCO LLI-STREAMS DRIVER FOR PCNET Family v3.0 ,[g!Lx.LlIw(Y6g`#M!@|"a#@PlPlPlPl pnt%d %s %s %s %s %s pnt%d %s pnt%d %s %s %s %s %s %s %s %s %s pnt: System has not enough physically contiguous memory in kernel space for the driver! Please add memory or try to reboot. pnt: System has allocated memory in kernel space for the driver above 16 M! pnt%d: IRQ=%d, %s pnt%d: IRQ=%d, %s pnt%d: IRQ=%d, %s pnt%d: IRQ=%d, %s pnt%d: IRQ=%d, %s pnt%d: IRQ=%d, %s unit %d Ethernet %s v3.0pntEISA%s %s %s %s %s %s %s %d %s %d %s %s maj= %d, dev= %d Reset, can't interrupt! %s %s Transmit, can't reset! 0123456789ABCDEF%s ISACSR2 contains %x ISACSR9 (FDUP) contains %x TP is %x PCI mech. access type %x PCI last bus number %x %s %s %x Reset, can't reenter! @(#) types.h 23.14 91/11/23 @(#) param.h 25.2 92/08/03 @(#) s5param.h 23.4 91/03/16 @(#) sysmacros.h 25.2 92/10/26 @(#) stream.h 23.6 91/10/28 @(#) stropts.h 23.1 91/03/03 @(#) dir.h 23.1 91/03/03 @(#) s5dir.h 23.1 91/03/03 @(#) signal.h 23.15 91/12/05 @(#) page.h 23.1 91/03/03 @(#) user.h 25.1 92/04/15 @(#) errno.h 25.2 92/09/09 @(#) cmn_err.h 25.1 92/06/23 @(#) conf.h 23.6 91/05/21 @(#) immu.h 23.8 91/10/30 @(#)head.sys:dlpi.h 1.1.1.1**cX*hc****H '+,9qy4S4 -,184MQot{4L4S-QL%4DHLPTX\v44Z4I}44 %,4RZ4F`ejq44***c|W'MMM M Mk F       #    k "z  "    4   4 $ + 4C S Z 4r   4   4  , D S l  Zw # # Z##_b/cO1]r> &888%8f 4cCZ!g\4!IJ# +M!\!\ !!1!L!Y\r!!!\!\!!'!Yaio!!  N^w\-cE!M_s\!$\\! !#5 ZY445 rw~4ZDZty4  #D<DZZCZ`ZZZZc3=Qfw 4<'@=j'4<*c 5! R3 8 ? 4H <| * a B 5 !B.!3!8! q! y!5!U!B!"*"*"2"["U"U #P#)#w#K#G#^#?#0# #K$A2$$$$ % % 0%D~%e% %%4%c3&*&A&&&4'#($))')'*'K*'b*++7l,c,,,4,R,-4-*n- -P-P-;1.I..P.51Q17x11B1A11B"2@-2BL2Gc272C22'2C2h3Cs33A3C335$4L4W4Be4P4C44A455B 5P95CM5^5A5C55566B6P6C7A[7P7 &888V89 :5:V+:M>:M::B:V;;<5==R=*=>B+?5?R?*??B!@54@Mf@@R@*@B@5wARA*ABAAAAAAAAAAAAAABBPJBbBPB BXBXTCCCCCCC D DE*%E*jE.E.E.E.E.F.-F.IF.sF.F.F.F.GG.:GTG.sGG.GDHO4HOSHmH.HH.JK#nL#LAM MM4=M#iMdmN#N*N*N*NcN* O*O*:O*OO*jO*O*O*O#OO. P*"P*7P*JPchP*}P*P*P*P*P*P*QQ"Q 4Q@QEQ SQXQ iQnQ QQ QQQ4Q* R RcFRKRRR4zRRRR4R*R;SMS5SBOTBTB;WiWWW*DX eX#~X#XXY\4Y!AY!IY[YY!Y\Y!Y!Y!Y!Y!Z*Z*?ZckZ*Z*Z*Z*Z*Z* [6[Y[\t[![![[[![\[![!\!\!'\!I\c{\*\8\ \9\8\B]$!] )]96]$D]Bu]E] ]9]E]B]/] ]9]/^B8^:E^ M^9U^:c^B^%^ ^9^%^B DT]X\dl+p6.filegpnt.c.text^.data -.data.bssDGROUP!printf .Cpci_stop'X8kstrncmppntopenfreemsgbcrin>dupmsgpntcloseM!bcopypnt3infoxdevmapJsBZpntinfoWW_checkpnt_outb\spl7pnt_outdw^pnt_intrg%koutboutdmapphysvpntinitpci_funcpnt_outw]pntwput|"rbcrout|outwtimeoutcdevcnt#-pnt1infocmn_errsplttypntwsrva#putqinbflushtlbindmsgdsizeucdevswqenablelinkballocbsplx6csrininwmemgetpnthwputQ getqscan_isabzeropci_devcsroutqreplyhw_RESETDscan_pciPpnt2infoflushqlboltlboltlboltpci_buspnt_inb\g7pnt_ind^pntrsrv#putbqpntrstrEC[delayprintcfgpnt_inwX]freeb$pnt_qidpoolpnt_DeviceArraycheck_installpntchktblpnt_TotalDevCountpntdumpdodstatsadd_intr_handlersvirtophyspnt_MaxStreamsgetCPQanchBasescan_plugpnt_w_llinxdevmapsdlp_errorpnt_ConfigArrayscan_pci_1scan_pci_2scan_localpnt_ioctlcheck_conflictS_int_to_boardusr/lib/netconfig 755 0 1 0 6225022310 7252 5usr/lib/netconfig/info 755 0 1 0 6225022306 10212 5usr/lib/netconfig/info/pnt0 644 0 1 125 5660174135 11065 NAME="pnt0" DESCRIPTION="AMD PCNET Family Ethernet Driver, board 0" UP="lli" DOWN="" usr/lib/netconfig/init 755 0 1 0 6225022306 10222 5usr/lib/netconfig/init/pnt0 644 0 1 51127 5660174136 11146 : # Copyright (C) 1992 Advanced Micro Devices. # # (C) 1989-1990 The Santa Cruz Operation, Inc. All Rights # Reserved. The user has unlimited right to use, modify # and incorporate this code into other products provided # it is used with SCO products and the user includes # this notice and the associated copyright notices with # any such application. # Script for installing PCNET Family driver # # LIB=/usr/lib/lli CONF=/etc/conf PATH=/bin:/usr/bin:/etc/:$CONF/bin:$LIB # # Set possible return codes for this script # OK=0; FAIL=1; RELINK=2; BRAM="0" ERAM="0" # # Prompt the user for a hex value, it must be within a given range # Usage: # prompt_range "Message" default min max [step] # prompt_range() { mesg=$1 default=$2 range_min=$3 range_max=$4 step="1" if [ $# -eq 5 ] then step=$5 fi while : do echo "${mesg} (${range_min}..${range_max}) [${default}] or 'q' to quit: \c" read result case $result in Q|q) return $FAIL ;; "") result=$default ;; esac hc $result $range_min $range_max $step case $? in 0) return $OK;; 1) cleanup $FAIL;; 2) cleanup $FAIL;; esac done } # print a prompt # p() { set -f /bin/echo $* set +f return $? } # # Prompt the user to make a selection a list of values # Usage: # prompt_select "Message" default "value_list" prompt_select() { mesg=$1 default=$2 values=$3 while : do if [ "$default" = "" ] then echo "${mesg} (${values}) or 'q' to quit: \c" else echo "${mesg} (${values}) [${default}] or 'q' to quit: \c" fi read result case $result in Q|q) return $FAIL ;; "") result=$default ;; esac for i in $values do if [ "$i" = "$result" ] then return $OK fi done echo "Illegal value, must be one of (${values})" done } # # prompt the user to answer a yes no question or 'q' to quit # Usage: # prompt_yn "Message" default prompt_yn() { mesg=$1 default=$2 while : do echo "${mesg} (y/n) [${default}] or 'q' to quit: \c" read result case $result in q|Q) return $FAIL;; y|Y) result="Y"; return $OK;; n|N) result="N"; return $OK;; "") result=`echo $default | tr "yn" "YN"`; return $OK;; esac echo "Illegal value, please type 'y' 'n' or 'q'" done } # # Fake up an mdevice and an sdevice for idcheck # makedevs() { dir=`pwd` rm -fr /tmp/dev$$ mkdir /tmp/dev$$ cd /etc/conf/cf.d cp mdevice /tmp/dev$$ cd ../sdevice.d cat * > /tmp/dev$$/sdevice cd $dir } cleanup() { cd / rm -fr /tmp/dev$$ rm -fr /tmp/$base exit $1 } # Removes the given interrupt vector for the $clash device. rmvector() { clash=$1 vec=$2 cd $confdir echo "\nRemoving interrupt vector $vec for the $clash device ..." [ "$vec" = "2" ] && vec=9 major=`./configure -j $clash` && { # remove device but leave it required if [ "$major" != "0" ] then ./configure -d -c -m $major -v $vec -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } else sed -e "s/Y/N/" ../sdevice.d/$clash > /tmp/bog$$ mv /tmp/bog$$ ../sdevice.d/$clash fi # remove required setting if no more left if grep "Y" ../sdevice.d/$clash > /dev/null 2>&1 then true elif [ "$major" != "0" ] then ./configure -d -c -m $major -v $vec -R -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } fi } cd $currdir return $OK } # On unix, we must check the files in sdevice.d. # Sets the variable $clash to the driver code name if there is a driver that # has already been allocated the given vector. Uses awk. dointclash() { driver=$1 vec=$2 [ "$vec" = "2" ] && vec=9 cd $confdir/../sdevice.d clash=`cat * | awk '{ if ( $6 == intr && $2 == "Y" ) exit } \ END { print $1 }' intr=$vec` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } checkvec() { driver=$1 vector=$2 clash= currdir=`pwd` while dointclash $driver $vector do prompt_select "Interrupt vector $vector is already in use for the $clash device.\n\n\ The alternatives available to you are:\n\n\ \t1. Continue the installation and remove vector $vector for the $clash device.\n\ \t2. Select a different interrupt vector.\n\n\ Select an option" 1 "1 2" || { cleanup $FAIL } case $result in 1) rmvector $clash $vector || { echo "Failed to remove vector $vector" cleanup $FAIL } makedevs return $OK ;; 2) return $FAIL ;; esac done return $OK } doaddrclash() { driver=$1 addr1=$2 addr2=$3 cd $confdir clash=`../bin/idcheck -ar -l $addr1 -u $addr2 -i /tmp/dev$$` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } # Removes the $clash device. rmaddr() { clash=$1 cd $confdir echo "\nRemoving the $clash device ..." major=`./configure -j $clash` && { # remove device but leave it required if [ "$major" != "0" ] then ./configure -d -c -m $major -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } else sed -e "s/Y/N/" ../sdevice.d/$clash > /tmp/bog$$ mv /tmp/bog$$ ../sdevice.d/$clash fi # remove required setting if no more left if grep "Y" ../sdevice.d/$clash > /dev/null 2>&1 then true elif [ "$major" != "0" ] then ./configure -d -c -m $major -R -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } fi } cd $currdir return $OK } checkaddr() { driver=$1 addr1=$2 addr2=$3 clash= currdir=`pwd` while doaddrclash $driver $addr1 $addr2 do if [ "$clash" = "ad" ] then echo "\n\nWARNING: Do not remove the $clash device \c" echo "if you are using an Adaptec disk controller" fi prompt_select "Addresses $addr1-$addr2 are already in use by the $clash device.\n\n\ The alternatives available to you are:\n\n\ \t1. Continue the installation and remove the $clash device.\n\ \t2. Select a different address.\n\n\ Select an option" 1 "1 2" || { cleanup $FAIL } case $result in 1) rmaddr $clash || { echo "Failed to remove $clash device" cleanup $FAIL } makedevs return $OK ;; 2) return $FAIL ;; esac done return $OK } doramclash() { driver=$1 addr1=$2 addr2=$3 cd $confdir clash=`../bin/idcheck -cr -l $addr1 -u $addr2 -i /tmp/dev$$` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } checkram() { driver=$1 addr1=$2 addr2=$3 clash= currdir=`pwd` while doramclash $driver $addr1 $addr2 do prompt_yn " Ram addresses $addr1-$addr2 is already in use for the $clash device. You must choose a unique address for this device to work. Do you wish to choose another address now?" y || cleanup $FAIL if [ "$result" = "Y" ] then return $FAIL else cleanup $FAIL fi done return $OK } # On unix, we must check the lines in mdevice file. # Sets the variable $clash to the driver code name if there is a driver that # has already been allocated the given channel. Uses awk. dodmaclash() { driver=$1 chan=$2 clash= # -1 is never a clash [ "$chan" = "-1" ] && return $FAIL cd $confdir clash=`awk '{ if ( $9 == dma ) print $1 }' dma=$chan mdevice` [ "$clash" = "" ] && { cd $currdir return $FAIL } cat ../sdevice.d/$clash | awk '{ if ( $2 == "Y" ) exit 1 }' || return $OK if [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] then prompt_yn " DMA channel ${chan} is already in use by the $clash device. However, the $clash device is not currently configured into the kernel. Do you wish to remove DMA channel ${chan} from the $clash device?" y || cleanup $FAIL if [ "$result" = "Y" ] then sed -e "/^$clash .*[0-9]$/{" \ -e 's/[0-9]$/-1/p' \ -e '}' mdevice > /tmp/bog$$ mv /tmp/bog$$ mdevice cd $currdir return $FAIL else cd $currdir return $OK fi fi # Should be release >3.2.2, clash driver not installed if we get here. cd $currdir return $FAIL } # # Check if there is a clash of DMA channels # checkdma() { driver=$1 channel=$2 clash= currdir=`pwd` while dodmaclash $driver $channel do prompt_yn " DMA channel ${channel} is already in use by the $clash device. You must choose a unique channel for this device to work. Do you wish to choose another channel now?" y || cleanup $FAIL if [ "$result" = "Y" ] then return $FAIL else cleanup $FAIL fi done return $OK } check_args() { name=$1 bd=$2 case $name in pnt) echo "Configuring PCNET Family board $bd"; PREFIX="pnt"; MAX_BD=3; ;; *) echo "ERROR: Unknown LLI driver being configured ($name$bd)"; cleanup $FAIL; ;; esac if [ $bd -gt $MAX_BD ] then echo "ERROR: Only boards 0..$MAX_BD are supported by this driver"; cleanup $FAIL fi echo } # # function to produce the info for the System file for the AMD # boards # system_pnt() { bd=$1 IRQ=0; DMA=-1; BIO=0; EIO=0; mech=0; lastbus=256; /usr/lib/lli/pciinfo -p > /tmp/pci.log 2>&1 status=`awk '{ if($3~/AH/) print $4}' /tmp/pci.log` if [ "$status" = "0x00" ] then mech=`awk '{ if($3~/AL/) print $4}' /tmp/pci.log` ed -s /etc/conf/pack.d/pnt0/space.c << TOAST > /dev/null /ACCESS_TYPE_$bd/ d i #define ACCESS_TYPE_$bd $mech . w q TOAST lastbus=`awk '{ if($5~/CL/) print $6}' /tmp/pci.log` ed -s /etc/conf/pack.d/pnt0/space.c << TOAST > /dev/null /LAST_BUS_$bd/ d i #define LAST_BUS_$bd $lastbus . w q TOAST fi prompt_yn "Detect PCNET hardware automatically?" y || cleanup $FAIL if [ "$result" = "Y" ] then DMACHAN=-1 BIO=0 IRQ=0 else prompt_yn " Do you wish to specify I/O Base Address?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_range "Enter I/O base address" $BIO "0" "3e0" "20" || cleanup $FAIL bio=$result EIO=`ha $bio 1f` checkaddr $name$bd $bio $EIO && break done BIO=$bio else BIO=0 fi prompt_yn " Do you wish to specify IRQ?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_select "Enter IRQ" $IRQ "0 3 4 5 9 10 11 12 15" || cleanup $FAIL irq=$result checkvec $name$bd $irq && break done IRQ=$irq else IRQ=0 fi prompt_yn " Do you wish to specify DMA Channel?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_select "Enter DMA channel ( 0 if NONE ) " $DMA "0 3 5 6 7" || cleanup $FAIL dma=$result checkdma $name$bd $dma && break done DMACHAN=$dma else DMACHAN=-1 fi fi NMINORS="1" } # # function to remove address conflicts in the sio driver # sio_conflict() { currdir=`pwd` cd /etc/conf/pack.d/sio if [ "$type" = "386GT" -a "$base" = "tok0" ] then # get rid of sio access to 0x2f0 (Global Interrupt enable) on AT grep "ibm COM3" space.c > /dev/null && { echo "Removing ibm COM3 from link kit..." [ ! -f space.c.rls ] && cp space.c space.c.rls sed -e /"ibm COM3/s/^{/\/* LLI {/p" space.c > /tmp/bog$$ mv /tmp/bog$$ space.c > /dev/null 2>&1 } fi grep "(sd)0x$BIO" space.c > /dev/null && { echo "Removing serial cards using base address 0x$BIO from link kit..." [ ! -f space.c.rls ] && cp space.c space.c.rls sed -e /"(sd)0x$BIO,/s/^{/\/* LLI {/p" space.c > /tmp/bog$$ mv /tmp/bog$$ space.c > /dev/null 2>&1 } cd $currdir } # # determine release, and AT or MCA bus - set rel and type variables accordingly. # os_type() { rel=`sed -n 's/^#rel=\(.*\).$/\1/p' /etc/perms/rts` if [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] then type=`sed -n 's/^#typ=\(.*\)$/\1/p' /etc/perms/inst` else # 3.2.4 - one release supports AT, MCA, and EISA. uname -X | grep "BusType = MCA" >/dev/null 2>&1 if [ $? -eq 0 ] then type=386MC else type=386GT fi fi } create_scripts() { if [ $bd -ne $MAX_BD ] then currdir=`pwd` netconfigdir=/usr/lib/netconfig cd $netconfigdir/info newboard=`expr $bd + 1` newfile=${drv}${newboard} cp ${drv}0 $newfile sed -e '/^NAME=.*'"[^0]"'/s/0\"/'$newboard'\"/p' $newfile > /tmp/bog$$ sed -e '/^DESCRIPTION=.*'"[^0]"'/s/0\"/'$newboard'\"/p' /tmp/bog$$ > $newfile rm -r /tmp/bog$$ chown bin $newfile chgrp bin $newfile chmod 750 $newfile cd $netconfigdir/init ln $base ${drv}`expr $bd + 1` > /dev/null 2>&1 cd $netconfigdir/remove ln $base ${drv}`expr $bd + 1` > /dev/null 2>&1 cd $currdir fi } # main() # # # get the name of the init script being run, since one script # is used for multiple drivers; get the number at the end of the # script's name # if [ $# -gt 1 ] then name_below=$1; if_below=$2 name_above=$3; if_above=$4 configure=$5 fi base=`basename $0` drv=`echo $base | sed -e 's/[0-9]*$//` bd=`expr $base : '.*\(.\)'` chains=/usr/lib/lli/chains chain=$base:$name_above confdir=/etc/conf/cf.d makedevs check_args $drv $bd # # Check and manage our internal chains file. # This file allows coexistent mkdev and netconfig calls. # # chain already installed grep $chain $chains > /dev/null 2>& 1 && { echo $chain >> $chains cleanup $OK } # this board already installed grep $base: $chains > /dev/null 2>& 1 && { echo $base already configured. echo $chain >> $chains [ "$drv" = "tok" -a "$name_above" = "nbe" ] && { space_token } echo "NODE=/etc/conf/node.d/$base" >/tmp/$base.src chmod 777 /tmp/$base.src cleanup $OK } # # Now check that if we are not board zero that board zero is installed # [ "$bd" -ne "0" ] && { grep ${drv}0 $chains > /dev/null 2>& 1 || { echo "${drv}0 not configured, you must configure it first" cleanup $FAIL } } # # check to see if the driver is already in the kernel link-kit so we can # either add it or update it later on # idcheck -p $base -i /tmp/dev$$ if [ $? -gt 16 ] then installed="TRUE" else installed="FALSE" fi if [ "$bd" = "0" ] then echo "Installing the $drv driver into the link kit" cd /usr/lib/lli/$drv if [ "$installed" = "TRUE" ] then idinstall -u -e -k $base else idinstall -a -e -k $base fi makedevs else idcheck -p ${drv}0 -i /tmp/dev$$ if [ $? -le 16 ] then echo "${drv}0 must be configured before attempting to configure $drv" cleanup 1 fi fi # # create the temporary directory for installing the driver # cd /tmp; rm -rf $base mkdir $base; cd $base DMACHAN="-1" # # set rel, type variables. # os_type # # Do special board dependent processing # system_$drv $bd echo if [ "$IRQ" = "2" ] then IRQ=9 fi echo "$base\tY\t$NMINORS\t5\t0\t$IRQ\t$BIO\t$EIO\t$BRAM\t$ERAM" >./System # # All the drivers support more than one board. In fact all the code to # support all the boards is in the Driver.o for the board for the 1st board # (eg the e3A0 driver acually contains enough code for the e3A1, e3A2 & e3A3 # boards). As we need a Driver.o to be associated with 2nd, 3rd or 4th board # we install a dummy Driver.o, and a Master and Node which will actually cause # calls into the base driver. # if [ $bd -gt 0 ] then echo "$base - iScH $PREFIX$bd 0 0 1 256 $DMACHAN" >./Master echo "clone $base c $base" >./Node if [ "$installed" = "TRUE" ] then idinstall -u -m -s -n -e -k $base else cp $LIB/Driver.o . idinstall -a -e -k $base fi else echo "$base I iScH $PREFIX 0 0 1 256 $DMACHAN" >./Master idinstall -u -m -s -e -k $base fi # we successfully installed this driver, add it to the chains file echo $chain >> $chains # create next set of info, init, and remove files create_scripts # delete any potential BASE I/O address conflicts with the sio driver [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] && sio_conflict echo "NODE=/etc/conf/node.d/$base" >/tmp/$base.src chmod 777 /tmp/$base.src cleanup $RELINK usr/lib/netconfig/remove 755 0 1 0 6225022307 10555 5usr/lib/netconfig/remove/pnt0 644 0 1 17571 5660174137 11506 : # (C) 1992 Advanced Micro Devices # # (C) 1989-1990 The Santa Cruz Operation, Inc. All Rights # Reserved. The user has unlimited right to use, modify # and incorporate this code into other products provided # it is used with SCO products and the user includes # this notice and the associated copyright notices with # any such application. # This is a script for removing PCNET family driver using netconfig. # LIB=/usr/lib/lli CONF=/etc/conf PATH=/bin:/usr/bin:/etc/:$CONF/bin:$LIB # # Set possible return codes for this script # OK=0; FAIL=1; RELINK=2; DRIVERINUSE=3; # # prompt the user to answer a yes no question or 'q' to quit # Usage: # prompt_yn "Message" default prompt_yn() { mesg=$1 default=$2 while : do echo "${mesg} (y/n) [${default}] : \c" read result case $result in y|Y) result="Y"; return $OK;; n|N) result="N"; return $OK;; "") result=`echo $default | tr "yn" "YN"`; return $OK;; esac echo "Illegal value, please type 'y' 'n' or 'q'" done } # # Fake up an mdevice and an sdevice for idcheck # makedevs() { rm -fr /tmp/dev$$ mkdir /tmp/dev$$ cd /etc/conf/cf.d cp mdevice /tmp/dev$$ cd ../sdevice.d cat * > /tmp/dev$$/sdevice } # cleanup removes stuff and exits - if $1 = $DRIVERINUSE, exits value is $2 cleanup() { tmp=$1 if [ $tmp -ne $DRIVERINUSE ] then # disallow configuring greater than board zero netconfigdir=/usr/lib/netconfig nextbd=`expr $bd + 1` rm ${netconfigdir}/info/${drv}${nextbd} > /dev/null 2>&1 rm ${netconfigdir}/init/${drv}${nextbd} > /dev/null 2>&1 rm ${netconfigdir}/remove/${drv}${nextbd} > /dev/null 2>&1 else tmp=$2 fi cd / rm -fr /tmp/dev$$ rm -fr /tmp/$base exit $tmp } system_e3A() { # decrement the 2k block buffers for cleanliness awk '/^NBLK2048/ { OLD=$2-8 printf "%s\t%s\n",$1,OLD next } { print } ' < /etc/conf/cf.d/stune > /tmp/bog$$ mv /tmp/bog$$ /etc/conf/cf.d/stune } # # function to remove address conflicts in the sio driver # sio_conflict() { currdir=`pwd` cd /etc/conf/pack.d/sio if [ "$BIO" != "0" ] then grep "/* LLI {.*$BIO" space.c > /dev/null && { echo "Restoring serial cards using base address 0x$BIO into link kit..." sed -e /"LLI.*$BIO,/s/^\/\* LLI //" space.c >/tmp/bog$$ if [ "$base" = "tok0" ] then sed -e /"ibm COM3/s/^\/\* LLI //" /tmp/bog$$ >/tmp/foo$$ mv /tmp/foo$$ /tmp/bog$$ fi mv /tmp/bog$$ space.c } fi cd $currdir } # # function to produce the information for the System file for the token ring # # if tcp is installed we remove the board from /etc/tcp and /etc/strcf # cleantcp() { driver=$1 [ -f /etc/tcp ] && { sed "/$driver/d" /etc/tcp > /tmp/bog$$ cp /tmp/bog$$ /etc/tcp } [ -f /etc/strcf ] && { sed "/$driver/d" /etc/strcf > /tmp/bog$$ cp /tmp/bog$$ /etc/strcf } rm -f /tmp/bog$$ } # restorevector check for sio (vecs 3-4) and pa drivers (vec 7) # if these are being released by lli then let us restore them to sio or pa restorevector() { currdir=`pwd` cd /etc/conf/cf.d intvector=$1 test="0" [ "$intvector" = "3" ] && test="1" [ "$intvector" = "4" ] && test="1" if [ "$test" = "1" ] then prompt_yn "Restore vector $intvector to sio driver" y [ "$result" = "Y" ] && { echo "Restoring vector $intvector to sio driver" siomajor=`./configure -j sio` ./configure -m $siomajor -c -v $intvector -a -Y return $OK } fi test="0" [ "$intvector" = "7" ] && test="1" if [ "$test" = "1" ] then prompt_yn "Restore vector $intvector to pa driver" y [ "$result" = "Y" ] && { echo "Restoring vector $intvector to pa driver" pamajor=`./configure -j pa` ./configure -m $pamajor -c -v $intvector -a -Y return $OK } fi return $OK } # main() # # # get the name of the init script being run, since one script # is used for multiple drivers; get the number at the end of the # script's name # if [ $# -gt 1 ] then name_below=$1; if_below=$2 name_above=$3; if_above=$4 fi base=`basename $0` drv=`echo $base | sed -e 's/[0-9]*$//` bd=`expr $base : '.*\(.\)'` case $drv in pnt) PREFIX="pnt";; *) echo "ERROR: Unknown LLI driver being configured ($name$bd)"; cleanup $FAIL; ;; esac echo "NODE=/etc/conf/node.d/$base" >/tmp/$base.src chmod 777 /tmp/$base.src # # check to see if the driver is already in the kernel link-kit so we can # either add it or update it later on # makedevs idcheck -p $base if [ $? -gt 16 ] then installed="TRUE" else installed="FALSE" fi if [ "$installed" = "FALSE" ] then cleanup $OK fi # # Check and Manage our internal chains file. # # if our board (base) is not in the chain then we always remove the board # if our board is in the chain then we check for the chain and remove it. # if after our chain is removed from the chains file the board is still there # then we do not remove it. # chains=/usr/lib/lli/chains chain=$base:$name_above if grep $base: $chains > /dev/null 2>& 1 then grep $chain $chains > /dev/null 2>& 1 || { cleanup $OK } # remove our chain awk '{ if ($1 == CHAIN && found != 1) { found = 1 next } print $0 }' CHAIN=$chain < $chains > /tmp/bog$$ cp /tmp/bog$$ $chains rm -f /tmp/bog$$ # Check if it is there in another chain grep $base: $chains > /dev/null 2>& 1 && { cleanup $DRIVERINUSE $OK } else cleanup $OK fi echo "Removing $base..." # Check if we are board zero that no other boards of this type are configured [ "$bd" -eq "0" ] && { grep ${drv}[1-3] $chains > /dev/null 2>& 1 && { echo "Warning, You are removing board 0 before other boards" echo "You must remove the other $drv boards next" echo "or your link-kit will be left in an invalid state" } } # # Do board dependent processing # case $drv in e3A) system_e3A $bd;; esac #if [ $bd -gt 0 ] #then # idinstall -d -e $base # cleanup $RELINK #fi # get the interrupt vector for the board that we are removing cd /etc/conf/sdevice.d ivec=`awk '{ if ( $1 != "*" ) print $6 }' < $base` BIO=`awk '{ if ( $1 != "*" ) print $7 }' < $base` cd /tmp; rm -rf $base mkdir $base; cd $base echo "${base}\tN\t1\t5\t1\t9\t0\t0\t0\t0" >System if [ $bd -gt 0 ] then echo "$base - iScH $PREFIX$bd 0 0 1 256 -1" >./Master else cp $LIB/${drv}/Master ./Master fi idinstall -u -e -s -m $base # restore sio space.c file sio_conflict cleantcp $base restorevector $ivec # Check to see if driver for next board is configured grep ${drv}`expr ${bd} + 1`: $chains > /dev/null 2>& 1 && { cleanup $DRIVERINUSE $RELINK } cleanup $RELINK usr/lib/netconfig/reconf 755 0 1 0 6225022310 10526 5usr/lib/netconfig/reconf/pnt0 644 0 1 44645 5660174137 11467 # Copyright (C) 1993 Advanced Micro Devices # # (C) 1989-1990 The Santa Cruz Operation, Inc. All Rights # Reserved. The user has unlimited right to use, modify # and incorporate this code into other products provided # it is used with SCO products and the user includes # this notice and the associated copyright notices with # any such application. # # Script for installing PCNET Family driver # # LIB=/usr/lib/lli CONF=/etc/conf PATH=/bin:/usr/bin:/etc/:$CONF/bin:$LIB # # Set possible return codes for this script # OK=0; FAIL=1; RELINK=2; BRAM="0" ERAM="0" # # Prompt the user for a hex value, it must be within a given range # Usage: # prompt_range "Message" default min max [step] # prompt_range() { mesg=$1 default=$2 range_min=$3 range_max=$4 step="1" if [ $# -eq 5 ] then step=$5 fi while : do echo "${mesg} (${range_min}..${range_max}) [${default}] or 'q' to quit: \c" read result case $result in Q|q) return $FAIL ;; "") result=$default ;; esac hc $result $range_min $range_max $step case $? in 0) return $OK;; 1) cleanup $FAIL;; 2) cleanup $FAIL;; esac done } # # Prompt the user to make a selection a list of values # Usage: # prompt_select "Message" default "value_list" prompt_select() { mesg=$1 default=$2 values=$3 while : do if [ "$default" = "" ] then echo "${mesg} (${values}) or 'q' to quit: \c" else echo "${mesg} (${values}) [${default}] or 'q' to quit: \c" fi read result case $result in Q|q) return $FAIL ;; "") result=$default ;; esac for i in $values do if [ "$i" = "$result" ] then return $OK fi done echo "Illegal value, must be one of (${values})" done } # # prompt the user to answer a yes no question or 'q' to quit # Usage: # prompt_yn "Message" default prompt_yn() { mesg=$1 default=$2 while : do echo "${mesg} (y/n) [${default}] or 'q' to quit: \c" read result case $result in q|Q) return $FAIL;; y|Y) result="Y"; return $OK;; n|N) result="N"; return $OK;; "") result=`echo $default | tr "yn" "YN"`; return $OK;; esac echo "Illegal value, please type 'y' 'n' or 'q'" done } # # Fake up an mdevice and an sdevice for idcheck # Do not remove $base if called with an argument... # makedevs() { dir=`pwd` rm -fr /tmp/dev$$ mkdir /tmp/dev$$ cd /etc/conf/cf.d cp mdevice /tmp/dev$$ cd ../sdevice.d cat * > /tmp/dev$$/sdevice [ $1 ] && { # remove driver being reconfigured from sdevice & mdevice files. sed -e "/^$base/d" < /tmp/dev$$/sdevice > /tmp/bog$$ mv /tmp/bog$$ /tmp/dev$$/sdevice sed -e "/^$base/d" < /tmp/dev$$/mdevice > /tmp/bog$$ mv /tmp/bog$$ /tmp/dev$$/mdevice } cd $dir } cleanup() { cd / rm -fr /tmp/dev$$ rm -fr /tmp/$base exit $1 } # Removes the given interrupt vector for the $clash device. rmvector() { clash=$1 vec=$2 cd $confdir echo "\nRemoving interrupt vector $vec for the $clash device ..." [ "$vec" = "2" ] && vec=9 major=`./configure -j $clash` && { # remove device but leave it required ./configure -d -c -m $major -v $vec -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } # remove required setting if no more left if grep "Y" ../sdevice.d/$clash > /dev/null 2>&1 then true else ./configure -d -c -m $major -v $vec -R -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } fi } cd $currdir return $OK } # On unix, we must check the files in sdevice.d. # Sets the variable $clash to the driver code name if there is a driver that # has already been allocated the given vector. Uses awk. dointclash() { driver=$1 vec=$2 [ "$vec" = "2" ] && vec=9 cd $confdir/../sdevice.d clash=`cat * | awk '{ if ( $6 == intr && $2 == "Y" ) exit } \ END { print $1 }' intr=$vec` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } checkvec() { driver=$1 vector=$2 clash= currdir=`pwd` confdir=/etc/conf/cf.d while dointclash $driver $vector do prompt_select "Interrupt vector $vector is already in use for the $clash device.\n\n\ The alternatives available to you are:\n\n\ \t1. Continue the installation and remove vector $vector for the $clash device.\n\ \t2. Select a different interrupt vector.\n\n\ Select an option" 1 "1 2" || { cleanup $FAIL } case $result in 1) rmvector $clash $vector || { echo "Failed to remove vector $vector" cleanup $FAIL } makedevs return $OK ;; 2) return $FAIL ;; esac done return $OK } doaddrclash() { driver=$1 addr1=$2 addr2=$3 cd $confdir clash=`../bin/idcheck -ar -l $addr1 -u $addr2 -i /tmp/dev$$` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } # Removes the $clash device. rmaddr() { clash=$1 cd $confdir echo "\nRemoving the $clash device ..." major=`./configure -j $clash` && { # remove device but leave it required if [ "$major" != "0" ] then ./configure -d -c -m $major -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } else sed -e "s/Y/N/" ../sdevice.d/$clash > /tmp/bog$$ mv /tmp/bog$$ ../sdevice.d/$clash fi # remove required setting if no more left if grep "Y" ../sdevice.d/$clash > /dev/null 2>&1 then true elif [ "$major" != "0" ] then ./configure -d -c -m $major -R -Y >> conflog 2>&1 || { cd $currdir cleanup $FAIL } fi } cd $currdir return $OK } checkaddr() { driver=$1 addr1=$2 addr2=$3 clash= currdir=`pwd` confdir=/etc/conf/cf.d while doaddrclash $driver $addr1 $addr2 do if [ "$clash" = "ad" ] then echo "\n\nWARNING: Do not remove the $clash device \c" echo "if you are using an Adaptec disk controller" fi prompt_select "Addresses $addr1-$addr2 are already in use by the $clash device.\n\n\ The alternatives available to you are:\n\n\ \t1. Continue the installation and remove the $clash device.\n\ \t2. Select a different address.\n\n\ Select an option" 1 "1 2" || { cleanup $FAIL } case $result in 1) rmaddr $clash || { echo "Failed to remove $clash device" cleanup $FAIL } makedevs return $OK ;; 2) return $FAIL ;; esac done return $OK } doramclash() { driver=$1 addr1=$2 addr2=$3 cd $confdir clash=`../bin/idcheck -cr -l $addr1 -u $addr2 -i /tmp/dev$$` cd $currdir [ "$clash" = "" -o "$clash" = "$driver" ] && return $FAIL # found a clash return $OK } checkram() { driver=$1 addr1=$2 addr2=$3 clash= currdir=`pwd` confdir=/etc/conf/cf.d while doramclash $driver $addr1 $addr2 do prompt_yn " Ram addresses $addr1-$addr2 is already in use for the $clash device. You must choose a unique address for this device to work. Do you wish to choose another address now?" y || cleanup $FAIL if [ "$result" = "Y" ] then return $FAIL else cleanup $FAIL fi done return $OK } # On unix, we must check the lines in mdevice file. # Sets the variable $clash to the driver code name if there is a driver that # has already been allocated the given channel. Uses awk. dodmaclash() { driver=$1 chan=$2 clash= # -1 is never a clash [ "$chan" = "-1" ] && return $FAIL cd $confdir clash=`awk '{ if ( $1 != driver && $9 == dma ) print $1 }' dma=$chan driver=$driver mdevice` [ "$clash" = "" ] && { cd $currdir return $FAIL } cd ../sdevice.d cat $clash | awk '{ if ( $2 == "Y" ) exit 1 }' || return $OK if [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] then prompt_yn " DMA channel ${chan} is already in use by the $clash device. However, the $clash device is not currently configured into the kernel. Do you wish to remove DMA channel ${chan} from the $clash device?" y || cleanup $FAIL if [ "$result" = "Y" ] then sed -e "s/Y/N/" $clash > /tmp/bog$$ mv /tmp/bog$$ $clash cd $currdir return $FAIL else cd $currdir return $FAIL fi fi # Should be release >3.2.2, clash driver not installed if we get here. cd $currdir return $FAIL } # # Check if there is a clash of DMA channels # checkdma() { driver=$1 channel=$2 clash= currdir=`pwd` confdir=/etc/conf/cf.d while dodmaclash $driver $channel do prompt_yn " DMA channel ${channel} is already in use by the $clash device. You must choose a unique channel for this device to work. Do you wish to choose another channel now?" y || cleanup $FAIL if [ "$result" = "Y" ] then return $FAIL else cleanup $FAIL fi done return $OK } check_args() { name=$1 bd=$2 case $name in pnt) echo "Configuring PCNET Family board $bd"; PREFIX="pnt"; MAX_BD=3; ;; *) echo "ERROR: Unknown LLI driver being configured ($name$bd)"; cleanup $FAIL; ;; esac if [ $bd -gt $MAX_BD ] then echo "ERROR: Only boards 0..$MAX_BD are supported by this driver"; cleanup $FAIL fi echo } # # restorevector check for sio (vecs 3-4) and pa drivers (vec 7) # if these are being released by lli then let us restore them to sio or pa restorevector() { currdir=`pwd` cd /etc/conf/cf.d intvector=$1 test="0" [ "$intvector" = "3" -o "$intvector" = "4" ] && { prompt_yn "Restore vector $intvector to sio driver" y [ "$result" = "Y" ] && { echo "Restoring vector $intvector to sio driver" siomajor=`./configure -j sio` ./configure -m $siomajor -c -v $intvector -a -Y return $OK } } [ "$intvector" = "7" ] && { prompt_yn "Restore vector $intvector to pa driver" y [ "$result" = "Y" ] && { echo "Restoring vector $intvector to pa driver" pamajor=`./configure -j pa` ./configure -m $pamajor -c -v $intvector -a -Y return $OK } } return $OK } # # determine release, and AT or MCA bus - set rel and type variables accordingly. # os_type() { rel=`sed -n 's/^#rel=\(.*\).$/\1/p' /etc/perms/rts` if [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] then type=`sed -n 's/^#typ=\(.*\)$/\1/p' /etc/perms/inst` else # 3.2.4 - one release supports AT, MCA, and EISA. uname -X | grep "BusType = MCA" >/dev/null 2>&1 if [ $? -eq 0 ] then type=386MC else type=386GT fi fi } system_pnt() { bd=$1 IRQ=0; DMA=-1; BIO=0; EIO=0; mech=0; status=1; lastbus=256; /usr/lib/lli/pciinfo -p > /tmp/pci.log 2>&1 status=`awk '{ if($3~/AH/) print $4}' /tmp/pci.log` if [ "$status" = "0x00" ] then mech=`awk '{ if($3~/AL/) print $4}' /tmp/pci.log` ed -s /etc/conf/pack.d/pnt0/space.c << TOAST > /dev/null /ACCESS_TYPE_$bd/ d i #define ACCESS_TYPE_$bd $mech . w q TOAST lastbus=`awk '{ if($5~/CL/) print $6}' /tmp/pci.log` ed -s /etc/conf/pack.d/pnt0/space.c << TOAST > /dev/null /LAST_BUS_$bd/ d i #define LAST_BUS_$bd $lastbus . w q TOAST fi prompt_yn "Detect PCNET hardware automatically?" y || cleanup $FAIL if [ "$result" = "Y" ] then DMACHAN=-1 BIO=0 IRQ=0 else prompt_yn " Do you wish to specify I/O Base Address?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_range "Enter I/O base address" $BIO "0" "3e0" "20" || cleanup $FAIL bio=$result EIO=`ha $bio 1f` checkaddr $name$bd $bio $EIO && break done BIO=$bio else BIO=0 fi prompt_yn " Do you wish to specify IRQ?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_select "Enter IRQ" $IRQ "0 3 4 5 9 10 11 12 15" || cleanup $FAIL irq=$result checkvec $name$bd $irq && break done IRQ=$irq else IRQ=0 fi prompt_yn " Do you wish to specify DMA Channel?" y || cleanup $FAIL if [ "$result" = "Y" ] then while : do prompt_select "Enter DMA channel ( 0 if NONE ) " $DMA "0 3 5 6 7" || cleanup $FAIL dma=$result checkdma $name$bd $dma && break done DMACHAN=$dma else DMACHAN=-1 fi fi NMINORS="1" } # main() # # # get the name of the init script being run, since one script # is used for multiple drivers; get the number at the end of the # script's name # if [ $# -gt 1 ] then name_below=$1; if_below=$2 name_above=$3; if_above=$4 configure=$5 fi base=`basename $0` drv=`echo $base | sed -e 's/[0-9]*$//` bd=`expr $base : '.*\(.\)'` makedevs $OK check_args $drv $bd # # verify the driver is in the kernel link-kit # idcheck -p $base -i /tmp/dev$$ if [ $? -le 16 ] then echo "Error: $base driver is not installed" cleanup $FAIL fi echo "Reconfiguring the $drv driver" cd /usr/lib/lli/$drv makedevs # # create the temporary directory for installing the driver # cd /tmp; rm -rf $base mkdir $base; cd $base DMACHAN="-1" # # set rel, type variables. # os_type # get the interrupt vector & Base I/O address for the board that we are removing currdir=`pwd` cd /etc/conf/sdevice.d ivec=`awk '{ if ( $1 != "*" ) print $6 }' < $base` OBIO=`awk '{ if ( $1 != "*" ) print $7 }' < $base` cd $currdir # # Do special board dependent processing # system_$drv $bd echo if [ "$IRQ" = "2" ] then IRQ=9 fi echo "$base\tY\t$NMINORS\t5\t0\t$IRQ\t$BIO\t$EIO\t$BRAM\t$ERAM" >./System # # All the drivers support more than one board. In fact all the code to # support all the boards is in the Driver.o for the board for the 1st board # (eg the e3A0 driver acually contains enough code for the e3A1, e3A2 & e3A3 # boards). As we need a Driver.o to be associated with 2nd, 3rd or 4th board # we install a dummy Driver.o, and a Master and Node which will actually cause # calls into the base driver. # if [ $bd -gt 0 ] then echo "$base - iScH $PREFIX$bd 0 0 1 256 $DMACHAN" >./Master echo "clone $base c $base" >./Node idinstall -u -m -s -n -e -k $base else echo "$base I iScH $PREFIX 0 0 1 256 $DMACHAN" >./Master idinstall -u -m -s -e -k $base fi # delete any potential BASE I/O address conflicts with the sio driver [ "$rel" = "3.2.0" -o "$rel" = "3.2.1" -o "$rel" = "3.2.2" ] && sio_conflict if [ "$ivec" = "3" -o "$ivec" = "4" -o "$ivec" = "7" ] then [ ${ivec} != ${IRQ} ] && restorevector $ivec fi cleanup $RELINK usr/lib/custom 755 0 1 0 6225022310 6610 5usr/lib/custom/pnt.rmv 644 0 1 4771 5660174140 10242 : # # Copyright (C) Advanced Micro Devices, 1993. # Copyright (C) The Santa Cruz Operation, 1988. # # # Prompt for yes or no answer with message passed as argument - # returns non-zero for no getyn() { while echo "\n$* (y/n/q) \c">&2 do read yn rest case $yn in [yY]) return 0 ;; [nN]|[qQ]) return 1 ;; *) echo "Please answer y,n or q" >&2 ;; esac done } # main main main # ============== # Remove temp files and exit with the status passed as argument if [ -z "$*" ] then args="ALL" else args="$*" fi if [ "$args" = "ALL" -o "$args" = "all" ] then args="pnt" fi DRIVERS="" for i in $args do case $i in "PNT"|"pnt") DRIVERS=${DRIVERS}" pnt3 pnt2 pnt1 pnt0";; *) echo "pnt.rmv: Unknown package to remove <<$i>>";; esac done if [ -z "$DRIVERS" ] then exit 0 fi link="N" for i in $DRIVERS do drv=`echo $i | sed -e 's/[0-9]*$//` # # Attempt to use 'netconfig' to remove the product. # if [ -f /usr/lib/netconfig/chains -a -x /etc/netconfig ] then for j in `/etc/netconfig -s | grep "#${i}"` do /etc/netconfig -dnr $j link="Y" done fi # # If any chains under mkdev then call the netconfig remove script # [ -s /usr/lib/lli/chains ] && { for j in `grep $i /usr/lib/lli/chains` do base=`echo $j | sed -e 's/:.*//'` name_above=`echo $j | sed -e 's/.*://'` /usr/lib/netconfig/remove/$base - - $name_above lli y done } # # If the driver is still in the link kit, crowbar it out # /etc/conf/bin/idcheck -p $i if [ $? -gt 16 ] then /etc/conf/bin/idinstall -d -e $i fi # # Remove some files that are still going to be kicking about # rm -f /usr/lib/mkdev/$drv cd /usr/lib/netconfig rm -f info/$i init/${i}* remove/$i reconf/$i cd /usr/lib/lli rm -f init/$i remove/$i reconf/$i done if [ "$link" = "Y" ] then if getyn "Do you wish to relink the kernel" then cd /etc/conf/cf.d; ./link_unix fi fi