mike@cimcor.mn.org (Michael Grenier) (07/28/88)
Here is the binary for a fast malloc package that runs under Microport V/AT in large model. It performs much better than malloc(3c) and malloc(3x) on my system and it should on yours. Test programs are included. I don't want to distribute sources as I'm attempting to market the package to various vendors. You may use this package only for non-commerical use - you may not resell it or incorporate it into any products for resale, etc. The file m286.uue should be uudecoded and placed under the name libm286.a with world read permission in /usr/lib/large. Good Luck, Mike Grenier mike@cimcor.mn.org {ihnp4??,rutgers,amdahl}!bungia!cimcor!mike -----cut------ #! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create: # m286.3x # m286.uue # t.c # tcheck.c # This archive created: Thu Jul 28 06:59:39 1988 export PATH; PATH=/bin:/usr/bin:$PATH echo shar: "extracting 'm286.3x'" '(2318 characters)' if test -f 'm286.3x' then echo shar: "will not over-write existing file 'm286.3x'" else sed 's/^ X//' << \SHAR_EOF > 'm286.3x' X.TH M286 3X X.SH NAME Xm286 \- malloc package for iAPX286 processor X.SH SYNOPSIS X.nf X char *malloc(size) X unsigned size; X X void free(ptr) X char *ptr; X X char *realloc(ptr, size) X char *ptr; X unsigned size; X X char calloc(nelem, elsize) X unsigned nelem, elsize; X X int dump_malloc() X.fi X.SH DESCRIPTION X.I M286 Xis a malloc(3C) compatible library designed for use on the iAPX286 processor. XPerformance is greatly improved over both malloc(3C) and malloc(3X) by Xallocating full 64K segments via the brk() system call and divving up Xthe segments as needed, reducing UNIX overhead. Is is found in the library X"m286", and is loaded if the option "-lm286" is used with cc(1) or Xld(1). X X.I Malloc Xreturns a pointer to a block of at least size bytes. X X.I Free Xreturns the space previously allocated with calloc() or malloc() Xas pointed to by the argument X.I ptr. XContents of the block are preserved until the next malloc() or calloc() Xcall. X X.I Realloc Xchanges the size of the blocked pointed to by X.I ptr Xto the size given by argument two in bytes. Contents of the block Xwill be unchanged up to either the original size or the new size, Xwhichever is smaller. X X.I Calloc Xallocates space via malloc and intializes the space to zeros. The Xamount of space allocated is set up to handle an array of X.I nelem Xelements of size X.I elsize. X X.I Dump_malloc Xprovides a means to debug pointer references by dumping a list of all Xblocks within X.I m286's Xfree list or those currently allocated to the standard error device. The listing Xcontains LLINK, RLINK which are pointers to the previous and next blocks Xon the free list. TAG and ETAG are flags indicating whether the block is Xin use or not. ULINK is always a pointer to the beginning of the block. XAll of the fields are displayed as indexes into a array of words within Xthe allocated segment. X X.SH CAVEATS XSince performance is gained by allocating full 64K segments, an average Xof 32K bytes will be wasted by the process. The maximum size block that Xcan be allocated is 65488 bytes. If larger sizes are needed, use brk() directly. X XThis software is copyright and can only be used and distributed for Xnon-commercial use. Commerical licenses can be obtained from Xmike@cimcor.mn.org for a very low cost. X.SH FILES X.DT X/usr/lib/large/libm286.a X.SH "SEE ALSO" Xmalloc(3c), malloc(3x), brk(2) SHAR_EOF if test 2318 -ne "`wc -c < 'm286.3x'`" then echo shar: "error transmitting 'm286.3x'" '(should have been 2318 characters)' fi fi echo shar: "extracting 'm286.uue'" '(11124 characters)' if test -f 'm286.uue' then echo shar: "will not over-write existing file 'm286.uue'" else sed 's/^ X//' << \SHAR_EOF > 'm286.uue' Xbegin 644 libm286.a XM(3QA<F-H/@HO(" @(" @(" @(" @(" @-3@S-C,U,#@T(" @," @(" @," @ XM(" @," @(" @(" R,#0@(" @(" @8 H . !$ 1 $0 !$ XM 1 $0 !$ 1 $0 !$ 1 $0 !$ 1!G971P86=E XM '5?;65M<V5T '5?;65M8W!Y &YE=U]P86=E &=E=%]O9F9S970 9G)E95]F XM<F]M7W!A9V4 86QL;V-A=&5?9G)O;5]P86=E ')E='5R;E]F<F5E7W!A9V5S XM &UA;&QO8P!C86QL;V, 9G)E90!R96%L;&]C '1A9VET &1U;7!?;6%L;&]C XM !M86QL;V,N;R\@(" @(" @-3@S-C,U,#(W(" @,3 P(" @," @(" @,3 P XM-C0T(" W-S(Q(" @(" @8 I2 0, 4I#)(I@9 Z "$$"YT97AT XM #(#P C (P1 S " N9&%T80 ,@/ #( XM#P . $ %00 "$&0 ( ! +F)S<P $0 !$ (0 XM @ %6+[(M&!C/2+0$ @]H B] SP,'B [L0 XM 8[; P: $1,6@A$E #)RU6+[.L/Q78&BT8*B02#1@8"_TX,@WX, '3KR<M5 XMB^SK%<5V"HL$Q78&B02#1@H"@T8& O].#H-^#@!TY<G+R 8 +CP ([8]P;, XM#___= /I)@)J )H 1$2[$ &.VZ. $8D6@A$%__^#T@"[$ &.VZ-\$8D6 XM?A'_-GX1_S9\$9H @\0$N/ CMC_!LP/_S;,#YH B4;ZB5;\Q7;Z XMQT0" 0#%=OK'1 0 ,5V^HMT!(/&!-'F W;ZCE[\QP0! ,5V^HMT!(/&!='F XM W;ZCE[\QP0 ,=&_OI_BW;^1M'F W;ZCE[\QP0! (MV_D9&T>8#=OJ.7OS' XM! BW;^1D;1Y@-V^HY>_(LT W;^@\8$T>8#=OJ.7OS'! $ BW;^1D;1Y@-V XM^HY>_(LT W;^@\8%T>8#=OJ.7OR+1OZ)!,=&_@8 BW;^1M'F W;ZCE[\QP0 XM (MV_D9&T>8#=OJ.7OS'! BT;^!08 BW;^T>8#=OJ.7OR)!(MV_D9&T>8# XM=OJ.7OR+- -V_H/&!-'F W;ZCE[\QP0 (MV_D9&T>8#=OJ.7OR+- -V_H/& XM!='F W;ZCE[\BT;^B02+1OX%!@"+=OZ#Q@/1Y@-V^HY>_(D$N/ CMB+-LP/ XMT>:X$ &.V(M&_HF$ !OX&BW;^1M'F W;ZCE[\QP0 (MV_D9&T>8#=OJ. XM7OS'!.A_BW;^T>8#=OJ.7OS'! 8 BW;^@\8#T>8#=OJ.7OS'! 8 BW;^1D;1 XMY@-V^HY>_(LT W;^@\8$T>8#=OJ.7OS'! BW;^1D;1Y@-V^HY>_(LT W;^ XM@\8%T>8#=OJ.7OR+1OZ)!,G+N! !CMB#!GP1 (,6?A$(Z>_]R ( (M&!M'H XM+00 B4;^R<O("@ _W8(F@ !$1(E&]HE6^(MV!D9&T>8#=O:.7OB+!(E& XM_H-^!@QT%8MV!DY.T>8#=O:.7OB#/ %T ^G8 8MV!@-V_H/&!]'F W;VCE[X XM@SP!= /IOP&+=@9&T>8#=O:.7OC'! BW8&1D;1Y@-V]HY>^(LT W8&@\8$ XMT>8#=O:.7OC'! BW8&1D;1Y@-V]HY>^(LT W8&@\8%T>8#=O:.7OB+1@:) XM!(MV"-'FN! !CMB+A 1BW8&T>8#=O:.7OB)!(MV"-'FN! !CMB+M 1@\8# XMT>8#=O:.7OB+!(MV!H/& ]'F W;VCE[XB02+=@:#Q@/1Y@-V]HY>^(LTT>8# XM=O:.7OB+1@:)!(MV"-'FN! !CMB+M 1@\8#T>8#=O:.7OB+1@:)!.GF (M& XM!@-&_@4& (E&_(OPT>8#=O:.7OB+-(/& ]'F W;VCE[XBT8&B02+=OR#Q@/1 XMY@-V]HY>^(LTT>8#=O:.7OB+1@:)!(MV_-'F W;VCE[XBP2+=@;1Y@-V]HY> XM^(D$BW;\@\8#T>8#=O:.7OB+!(MV!H/& ]'F W;VCE[XB02+1OX%!@"+=OQ& XM1M'F W;VCE[X P2+=@9&1M'F W;VCE[XB02+=@9&1M'F W;VCE[XBS0#=@:# XMQ@71Y@-V]HY>^(M&!HD$BW8&1M'F W;VCE[XQP0 (MV"-'FN! !CMB+1@:) XMA 1R<N#?@8,=0/IM@"+=@9.3M'F W;VCE[X]P3__W0#Z: BW8& W;^@\8' XMT>8#=O:.7OB#/ %T ^F' (MV!D[1Y@-V]HY>^(L$B4;\B_!&1M'F W;VCE[X XMBP0#1OX%!@"+=OQ&1M'F W;VCE[XB02+=@9&1M'F W;VCE[XBS0#=@:#Q@71 XMY@-V]HY>^(M&_(D$BW8&1D;1Y@-V]HY>^(LT W8&@\8$T>8#=O:.7OC'! XMBW8(T>:X$ &.V(M&_.D[_X-^!@QT$HMV!DY.T>8#=O:.7OB#/ %U&HMV!@-V XM_H/&!]'F W;VCE[X]P3__W4#Z2?^BT8& T;^!08 B4;\BW8&3M'F W;VCE[X XMBP2)1OJ+=OR#Q@/1Y@-V]HY>^(L$BW;\T>8#=O:.7OB+-(/& ]'F W;VCE[X XMB02+=OS1Y@-V]HY>^(L$BW;\@\8#T>8#=O:.7OB+--'F W;VCE[XB02+=OI& XM1M'F W;VCE[XBP0#1OX%!@"+=OQ&1M'F W;VCE[X P0%!@"+=OI&1M'F W;V XMCE[XB02+=OI&1M'F W;VCE[XBS0#=OJ#Q@71Y@-V]HY>^(M&^HD$BW8(T>:X XM$ &.V(M&^NDS_L@( #_=@B: $1$B4;XB5;ZBW8(T>:X$ &.V(N$ !&) XM1OZ+=OY&1M'F W;XCE[ZBP0[1@9S ^FP 8MV_D9&T>8#=OB.7OJ+!"M&!HE& XM_#T4 '(#Z: BW;^@\8#T>8#=OB.7OJ+!(MV_M'F W;XCE[ZBS2#Q@/1Y@-V XM^(Y>^HD$BW;^T>8#=OB.7OJ+!(MV_H/& ]'F W;XCE[ZBS31Y@-V^(Y>^HD$ XMBW;^1M'F W;XCE[ZQP0! (MV_D9&T>8#=OB.7OJ+- -V_H/&!-'F W;XCE[Z XMQP0! (MV_M'F W;XCE[ZBP2+=@C1YKH0 8[:B80 $>GC (M&_"T& (MV_D9& XMT>8#=OB.7OJ)!(MV_D9&T>8#=OB.7OJ+- -V_H/&!='F W;XCE[ZBT;^B02+ XM=OY&1M'F W;XCE[ZBS0#=OZ#Q@31Y@-V^(Y>^L<$ "+=@C1YK@0 8[8BT;^ XMB80 $8MV_D9&T>8#=OB.7OJ+! 4& %&_HMV_D9&T>8#=OB.7OJ+1@:)!(MV XM_D;1Y@-V^(Y>^L<$ 0"+=OY&1M'F W;XCE[ZBS0#=OZ#Q@31Y@-V^(Y>^L<$ XM 0"+=OY&1M'F W;XCE[ZBS0#=OZ#Q@71Y@-V^(Y>^HM&_HD$BT;^T> #1O@% XM" "+5OK)RXMV_H/& ]'F W;XCE[ZBP2)1OZ+=@C1YK@0 8[8BX0 $3M&_G0# XMZ1#^,\ STNO/R 8 .L8N/ CMC_#LP/N! !CMB#+GP1 (,>?A$(N/ CMB# XM/LP/ 78U_S;,#YH 1$2)1OJ)5ORX\ ".V(LVS _1YK@0 8[8B[0 $49& XMT>8#=OJ.7OR!/.A_=*>X$ &.V/\V?A'_-GP1F@ #)R\@& "X\ ".V/<& XMS ___W4)FF4 "%P'0^N/ CMBAS@^)1OK_=OJ+1@9 T>A0FJ(&8 "#Q 2) XM1OR)5OZ%TG4$A<!T&;CP ([8BT;ZH\X/BT;\BU;^ZP0SP#/2R<O_1OJX\ ". XMV*',#SM&^G,%QT;Z 0"X\ ".V*'.#SM&^G6EFF4 "%P'3/N/ CMC_-LP/ XMBT8&0-'H4)JB!F @\0$Z[G(!@ BT8&]V8(B4;Z_W;ZFC )D !$1(E&_(E6 XM_H72=02%P'06BT;ZT>A0:@#_=O[_=OR:)P (/$"(M&_(M6_LG+R 8 (M& XM!HM6"+L0 8[;*P: $1L6@A&)1OJ)5OR+PL'Z#\'X P4! (/2 (E&_O]V_O]V XM"/]V!IJQ B @\0$4)K" B @\0$FKT(@ #)R\@: "#?@H = /I@P'_=@C_ XM=@::%@J@ (/$!#/ ,]+I; &+=OC1Y@-V^HY>_(L$B4;JBW;X@\8#T>8#=OJ. XM7OR+!(E&Z(MV^$9&T>8#=OJ.7OR+!(E&YHMV]D9&T>8#=OJ.7OR+1@J)!(MV XM]D9&T>8#=OJ.7OR+- -V]H/&!='F W;ZCE[\BT;VB02+=O9&1M'F W;ZCE[\ XMBS0#=O:#Q@31Y@-V^HY>_,<$ 0"+=O9&1M'F W;ZCE[\BP0#1O8%!@")1OB+ XM\-'F W;ZCE[\BT;JB02+=OB#Q@/1Y@-V^HY>_(M&Z(D$BW;X1M'F W;ZCE[\ XMQP0 (M&YBM&](MV^$9&T>8#=OJ.7OR)!(MV^$9&T>8#=OJ.7OR+- -V^(/& XM!-'F W;ZCE[\QP0 (MV^$9&T>8#=OJ.7OR+- -V^(/&!='F W;ZCE[\BT;X XMB02+=OB#Q@/1Y@-V^HY>_(LTT>8#=OJ.7OR+1OB)!(MV^-'F W;ZCE[\BS2# XMQ@/1Y@-V^HY>_(M&^(D$BT8&BU8(R<N+1@:+5@B[$ &.VRL&@!$;%H(1B4;P XMB5;RB\+!^@_!^ ,% 0"#T@")1O[_=OZ: $1$B4;ZB5;\_W8(_W8&FK$" XM( "#Q 2)1O:+1@I T>B)1@J+=O9&1M'F W;ZCE[\BP0K1@J)1O2+=O9&1M'F XM W;ZCE[\BP0[1@IS ^GN (-^] 9S ^EO_XMV]D9&T>8#=OJ.7OR+1O0I!(MV XM]D9&T>8#=OJ.7OR+- -V]H/&!='F W;ZCE[\BT;VB02+=O9&1M'F W;ZCE[\ XMBS0#=O:#Q@31Y@-V^HY>_,<$ 0"+1O8%!@"+=O9&1M'F W;ZCE[\ P2)1NJ+ XM\$;1Y@-V^HY>_,<$ 0"+1O0M!@"+=NI&1M'F W;ZCE[\B02+=NI&1M'F W;Z XMCE[\BS0#=NJ#Q@31Y@-V^HY>_,<$ 0"+=NI&1M'F W;ZCE[\BS0#=NJ#Q@71 XMY@-V^HY>_(M&ZHD$_W;^_W;JFL("( "#Q 3IBOZ+=O9&1M'F W;ZCE[\BP0# XM1O8%!@")1OB+1O3WV(E&](MV^$;1Y@-V^HY>_/<$__]U&(MV^$9&T>8#=OJ. XM7OR+!$ [1O1V ^G:_(M&"M'@4)HP"9 1$2)1NR)5NZ+=O9&1M'F W;ZCE[\ XM_S3_=N[_=NS_=@C_=@::0P (/$"O]V"/]V!IH6"J @\0$BT;LBU;NZ?G] XM58OL@WX& '40N!00N@ !ZP:X&Q"Z ')RX-^!@%T\K@B$+H >OPR @ +CP XM ([8]P;,#___=1EH %H*1!H !H& ": (/$"+@! ,G+QT;^ 0#I80'_ XM=OYH %H1!!H !H& ": (/$"O]V_IH 1$2)1OB)5OK'1OP &@ XM 6A;$&@ &@8 )H @\0(: !:&T0: :!@ F@ "#Q CIT "+=OQ& XM1M'F W;XCE[ZBS0#=OR#Q@71Y@-V^(Y>^O\TBW;\1D;1Y@-V^(Y>^HLT W;\ XM@\8$T>8#=OB.7OK_-)KZ#= 1$124(MV_(/& ]'F W;XCE[Z_S2+=OQ&1M'F XM W;XCE[Z_S2+=OQ&T>8#=OB.7OK_-)KZ#= 1$124(MV_-'F W;XCE[Z_S3_ XM=OR+1OS1X -&^ 4( /]V^E!H %HLQ!H !H& ": (/$'HMV_$9&T>8# XM=OB.7OJ+! 4& %&_(-^_ 9S!9H BT;\,]*#^@!T ^DC_ST @'0#Z1O_ XMBW;^T>:X$ &.V/^T !%H %HZ!!H !H& ": (/$"O]&_KCP ([8H<P/ XM.T;^<@/IC_[I?_Z0V _P 0 7 #@ # 7 H*"D-O<'ER:6=H=" Q.3@X XM(&)Y($UI8VAA96P@1W)E;FEE<BP@86QL(')I9VAT<R!R97-E<G9E9 H* $%6 XM04E,( !)3B!54T4 *D)!1"H@ T*($YO('-E9VUE;G1S(&%L;&]C871E9 T* XM T*(%-E9VUE;G0@3F\N("5D(#H@#0H (%!T<B @(" @($)L;V-K#0H ($%D XM9'(@(" @(&]F9G-E=" @(" @("!,3$E.2R @5$%'(" @(%-)6D4@(" @4DQ) XM3DL@($5404<@(" @55!,24Y+#0H* "4N.&QX(" @)2XU=2 @(" @("4N-74@ XM("5S(" E+C5U(" @)2XU=2 @)7,@("4N-74@#0H ( T*($%6('!O:6YT<R!T XM;R E=0T*"@ %@ "L ) !P B 0 @ (@ $ :@ "< XM ) ' @ 0!W '@ ( ? "P ! 'X L "0"# XM *P D B "( ! (P B 0"5 *@ D F@ "( XM ! )X B 0"B (@ $ I@ "( ! *D M 0"K XM +0 D L0 "< ) +< @ 0"[ ( $ O@ !X XM ! , " "0#^ 0 )P D ! ( " ! D" F "0 2 XM @ (@ $ H ( "H ) *8" B 0"K @ (@ $ KP( !X XM " ,H" > 0#, @ @ D 0, !X " !H# > @!U XM P )@ D >P, "( ! ) # F "0"6 P (@ $ V , "8 XM ) -X# B 0#Q P '@ ( S@0 "8 ) -<$ B 0#B XM! '@ ( ^ 0 !X " !$% > @"0!0 )@ D F 4 !X XM " ,H% > @"8!@ )@ D H 8 !X " *H& > 0"L XM!@ @ D O 8 "8 ) ,(& B 0#<!@ '@ ( ^08 !X XM " ) ' F "0"6!P (@ $ F0< !X " /D' F "0 " XM" (@ $ IP@ "8 ) *T( B 0"U" '@ ( Q @ "< XM ) ,H( @ 0#-" *@ D TP@ "( ! -@( B 0#< XM" )P D X@@ " ! .D( @ 0#L" '@ $ [@@ ( XM ) /D( G "0#_" ( $ ! D "8 ) H) B 0 = XM"0 *@ D (PD "( ! "<) B 0 J"0 +0 $ + D "T XM ) #4) G "0 ["0 ( $ 0@D !X ! $0) ( "0!+ XM"0 * D 4 D " ! & ) > 0!B"0 #@ D =@D "@ XM ) 'X) @ 0"2"0 )P D EPD " ! *0) H "0"I XM"0 ( $ L0D !X ! +,) ( "0"Z"0 )P D P D " XM ! ,H) > 0#,"0 #@ D Y D !X ! .8) 2 "0 ' XM"@ '@ $ "0H 0 ) "$* K "0 G"@ (@ $ *PH "( XM ! $X* > 0!0"@ "@ D 5PH !X ! %D* , "0!? XM"@ '@ $ 80H ! ) ' * > @!Y"@ '@ $ >PH !8 XM ) (4* > @#\"P *P D @P "( ! 8, B 0 C XM# '@ $ )0P ( ) #8, > 0 X# "@ D <PP !X XM " 'P, > @!9#0 '@ $ 6PT P ) &$- > @"K XM#0 '@ ( M T !X ! +8- 2 "0#<#0 '@ $ W@T 8 XM ) .H- > 0#L#0 %@ D ^ T !X " 0. @ 0 ' XM#@ +@ D # X " ! \. O "0 :#@ ( $ '0X # XM ) "8. G "0 L#@ ( $ ,PX #$ ) #8. @ 0 Y XM#@ ,@ D / X #( ! #\. S 0!!#@ ,P D 40X !X XM " %<. T "0!:#@ ( $ 70X #( ) & . R 0!C XM#@ ,P $ 90X #, ) &X. > 0!P#@ @ D @ X #4 XM ) (,. @ 0"&#@ ,@ D B0X #( ! (P. S 0". XM#@ ,P D E X #8 ) )<. @ 0":#@ ,@ D G0X #( XM ! * . S 0"B#@ ,P D J X !X " .D. > 0#K XM#@ &@ D 'P\ !X ! "$/ : "0!'#P -P D 2@\ " XM ! $T/ R "0!0#P ,@ $ 4P\ #, ! %4/ S "0!V XM#P . $ > \ #@ ) (4/ > @"-#P '@ ( E0\ "8 XM ) )L/ B 0">#P .0 D H0\ " ! *0/ R "0"G XM#P ,@ $ J@\ #, ! *P/ S "0"U#P )P D N@\ " XM ! ,(/ > @#%#P '@ ( R \ " ! ,H/ E "0 N XM9FEL90 #^_P 9P%M86QL;V,N8P !G971P86=E XM ! &X @$ )P $ !U7VUE;7-E="< ! " @$ XM ' & !U7VUE;6-P>4, ! " @$ (@ XM ( !N97=?<&%G964 ! " @$ 3 ( * XM ,@ +$" ! "X @$ $0 , /0 ,(" XM ! " @$ X , . 3 *(& ! &X @$ XM &P( 0 7P +T( ! " @$ <P XM 2 !M86QL;V, # ) ! &( @$ HP 4 !C XM86QL;V, -,) ! &( @$ 0P 6 !F<F5E !8* XM ! " @$ 3P 8 !R96%L;&]C &4* ! &( @$ XM E0, : !T86=I= /H- ! &( @$ )P XM < <0 "$. ! "0 @$ I@$ > N XM=&5X= ! P'(#P S . N9&%T80 ,@/ XM " P$X 0 @ N8G-S 1 # P&$ XM ! ,@/ " P N,S, -@/ XM " P!A=E]L:7-T 1 # P $ ,P/ " P XM &@ ,X/ " P!X>&9U;FYY - / " P!M7V5N9&1S 'P1 XM # P ) ( 1 # P!S8G)K @!B XM<FL @ N,3 Q !00 " P N,3 S !L0 XM " P N,3 T "(0 " P N,3 Y "D0 " P!? XM:6]B @!F<')I;G1F @ N,3$S $00 XM " P N,3$T %L0 " P N,3$U &T0 " P N XM,3$X +,0 " P!A8F]R= @ N,3(Q .@0 XM " P!] >'AC;W!Y<FEG:'0 ;5]C=7)I;F1X &9R965?:6YD> !M XM7V9I<G-T7V5N9&1S &=E=%]O9F9S970 9G)E95]F<F]M7W!A9V4 86QL;V-A XL=&5?9G)O;5]P86=E ')E='5R;E]F<F5E7W!A9V5S &1U;7!?;6%L;&]C IA X Xend SHAR_EOF if test 11124 -ne "`wc -c < 'm286.uue'`" then echo shar: "error transmitting 'm286.uue'" '(should have been 11124 characters)' fi fi echo shar: "extracting 't.c'" '(635 characters)' if test -f 't.c' then echo shar: "will not over-write existing file 't.c'" else sed 's/^ X//' << \SHAR_EOF > 't.c' X#include <stdio.h> X#include <malloc.h> X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X char *p; X int size,i,j; X if (argc!=2) X { X printf("%s: Usage - t number \n",argv[0]); X printf(" Where 'number' is the number of kilobytes to allocate\n"); X exit(1); X } X X if ((size=atoi(argv[1])) == 0) X { X printf("%s: Bad argument, must be integer in kilobytes",argv[0]); X exit(1); X } X X for (i=0; i<size; i++) X for (j=0; j<10; j++) X if ((p=malloc(100))==NULL) X { X printf("\nNot enough memory available\n"); X printf("Was only able to allocate %ld bytes",i*1024L+j*100L); X exit(2); X } else fputc('.',stderr); X fputc('\n', stderr); X} SHAR_EOF if test 635 -ne "`wc -c < 't.c'`" then echo shar: "error transmitting 't.c'" '(should have been 635 characters)' fi fi echo shar: "extracting 'tcheck.c'" '(1564 characters)' if test -f 'tcheck.c' then echo shar: "will not over-write existing file 'tcheck.c'" else sed 's/^ X//' << \SHAR_EOF > 'tcheck.c' X#include <stdio.h> X#include <malloc.h> X#include <signal.h> Xchar *calloc(); X X#define NSEGS 512 /* must be power of two - this program allocates X up to NSEGS * 1K bytes */ X Xchar *p[NSEGS]; X X#ifdef DEBUG Xvoid fault(no) Xint no; X{ X fprintf(stderr,"Caught signal number %d\n",no); X dump_malloc(); X abort(); X} X#endif X X Xvoid print_pointers() X{ X int i; X fprintf(stderr,"\n Pointers are : "); X for (i=0; i<NSEGS; i++) X fputc( (p[i]==NULL ? 'F':'T'), stderr); X fputc('\n',stderr); X} X X X Xmain(argc, argv) Xint argc; Xchar *argv[]; X{ X int j,k; X unsigned s,fill; X long i; X X#ifdef DEBUG X signal(SIGINT,fault); X#endif X X for (i=0; i<NSEGS; i++) X p[i]=NULL; X X for (i=0; i<100000; i++) X { X k= rand() & (NSEGS - 1); /* choose a pointer */ X if (p[k] == NULL) X { X int call_type; X/* print_pointers(); */ X s=(unsigned) rand() & 0x3ff; /* pick a size */ X fprintf(stderr," %ld : Allocating a size of %u to pointer %d ",i,s,k); X X call_type = rand() & 1; X p[k] = ( call_type ? malloc(s) : calloc(s,1) ); X fprintf(stderr,"and getting %lx using %s\n", X p[k], ( call_type ? "malloc" : "calloc")); X for (fill=0; fill<s; fill++) /* fill the buffer */ X p[k] [fill] = (char) (i & 0xff); X X } X j=rand() & (NSEGS-1); /* choose another pointer */ X if (p[j] != NULL) X { X fprintf(stderr," %ld : freeing %lx from pointer %d\n",i,p[j],j); X free(p[j]); X p[j]=NULL; X } X X j=rand() & (NSEGS-1); X if (p[j] != NULL) X { X s=rand()&0x3ff; X fprintf(stderr," %ld : realloc %lx to size %d on pointer %d\n", X i, p[j], s,j); X p[j]=realloc(p[j], s); X } X X } X} SHAR_EOF if test 1564 -ne "`wc -c < 'tcheck.c'`" then echo shar: "error transmitting 'tcheck.c'" '(should have been 1564 characters)' fi fi exit 0 # End of shell archive