summaryrefslogtreecommitdiff
path: root/labs/malloclab/malloclab-handout.tar
blob: a6b639281dfc61a2c1fe14b4adf87349e5e1be04 (plain)
ofshex dumpascii
0000 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 malloclab-handout/..............
0020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000755.0006626.0000144.0000
0080 30 30 30 30 30 30 30 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 33 33 32 32 00 20 35 00 00 00 0000000.12507032412.013322..5...
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
0120 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0200 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 4d 61 6b 65 66 69 6c 65 00 00 00 00 00 00 malloclab-handout/Makefile......
0220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
0280 30 30 30 31 31 35 31 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 36 30 00 20 30 00 00 00 0001151.12507032412.014760..0...
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
0320 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0400 23 0a 23 20 53 74 75 64 65 6e 74 73 27 20 4d 61 6b 65 66 69 6c 65 20 66 6f 72 20 74 68 65 20 4d #.#.Students'.Makefile.for.the.M
0420 61 6c 6c 6f 63 20 4c 61 62 0a 23 0a 54 45 41 4d 20 3d 20 62 6f 76 69 6b 0a 56 45 52 53 49 4f 4e alloc.Lab.#.TEAM.=.bovik.VERSION
0440 20 3d 20 31 0a 48 41 4e 44 49 4e 44 49 52 20 3d 20 2f 61 66 73 2f 63 73 2e 63 6d 75 2e 65 64 75 .=.1.HANDINDIR.=./afs/cs.cmu.edu
0460 2f 61 63 61 64 65 6d 69 63 2f 63 6c 61 73 73 2f 31 35 32 31 33 2d 66 30 31 2f 6d 61 6c 6c 6f 63 /academic/class/15213-f01/malloc
0480 6c 61 62 2f 68 61 6e 64 69 6e 0a 0a 43 43 20 3d 20 67 63 63 0a 43 46 4c 41 47 53 20 3d 20 2d 57 lab/handin..CC.=.gcc.CFLAGS.=.-W
04a0 61 6c 6c 20 2d 4f 32 20 2d 6d 33 32 0a 0a 4f 42 4a 53 20 3d 20 6d 64 72 69 76 65 72 2e 6f 20 6d all.-O2.-m32..OBJS.=.mdriver.o.m
04c0 6d 2e 6f 20 6d 65 6d 6c 69 62 2e 6f 20 66 73 65 63 73 2e 6f 20 66 63 79 63 2e 6f 20 63 6c 6f 63 m.o.memlib.o.fsecs.o.fcyc.o.cloc
04e0 6b 2e 6f 20 66 74 69 6d 65 72 2e 6f 0a 0a 6d 64 72 69 76 65 72 3a 20 24 28 4f 42 4a 53 29 0a 09 k.o.ftimer.o..mdriver:.$(OBJS)..
0500 24 28 43 43 29 20 24 28 43 46 4c 41 47 53 29 20 2d 6f 20 6d 64 72 69 76 65 72 20 24 28 4f 42 4a $(CC).$(CFLAGS).-o.mdriver.$(OBJ
0520 53 29 0a 0a 6d 64 72 69 76 65 72 2e 6f 3a 20 6d 64 72 69 76 65 72 2e 63 20 66 73 65 63 73 2e 68 S)..mdriver.o:.mdriver.c.fsecs.h
0540 20 66 63 79 63 2e 68 20 63 6c 6f 63 6b 2e 68 20 6d 65 6d 6c 69 62 2e 68 20 63 6f 6e 66 69 67 2e .fcyc.h.clock.h.memlib.h.config.
0560 68 20 6d 6d 2e 68 0a 6d 65 6d 6c 69 62 2e 6f 3a 20 6d 65 6d 6c 69 62 2e 63 20 6d 65 6d 6c 69 62 h.mm.h.memlib.o:.memlib.c.memlib
0580 2e 68 0a 6d 6d 2e 6f 3a 20 6d 6d 2e 63 20 6d 6d 2e 68 20 6d 65 6d 6c 69 62 2e 68 0a 66 73 65 63 .h.mm.o:.mm.c.mm.h.memlib.h.fsec
05a0 73 2e 6f 3a 20 66 73 65 63 73 2e 63 20 66 73 65 63 73 2e 68 20 63 6f 6e 66 69 67 2e 68 0a 66 63 s.o:.fsecs.c.fsecs.h.config.h.fc
05c0 79 63 2e 6f 3a 20 66 63 79 63 2e 63 20 66 63 79 63 2e 68 0a 66 74 69 6d 65 72 2e 6f 3a 20 66 74 yc.o:.fcyc.c.fcyc.h.ftimer.o:.ft
05e0 69 6d 65 72 2e 63 20 66 74 69 6d 65 72 2e 68 20 63 6f 6e 66 69 67 2e 68 0a 63 6c 6f 63 6b 2e 6f imer.c.ftimer.h.config.h.clock.o
0600 3a 20 63 6c 6f 63 6b 2e 63 20 63 6c 6f 63 6b 2e 68 0a 0a 68 61 6e 64 69 6e 3a 0a 09 63 70 20 6d :.clock.c.clock.h..handin:..cp.m
0620 6d 2e 63 20 24 28 48 41 4e 44 49 4e 44 49 52 29 2f 24 28 54 45 41 4d 29 2d 24 28 56 45 52 53 49 m.c.$(HANDINDIR)/$(TEAM)-$(VERSI
0640 4f 4e 29 2d 6d 6d 2e 63 0a 0a 63 6c 65 61 6e 3a 0a 09 72 6d 20 2d 66 20 2a 7e 20 2a 2e 6f 20 6d ON)-mm.c..clean:..rm.-f.*~.*.o.m
0660 64 72 69 76 65 72 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 driver..........................
0680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
06e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
07e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0800 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 52 45 41 44 4d 45 00 00 00 00 00 00 00 00 malloclab-handout/README........
0820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
0880 30 30 30 32 36 34 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 32 31 30 00 20 30 00 00 00 0002644.12507032412.014210..0...
08a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
08e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0900 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
0920 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
0940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
09e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0a00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0a20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0a40 23 23 23 23 23 0a 23 20 43 53 3a 41 50 50 20 4d 61 6c 6c 6f 63 20 4c 61 62 0a 23 20 48 61 6e 64 #####.#.CS:APP.Malloc.Lab.#.Hand
0a60 6f 75 74 20 66 69 6c 65 73 20 66 6f 72 20 73 74 75 64 65 6e 74 73 0a 23 0a 23 20 43 6f 70 79 72 out.files.for.students.#.#.Copyr
0a80 69 67 68 74 20 28 63 29 20 32 30 30 32 2c 20 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 44 2e 20 ight.(c).2002,.R..Bryant.and.D..
0aa0 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e O'Hallaron,.All.rights.reserved.
0ac0 0a 23 20 4d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c 20 6f 72 .#.May.not.be.used,.modified,.or
0ae0 20 63 6f 70 69 65 64 20 77 69 74 68 6f 75 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 23 0a 23 23 .copied.without.permission..#.##
0b00 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0b20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################################
0b40 23 23 23 23 0a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 4d 61 69 6e 20 46 69 6c 65 73 3a 0a 2a 2a ####..***********.Main.Files:.**
0b60 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 0a 6d 6d 2e 7b 63 2c 68 7d 09 0a 09 59 6f 75 72 20 73 6f 6c 75 74 *********..mm.{c,h}...Your.solut
0b80 69 6f 6e 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 2e 20 6d 6d 2e 63 20 69 73 20 74 68 65 20 ion.malloc.package..mm.c.is.the.
0ba0 66 69 6c 65 20 74 68 61 74 20 79 6f 75 0a 09 77 69 6c 6c 20 62 65 20 68 61 6e 64 69 6e 67 20 69 file.that.you..will.be.handing.i
0bc0 6e 2c 20 61 6e 64 20 69 73 20 74 68 65 20 6f 6e 6c 79 20 66 69 6c 65 20 79 6f 75 20 73 68 6f 75 n,.and.is.the.only.file.you.shou
0be0 6c 64 20 6d 6f 64 69 66 79 2e 0a 0a 6d 64 72 69 76 65 72 2e 63 09 0a 09 54 68 65 20 6d 61 6c 6c ld.modify...mdriver.c...The.mall
0c00 6f 63 20 64 72 69 76 65 72 20 74 68 61 74 20 74 65 73 74 73 20 79 6f 75 72 20 6d 6d 2e 63 20 66 oc.driver.that.tests.your.mm.c.f
0c20 69 6c 65 0a 0a 73 68 6f 72 74 7b 31 2c 32 7d 2d 62 61 6c 2e 72 65 70 0a 09 54 77 6f 20 74 69 6e ile..short{1,2}-bal.rep..Two.tin
0c40 79 20 74 72 61 63 65 66 69 6c 65 73 20 74 6f 20 68 65 6c 70 20 79 6f 75 20 67 65 74 20 73 74 61 y.tracefiles.to.help.you.get.sta
0c60 72 74 65 64 2e 20 0a 0a 4d 61 6b 65 66 69 6c 65 09 0a 09 42 75 69 6c 64 73 20 74 68 65 20 64 72 rted....Makefile...Builds.the.dr
0c80 69 76 65 72 0a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a iver..**************************
0ca0 2a 2a 2a 2a 2a 2a 2a 2a 0a 4f 74 68 65 72 20 73 75 70 70 6f 72 74 20 66 69 6c 65 73 20 66 6f 72 ********.Other.support.files.for
0cc0 20 74 68 65 20 64 72 69 76 65 72 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .the.driver.********************
0ce0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 0a 63 6f 6e 66 69 67 2e 68 09 43 6f 6e 66 69 67 75 **************..config.h.Configu
0d00 72 65 73 20 74 68 65 20 6d 61 6c 6c 6f 63 20 6c 61 62 20 64 72 69 76 65 72 0a 66 73 65 63 73 2e res.the.malloc.lab.driver.fsecs.
0d20 7b 63 2c 68 7d 09 57 72 61 70 70 65 72 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 64 {c,h}.Wrapper.function.for.the.d
0d40 69 66 66 65 72 65 6e 74 20 74 69 6d 65 72 20 70 61 63 6b 61 67 65 73 0a 63 6c 6f 63 6b 2e 7b 63 ifferent.timer.packages.clock.{c
0d60 2c 68 7d 09 52 6f 75 74 69 6e 65 73 20 66 6f 72 20 61 63 63 65 73 73 69 6e 67 20 74 68 65 20 50 ,h}.Routines.for.accessing.the.P
0d80 65 6e 74 69 75 6d 20 61 6e 64 20 41 6c 70 68 61 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 73 0a entium.and.Alpha.cycle.counters.
0da0 66 63 79 63 2e 7b 63 2c 68 7d 09 54 69 6d 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 62 61 73 65 64 fcyc.{c,h}.Timer.functions.based
0dc0 20 6f 6e 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 73 0a 66 74 69 6d 65 72 2e 7b 63 2c 68 7d 09 .on.cycle.counters.ftimer.{c,h}.
0de0 54 69 6d 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 62 61 73 65 64 20 6f 6e 20 69 6e 74 65 72 76 61 Timer.functions.based.on.interva
0e00 6c 20 74 69 6d 65 72 73 20 61 6e 64 20 67 65 74 74 69 6d 65 6f 66 64 61 79 28 29 0a 6d 65 6d 6c l.timers.and.gettimeofday().meml
0e20 69 62 2e 7b 63 2c 68 7d 09 4d 6f 64 65 6c 73 20 74 68 65 20 68 65 61 70 20 61 6e 64 20 73 62 72 ib.{c,h}.Models.the.heap.and.sbr
0e40 6b 20 66 75 6e 63 74 69 6f 6e 0a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a k.function..********************
0e60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 42 75 69 6c 64 69 6e 67 20 61 6e 64 20 72 75 6e 6e 69 6e 67 ***********.Building.and.running
0e80 20 74 68 65 20 64 72 69 76 65 72 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .the.driver.********************
0ea0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 54 6f 20 62 75 69 6c 64 20 74 68 65 20 64 72 69 76 65 72 2c ***********.To.build.the.driver,
0ec0 20 74 79 70 65 20 22 6d 61 6b 65 22 20 74 6f 20 74 68 65 20 73 68 65 6c 6c 2e 0a 0a 54 6f 20 72 .type."make".to.the.shell...To.r
0ee0 75 6e 20 74 68 65 20 64 72 69 76 65 72 20 6f 6e 20 61 20 74 69 6e 79 20 74 65 73 74 20 74 72 61 un.the.driver.on.a.tiny.test.tra
0f00 63 65 3a 0a 0a 09 75 6e 69 78 3e 20 6d 64 72 69 76 65 72 20 2d 56 20 2d 66 20 73 68 6f 72 74 31 ce:...unix>.mdriver.-V.-f.short1
0f20 2d 62 61 6c 2e 72 65 70 0a 0a 54 68 65 20 2d 56 20 6f 70 74 69 6f 6e 20 70 72 69 6e 74 73 20 6f -bal.rep..The.-V.option.prints.o
0f40 75 74 20 68 65 6c 70 66 75 6c 20 74 72 61 63 69 6e 67 20 61 6e 64 20 73 75 6d 6d 61 72 79 20 69 ut.helpful.tracing.and.summary.i
0f60 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 54 6f 20 67 65 74 20 61 20 6c 69 73 74 20 6f 66 20 74 68 nformation...To.get.a.list.of.th
0f80 65 20 64 72 69 76 65 72 20 66 6c 61 67 73 3a 0a 0a 09 75 6e 69 78 3e 20 6d 64 72 69 76 65 72 20 e.driver.flags:...unix>.mdriver.
0fa0 2d 68 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -h..............................
0fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1000 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 6c 6f 63 6b 2e 63 00 00 00 00 00 00 00 malloclab-handout/clock.c.......
1020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
1080 30 30 31 35 36 34 35 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 35 37 34 00 20 30 00 00 00 0015645.12507032412.014574..0...
10a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
10e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1100 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
1120 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
1140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
11e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1200 2f 2a 20 0a 20 2a 20 63 6c 6f 63 6b 2e 63 20 2d 20 52 6f 75 74 69 6e 65 73 20 66 6f 72 20 75 73 /*...*.clock.c.-.Routines.for.us
1220 69 6e 67 20 74 68 65 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 73 20 6f 6e 20 78 38 36 2c 20 0a ing.the.cycle.counters.on.x86,..
1240 20 2a 20 20 20 20 20 20 20 20 20 20 20 41 6c 70 68 61 2c 20 61 6e 64 20 53 70 61 72 63 20 62 6f .*...........Alpha,.and.Sparc.bo
1260 78 65 73 2e 0a 20 2a 20 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2c 20 xes...*...*.Copyright.(c).2002,.
1280 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 44 2e 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 6c 6c R..Bryant.and.D..O'Hallaron,.All
12a0 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 20 2a 20 4d 61 79 20 6e 6f 74 20 62 65 20 .rights.reserved...*.May.not.be.
12c0 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c 20 6f 72 20 63 6f 70 69 65 64 20 77 69 74 68 6f 75 used,.modified,.or.copied.withou
12e0 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 t.permission...*/..#include.<std
1300 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 io.h>.#include.<stdlib.h>.#inclu
1320 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 74 69 6d 65 de.<unistd.h>.#include.<sys/time
1340 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 22 63 6c 6f 63 6b 2e 68 22 0a 0a 0a 2f 2a 2a 2a 2a 2a s.h>.#include."clock.h".../*****
1360 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
1380 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 0a 20 2a 20 4d 61 63 68 69 6e 65 20 64 ******************...*.Machine.d
13a0 65 70 65 6e 64 65 6e 74 20 66 75 6e 63 74 69 6f 6e 73 20 0a 20 2a 0a 20 2a 20 4e 6f 74 65 3a 20 ependent.functions...*..*.Note:.
13c0 74 68 65 20 63 6f 6e 73 74 61 6e 74 73 20 5f 5f 69 33 38 36 5f 5f 20 61 6e 64 20 20 5f 5f 61 6c the.constants.__i386__.and..__al
13e0 70 68 61 0a 20 2a 20 61 72 65 20 73 65 74 20 62 79 20 47 43 43 20 77 68 65 6e 20 69 74 20 63 61 pha..*.are.set.by.GCC.when.it.ca
1400 6c 6c 73 20 74 68 65 20 43 20 70 72 65 70 72 6f 63 65 73 73 6f 72 0a 20 2a 20 59 6f 75 20 63 61 lls.the.C.preprocessor..*.You.ca
1420 6e 20 76 65 72 69 66 79 20 74 68 69 73 20 66 6f 72 20 79 6f 75 72 73 65 6c 66 20 75 73 69 6e 67 n.verify.this.for.yourself.using
1440 20 67 63 63 20 2d 76 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .gcc.-v...**********************
1460 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
1480 2a 2f 0a 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 20 0a 2f 2a 2a 2a */..#if.defined(__i386__).../***
14a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
14c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 50 65 6e 74 69 75 6d 20 ********************..*.Pentium.
14e0 76 65 72 73 69 6f 6e 73 20 6f 66 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 20 61 6e 64 20 versions.of.start_counter().and.
1500 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a get_counter()..*****************
1520 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
1540 2a 2a 2a 2a 2a 2a 2f 0a 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 78 38 36 63 79 63 6c 65 63 6f 75 6e ******/.../*.$begin.x86cyclecoun
1560 74 65 72 20 2a 2f 0a 2f 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 63 79 63 6c 65 20 63 ter.*/./*.Initialize.the.cycle.c
1580 6f 75 6e 74 65 72 20 2a 2f 0a 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 79 63 5f 68 69 ounter.*/.static.unsigned.cyc_hi
15a0 20 3d 20 30 3b 0a 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 63 79 63 5f 6c 6f 20 3d 20 30 .=.0;.static.unsigned.cyc_lo.=.0
15c0 3b 0a 0a 0a 2f 2a 20 53 65 74 20 2a 68 69 20 61 6e 64 20 2a 6c 6f 20 74 6f 20 74 68 65 20 68 69 ;.../*.Set.*hi.and.*lo.to.the.hi
15e0 67 68 20 61 6e 64 20 6c 6f 77 20 6f 72 64 65 72 20 62 69 74 73 20 20 6f 66 20 74 68 65 20 63 79 gh.and.low.order.bits..of.the.cy
1600 63 6c 65 20 63 6f 75 6e 74 65 72 2e 20 20 0a 20 20 20 49 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e cle.counter.......Implementation
1620 20 72 65 71 75 69 72 65 73 20 61 73 73 65 6d 62 6c 79 20 63 6f 64 65 20 74 6f 20 75 73 65 20 74 .requires.assembly.code.to.use.t
1640 68 65 20 72 64 74 73 63 20 69 6e 73 74 72 75 63 74 69 6f 6e 2e 20 2a 2f 0a 76 6f 69 64 20 61 63 he.rdtsc.instruction..*/.void.ac
1660 63 65 73 73 5f 63 6f 75 6e 74 65 72 28 75 6e 73 69 67 6e 65 64 20 2a 68 69 2c 20 75 6e 73 69 67 cess_counter(unsigned.*hi,.unsig
1680 6e 65 64 20 2a 6c 6f 29 0a 7b 0a 20 20 20 20 61 73 6d 28 22 72 64 74 73 63 3b 20 6d 6f 76 6c 20 ned.*lo).{.....asm("rdtsc;.movl.
16a0 25 25 65 64 78 2c 25 30 3b 20 6d 6f 76 6c 20 25 25 65 61 78 2c 25 31 22 20 20 20 2f 2a 20 52 65 %%edx,%0;.movl.%%eax,%1".../*.Re
16c0 61 64 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 20 2a 2f 0a 09 3a 20 22 3d 72 22 20 28 2a 68 69 ad.cycle.counter.*/..:."=r".(*hi
16e0 29 2c 20 22 3d 72 22 20 28 2a 6c 6f 29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 ),."=r".(*lo)................/*.
1700 61 6e 64 20 6d 6f 76 65 20 72 65 73 75 6c 74 73 20 74 6f 20 2a 2f 0a 09 3a 20 2f 2a 20 4e 6f 20 and.move.results.to.*/..:./*.No.
1720 69 6e 70 75 74 20 2a 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 input.*/........................
1740 2f 2a 20 74 68 65 20 74 77 6f 20 6f 75 74 70 75 74 73 20 2a 2f 0a 09 3a 20 22 25 65 64 78 22 2c /*.the.two.outputs.*/..:."%edx",
1760 20 22 25 65 61 78 22 29 3b 0a 7d 0a 0a 2f 2a 20 52 65 63 6f 72 64 20 74 68 65 20 63 75 72 72 65 ."%eax");.}../*.Record.the.curre
1780 6e 74 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 2e 20 2a nt.value.of.the.cycle.counter..*
17a0 2f 0a 76 6f 69 64 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 0a 7b 0a 20 20 20 20 61 63 63 /.void.start_counter().{.....acc
17c0 65 73 73 5f 63 6f 75 6e 74 65 72 28 26 63 79 63 5f 68 69 2c 20 26 63 79 63 5f 6c 6f 29 3b 0a 7d ess_counter(&cyc_hi,.&cyc_lo);.}
17e0 0a 0a 2f 2a 20 52 65 74 75 72 6e 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 79 63 6c 65 73 ../*.Return.the.number.of.cycles
1800 20 73 69 6e 63 65 20 74 68 65 20 6c 61 73 74 20 63 61 6c 6c 20 74 6f 20 73 74 61 72 74 5f 63 6f .since.the.last.call.to.start_co
1820 75 6e 74 65 72 2e 20 2a 2f 0a 64 6f 75 62 6c 65 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 0a 7b unter..*/.double.get_counter().{
1840 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6e 63 79 63 5f 68 69 2c 20 6e 63 79 63 5f 6c 6f 3b 0a .....unsigned.ncyc_hi,.ncyc_lo;.
1860 20 20 20 20 75 6e 73 69 67 6e 65 64 20 68 69 2c 20 6c 6f 2c 20 62 6f 72 72 6f 77 3b 0a 20 20 20 ....unsigned.hi,.lo,.borrow;....
1880 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 3b 0a 0a 20 20 20 20 2f 2a 20 47 65 74 20 63 79 63 6c .double.result;....../*.Get.cycl
18a0 65 20 63 6f 75 6e 74 65 72 20 2a 2f 0a 20 20 20 20 61 63 63 65 73 73 5f 63 6f 75 6e 74 65 72 28 e.counter.*/.....access_counter(
18c0 26 6e 63 79 63 5f 68 69 2c 20 26 6e 63 79 63 5f 6c 6f 29 3b 0a 0a 20 20 20 20 2f 2a 20 44 6f 20 &ncyc_hi,.&ncyc_lo);....../*.Do.
18e0 64 6f 75 62 6c 65 20 70 72 65 63 69 73 69 6f 6e 20 73 75 62 74 72 61 63 74 69 6f 6e 20 2a 2f 0a double.precision.subtraction.*/.
1900 20 20 20 20 6c 6f 20 3d 20 6e 63 79 63 5f 6c 6f 20 2d 20 63 79 63 5f 6c 6f 3b 0a 20 20 20 20 62 ....lo.=.ncyc_lo.-.cyc_lo;.....b
1920 6f 72 72 6f 77 20 3d 20 6c 6f 20 3e 20 6e 63 79 63 5f 6c 6f 3b 0a 20 20 20 20 68 69 20 3d 20 6e orrow.=.lo.>.ncyc_lo;.....hi.=.n
1940 63 79 63 5f 68 69 20 2d 20 63 79 63 5f 68 69 20 2d 20 62 6f 72 72 6f 77 3b 0a 20 20 20 20 72 65 cyc_hi.-.cyc_hi.-.borrow;.....re
1960 73 75 6c 74 20 3d 20 28 64 6f 75 62 6c 65 29 20 68 69 20 2a 20 28 31 20 3c 3c 20 33 30 29 20 2a sult.=.(double).hi.*.(1.<<.30).*
1980 20 34 20 2b 20 6c 6f 3b 0a 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 3c 20 30 29 20 7b 0a 09 .4.+.lo;.....if.(result.<.0).{..
19a0 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 45 72 72 6f 72 3a 20 63 6f 75 6e 74 65 72 20 fprintf(stderr,."Error:.counter.
19c0 72 65 74 75 72 6e 73 20 6e 65 67 20 76 61 6c 75 65 3a 20 25 2e 30 66 5c 6e 22 2c 20 72 65 73 75 returns.neg.value:.%.0f\n",.resu
19e0 6c 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a lt);.....}.....return.result;.}.
1a00 2f 2a 20 24 65 6e 64 20 78 38 36 63 79 63 6c 65 63 6f 75 6e 74 65 72 20 2a 2f 0a 0a 23 65 6c 69 /*.$end.x86cyclecounter.*/..#eli
1a20 66 20 64 65 66 69 6e 65 64 28 5f 5f 61 6c 70 68 61 29 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a f.defined(__alpha)../***********
1a40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
1a60 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 41 6c 70 68 61 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 73 *********..*.Alpha.versions.of.s
1a80 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 20 61 6e 64 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 tart_counter().and.get_counter()
1aa0 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ..******************************
1ac0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 49 6e 69 74 69 *********************/../*.Initi
1ae0 61 6c 69 7a 65 20 74 68 65 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 20 2a 2f 0a 73 74 61 74 69 alize.the.cycle.counter.*/.stati
1b00 63 20 75 6e 73 69 67 6e 65 64 20 63 79 63 5f 68 69 20 3d 20 30 3b 0a 73 74 61 74 69 63 20 75 6e c.unsigned.cyc_hi.=.0;.static.un
1b20 73 69 67 6e 65 64 20 63 79 63 5f 6c 6f 20 3d 20 30 3b 0a 0a 0a 2f 2a 20 55 73 65 20 41 6c 70 68 signed.cyc_lo.=.0;.../*.Use.Alph
1b40 61 20 63 79 63 6c 65 20 74 69 6d 65 72 20 74 6f 20 63 6f 6d 70 75 74 65 20 63 79 63 6c 65 73 2e a.cycle.timer.to.compute.cycles.
1b60 20 20 54 68 65 6e 20 75 73 65 0a 20 20 20 6d 65 61 73 75 72 65 64 20 63 6c 6f 63 6b 20 73 70 65 ..Then.use....measured.clock.spe
1b80 65 64 20 74 6f 20 63 6f 6d 70 75 74 65 20 73 65 63 6f 6e 64 73 20 0a 2a 2f 0a 0a 2f 2a 0a 20 2a ed.to.compute.seconds..*/../*..*
1ba0 20 63 6f 75 6e 74 65 72 52 6f 75 74 69 6e 65 20 69 73 20 61 6e 20 61 72 72 61 79 20 6f 66 20 41 .counterRoutine.is.an.array.of.A
1bc0 6c 70 68 61 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 74 6f 20 61 63 63 65 73 73 20 0a 20 2a 20 lpha.instructions.to.access...*.
1be0 74 68 65 20 41 6c 70 68 61 27 73 20 70 72 6f 63 65 73 73 6f 72 20 63 79 63 6c 65 20 63 6f 75 6e the.Alpha's.processor.cycle.coun
1c00 74 65 72 2e 20 49 74 20 75 73 65 73 20 74 68 65 20 72 70 63 63 20 0a 20 2a 20 69 6e 73 74 72 75 ter..It.uses.the.rpcc...*.instru
1c20 63 74 69 6f 6e 20 74 6f 20 61 63 63 65 73 73 20 74 68 65 20 63 6f 75 6e 74 65 72 2e 20 54 68 69 ction.to.access.the.counter..Thi
1c40 73 20 36 34 20 62 69 74 20 72 65 67 69 73 74 65 72 20 69 73 20 0a 20 2a 20 64 69 76 69 64 65 64 s.64.bit.register.is...*.divided
1c60 20 69 6e 74 6f 20 74 77 6f 20 70 61 72 74 73 2e 20 54 68 65 20 6c 6f 77 65 72 20 33 32 20 62 69 .into.two.parts..The.lower.32.bi
1c80 74 73 20 61 72 65 20 74 68 65 20 63 79 63 6c 65 73 20 0a 20 2a 20 75 73 65 64 20 62 79 20 74 68 ts.are.the.cycles...*.used.by.th
1ca0 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 2e 20 54 68 65 20 75 70 70 65 72 20 33 32 20 e.current.process..The.upper.32.
1cc0 62 69 74 73 20 61 72 65 20 77 61 6c 6c 20 0a 20 2a 20 63 6c 6f 63 6b 20 63 79 63 6c 65 73 2e 20 bits.are.wall...*.clock.cycles..
1ce0 54 68 65 73 65 20 69 6e 73 74 72 75 63 74 69 6f 6e 73 20 72 65 61 64 20 74 68 65 20 63 6f 75 6e These.instructions.read.the.coun
1d00 74 65 72 2c 20 61 6e 64 20 0a 20 2a 20 63 6f 6e 76 65 72 74 20 74 68 65 20 6c 6f 77 65 72 20 33 ter,.and...*.convert.the.lower.3
1d20 32 20 62 69 74 73 20 69 6e 74 6f 20 61 6e 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 2d 20 74 68 2.bits.into.an.unsigned.int.-.th
1d40 69 73 20 69 73 20 74 68 65 20 0a 20 2a 20 75 73 65 72 20 73 70 61 63 65 20 63 6f 75 6e 74 65 72 is.is.the...*.user.space.counter
1d60 20 76 61 6c 75 65 2e 0a 20 2a 20 4e 4f 54 45 3a 20 54 68 65 20 63 6f 75 6e 74 65 72 20 68 61 73 .value...*.NOTE:.The.counter.has
1d80 20 61 20 76 65 72 79 20 6c 69 6d 69 74 65 64 20 74 69 6d 65 20 73 70 61 6e 2e 20 57 69 74 68 20 .a.very.limited.time.span..With.
1da0 61 20 0a 20 2a 20 34 35 30 4d 68 5a 20 63 6c 6f 63 6b 20 74 68 65 20 63 6f 75 6e 74 65 72 20 63 a...*.450MhZ.clock.the.counter.c
1dc0 61 6e 20 74 69 6d 65 20 74 68 69 6e 67 73 20 66 6f 72 20 61 62 6f 75 74 20 39 20 0a 20 2a 20 73 an.time.things.for.about.9...*.s
1de0 65 63 6f 6e 64 73 2e 20 2a 2f 0a 73 74 61 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 63 econds..*/.static.unsigned.int.c
1e00 6f 75 6e 74 65 72 52 6f 75 74 69 6e 65 5b 5d 20 3d 0a 7b 0a 20 20 20 20 30 78 36 30 31 66 63 30 ounterRoutine[].=.{.....0x601fc0
1e20 30 30 75 2c 0a 20 20 20 20 30 78 34 30 31 66 30 30 30 30 75 2c 0a 20 20 20 20 30 78 36 62 66 61 00u,.....0x401f0000u,.....0x6bfa
1e40 38 30 30 31 75 0a 7d 3b 0a 0a 2f 2a 20 43 61 73 74 20 74 68 65 20 61 62 6f 76 65 20 69 6e 73 74 8001u.};../*.Cast.the.above.inst
1e60 72 75 63 74 69 6f 6e 73 20 69 6e 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 2e 20 2a 2f 0a 73 74 61 ructions.into.a.function..*/.sta
1e80 74 69 63 20 75 6e 73 69 67 6e 65 64 20 69 6e 74 20 28 2a 63 6f 75 6e 74 65 72 29 28 76 6f 69 64 tic.unsigned.int.(*counter)(void
1ea0 29 3d 20 28 76 6f 69 64 20 2a 29 63 6f 75 6e 74 65 72 52 6f 75 74 69 6e 65 3b 0a 0a 0a 76 6f 69 )=.(void.*)counterRoutine;...voi
1ec0 64 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 0a 7b 0a 20 20 20 20 2f 2a 20 47 65 74 20 63 d.start_counter().{...../*.Get.c
1ee0 79 63 6c 65 20 63 6f 75 6e 74 65 72 20 2a 2f 0a 20 20 20 20 63 79 63 5f 68 69 20 3d 20 30 3b 0a ycle.counter.*/.....cyc_hi.=.0;.
1f00 20 20 20 20 63 79 63 5f 6c 6f 20 3d 20 63 6f 75 6e 74 65 72 28 29 3b 0a 7d 0a 0a 64 6f 75 62 6c ....cyc_lo.=.counter();.}..doubl
1f20 65 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 0a 7b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6e e.get_counter().{.....unsigned.n
1f40 63 79 63 5f 68 69 2c 20 6e 63 79 63 5f 6c 6f 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 68 69 cyc_hi,.ncyc_lo;.....unsigned.hi
1f60 2c 20 6c 6f 2c 20 62 6f 72 72 6f 77 3b 0a 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 3b ,.lo,.borrow;.....double.result;
1f80 0a 20 20 20 20 6e 63 79 63 5f 6c 6f 20 3d 20 63 6f 75 6e 74 65 72 28 29 3b 0a 20 20 20 20 6e 63 .....ncyc_lo.=.counter();.....nc
1fa0 79 63 5f 68 69 20 3d 20 30 3b 0a 20 20 20 20 6c 6f 20 3d 20 6e 63 79 63 5f 6c 6f 20 2d 20 63 79 yc_hi.=.0;.....lo.=.ncyc_lo.-.cy
1fc0 63 5f 6c 6f 3b 0a 20 20 20 20 62 6f 72 72 6f 77 20 3d 20 6c 6f 20 3e 20 6e 63 79 63 5f 6c 6f 3b c_lo;.....borrow.=.lo.>.ncyc_lo;
1fe0 0a 20 20 20 20 68 69 20 3d 20 6e 63 79 63 5f 68 69 20 2d 20 63 79 63 5f 68 69 20 2d 20 62 6f 72 .....hi.=.ncyc_hi.-.cyc_hi.-.bor
2000 72 6f 77 3b 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20 28 64 6f 75 62 6c 65 29 20 68 69 20 2a 20 row;.....result.=.(double).hi.*.
2020 28 31 20 3c 3c 20 33 30 29 20 2a 20 34 20 2b 20 6c 6f 3b 0a 20 20 20 20 69 66 20 28 72 65 73 75 (1.<<.30).*.4.+.lo;.....if.(resu
2040 6c 74 20 3c 20 30 29 20 7b 0a 09 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 45 72 72 6f lt.<.0).{..fprintf(stderr,."Erro
2060 72 3a 20 43 79 63 6c 65 20 63 6f 75 6e 74 65 72 20 72 65 74 75 72 6e 69 6e 67 20 6e 65 67 61 74 r:.Cycle.counter.returning.negat
2080 69 76 65 20 76 61 6c 75 65 3a 20 25 2e 30 66 5c 6e 22 2c 20 72 65 73 75 6c 74 29 3b 0a 20 20 20 ive.value:.%.0f\n",.result);....
20a0 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 7d 0a 0a 23 65 6c 73 65 0a 0a .}.....return.result;.}..#else..
20c0 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /*******************************
20e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
2100 2a 0a 20 2a 20 41 6c 6c 20 74 68 65 20 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d 73 20 66 6f 72 *..*.All.the.other.platforms.for
2120 20 77 68 69 63 68 20 77 65 20 68 61 76 65 6e 27 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 20 63 79 .which.we.haven't.implemented.cy
2140 63 6c 65 0a 20 2a 20 63 6f 75 6e 74 65 72 20 72 6f 75 74 69 6e 65 73 2e 20 4e 65 77 65 72 20 6d cle..*.counter.routines..Newer.m
2160 6f 64 65 6c 73 20 6f 66 20 73 70 61 72 63 73 20 28 76 38 70 6c 75 73 29 20 68 61 76 65 20 63 79 odels.of.sparcs.(v8plus).have.cy
2180 63 6c 65 0a 20 2a 20 63 6f 75 6e 74 65 72 73 20 74 68 61 74 20 63 61 6e 20 62 65 20 61 63 63 65 cle..*.counters.that.can.be.acce
21a0 73 73 65 64 20 66 72 6f 6d 20 75 73 65 72 20 70 72 6f 67 72 61 6d 73 2c 20 62 75 74 20 73 69 6e ssed.from.user.programs,.but.sin
21c0 63 65 20 74 68 65 72 65 0a 20 2a 20 61 72 65 20 73 74 69 6c 6c 20 6d 61 6e 79 20 73 70 61 72 63 ce.there..*.are.still.many.sparc
21e0 20 62 6f 78 65 73 20 6f 75 74 20 74 68 65 72 65 20 74 68 61 74 20 64 6f 6e 27 74 20 73 75 70 70 .boxes.out.there.that.don't.supp
2200 6f 72 74 20 74 68 69 73 2c 20 77 65 0a 20 2a 20 68 61 76 65 6e 27 74 20 70 72 6f 76 69 64 65 64 ort.this,.we..*.haven't.provided
2220 20 61 20 53 70 61 72 63 20 76 65 72 73 69 6f 6e 20 68 65 72 65 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a .a.Sparc.version.here...********
2240 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
2260 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 76 6f 69 64 20 73 ***********************/..void.s
2280 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 0a 7b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 45 52 52 tart_counter().{.....printf("ERR
22a0 4f 52 3a 20 59 6f 75 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 75 73 65 20 61 20 73 74 61 72 OR:.You.are.trying.to.use.a.star
22c0 74 5f 63 6f 75 6e 74 65 72 20 72 6f 75 74 69 6e 65 20 69 6e 20 63 6c 6f 63 6b 2e 63 5c 6e 22 29 t_counter.routine.in.clock.c\n")
22e0 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 74 68 61 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 ;.....printf("that.has.not.been.
2300 69 6d 70 6c 65 6d 65 6e 74 65 64 20 79 65 74 20 6f 6e 20 74 68 69 73 20 70 6c 61 74 66 6f 72 6d implemented.yet.on.this.platform
2320 2e 5c 6e 22 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 50 6c 65 61 73 65 20 63 68 6f 6f 73 65 .\n");.....printf("Please.choose
2340 20 61 6e 6f 74 68 65 72 20 74 69 6d 69 6e 67 20 70 61 63 6b 61 67 65 20 69 6e 20 63 6f 6e 66 69 .another.timing.package.in.confi
2360 67 2e 68 2e 5c 6e 22 29 3b 0a 20 20 20 20 65 78 69 74 28 31 29 3b 0a 7d 0a 0a 64 6f 75 62 6c 65 g.h.\n");.....exit(1);.}..double
2380 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 20 0a 7b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 45 52 .get_counter()..{.....printf("ER
23a0 52 4f 52 3a 20 59 6f 75 20 61 72 65 20 74 72 79 69 6e 67 20 74 6f 20 75 73 65 20 61 20 67 65 74 ROR:.You.are.trying.to.use.a.get
23c0 5f 63 6f 75 6e 74 65 72 20 72 6f 75 74 69 6e 65 20 69 6e 20 63 6c 6f 63 6b 2e 63 5c 6e 22 29 3b _counter.routine.in.clock.c\n");
23e0 0a 20 20 20 20 70 72 69 6e 74 66 28 22 74 68 61 74 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 69 .....printf("that.has.not.been.i
2400 6d 70 6c 65 6d 65 6e 74 65 64 20 79 65 74 20 6f 6e 20 74 68 69 73 20 70 6c 61 74 66 6f 72 6d 2e mplemented.yet.on.this.platform.
2420 5c 6e 22 29 3b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 50 6c 65 61 73 65 20 63 68 6f 6f 73 65 20 \n");.....printf("Please.choose.
2440 61 6e 6f 74 68 65 72 20 74 69 6d 69 6e 67 20 70 61 63 6b 61 67 65 20 69 6e 20 63 6f 6e 66 69 67 another.timing.package.in.config
2460 2e 68 2e 5c 6e 22 29 3b 0a 20 20 20 20 65 78 69 74 28 31 29 3b 0a 7d 0a 23 65 6e 64 69 66 0a 0a .h.\n");.....exit(1);.}.#endif..
2480 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .../****************************
24a0 2a 2a 2a 0a 20 2a 20 4d 61 63 68 69 6e 65 2d 69 6e 64 65 70 65 6e 64 65 6e 74 20 66 75 6e 63 74 ***..*.Machine-independent.funct
24c0 69 6f 6e 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ions..**************************
24e0 2a 2a 2a 2a 2f 0a 64 6f 75 62 6c 65 20 6f 76 68 64 28 29 0a 7b 0a 20 20 20 20 2f 2a 20 44 6f 20 ****/.double.ovhd().{...../*.Do.
2500 69 74 20 74 77 69 63 65 20 74 6f 20 65 6c 69 6d 69 6e 61 74 65 20 63 61 63 68 65 20 65 66 66 65 it.twice.to.eliminate.cache.effe
2520 63 74 73 20 2a 2f 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 cts.*/.....int.i;.....double.res
2540 75 6c 74 3b 0a 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 32 3b 20 69 2b 2b ult;......for.(i.=.0;.i.<.2;.i++
2560 29 20 7b 0a 09 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 09 72 65 73 75 6c 74 20 3d 20 ).{..start_counter();..result.=.
2580 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 72 65 74 75 72 6e 20 get_counter();.....}.....return.
25a0 72 65 73 75 6c 74 3b 0a 7d 0a 0a 2f 2a 20 24 62 65 67 69 6e 20 6d 68 7a 20 2a 2f 0a 2f 2a 20 45 result;.}../*.$begin.mhz.*/./*.E
25c0 73 74 69 6d 61 74 65 20 74 68 65 20 63 6c 6f 63 6b 20 72 61 74 65 20 62 79 20 6d 65 61 73 75 72 stimate.the.clock.rate.by.measur
25e0 69 6e 67 20 74 68 65 20 63 79 63 6c 65 73 20 74 68 61 74 20 65 6c 61 70 73 65 20 2a 2f 20 0a 2f ing.the.cycles.that.elapse.*/../
2600 2a 20 77 68 69 6c 65 20 73 6c 65 65 70 69 6e 67 20 66 6f 72 20 73 6c 65 65 70 74 69 6d 65 20 73 *.while.sleeping.for.sleeptime.s
2620 65 63 6f 6e 64 73 20 2a 2f 0a 64 6f 75 62 6c 65 20 6d 68 7a 5f 66 75 6c 6c 28 69 6e 74 20 76 65 econds.*/.double.mhz_full(int.ve
2640 72 62 6f 73 65 2c 20 69 6e 74 20 73 6c 65 65 70 74 69 6d 65 29 0a 7b 0a 20 20 20 20 64 6f 75 62 rbose,.int.sleeptime).{.....doub
2660 6c 65 20 72 61 74 65 3b 0a 0a 20 20 20 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 20 le.rate;......start_counter();..
2680 20 20 20 73 6c 65 65 70 28 73 6c 65 65 70 74 69 6d 65 29 3b 0a 20 20 20 20 72 61 74 65 20 3d 20 ...sleep(sleeptime);.....rate.=.
26a0 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 20 2f 20 28 31 65 36 2a 73 6c 65 65 70 74 69 6d 65 29 3b get_counter()./.(1e6*sleeptime);
26c0 0a 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 20 0a 09 70 72 69 6e 74 66 28 22 50 72 6f 63 .....if.(verbose)...printf("Proc
26e0 65 73 73 6f 72 20 63 6c 6f 63 6b 20 72 61 74 65 20 7e 3d 20 25 2e 31 66 20 4d 48 7a 5c 6e 22 2c essor.clock.rate.~=.%.1f.MHz\n",
2700 20 72 61 74 65 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 72 61 74 65 3b 0a 7d 0a 2f 2a 20 24 65 .rate);.....return.rate;.}./*.$e
2720 6e 64 20 6d 68 7a 20 2a 2f 0a 0a 2f 2a 20 56 65 72 73 69 6f 6e 20 75 73 69 6e 67 20 61 20 64 65 nd.mhz.*/../*.Version.using.a.de
2740 66 61 75 6c 74 20 73 6c 65 65 70 74 69 6d 65 20 2a 2f 0a 64 6f 75 62 6c 65 20 6d 68 7a 28 69 6e fault.sleeptime.*/.double.mhz(in
2760 74 20 76 65 72 62 6f 73 65 29 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 6d 68 7a 5f 66 75 6c 6c t.verbose).{.....return.mhz_full
2780 28 76 65 72 62 6f 73 65 2c 20 32 29 3b 0a 7d 0a 0a 2f 2a 2a 20 53 70 65 63 69 61 6c 20 63 6f 75 (verbose,.2);.}../**.Special.cou
27a0 6e 74 65 72 73 20 74 68 61 74 20 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 74 69 6d 65 72 20 nters.that.compensate.for.timer.
27c0 69 6e 74 65 72 72 75 70 74 20 6f 76 65 72 68 65 61 64 20 2a 2f 0a 0a 73 74 61 74 69 63 20 64 6f interrupt.overhead.*/..static.do
27e0 75 62 6c 65 20 63 79 63 5f 70 65 72 5f 74 69 63 6b 20 3d 20 30 2e 30 3b 0a 0a 23 64 65 66 69 6e uble.cyc_per_tick.=.0.0;..#defin
2800 65 20 4e 45 56 45 4e 54 20 31 30 30 0a 23 64 65 66 69 6e 65 20 54 48 52 45 53 48 4f 4c 44 20 31 e.NEVENT.100.#define.THRESHOLD.1
2820 30 30 30 0a 23 64 65 66 69 6e 65 20 52 45 43 4f 52 44 54 48 52 45 53 48 20 33 30 30 30 0a 0a 2f 000.#define.RECORDTHRESH.3000../
2840 2a 20 41 74 74 65 6d 70 74 20 74 6f 20 73 65 65 20 68 6f 77 20 6d 75 63 68 20 74 69 6d 65 20 69 *.Attempt.to.see.how.much.time.i
2860 73 20 75 73 65 64 20 62 79 20 74 69 6d 65 72 20 69 6e 74 65 72 72 75 70 74 20 2a 2f 0a 73 74 61 s.used.by.timer.interrupt.*/.sta
2880 74 69 63 20 76 6f 69 64 20 63 61 6c 6c 69 62 72 61 74 65 28 69 6e 74 20 76 65 72 62 6f 73 65 29 tic.void.callibrate(int.verbose)
28a0 0a 7b 0a 20 20 20 20 64 6f 75 62 6c 65 20 6f 6c 64 74 3b 0a 20 20 20 20 73 74 72 75 63 74 20 74 .{.....double.oldt;.....struct.t
28c0 6d 73 20 74 3b 0a 20 20 20 20 63 6c 6f 63 6b 5f 74 20 6f 6c 64 63 3b 0a 20 20 20 20 69 6e 74 20 ms.t;.....clock_t.oldc;.....int.
28e0 65 20 3d 20 30 3b 0a 0a 20 20 20 20 74 69 6d 65 73 28 26 74 29 3b 0a 20 20 20 20 6f 6c 64 63 20 e.=.0;......times(&t);.....oldc.
2900 3d 20 74 2e 74 6d 73 5f 75 74 69 6d 65 3b 0a 20 20 20 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 =.t.tms_utime;.....start_counter
2920 28 29 3b 0a 20 20 20 20 6f 6c 64 74 20 3d 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 20 20 ();.....oldt.=.get_counter();...
2940 20 20 77 68 69 6c 65 20 28 65 20 3c 4e 45 56 45 4e 54 29 20 7b 0a 09 64 6f 75 62 6c 65 20 6e 65 ..while.(e.<NEVENT).{..double.ne
2960 77 74 20 3d 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 0a 09 69 66 20 28 6e 65 77 74 2d 6f wt.=.get_counter();...if.(newt-o
2980 6c 64 74 20 3e 3d 20 54 48 52 45 53 48 4f 4c 44 29 20 7b 0a 09 20 20 20 20 63 6c 6f 63 6b 5f 74 ldt.>=.THRESHOLD).{......clock_t
29a0 20 6e 65 77 63 3b 0a 09 20 20 20 20 74 69 6d 65 73 28 26 74 29 3b 0a 09 20 20 20 20 6e 65 77 63 .newc;......times(&t);......newc
29c0 20 3d 20 74 2e 74 6d 73 5f 75 74 69 6d 65 3b 0a 09 20 20 20 20 69 66 20 28 6e 65 77 63 20 3e 20 .=.t.tms_utime;......if.(newc.>.
29e0 6f 6c 64 63 29 20 7b 0a 09 09 64 6f 75 62 6c 65 20 63 70 74 20 3d 20 28 6e 65 77 74 2d 6f 6c 64 oldc).{...double.cpt.=.(newt-old
2a00 74 29 2f 28 6e 65 77 63 2d 6f 6c 64 63 29 3b 0a 09 09 69 66 20 28 28 63 79 63 5f 70 65 72 5f 74 t)/(newc-oldc);...if.((cyc_per_t
2a20 69 63 6b 20 3d 3d 20 30 2e 30 20 7c 7c 20 63 79 63 5f 70 65 72 5f 74 69 63 6b 20 3e 20 63 70 74 ick.==.0.0.||.cyc_per_tick.>.cpt
2a40 29 20 26 26 20 63 70 74 20 3e 20 52 45 43 4f 52 44 54 48 52 45 53 48 29 0a 09 09 20 20 20 20 63 ).&&.cpt.>.RECORDTHRESH).......c
2a60 79 63 5f 70 65 72 5f 74 69 63 6b 20 3d 20 63 70 74 3b 0a 09 09 2f 2a 0a 09 09 20 20 69 66 20 28 yc_per_tick.=.cpt;.../*.....if.(
2a80 76 65 72 62 6f 73 65 29 0a 09 09 20 20 70 72 69 6e 74 66 28 22 53 61 77 20 65 76 65 6e 74 20 6c verbose).....printf("Saw.event.l
2aa0 61 73 74 69 6e 67 20 25 2e 30 66 20 63 79 63 6c 65 73 20 61 6e 64 20 25 64 20 74 69 63 6b 73 2e asting.%.0f.cycles.and.%d.ticks.
2ac0 20 20 52 61 74 69 6f 20 3d 20 25 66 5c 6e 22 2c 0a 09 09 20 20 6e 65 77 74 2d 6f 6c 64 74 2c 20 ..Ratio.=.%f\n",.....newt-oldt,.
2ae0 28 69 6e 74 29 20 28 6e 65 77 63 2d 6f 6c 64 63 29 2c 20 63 70 74 29 3b 0a 09 09 2a 2f 0a 09 09 (int).(newc-oldc),.cpt);...*/...
2b00 65 2b 2b 3b 0a 09 09 6f 6c 64 63 20 3d 20 6e 65 77 63 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 e++;...oldc.=.newc;......}......
2b20 6f 6c 64 74 20 3d 20 6e 65 77 74 3b 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 69 66 20 28 76 65 oldt.=.newt;..}.....}.....if.(ve
2b40 72 62 6f 73 65 29 0a 09 70 72 69 6e 74 66 28 22 53 65 74 74 69 6e 67 20 63 79 63 5f 70 65 72 5f rbose)..printf("Setting.cyc_per_
2b60 74 69 63 6b 20 74 6f 20 25 66 5c 6e 22 2c 20 63 79 63 5f 70 65 72 5f 74 69 63 6b 29 3b 0a 7d 0a tick.to.%f\n",.cyc_per_tick);.}.
2b80 0a 73 74 61 74 69 63 20 63 6c 6f 63 6b 5f 74 20 73 74 61 72 74 5f 74 69 63 6b 20 3d 20 30 3b 0a .static.clock_t.start_tick.=.0;.
2ba0 0a 76 6f 69 64 20 73 74 61 72 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 20 0a 7b 0a 20 20 .void.start_comp_counter()..{...
2bc0 20 20 73 74 72 75 63 74 20 74 6d 73 20 74 3b 0a 0a 20 20 20 20 69 66 20 28 63 79 63 5f 70 65 72 ..struct.tms.t;......if.(cyc_per
2be0 5f 74 69 63 6b 20 3d 3d 20 30 2e 30 29 0a 09 63 61 6c 6c 69 62 72 61 74 65 28 30 29 3b 0a 20 20 _tick.==.0.0)..callibrate(0);...
2c00 20 20 74 69 6d 65 73 28 26 74 29 3b 0a 20 20 20 20 73 74 61 72 74 5f 74 69 63 6b 20 3d 20 74 2e ..times(&t);.....start_tick.=.t.
2c20 74 6d 73 5f 75 74 69 6d 65 3b 0a 20 20 20 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a tms_utime;.....start_counter();.
2c40 7d 0a 0a 64 6f 75 62 6c 65 20 67 65 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 20 0a 7b 0a }..double.get_comp_counter()..{.
2c60 20 20 20 20 64 6f 75 62 6c 65 20 74 69 6d 65 20 3d 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b ....double.time.=.get_counter();
2c80 0a 20 20 20 20 64 6f 75 62 6c 65 20 63 74 69 6d 65 3b 0a 20 20 20 20 73 74 72 75 63 74 20 74 6d .....double.ctime;.....struct.tm
2ca0 73 20 74 3b 0a 20 20 20 20 63 6c 6f 63 6b 5f 74 20 74 69 63 6b 73 3b 0a 0a 20 20 20 20 74 69 6d s.t;.....clock_t.ticks;......tim
2cc0 65 73 28 26 74 29 3b 0a 20 20 20 20 74 69 63 6b 73 20 3d 20 74 2e 74 6d 73 5f 75 74 69 6d 65 20 es(&t);.....ticks.=.t.tms_utime.
2ce0 2d 20 73 74 61 72 74 5f 74 69 63 6b 3b 0a 20 20 20 20 63 74 69 6d 65 20 3d 20 74 69 6d 65 20 2d -.start_tick;.....ctime.=.time.-
2d00 20 74 69 63 6b 73 2a 63 79 63 5f 70 65 72 5f 74 69 63 6b 3b 0a 20 20 20 20 2f 2a 0a 20 20 20 20 .ticks*cyc_per_tick;...../*.....
2d20 20 20 70 72 69 6e 74 66 28 22 4d 65 61 73 75 72 65 64 20 25 2e 30 66 20 63 79 63 6c 65 73 2e 20 ..printf("Measured.%.0f.cycles..
2d40 20 54 69 63 6b 73 20 3d 20 25 64 2e 20 20 43 6f 72 72 65 63 74 65 64 20 25 2e 30 66 20 63 79 63 .Ticks.=.%d...Corrected.%.0f.cyc
2d60 6c 65 73 5c 6e 22 2c 0a 20 20 20 20 20 20 74 69 6d 65 2c 20 28 69 6e 74 29 20 74 69 63 6b 73 2c les\n",.......time,.(int).ticks,
2d80 20 63 74 69 6d 65 29 3b 0a 20 20 20 20 2a 2f 0a 20 20 20 20 72 65 74 75 72 6e 20 63 74 69 6d 65 .ctime);.....*/.....return.ctime
2da0 3b 0a 7d 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ;.}.............................
2dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 6c 6f 63 6b 2e 68 00 00 00 00 00 00 00 malloclab-handout/clock.h.......
2e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
2e80 30 30 30 31 30 33 36 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 35 36 36 00 20 30 00 00 00 0001036.12507032412.014566..0...
2ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
2f20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
2f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3000 2f 2a 20 52 6f 75 74 69 6e 65 73 20 66 6f 72 20 75 73 69 6e 67 20 63 79 63 6c 65 20 63 6f 75 6e /*.Routines.for.using.cycle.coun
3020 74 65 72 20 2a 2f 0a 0a 2f 2a 20 53 74 61 72 74 20 74 68 65 20 63 6f 75 6e 74 65 72 20 2a 2f 0a ter.*/../*.Start.the.counter.*/.
3040 76 6f 69 64 20 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 0a 2f 2a 20 47 65 74 20 23 20 void.start_counter();../*.Get.#.
3060 63 79 63 6c 65 73 20 73 69 6e 63 65 20 63 6f 75 6e 74 65 72 20 73 74 61 72 74 65 64 20 2a 2f 0a cycles.since.counter.started.*/.
3080 64 6f 75 62 6c 65 20 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 0a 2f 2a 20 4d 65 61 73 75 72 double.get_counter();../*.Measur
30a0 65 20 6f 76 65 72 68 65 61 64 20 66 6f 72 20 63 6f 75 6e 74 65 72 20 2a 2f 0a 64 6f 75 62 6c 65 e.overhead.for.counter.*/.double
30c0 20 6f 76 68 64 28 29 3b 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 20 63 6c 6f 63 6b 20 72 61 74 .ovhd();../*.Determine.clock.rat
30e0 65 20 6f 66 20 70 72 6f 63 65 73 73 6f 72 20 28 75 73 69 6e 67 20 61 20 64 65 66 61 75 6c 74 20 e.of.processor.(using.a.default.
3100 73 6c 65 65 70 74 69 6d 65 29 20 2a 2f 0a 64 6f 75 62 6c 65 20 6d 68 7a 28 69 6e 74 20 76 65 72 sleeptime).*/.double.mhz(int.ver
3120 62 6f 73 65 29 3b 0a 0a 2f 2a 20 44 65 74 65 72 6d 69 6e 65 20 63 6c 6f 63 6b 20 72 61 74 65 20 bose);../*.Determine.clock.rate.
3140 6f 66 20 70 72 6f 63 65 73 73 6f 72 2c 20 68 61 76 69 6e 67 20 6d 6f 72 65 20 63 6f 6e 74 72 6f of.processor,.having.more.contro
3160 6c 20 6f 76 65 72 20 61 63 63 75 72 61 63 79 20 2a 2f 0a 64 6f 75 62 6c 65 20 6d 68 7a 5f 66 75 l.over.accuracy.*/.double.mhz_fu
3180 6c 6c 28 69 6e 74 20 76 65 72 62 6f 73 65 2c 20 69 6e 74 20 73 6c 65 65 70 74 69 6d 65 29 3b 0a ll(int.verbose,.int.sleeptime);.
31a0 0a 2f 2a 2a 20 53 70 65 63 69 61 6c 20 63 6f 75 6e 74 65 72 73 20 74 68 61 74 20 63 6f 6d 70 65 ./**.Special.counters.that.compe
31c0 6e 73 61 74 65 20 66 6f 72 20 74 69 6d 65 72 20 69 6e 74 65 72 72 75 70 74 20 6f 76 65 72 68 65 nsate.for.timer.interrupt.overhe
31e0 61 64 20 2a 2f 0a 0a 76 6f 69 64 20 73 74 61 72 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 ad.*/..void.start_comp_counter()
3200 3b 0a 0a 64 6f 75 62 6c 65 20 67 65 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 00 00 ;..double.get_comp_counter();...
3220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
32e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
33e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3400 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 6c 6f 63 6b 2e 6f 00 00 00 00 00 00 00 malloclab-handout/clock.o.......
3420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3460 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
3480 30 30 30 35 36 37 30 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 36 30 35 00 20 30 00 00 00 0005670.12507032412.014605..0...
34a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
34e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3500 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
3520 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
3540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
35e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3600 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 .ELF............................
3620 8c 05 00 00 00 00 00 00 34 00 00 00 00 00 28 00 0e 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 ........4.....(.................
3640 53 0f 31 89 d3 89 c1 8b 44 24 08 89 18 8b 44 24 0c 89 08 5b c3 8d 74 26 00 8d bc 27 00 00 00 00 S.1.....D$....D$...[..t&...'....
3660 53 0f 31 89 d3 89 c1 89 1d 14 00 00 00 89 0d 10 00 00 00 5b c3 8d 74 26 00 8d bc 27 00 00 00 00 S.1................[..t&...'....
3680 53 83 ec 38 0f 31 89 d1 89 c3 31 d2 89 d8 2b 0d 14 00 00 00 2b 05 10 00 00 00 0f 92 c2 31 db 29 S..8.1....1...+.....+........1.)
36a0 d1 31 d2 89 4c 24 28 89 5c 24 2c df 6c 24 28 d8 0d 00 00 00 00 89 44 24 28 89 54 24 2c d8 0d 04 .1..L$(.\$,.l$(.......D$(.T$,...
36c0 00 00 00 df 6c 24 28 de c1 d9 ee df e9 77 09 83 c4 38 5b c3 8d 74 26 00 a1 00 00 00 00 dd 54 24 ....l$(......w...8[..t&.......T$
36e0 0c c7 44 24 08 00 00 00 00 dd 5c 24 20 c7 44 24 04 01 00 00 00 89 04 24 e8 fc ff ff ff dd 44 24 ..D$......\$..D$.......$......D$
3700 20 83 c4 38 5b c3 8d 76 00 8d bc 27 00 00 00 00 56 53 83 ec 04 0f 31 89 d6 89 c3 89 35 14 00 00 ...8[..v...'....VS....1.....5...
3720 00 89 1d 10 00 00 00 e8 fc ff ff ff dd d8 89 35 14 00 00 00 89 1d 10 00 00 00 83 c4 04 5b 5e e9 ...............5.............[^.
3740 fc ff ff ff 8d b6 00 00 00 00 8d bf 00 00 00 00 56 53 83 ec 24 8b 5c 24 34 0f 31 89 d6 89 c1 89 ................VS..$.\$4.1.....
3760 0d 10 00 00 00 89 35 14 00 00 00 89 1c 24 e8 fc ff ff ff e8 fc ff ff ff 8b 44 24 30 89 5c 24 1c ......5......$...........D$0.\$.
3780 85 c0 db 44 24 1c d8 0d 08 00 00 00 de f9 74 20 dd 54 24 08 c7 44 24 04 28 00 00 00 dd 5c 24 10 ...D$.........t..T$..D$.(....\$.
37a0 c7 04 24 01 00 00 00 e8 fc ff ff ff dd 44 24 10 83 c4 24 5b 5e c3 8d 76 00 8d bc 27 00 00 00 00 ..$..........D$...$[^..v...'....
37c0 83 ec 1c 8b 44 24 20 c7 44 24 04 02 00 00 00 89 04 24 e8 fc ff ff ff 83 c4 1c c3 90 8d 74 26 00 ....D$..D$.......$...........t&.
37e0 57 56 53 83 ec 30 d9 ee dd 05 08 00 00 00 8d 74 24 20 df e9 dd d8 7a 08 eb 36 dd d8 8d 74 26 00 WVS..0.........t$.....z..6...t&.
3800 89 34 24 e8 fc ff ff ff 8b 44 24 20 a3 00 00 00 00 0f 31 89 d3 89 c1 89 1d 14 00 00 00 89 0d 10 .4$......D$.......1.............
3820 00 00 00 83 c4 30 5b 5e 5f c3 8d b6 00 00 00 00 75 ce 89 34 24 e8 fc ff ff ff 8b 7c 24 20 0f 31 .....0[^_.......u..4$......|$..1
3840 89 d3 89 c1 89 1d 14 00 00 00 31 db 89 0d 10 00 00 00 e8 fc ff ff ff dd 5c 24 08 eb 0c 8d 76 00 ..........1.............\$....v.
3860 dd d8 dd d8 83 fb 63 7f 97 e8 fc ff ff ff dd 44 24 08 d8 e9 d9 05 0c 00 00 00 d9 c9 db e9 dd d9 ......c........D$...............
3880 72 de dd 5c 24 10 89 34 24 dd 5c 24 08 e8 fc ff ff ff 8b 44 24 20 39 f8 dd 44 24 08 dd 44 24 10 r..\$..4$.\$.......D$.9..D$..D$.
38a0 7e 46 89 c2 29 fa 89 54 24 1c db 44 24 1c de f9 dd 05 08 00 00 00 d9 ee d9 c9 db e9 dd d9 7a 40 ~F..)..T$..D$.................z@
38c0 75 3e dd d8 d9 05 10 00 00 00 d9 c9 db e9 dd d9 76 08 dd 1d 08 00 00 00 eb 06 dd d8 eb 02 dd d8 u>..............v...............
38e0 83 c3 01 89 c7 eb 03 90 dd d8 83 fb 63 0f 8f 07 ff ff ff dd 5c 24 08 e9 6d ff ff ff 8d 74 26 00 ............c.......\$..m....t&.
3900 df e9 76 da eb be 8d 76 00 8d bc 27 00 00 00 00 83 ec 3c e8 fc ff ff ff 8d 44 24 20 89 04 24 dd ..v....v...'......<......D$...$.
3920 5c 24 10 e8 fc ff ff ff 8b 44 24 20 2b 05 00 00 00 00 89 44 24 1c db 44 24 1c dc 0d 08 00 00 00 \$.......D$.+......D$..D$.......
3940 dd 44 24 10 83 c4 3c de e1 c3 00 00 00 00 00 00 45 72 72 6f 72 3a 20 63 6f 75 6e 74 65 72 20 72 .D$...<.........Error:.counter.r
3960 65 74 75 72 6e 73 20 6e 65 67 20 76 61 6c 75 65 3a 20 25 2e 30 66 0a 00 50 72 6f 63 65 73 73 6f eturns.neg.value:.%.0f..Processo
3980 72 20 63 6c 6f 63 6b 20 72 61 74 65 20 7e 3d 20 25 2e 31 66 20 4d 48 7a 0a 00 00 00 00 00 80 4e r.clock.rate.~=.%.1f.MHz.......N
39a0 00 00 80 40 00 24 74 49 00 00 7a 44 00 80 3b 45 00 47 43 43 3a 20 28 55 62 75 6e 74 75 20 34 2e ...@.$tI..zD..;E.GCC:.(Ubuntu.4.
39c0 38 2e 31 2d 32 75 62 75 6e 74 75 31 7e 31 32 2e 30 34 29 20 34 2e 38 2e 31 00 00 00 14 00 00 00 8.1-2ubuntu1~12.04).4.8.1.......
39e0 00 00 00 00 01 7a 52 00 01 7c 08 01 1b 0c 04 04 88 01 00 00 18 00 00 00 1c 00 00 00 00 00 00 00 .....zR..|......................
3a00 15 00 00 00 00 41 0e 08 83 02 53 c3 0e 04 00 00 18 00 00 00 38 00 00 00 20 00 00 00 15 00 00 00 .....A....S.........8...........
3a20 00 41 0e 08 83 02 53 c3 0e 04 00 00 28 00 00 00 54 00 00 00 40 00 00 00 86 00 00 00 00 41 0e 08 .A....S.....(...T...@........A..
3a40 83 02 43 0e 40 02 4e 0a 0e 08 41 c3 0e 04 45 0b 6c 0e 08 41 c3 0e 04 00 28 00 00 00 80 00 00 00 ..C.@.N...A...E.l..A....(.......
3a60 d0 00 00 00 34 00 00 00 00 41 0e 08 86 02 41 0e 0c 83 03 43 0e 10 68 0e 0c 41 c3 0e 08 41 c6 0e ....4....A....A....C..h..A...A..
3a80 04 00 00 00 28 00 00 00 ac 00 00 00 10 01 00 00 66 00 00 00 00 41 0e 08 86 02 41 0e 0c 83 03 43 ....(...........f....A....A....C
3aa0 0e 30 02 5e 0e 0c 41 c3 0e 08 41 c6 0e 04 00 00 14 00 00 00 d8 00 00 00 80 01 00 00 1b 00 00 00 .0.^..A...A.....................
3ac0 00 43 0e 20 57 0e 04 00 34 00 00 00 f0 00 00 00 a0 01 00 00 26 01 00 00 00 41 0e 08 87 02 41 0e .C..W...4...........&....A....A.
3ae0 0c 86 03 41 0e 10 83 04 43 0e 40 02 40 0a 0e 10 41 c3 0e 0c 41 c6 0e 08 41 c7 0e 04 47 0b 00 00 ...A....C.@.@...A...A...A...G...
3b00 14 00 00 00 28 01 00 00 d0 02 00 00 3a 00 00 00 00 43 0e 40 74 0e 04 00 00 2e 73 79 6d 74 61 62 ....(.......:....C.@t.....symtab
3b20 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e 72 65 6c 2e 74 65 78 74 00 2e 64 61 ..strtab..shstrtab..rel.text..da
3b40 74 61 00 2e 62 73 73 00 2e 72 6f 64 61 74 61 2e 73 74 72 31 2e 34 00 2e 72 6f 64 61 74 61 2e 63 ta..bss..rodata.str1.4..rodata.c
3b60 73 74 34 00 2e 63 6f 6d 6d 65 6e 74 00 2e 6e 6f 74 65 2e 47 4e 55 2d 73 74 61 63 6b 00 2e 72 65 st4..comment..note.GNU-stack..re
3b80 6c 2e 65 68 5f 66 72 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 l.eh_frame......................
3ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 06 00 00 00 ................................
3bc0 00 00 00 00 40 00 00 00 0a 03 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 1b 00 00 00 ....@...........................
3be0 09 00 00 00 00 00 00 00 00 00 00 00 28 0a 00 00 50 01 00 00 0c 00 00 00 01 00 00 00 04 00 00 00 ............(...P...............
3c00 08 00 00 00 25 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 4c 03 00 00 00 00 00 00 00 00 00 00 ....%...............L...........
3c20 00 00 00 00 04 00 00 00 00 00 00 00 2b 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 50 03 00 00 ............+...............P...
3c40 18 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 30 00 00 00 01 00 00 00 32 00 00 00 ....................0.......2...
3c60 00 00 00 00 50 03 00 00 4a 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 3f 00 00 00 ....P...J...................?...
3c80 01 00 00 00 12 00 00 00 00 00 00 00 9c 03 00 00 14 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 ................................
3ca0 04 00 00 00 4c 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00 b0 03 00 00 2a 00 00 00 00 00 00 00 ....L.......0...........*.......
3cc0 00 00 00 00 01 00 00 00 01 00 00 00 55 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 da 03 00 00 ............U...................
3ce0 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 69 00 00 00 01 00 00 00 02 00 00 00 ....................i...........
3d00 00 00 00 00 dc 03 00 00 3c 01 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 65 00 00 00 ........<...................e...
3d20 09 00 00 00 00 00 00 00 00 00 00 00 78 0b 00 00 40 00 00 00 0c 00 00 00 09 00 00 00 04 00 00 00 ............x...@...............
3d40 08 00 00 00 11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 18 05 00 00 73 00 00 00 00 00 00 00 ........................s.......
3d60 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 bc 07 00 00 ................................
3d80 b0 01 00 00 0d 00 00 00 0e 00 00 00 04 00 00 00 10 00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 ................................
3da0 00 00 00 00 6c 09 00 00 bc 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ....l...........................
3dc0 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 04 00 f1 ff 00 00 00 00 ................................
3de0 00 00 00 00 00 00 00 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00 ................................
3e00 00 00 00 00 00 00 00 00 03 00 04 00 09 00 00 00 14 00 00 00 04 00 00 00 01 00 04 00 10 00 00 00 ................................
3e20 10 00 00 00 04 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 05 00 17 00 00 00 ................................
3e40 08 00 00 00 08 00 00 00 01 00 04 00 24 00 00 00 00 00 00 00 04 00 00 00 01 00 04 00 00 00 00 00 ............$...................
3e60 00 00 00 00 00 00 00 00 03 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 08 00 00 00 00 00 ................................
3e80 00 00 00 00 00 00 00 00 03 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 07 00 2f 00 00 00 ............................/...
3ea0 00 00 00 00 15 00 00 00 12 00 01 00 3e 00 00 00 20 00 00 00 15 00 00 00 12 00 01 00 4c 00 00 00 ............>...............L...
3ec0 40 00 00 00 86 00 00 00 12 00 01 00 58 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 5f 00 00 00 @...........X..............._...
3ee0 00 00 00 00 00 00 00 00 10 00 00 00 6d 00 00 00 d0 00 00 00 34 00 00 00 12 00 01 00 72 00 00 00 ............m.......4.......r...
3f00 10 01 00 00 66 00 00 00 12 00 01 00 7b 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 81 00 00 00 ....f.......{...................
3f20 00 00 00 00 00 00 00 00 10 00 00 00 8e 00 00 00 80 01 00 00 1b 00 00 00 12 00 01 00 92 00 00 00 ................................
3f40 a0 01 00 00 26 01 00 00 12 00 01 00 a5 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 ab 00 00 00 ....&...........................
3f60 d0 02 00 00 3a 00 00 00 12 00 01 00 00 63 6c 6f 63 6b 2e 63 00 63 79 63 5f 68 69 00 63 79 63 5f ....:........clock.c.cyc_hi.cyc_
3f80 6c 6f 00 63 79 63 5f 70 65 72 5f 74 69 63 6b 00 73 74 61 72 74 5f 74 69 63 6b 00 61 63 63 65 73 lo.cyc_per_tick.start_tick.acces
3fa0 73 5f 63 6f 75 6e 74 65 72 00 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 00 67 65 74 5f 63 6f 75 6e s_counter.start_counter.get_coun
3fc0 74 65 72 00 73 74 64 65 72 72 00 5f 5f 66 70 72 69 6e 74 66 5f 63 68 6b 00 6f 76 68 64 00 6d 68 ter.stderr.__fprintf_chk.ovhd.mh
3fe0 7a 5f 66 75 6c 6c 00 73 6c 65 65 70 00 5f 5f 70 72 69 6e 74 66 5f 63 68 6b 00 6d 68 7a 00 73 74 z_full.sleep.__printf_chk.mhz.st
4000 61 72 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 00 74 69 6d 65 73 00 67 65 74 5f 63 6f 6d 70 5f art_comp_counter.times.get_comp_
4020 63 6f 75 6e 74 65 72 00 29 00 00 00 01 04 00 00 2f 00 00 00 01 04 00 00 50 00 00 00 01 04 00 00 counter.)......./.......P.......
4040 56 00 00 00 01 04 00 00 71 00 00 00 01 0a 00 00 7f 00 00 00 01 0a 00 00 99 00 00 00 01 11 00 00 V.......q.......................
4060 a5 00 00 00 01 07 00 00 b9 00 00 00 02 12 00 00 dd 00 00 00 01 04 00 00 e3 00 00 00 01 04 00 00 ................................
4080 e8 00 00 00 02 10 00 00 f0 00 00 00 01 04 00 00 f6 00 00 00 01 04 00 00 21 01 00 00 01 04 00 00 ........................!.......
40a0 27 01 00 00 01 04 00 00 2f 01 00 00 02 15 00 00 34 01 00 00 02 10 00 00 48 01 00 00 01 0a 00 00 '......./.......4.......H.......
40c0 58 01 00 00 01 07 00 00 68 01 00 00 02 16 00 00 93 01 00 00 02 14 00 00 aa 01 00 00 01 04 00 00 X.......h.......................
40e0 c4 01 00 00 02 19 00 00 cd 01 00 00 01 04 00 00 d9 01 00 00 01 04 00 00 df 01 00 00 01 04 00 00 ................................
4100 f6 01 00 00 02 19 00 00 06 02 00 00 01 04 00 00 0e 02 00 00 01 04 00 00 13 02 00 00 02 10 00 00 ................................
4120 2a 02 00 00 02 10 00 00 36 02 00 00 01 0a 00 00 4e 02 00 00 02 19 00 00 72 02 00 00 01 04 00 00 *.......6.......N.......r.......
4140 86 02 00 00 01 0a 00 00 94 02 00 00 01 04 00 00 d4 02 00 00 02 10 00 00 e4 02 00 00 02 19 00 00 ................................
4160 ee 02 00 00 01 04 00 00 fc 02 00 00 01 04 00 00 00 01 00 00 02 10 00 00 20 00 00 00 02 02 00 00 ................................
4180 3c 00 00 00 02 02 00 00 58 00 00 00 02 02 00 00 84 00 00 00 02 02 00 00 b0 00 00 00 02 02 00 00 <.......X.......................
41a0 dc 00 00 00 02 02 00 00 f4 00 00 00 02 02 00 00 2c 01 00 00 02 02 00 00 00 00 00 00 00 00 00 00 ................,...............
41c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4200 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 63 6f 6e 66 69 67 2e 68 00 00 00 00 00 00 malloclab-handout/config.h......
4220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
4280 30 30 30 34 34 31 35 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 34 34 00 20 30 00 00 00 0004415.12507032412.014744..0...
42a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
42c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
42e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4300 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
4320 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
4340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
43a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
43c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
43e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4400 23 69 66 6e 64 65 66 20 5f 5f 43 4f 4e 46 49 47 5f 48 5f 0a 23 64 65 66 69 6e 65 20 5f 5f 43 4f #ifndef.__CONFIG_H_.#define.__CO
4420 4e 46 49 47 5f 48 5f 0a 0a 2f 2a 0a 20 2a 20 63 6f 6e 66 69 67 2e 68 20 2d 20 6d 61 6c 6c 6f 63 NFIG_H_../*..*.config.h.-.malloc
4440 20 6c 61 62 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 0a 20 2a 0a 20 2a 20 43 6f .lab.configuration.file..*..*.Co
4460 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2c 20 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 pyright.(c).2002,.R..Bryant.and.
4480 44 2e 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 D..O'Hallaron,.All.rights.reserv
44a0 65 64 2e 0a 20 2a 20 4d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 ed...*.May.not.be.used,.modified
44c0 2c 20 6f 72 20 63 6f 70 69 65 64 20 77 69 74 68 6f 75 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a ,.or.copied.without.permission..
44e0 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 70 .*/../*..*.This.is.the.default.p
4500 61 74 68 20 77 68 65 72 65 20 74 68 65 20 64 72 69 76 65 72 20 77 69 6c 6c 20 6c 6f 6f 6b 20 66 ath.where.the.driver.will.look.f
4520 6f 72 20 74 68 65 0a 20 2a 20 64 65 66 61 75 6c 74 20 74 72 61 63 65 66 69 6c 65 73 2e 20 59 6f or.the..*.default.tracefiles..Yo
4540 75 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 69 74 20 61 74 20 72 75 6e 74 69 6d 65 20 77 69 74 u.can.override.it.at.runtime.wit
4560 68 20 74 68 65 20 2d 74 20 66 6c 61 67 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 54 52 41 43 45 h.the.-t.flag...*/.#define.TRACE
4580 44 49 52 20 22 2f 61 66 73 2f 63 73 2f 70 72 6f 6a 65 63 74 2f 69 63 73 32 2f 69 6d 2f 6c 61 62 DIR."/afs/cs/project/ics2/im/lab
45a0 73 2f 6d 61 6c 6c 6f 63 6c 61 62 2f 74 72 61 63 65 73 2f 22 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 s/malloclab/traces/"../*..*.This
45c0 20 69 73 20 74 68 65 20 6c 69 73 74 20 6f 66 20 64 65 66 61 75 6c 74 20 74 72 61 63 65 66 69 6c .is.the.list.of.default.tracefil
45e0 65 73 20 69 6e 20 54 52 41 43 45 44 49 52 20 74 68 61 74 20 74 68 65 20 64 72 69 76 65 72 0a 20 es.in.TRACEDIR.that.the.driver..
4600 2a 20 77 69 6c 6c 20 75 73 65 20 66 6f 72 20 74 65 73 74 69 6e 67 2e 20 4d 6f 64 69 66 79 20 74 *.will.use.for.testing..Modify.t
4620 68 69 73 20 69 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 61 64 64 20 6f 72 20 64 65 6c 65 74 65 his.if.you.want.to.add.or.delete
4640 0a 20 2a 20 74 72 61 63 65 73 20 66 72 6f 6d 20 74 68 65 20 64 72 69 76 65 72 27 73 20 74 65 73 ..*.traces.from.the.driver's.tes
4660 74 20 73 75 69 74 65 2e 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 69 66 20 79 6f 75 20 64 6f 6e t.suite..For.example,.if.you.don
4680 27 74 20 77 61 6e 74 0a 20 2a 20 79 6f 75 72 20 73 74 75 64 65 6e 74 73 20 74 6f 20 69 6d 70 6c 't.want..*.your.students.to.impl
46a0 65 6d 65 6e 74 20 72 65 61 6c 6c 6f 63 2c 20 79 6f 75 20 63 61 6e 20 64 65 6c 65 74 65 20 74 68 ement.realloc,.you.can.delete.th
46c0 65 20 6c 61 73 74 20 74 77 6f 0a 20 2a 20 74 72 61 63 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e e.last.two..*.traces...*/.#defin
46e0 65 20 44 45 46 41 55 4c 54 5f 54 52 41 43 45 46 49 4c 45 53 20 5c 0a 20 20 22 61 6d 70 74 6a 70 e.DEFAULT_TRACEFILES.\..."amptjp
4700 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 63 63 63 70 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 -bal.rep",\..."cccp-bal.rep",\..
4720 20 22 63 70 2d 64 65 63 6c 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 65 78 70 72 2d 62 61 6c ."cp-decl-bal.rep",\..."expr-bal
4740 2e 72 65 70 22 2c 5c 0a 20 20 22 63 6f 61 6c 65 73 63 69 6e 67 2d 62 61 6c 2e 72 65 70 22 2c 5c .rep",\..."coalescing-bal.rep",\
4760 0a 20 20 22 72 61 6e 64 6f 6d 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 72 61 6e 64 6f 6d 32 ..."random-bal.rep",\..."random2
4780 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 62 69 6e 61 72 79 2d 62 61 6c 2e 72 65 70 22 2c 5c -bal.rep",\..."binary-bal.rep",\
47a0 0a 20 20 22 62 69 6e 61 72 79 32 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 72 65 61 6c 6c 6f ..."binary2-bal.rep",\..."reallo
47c0 63 2d 62 61 6c 2e 72 65 70 22 2c 5c 0a 20 20 22 72 65 61 6c 6c 6f 63 32 2d 62 61 6c 2e 72 65 70 c-bal.rep",\..."realloc2-bal.rep
47e0 22 0a 0a 2f 2a 0a 20 2a 20 54 68 69 73 20 63 6f 6e 73 74 61 6e 74 20 67 69 76 65 73 20 74 68 65 "../*..*.This.constant.gives.the
4800 20 65 73 74 69 6d 61 74 65 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 6f 66 20 74 68 65 20 6c 69 .estimated.performance.of.the.li
4820 62 63 20 6d 61 6c 6c 6f 63 0a 20 2a 20 70 61 63 6b 61 67 65 20 75 73 69 6e 67 20 6f 75 72 20 74 bc.malloc..*.package.using.our.t
4840 72 61 63 65 73 20 6f 6e 20 73 6f 6d 65 20 72 65 66 65 72 65 6e 63 65 20 73 79 73 74 65 6d 2c 20 races.on.some.reference.system,.
4860 74 79 70 69 63 61 6c 6c 79 20 74 68 65 0a 20 2a 20 73 61 6d 65 20 6b 69 6e 64 20 6f 66 20 73 79 typically.the..*.same.kind.of.sy
4880 73 74 65 6d 20 74 68 65 20 73 74 75 64 65 6e 74 73 20 75 73 65 2e 20 49 74 73 20 70 75 72 70 6f stem.the.students.use..Its.purpo
48a0 73 65 20 69 73 20 74 6f 20 63 61 70 20 74 68 65 0a 20 2a 20 63 6f 6e 74 72 69 62 75 74 69 6f 6e se.is.to.cap.the..*.contribution
48c0 20 6f 66 20 74 68 72 6f 75 67 68 70 75 74 20 74 6f 20 74 68 65 20 70 65 72 66 6f 72 6d 61 6e 63 .of.throughput.to.the.performanc
48e0 65 20 69 6e 64 65 78 2e 20 4f 6e 63 65 20 74 68 65 0a 20 2a 20 73 74 75 64 65 6e 74 73 20 73 75 e.index..Once.the..*.students.su
4900 72 70 61 73 73 20 74 68 65 20 41 56 47 5f 4c 49 42 43 5f 54 48 52 55 50 55 54 2c 20 74 68 65 79 rpass.the.AVG_LIBC_THRUPUT,.they
4920 20 67 65 74 20 6e 6f 20 66 75 72 74 68 65 72 20 62 65 6e 65 66 69 74 0a 20 2a 20 74 6f 20 74 68 .get.no.further.benefit..*.to.th
4940 65 69 72 20 73 63 6f 72 65 2e 20 20 54 68 69 73 20 64 65 74 65 72 73 20 73 74 75 64 65 6e 74 73 eir.score...This.deters.students
4960 20 66 72 6f 6d 20 62 75 69 6c 64 69 6e 67 20 65 78 74 72 65 6d 65 6c 79 20 66 61 73 74 2c 0a 20 .from.building.extremely.fast,..
4980 2a 20 62 75 74 20 65 78 74 72 65 6d 65 6c 79 20 73 74 75 70 69 64 20 6d 61 6c 6c 6f 63 20 70 61 *.but.extremely.stupid.malloc.pa
49a0 63 6b 61 67 65 73 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 41 56 47 5f 4c 49 42 43 5f 54 48 52 ckages...*/.#define.AVG_LIBC_THR
49c0 55 50 55 54 20 20 20 20 20 20 36 30 30 45 33 20 20 2f 2a 20 36 30 30 20 4b 6f 70 73 2f 73 65 63 UPUT......600E3../*.600.Kops/sec
49e0 20 2a 2f 0a 0a 20 2f 2a 20 0a 20 20 2a 20 54 68 69 73 20 63 6f 6e 73 74 61 6e 74 20 64 65 74 65 .*/.../*....*.This.constant.dete
4a00 72 6d 69 6e 65 73 20 74 68 65 20 63 6f 6e 74 72 69 62 75 74 69 6f 6e 73 20 6f 66 20 73 70 61 63 rmines.the.contributions.of.spac
4a20 65 20 75 74 69 6c 69 7a 61 74 69 6f 6e 0a 20 20 2a 20 28 55 54 49 4c 5f 57 45 49 47 48 54 29 20 e.utilization...*.(UTIL_WEIGHT).
4a40 61 6e 64 20 74 68 72 6f 75 67 68 70 75 74 20 28 31 20 2d 20 55 54 49 4c 5f 57 45 49 47 48 54 29 and.throughput.(1.-.UTIL_WEIGHT)
4a60 20 74 6f 20 74 68 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 0a 20 20 2a 20 69 6e 64 65 78 2e 20 20 .to.the.performance...*.index...
4a80 0a 20 20 2a 2f 0a 23 64 65 66 69 6e 65 20 55 54 49 4c 5f 57 45 49 47 48 54 20 2e 36 30 0a 0a 2f ...*/.#define.UTIL_WEIGHT..60../
4aa0 2a 20 0a 20 2a 20 41 6c 69 67 6e 6d 65 6e 74 20 72 65 71 75 69 72 65 6d 65 6e 74 20 69 6e 20 62 *...*.Alignment.requirement.in.b
4ac0 79 74 65 73 20 28 65 69 74 68 65 72 20 34 20 6f 72 20 38 29 20 0a 20 2a 2f 0a 23 64 65 66 69 6e ytes.(either.4.or.8)...*/.#defin
4ae0 65 20 41 4c 49 47 4e 4d 45 4e 54 20 38 20 20 0a 0a 2f 2a 20 0a 20 2a 20 4d 61 78 69 6d 75 6d 20 e.ALIGNMENT.8..../*...*.Maximum.
4b00 68 65 61 70 20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 20 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 heap.size.in.bytes...*/.#define.
4b20 4d 41 58 5f 48 45 41 50 20 28 32 30 2a 28 31 3c 3c 32 30 29 29 20 20 2f 2a 20 32 30 20 4d 42 20 MAX_HEAP.(20*(1<<20))../*.20.MB.
4b40 2a 2f 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a */../***************************
4b60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
4b80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 53 65 74 20 65 78 61 63 74 6c ******************..*.Set.exactl
4ba0 79 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 55 53 45 5f 78 78 78 20 63 6f 6e 73 74 61 6e 74 73 y.one.of.these.USE_xxx.constants
4bc0 20 74 6f 20 22 31 22 20 74 6f 20 73 65 6c 65 63 74 20 61 20 74 69 6d 69 6e 67 20 6d 65 74 68 6f .to."1".to.select.a.timing.metho
4be0 64 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a d..*****************************
4c00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
4c20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 64 65 66 69 6e 65 20 55 53 45 5f 46 43 ****************/.#define.USE_FC
4c40 59 43 20 20 20 30 20 20 20 2f 2a 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 72 20 77 2f 4b 2d 62 65 YC...0.../*.cycle.counter.w/K-be
4c60 73 74 20 73 63 68 65 6d 65 20 28 78 38 36 20 26 20 41 6c 70 68 61 20 6f 6e 6c 79 29 20 2a 2f 0a st.scheme.(x86.&.Alpha.only).*/.
4c80 23 64 65 66 69 6e 65 20 55 53 45 5f 49 54 49 4d 45 52 20 30 20 20 20 2f 2a 20 69 6e 74 65 72 76 #define.USE_ITIMER.0.../*.interv
4ca0 61 6c 20 74 69 6d 65 72 20 28 61 6e 79 20 55 6e 69 78 20 62 6f 78 29 20 2a 2f 0a 23 64 65 66 69 al.timer.(any.Unix.box).*/.#defi
4cc0 6e 65 20 55 53 45 5f 47 45 54 54 4f 44 20 31 20 20 20 2f 2a 20 67 65 74 74 69 6d 65 6f 66 64 61 ne.USE_GETTOD.1.../*.gettimeofda
4ce0 79 20 28 61 6e 79 20 55 6e 69 78 20 62 6f 78 29 20 2a 2f 0a 0a 23 65 6e 64 69 66 20 2f 2a 20 5f y.(any.Unix.box).*/..#endif./*._
4d00 5f 43 4f 4e 46 49 47 5f 48 20 2a 2f 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 _CONFIG_H.*/....................
4d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 63 79 63 2e 63 00 00 00 00 00 00 00 00 malloclab-handout/fcyc.c........
4e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4e60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
4e80 30 30 31 32 34 30 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 34 31 33 00 20 30 00 00 00 0012404.12507032412.014413..0...
4ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4f00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
4f20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
4f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5000 2f 2a 0a 20 2a 20 66 63 79 63 2e 63 20 2d 20 45 73 74 69 6d 61 74 65 20 74 68 65 20 74 69 6d 65 /*..*.fcyc.c.-.Estimate.the.time
5020 20 28 69 6e 20 43 50 55 20 63 79 63 6c 65 73 29 20 75 73 65 64 20 62 79 20 61 20 66 75 6e 63 74 .(in.CPU.cycles).used.by.a.funct
5040 69 6f 6e 20 66 20 0a 20 2a 20 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 ion.f...*...*.Copyright.(c).2002
5060 2c 20 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 44 2e 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 ,.R..Bryant.and.D..O'Hallaron,.A
5080 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 20 2a 20 4d 61 79 20 6e 6f 74 20 62 ll.rights.reserved...*.May.not.b
50a0 65 20 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c 20 6f 72 20 63 6f 70 69 65 64 20 77 69 74 68 e.used,.modified,.or.copied.with
50c0 6f 75 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 20 2a 0a 20 2a 20 55 73 65 73 20 74 68 65 20 63 out.permission...*..*.Uses.the.c
50e0 79 63 6c 65 20 74 69 6d 65 72 20 72 6f 75 74 69 6e 65 73 20 69 6e 20 63 6c 6f 63 6b 2e 63 20 74 ycle.timer.routines.in.clock.c.t
5100 6f 20 65 73 74 69 6d 61 74 65 20 74 68 65 0a 20 2a 20 74 68 65 20 74 69 6d 65 20 69 6e 20 43 50 o.estimate.the..*.the.time.in.CP
5120 55 20 63 79 63 6c 65 73 20 66 6f 72 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 2e 0a 20 2a 2f 0a 23 U.cycles.for.a.function.f...*/.#
5140 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 include.<stdlib.h>.#include.<sys
5160 2f 74 69 6d 65 73 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 0a 23 69 /times.h>.#include.<stdio.h>..#i
5180 6e 63 6c 75 64 65 20 22 66 63 79 63 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 63 6c 6f 63 6b 2e nclude."fcyc.h".#include."clock.
51a0 68 22 0a 0a 2f 2a 20 44 65 66 61 75 6c 74 20 76 61 6c 75 65 73 20 2a 2f 0a 23 64 65 66 69 6e 65 h"../*.Default.values.*/.#define
51c0 20 4b 20 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 56 61 6c 75 65 20 6f .K.3................../*.Value.o
51e0 66 20 4b 20 69 6e 20 4b 2d 62 65 73 74 20 73 63 68 65 6d 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 f.K.in.K-best.scheme.*/.#define.
5200 4d 41 58 53 41 4d 50 4c 45 53 20 32 30 20 20 20 20 20 20 20 20 2f 2a 20 47 69 76 65 20 75 70 20 MAXSAMPLES.20......../*.Give.up.
5220 61 66 74 65 72 20 4d 41 58 53 41 4d 50 4c 45 53 20 2a 2f 0a 23 64 65 66 69 6e 65 20 45 50 53 49 after.MAXSAMPLES.*/.#define.EPSI
5240 4c 4f 4e 20 30 2e 30 31 20 20 20 20 20 20 20 20 20 2f 2a 20 4b 20 73 61 6d 70 6c 65 73 20 73 68 LON.0.01........./*.K.samples.sh
5260 6f 75 6c 64 20 62 65 20 45 50 53 49 4c 4f 4e 20 6f 66 20 65 61 63 68 20 6f 74 68 65 72 2a 2f 0a ould.be.EPSILON.of.each.other*/.
5280 23 64 65 66 69 6e 65 20 43 4f 4d 50 45 4e 53 41 54 45 20 30 20 20 20 20 20 20 20 20 20 2f 2a 20 #define.COMPENSATE.0........./*.
52a0 31 2d 3e 20 74 72 79 20 74 6f 20 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 63 6c 6f 63 6b 20 1->.try.to.compensate.for.clock.
52c0 74 69 63 6b 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 43 4c 45 41 52 5f 43 41 43 48 45 20 30 20 20 ticks.*/.#define.CLEAR_CACHE.0..
52e0 20 20 20 20 20 20 2f 2a 20 43 6c 65 61 72 20 63 61 63 68 65 20 62 65 66 6f 72 65 20 72 75 6e 6e ....../*.Clear.cache.before.runn
5300 69 6e 67 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 43 41 43 ing.test.function.*/.#define.CAC
5320 48 45 5f 42 59 54 45 53 20 28 31 3c 3c 31 39 29 20 20 2f 2a 20 4d 61 78 20 63 61 63 68 65 20 73 HE_BYTES.(1<<19)../*.Max.cache.s
5340 69 7a 65 20 69 6e 20 62 79 74 65 73 20 2a 2f 0a 23 64 65 66 69 6e 65 20 43 41 43 48 45 5f 42 4c ize.in.bytes.*/.#define.CACHE_BL
5360 4f 43 4b 20 33 32 20 20 20 20 20 20 20 2f 2a 20 43 61 63 68 65 20 62 6c 6f 63 6b 20 73 69 7a 65 OCK.32......./*.Cache.block.size
5380 20 69 6e 20 62 79 74 65 73 20 2a 2f 0a 0a 73 74 61 74 69 63 20 69 6e 74 20 6b 62 65 73 74 20 3d .in.bytes.*/..static.int.kbest.=
53a0 20 4b 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6d 61 78 73 61 6d 70 6c 65 73 20 3d 20 4d 41 58 53 .K;.static.int.maxsamples.=.MAXS
53c0 41 4d 50 4c 45 53 3b 0a 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 65 70 73 69 6c 6f 6e 20 3d 20 AMPLES;.static.double.epsilon.=.
53e0 45 50 53 49 4c 4f 4e 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 63 6f 6d 70 65 6e 73 61 74 65 20 3d EPSILON;.static.int.compensate.=
5400 20 43 4f 4d 50 45 4e 53 41 54 45 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 63 6c 65 61 72 5f 63 61 .COMPENSATE;.static.int.clear_ca
5420 63 68 65 20 3d 20 43 4c 45 41 52 5f 43 41 43 48 45 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 63 61 che.=.CLEAR_CACHE;.static.int.ca
5440 63 68 65 5f 62 79 74 65 73 20 3d 20 43 41 43 48 45 5f 42 59 54 45 53 3b 0a 73 74 61 74 69 63 20 che_bytes.=.CACHE_BYTES;.static.
5460 69 6e 74 20 63 61 63 68 65 5f 62 6c 6f 63 6b 20 3d 20 43 41 43 48 45 5f 42 4c 4f 43 4b 3b 0a 0a int.cache_block.=.CACHE_BLOCK;..
5480 73 74 61 74 69 63 20 69 6e 74 20 2a 63 61 63 68 65 5f 62 75 66 20 3d 20 4e 55 4c 4c 3b 0a 0a 73 static.int.*cache_buf.=.NULL;..s
54a0 74 61 74 69 63 20 64 6f 75 62 6c 65 20 2a 76 61 6c 75 65 73 20 3d 20 4e 55 4c 4c 3b 0a 73 74 61 tatic.double.*values.=.NULL;.sta
54c0 74 69 63 20 69 6e 74 20 73 61 6d 70 6c 65 63 6f 75 6e 74 20 3d 20 30 3b 0a 0a 2f 2a 20 66 6f 72 tic.int.samplecount.=.0;../*.for
54e0 20 64 65 62 75 67 67 69 6e 67 20 6f 6e 6c 79 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4b 45 45 50 5f .debugging.only.*/.#define.KEEP_
5500 56 41 4c 53 20 30 0a 23 64 65 66 69 6e 65 20 4b 45 45 50 5f 53 41 4d 50 4c 45 53 20 30 0a 0a 23 VALS.0.#define.KEEP_SAMPLES.0..#
5520 69 66 20 4b 45 45 50 5f 53 41 4d 50 4c 45 53 0a 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 2a 73 if.KEEP_SAMPLES.static.double.*s
5540 61 6d 70 6c 65 73 20 3d 20 4e 55 4c 4c 3b 0a 23 65 6e 64 69 66 0a 0a 2f 2a 20 0a 20 2a 20 69 6e amples.=.NULL;.#endif../*...*.in
5560 69 74 5f 73 61 6d 70 6c 65 72 20 2d 20 53 74 61 72 74 20 6e 65 77 20 73 61 6d 70 6c 69 6e 67 20 it_sampler.-.Start.new.sampling.
5580 70 72 6f 63 65 73 73 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e 69 74 5f 73 61 process...*/.static.void.init_sa
55a0 6d 70 6c 65 72 28 29 0a 7b 0a 20 20 20 20 69 66 20 28 76 61 6c 75 65 73 29 0a 09 66 72 65 65 28 mpler().{.....if.(values)..free(
55c0 76 61 6c 75 65 73 29 3b 0a 20 20 20 20 76 61 6c 75 65 73 20 3d 20 63 61 6c 6c 6f 63 28 6b 62 65 values);.....values.=.calloc(kbe
55e0 73 74 2c 20 73 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0a 23 69 66 20 4b 45 45 50 5f 53 41 st,.sizeof(double));.#if.KEEP_SA
5600 4d 50 4c 45 53 0a 20 20 20 20 69 66 20 28 73 61 6d 70 6c 65 73 29 0a 09 66 72 65 65 28 73 61 6d MPLES.....if.(samples)..free(sam
5620 70 6c 65 73 29 3b 0a 20 20 20 20 2f 2a 20 41 6c 6c 6f 63 61 74 65 20 65 78 74 72 61 20 66 6f 72 ples);...../*.Allocate.extra.for
5640 20 77 72 61 70 61 72 6f 75 6e 64 20 61 6e 61 6c 79 73 69 73 20 2a 2f 0a 20 20 20 20 73 61 6d 70 .wraparound.analysis.*/.....samp
5660 6c 65 73 20 3d 20 63 61 6c 6c 6f 63 28 6d 61 78 73 61 6d 70 6c 65 73 2b 6b 62 65 73 74 2c 20 73 les.=.calloc(maxsamples+kbest,.s
5680 69 7a 65 6f 66 28 64 6f 75 62 6c 65 29 29 3b 0a 23 65 6e 64 69 66 0a 20 20 20 20 73 61 6d 70 6c izeof(double));.#endif.....sampl
56a0 65 63 6f 75 6e 74 20 3d 20 30 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 61 64 64 5f 73 61 6d 70 6c 65 ecount.=.0;.}../*...*.add_sample
56c0 20 2d 20 41 64 64 20 6e 65 77 20 73 61 6d 70 6c 65 20 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 .-.Add.new.sample....*/.static.v
56e0 6f 69 64 20 61 64 64 5f 73 61 6d 70 6c 65 28 64 6f 75 62 6c 65 20 76 61 6c 29 0a 7b 0a 20 20 20 oid.add_sample(double.val).{....
5700 20 69 6e 74 20 70 6f 73 20 3d 20 30 3b 0a 20 20 20 20 69 66 20 28 73 61 6d 70 6c 65 63 6f 75 6e .int.pos.=.0;.....if.(samplecoun
5720 74 20 3c 20 6b 62 65 73 74 29 20 7b 0a 09 70 6f 73 20 3d 20 73 61 6d 70 6c 65 63 6f 75 6e 74 3b t.<.kbest).{..pos.=.samplecount;
5740 0a 09 76 61 6c 75 65 73 5b 70 6f 73 5d 20 3d 20 76 61 6c 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 ..values[pos].=.val;.....}.else.
5760 69 66 20 28 76 61 6c 20 3c 20 76 61 6c 75 65 73 5b 6b 62 65 73 74 2d 31 5d 29 20 7b 0a 09 70 6f if.(val.<.values[kbest-1]).{..po
5780 73 20 3d 20 6b 62 65 73 74 2d 31 3b 0a 09 76 61 6c 75 65 73 5b 70 6f 73 5d 20 3d 20 76 61 6c 3b s.=.kbest-1;..values[pos].=.val;
57a0 0a 20 20 20 20 7d 0a 23 69 66 20 4b 45 45 50 5f 53 41 4d 50 4c 45 53 0a 20 20 20 20 73 61 6d 70 .....}.#if.KEEP_SAMPLES.....samp
57c0 6c 65 73 5b 73 61 6d 70 6c 65 63 6f 75 6e 74 5d 20 3d 20 76 61 6c 3b 0a 23 65 6e 64 69 66 0a 20 les[samplecount].=.val;.#endif..
57e0 20 20 20 73 61 6d 70 6c 65 63 6f 75 6e 74 2b 2b 3b 0a 20 20 20 20 2f 2a 20 49 6e 73 65 72 74 69 ...samplecount++;...../*.Inserti
5800 6f 6e 20 73 6f 72 74 20 2a 2f 0a 20 20 20 20 77 68 69 6c 65 20 28 70 6f 73 20 3e 20 30 20 26 26 on.sort.*/.....while.(pos.>.0.&&
5820 20 76 61 6c 75 65 73 5b 70 6f 73 2d 31 5d 20 3e 20 76 61 6c 75 65 73 5b 70 6f 73 5d 29 20 7b 0a .values[pos-1].>.values[pos]).{.
5840 09 64 6f 75 62 6c 65 20 74 65 6d 70 20 3d 20 76 61 6c 75 65 73 5b 70 6f 73 2d 31 5d 3b 0a 09 76 .double.temp.=.values[pos-1];..v
5860 61 6c 75 65 73 5b 70 6f 73 2d 31 5d 20 3d 20 76 61 6c 75 65 73 5b 70 6f 73 5d 3b 0a 09 76 61 6c alues[pos-1].=.values[pos];..val
5880 75 65 73 5b 70 6f 73 5d 20 3d 20 74 65 6d 70 3b 0a 09 70 6f 73 2d 2d 3b 0a 20 20 20 20 7d 0a 7d ues[pos].=.temp;..pos--;.....}.}
58a0 0a 0a 2f 2a 20 0a 20 2a 20 68 61 73 5f 63 6f 6e 76 65 72 67 65 64 2d 20 48 61 76 65 20 6b 62 65 ../*...*.has_converged-.Have.kbe
58c0 73 74 20 6d 69 6e 69 6d 75 6d 20 6d 65 61 73 75 72 65 6d 65 6e 74 73 20 63 6f 6e 76 65 72 67 65 st.minimum.measurements.converge
58e0 64 20 77 69 74 68 69 6e 20 65 70 73 69 6c 6f 6e 3f 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e d.within.epsilon?...*/.static.in
5900 74 20 68 61 73 5f 63 6f 6e 76 65 72 67 65 64 28 29 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 0a 09 t.has_converged().{.....return..
5920 28 73 61 6d 70 6c 65 63 6f 75 6e 74 20 3e 3d 20 6b 62 65 73 74 29 20 26 26 0a 09 28 28 31 20 2b (samplecount.>=.kbest).&&..((1.+
5940 20 65 70 73 69 6c 6f 6e 29 2a 76 61 6c 75 65 73 5b 30 5d 20 3e 3d 20 76 61 6c 75 65 73 5b 6b 62 .epsilon)*values[0].>=.values[kb
5960 65 73 74 2d 31 5d 29 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 63 6c 65 61 72 20 2d 20 43 6f 64 65 20 est-1]);.}../*...*.clear.-.Code.
5980 74 6f 20 63 6c 65 61 72 20 63 61 63 68 65 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 6c 61 74 to.clear.cache...*/.static.volat
59a0 69 6c 65 20 69 6e 74 20 73 69 6e 6b 20 3d 20 30 3b 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 63 ile.int.sink.=.0;..static.void.c
59c0 6c 65 61 72 28 29 0a 7b 0a 20 20 20 20 69 6e 74 20 78 20 3d 20 73 69 6e 6b 3b 0a 20 20 20 20 69 lear().{.....int.x.=.sink;.....i
59e0 6e 74 20 2a 63 70 74 72 2c 20 2a 63 65 6e 64 3b 0a 20 20 20 20 69 6e 74 20 69 6e 63 72 20 3d 20 nt.*cptr,.*cend;.....int.incr.=.
5a00 63 61 63 68 65 5f 62 6c 6f 63 6b 2f 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0a 20 20 20 20 69 66 20 cache_block/sizeof(int);.....if.
5a20 28 21 63 61 63 68 65 5f 62 75 66 29 20 7b 0a 09 63 61 63 68 65 5f 62 75 66 20 3d 20 6d 61 6c 6c (!cache_buf).{..cache_buf.=.mall
5a40 6f 63 28 63 61 63 68 65 5f 62 79 74 65 73 29 3b 0a 09 69 66 20 28 21 63 61 63 68 65 5f 62 75 66 oc(cache_bytes);..if.(!cache_buf
5a60 29 20 7b 0a 09 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 46 61 74 61 6c 20 ).{......fprintf(stderr,."Fatal.
5a80 65 72 72 6f 72 2e 20 20 4d 61 6c 6c 6f 63 20 72 65 74 75 72 6e 65 64 20 6e 75 6c 6c 20 77 68 65 error...Malloc.returned.null.whe
5aa0 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6c 65 61 72 20 63 61 63 68 65 5c 6e 22 29 3b 0a 09 20 20 n.trying.to.clear.cache\n");....
5ac0 20 20 65 78 69 74 28 31 29 3b 0a 09 7d 0a 20 20 20 20 7d 0a 20 20 20 20 63 70 74 72 20 3d 20 28 ..exit(1);..}.....}.....cptr.=.(
5ae0 69 6e 74 20 2a 29 20 63 61 63 68 65 5f 62 75 66 3b 0a 20 20 20 20 63 65 6e 64 20 3d 20 63 70 74 int.*).cache_buf;.....cend.=.cpt
5b00 72 20 2b 20 63 61 63 68 65 5f 62 79 74 65 73 2f 73 69 7a 65 6f 66 28 69 6e 74 29 3b 0a 20 20 20 r.+.cache_bytes/sizeof(int);....
5b20 20 77 68 69 6c 65 20 28 63 70 74 72 20 3c 20 63 65 6e 64 29 20 7b 0a 09 78 20 2b 3d 20 2a 63 70 .while.(cptr.<.cend).{..x.+=.*cp
5b40 74 72 3b 0a 09 63 70 74 72 20 2b 3d 20 69 6e 63 72 3b 0a 20 20 20 20 7d 0a 20 20 20 20 73 69 6e tr;..cptr.+=.incr;.....}.....sin
5b60 6b 20 3d 20 78 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 66 63 79 63 20 2d 20 55 73 65 20 4b 2d 62 65 73 k.=.x;.}../*..*.fcyc.-.Use.K-bes
5b80 74 20 73 63 68 65 6d 65 20 74 6f 20 65 73 74 69 6d 61 74 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 t.scheme.to.estimate.the.running
5ba0 20 74 69 6d 65 20 6f 66 20 66 75 6e 63 74 69 6f 6e 20 66 0a 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 .time.of.function.f..*/.double.f
5bc0 63 79 63 28 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 0a 7b 0a cyc(test_funct.f,.void.*argp).{.
5be0 20 20 20 20 64 6f 75 62 6c 65 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 69 6e 69 74 5f 73 61 6d 70 ....double.result;.....init_samp
5c00 6c 65 72 28 29 3b 0a 20 20 20 20 69 66 20 28 63 6f 6d 70 65 6e 73 61 74 65 29 20 7b 0a 09 64 6f ler();.....if.(compensate).{..do
5c20 20 7b 0a 09 20 20 20 20 64 6f 75 62 6c 65 20 63 79 63 3b 0a 09 20 20 20 20 69 66 20 28 63 6c 65 .{......double.cyc;......if.(cle
5c40 61 72 5f 63 61 63 68 65 29 0a 09 09 63 6c 65 61 72 28 29 3b 0a 09 20 20 20 20 73 74 61 72 74 5f ar_cache)...clear();......start_
5c60 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 09 20 20 20 20 66 28 61 72 67 70 29 3b 0a 09 20 comp_counter();......f(argp);...
5c80 20 20 20 63 79 63 20 3d 20 67 65 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 09 20 20 ...cyc.=.get_comp_counter();....
5ca0 20 20 61 64 64 5f 73 61 6d 70 6c 65 28 63 79 63 29 3b 0a 09 7d 20 77 68 69 6c 65 20 28 21 68 61 ..add_sample(cyc);..}.while.(!ha
5cc0 73 5f 63 6f 6e 76 65 72 67 65 64 28 29 20 26 26 20 73 61 6d 70 6c 65 63 6f 75 6e 74 20 3c 20 6d s_converged().&&.samplecount.<.m
5ce0 61 78 73 61 6d 70 6c 65 73 29 3b 0a 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 09 64 6f 20 7b 0a 09 axsamples);.....}.else.{..do.{..
5d00 20 20 20 20 64 6f 75 62 6c 65 20 63 79 63 3b 0a 09 20 20 20 20 69 66 20 28 63 6c 65 61 72 5f 63 ....double.cyc;......if.(clear_c
5d20 61 63 68 65 29 0a 09 09 63 6c 65 61 72 28 29 3b 0a 09 20 20 20 20 73 74 61 72 74 5f 63 6f 75 6e ache)...clear();......start_coun
5d40 74 65 72 28 29 3b 0a 09 20 20 20 20 66 28 61 72 67 70 29 3b 0a 09 20 20 20 20 63 79 63 20 3d 20 ter();......f(argp);......cyc.=.
5d60 67 65 74 5f 63 6f 75 6e 74 65 72 28 29 3b 0a 09 20 20 20 20 61 64 64 5f 73 61 6d 70 6c 65 28 63 get_counter();......add_sample(c
5d80 79 63 29 3b 0a 09 7d 20 77 68 69 6c 65 20 28 21 68 61 73 5f 63 6f 6e 76 65 72 67 65 64 28 29 20 yc);..}.while.(!has_converged().
5da0 26 26 20 73 61 6d 70 6c 65 63 6f 75 6e 74 20 3c 20 6d 61 78 73 61 6d 70 6c 65 73 29 3b 0a 20 20 &&.samplecount.<.maxsamples);...
5dc0 20 20 7d 0a 23 69 66 64 65 66 20 44 45 42 55 47 0a 20 20 20 20 7b 0a 09 69 6e 74 20 69 3b 0a 09 ..}.#ifdef.DEBUG.....{..int.i;..
5de0 70 72 69 6e 74 66 28 22 20 25 64 20 73 6d 61 6c 6c 65 73 74 20 76 61 6c 75 65 73 3a 20 5b 22 2c printf(".%d.smallest.values:.[",
5e00 20 6b 62 65 73 74 29 3b 0a 09 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6b 62 65 73 74 3b .kbest);..for.(i.=.0;.i.<.kbest;
5e20 20 69 2b 2b 29 0a 09 20 20 20 20 70 72 69 6e 74 66 28 22 25 2e 30 66 25 73 22 2c 20 76 61 6c 75 .i++)......printf("%.0f%s",.valu
5e40 65 73 5b 69 5d 2c 20 69 3d 3d 6b 62 65 73 74 2d 31 20 3f 20 22 5d 5c 6e 22 20 3a 20 22 2c 20 22 es[i],.i==kbest-1.?."]\n".:.",."
5e60 29 3b 0a 20 20 20 20 7d 0a 23 65 6e 64 69 66 0a 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c );.....}.#endif.....result.=.val
5e80 75 65 73 5b 30 5d 3b 0a 23 69 66 20 21 4b 45 45 50 5f 56 41 4c 53 0a 20 20 20 20 66 72 65 65 28 ues[0];.#if.!KEEP_VALS.....free(
5ea0 76 61 6c 75 65 73 29 3b 20 0a 20 20 20 20 76 61 6c 75 65 73 20 3d 20 4e 55 4c 4c 3b 0a 23 65 6e values);......values.=.NULL;.#en
5ec0 64 69 66 0a 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 20 20 0a 7d 0a 0a 0a 2f 2a 2a dif.....return.result;...}.../**
5ee0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
5f00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 53 ***************************..*.S
5f20 65 74 20 74 68 65 20 76 61 72 69 6f 75 73 20 70 61 72 61 6d 65 74 65 72 73 20 75 73 65 64 20 62 et.the.various.parameters.used.b
5f40 79 20 74 68 65 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 72 6f 75 74 69 6e 65 73 20 0a 20 2a 2a 2a y.the.measurement.routines...***
5f60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
5f80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 0a *************************/../*..
5fa0 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 20 2d 20 57 68 65 6e 20 73 .*.set_fcyc_clear_cache.-.When.s
5fc0 65 74 2c 20 77 69 6c 6c 20 72 75 6e 20 63 6f 64 65 20 74 6f 20 63 6c 65 61 72 20 63 61 63 68 65 et,.will.run.code.to.clear.cache
5fe0 20 0a 20 2a 20 20 20 20 20 62 65 66 6f 72 65 20 65 61 63 68 20 6d 65 61 73 75 72 65 6d 65 6e 74 ...*.....before.each.measurement
6000 2e 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 0a 20 2a 2f 0a 76 6f 69 64 20 73 ....*.....Default.=.0..*/.void.s
6020 65 74 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 28 69 6e 74 20 63 6c 65 61 72 29 0a 7b et_fcyc_clear_cache(int.clear).{
6040 0a 20 20 20 20 63 6c 65 61 72 5f 63 61 63 68 65 20 3d 20 63 6c 65 61 72 3b 0a 7d 0a 0a 2f 2a 20 .....clear_cache.=.clear;.}../*.
6060 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 73 69 7a 65 20 2d 20 53 65 74 20 73 69 ..*.set_fcyc_cache_size.-.Set.si
6080 7a 65 20 6f 66 20 63 61 63 68 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 63 6c 65 61 72 69 6e 67 ze.of.cache.to.use.when.clearing
60a0 20 63 61 63 68 65 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 31 3c 3c 31 39 20 28 .cache...*.....Default.=.1<<19.(
60c0 35 31 32 4b 42 29 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 73 512KB)..*/.void.set_fcyc_cache_s
60e0 69 7a 65 28 69 6e 74 20 62 79 74 65 73 29 0a 7b 0a 20 20 20 20 69 66 20 28 62 79 74 65 73 20 21 ize(int.bytes).{.....if.(bytes.!
6100 3d 20 63 61 63 68 65 5f 62 79 74 65 73 29 20 7b 0a 09 63 61 63 68 65 5f 62 79 74 65 73 20 3d 20 =.cache_bytes).{..cache_bytes.=.
6120 62 79 74 65 73 3b 0a 09 69 66 20 28 63 61 63 68 65 5f 62 75 66 29 20 7b 0a 09 20 20 20 20 66 72 bytes;..if.(cache_buf).{......fr
6140 65 65 28 63 61 63 68 65 5f 62 75 66 29 3b 0a 09 20 20 20 20 63 61 63 68 65 5f 62 75 66 20 3d 20 ee(cache_buf);......cache_buf.=.
6160 4e 55 4c 4c 3b 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 NULL;..}.....}.}../*...*.set_fcy
6180 63 5f 63 61 63 68 65 5f 62 6c 6f 63 6b 20 2d 20 53 65 74 20 73 69 7a 65 20 6f 66 20 63 61 63 68 c_cache_block.-.Set.size.of.cach
61a0 65 20 62 6c 6f 63 6b 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 33 32 0a 20 2a 2f e.block...*.....Default.=.32..*/
61c0 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 62 6c 6f 63 6b 28 69 6e 74 20 62 .void.set_fcyc_cache_block(int.b
61e0 79 74 65 73 29 20 7b 0a 20 20 20 20 63 61 63 68 65 5f 62 6c 6f 63 6b 20 3d 20 62 79 74 65 73 3b ytes).{.....cache_block.=.bytes;
6200 0a 7d 0a 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 6f 6d 70 65 6e 73 61 74 65 2d .}.../*...*.set_fcyc_compensate-
6220 20 57 68 65 6e 20 73 65 74 2c 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 6f 20 63 6f 6d 70 65 .When.set,.will.attempt.to.compe
6240 6e 73 61 74 65 20 66 6f 72 20 0a 20 2a 20 20 20 20 20 74 69 6d 65 72 20 69 6e 74 65 72 72 75 70 nsate.for...*.....timer.interrup
6260 74 20 6f 76 65 72 68 65 61 64 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 0a 20 t.overhead...*.....Default.=.0..
6280 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 6f 6d 70 65 6e 73 61 74 65 28 69 6e 74 20 */.void.set_fcyc_compensate(int.
62a0 63 6f 6d 70 65 6e 73 61 74 65 5f 61 72 67 29 0a 7b 0a 20 20 20 20 63 6f 6d 70 65 6e 73 61 74 65 compensate_arg).{.....compensate
62c0 20 3d 20 63 6f 6d 70 65 6e 73 61 74 65 5f 61 72 67 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 .=.compensate_arg;.}../*...*.set
62e0 5f 66 63 79 63 5f 6b 20 2d 20 56 61 6c 75 65 20 6f 66 20 4b 20 69 6e 20 4b 2d 62 65 73 74 20 6d _fcyc_k.-.Value.of.K.in.K-best.m
6300 65 61 73 75 72 65 6d 65 6e 74 20 73 63 68 65 6d 65 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 easurement.scheme..*.....Default
6320 20 3d 20 33 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 6b 28 69 6e 74 20 6b 29 0a .=.3..*/.void.set_fcyc_k(int.k).
6340 7b 0a 20 20 20 20 6b 62 65 73 74 20 3d 20 6b 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 {.....kbest.=.k;.}../*...*.set_f
6360 63 79 63 5f 6d 61 78 73 61 6d 70 6c 65 73 20 2d 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 cyc_maxsamples.-.Maximum.number.
6380 6f 66 20 73 61 6d 70 6c 65 73 20 61 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 66 69 6e 64 20 0a 20 of.samples.attempting.to.find...
63a0 2a 20 20 20 20 20 4b 2d 62 65 73 74 20 77 69 74 68 69 6e 20 73 6f 6d 65 20 74 6f 6c 65 72 61 6e *.....K-best.within.some.toleran
63c0 63 65 2e 0a 20 2a 20 20 20 20 20 57 68 65 6e 20 65 78 63 65 65 64 65 64 2c 20 6a 75 73 74 20 72 ce...*.....When.exceeded,.just.r
63e0 65 74 75 72 6e 20 62 65 73 74 20 73 61 6d 70 6c 65 20 66 6f 75 6e 64 2e 0a 20 2a 20 20 20 20 20 eturn.best.sample.found...*.....
6400 44 65 66 61 75 6c 74 20 3d 20 32 30 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 6d Default.=.20..*/.void.set_fcyc_m
6420 61 78 73 61 6d 70 6c 65 73 28 69 6e 74 20 6d 61 78 73 61 6d 70 6c 65 73 5f 61 72 67 29 0a 7b 0a axsamples(int.maxsamples_arg).{.
6440 20 20 20 20 6d 61 78 73 61 6d 70 6c 65 73 20 3d 20 6d 61 78 73 61 6d 70 6c 65 73 5f 61 72 67 3b ....maxsamples.=.maxsamples_arg;
6460 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 65 70 73 69 6c 6f 6e 20 2d 20 54 6f .}../*...*.set_fcyc_epsilon.-.To
6480 6c 65 72 61 6e 63 65 20 72 65 71 75 69 72 65 64 20 66 6f 72 20 4b 2d 62 65 73 74 0a 20 2a 20 20 lerance.required.for.K-best..*..
64a0 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 2e 30 31 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 ...Default.=.0.01..*/.void.set_f
64c0 63 79 63 5f 65 70 73 69 6c 6f 6e 28 64 6f 75 62 6c 65 20 65 70 73 69 6c 6f 6e 5f 61 72 67 29 0a cyc_epsilon(double.epsilon_arg).
64e0 7b 0a 20 20 20 20 65 70 73 69 6c 6f 6e 20 3d 20 65 70 73 69 6c 6f 6e 5f 61 72 67 3b 0a 7d 0a 0a {.....epsilon.=.epsilon_arg;.}..
6500 0a 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
65e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6600 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 63 79 63 2e 68 00 00 00 00 00 00 00 00 malloclab-handout/fcyc.h........
6620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
6680 30 30 30 33 32 36 32 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 34 32 32 00 20 30 00 00 00 0003262.12507032412.014422..0...
66a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
66e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6700 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
6720 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
6740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
67e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6800 2f 2a 0a 20 2a 20 66 63 79 63 2e 68 20 2d 20 70 72 6f 74 6f 74 79 70 65 73 20 66 6f 72 20 74 68 /*..*.fcyc.h.-.prototypes.for.th
6820 65 20 72 6f 75 74 69 6e 65 73 20 69 6e 20 66 63 79 63 2e 63 20 74 68 61 74 20 65 73 74 69 6d 61 e.routines.in.fcyc.c.that.estima
6840 74 65 20 74 68 65 0a 20 2a 20 20 20 20 20 74 69 6d 65 20 69 6e 20 43 50 55 20 63 79 63 6c 65 73 te.the..*.....time.in.CPU.cycles
6860 20 75 73 65 64 20 62 79 20 61 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e 20 66 0a 20 2a 20 0a 20 .used.by.a.test.function.f..*...
6880 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2c 20 52 2e 20 42 72 79 61 6e 74 20 *.Copyright.(c).2002,.R..Bryant.
68a0 61 6e 64 20 44 2e 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 and.D..O'Hallaron,.All.rights.re
68c0 73 65 72 76 65 64 2e 0a 20 2a 20 4d 61 79 20 6e 6f 74 20 62 65 20 75 73 65 64 2c 20 6d 6f 64 69 served...*.May.not.be.used,.modi
68e0 66 69 65 64 2c 20 6f 72 20 63 6f 70 69 65 64 20 77 69 74 68 6f 75 74 20 70 65 72 6d 69 73 73 69 fied,.or.copied.without.permissi
6900 6f 6e 2e 0a 20 2a 0a 20 2a 2f 0a 0a 2f 2a 20 54 68 65 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e on...*..*/../*.The.test.function
6920 20 74 61 6b 65 73 20 61 20 67 65 6e 65 72 69 63 20 70 6f 69 6e 74 65 72 20 61 73 20 69 6e 70 75 .takes.a.generic.pointer.as.inpu
6940 74 20 2a 2f 0a 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 2a 74 65 73 74 5f 66 75 6e 63 74 29 28 t.*/.typedef.void.(*test_funct)(
6960 76 6f 69 64 20 2a 29 3b 0a 0a 2f 2a 20 43 6f 6d 70 75 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 63 void.*);../*.Compute.number.of.c
6980 79 63 6c 65 73 20 75 73 65 64 20 62 79 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e 20 66 20 2a 2f ycles.used.by.test.function.f.*/
69a0 0a 64 6f 75 62 6c 65 20 66 63 79 63 28 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 2a .double.fcyc(test_funct.f,.void*
69c0 20 61 72 67 70 29 3b 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .argp);../**********************
69e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
6a00 2a 2a 2a 0a 20 2a 20 53 65 74 20 74 68 65 20 76 61 72 69 6f 75 73 20 70 61 72 61 6d 65 74 65 72 ***..*.Set.the.various.parameter
6a20 73 20 75 73 65 64 20 62 79 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 72 6f 75 74 69 6e 65 73 20 0a s.used.by.measurement.routines..
6a40 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .*******************************
6a60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 **************************/../*.
6a80 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 20 2d 20 57 68 65 6e 20 ..*.set_fcyc_clear_cache.-.When.
6aa0 73 65 74 2c 20 77 69 6c 6c 20 72 75 6e 20 63 6f 64 65 20 74 6f 20 63 6c 65 61 72 20 63 61 63 68 set,.will.run.code.to.clear.cach
6ac0 65 20 0a 20 2a 20 20 20 20 20 62 65 66 6f 72 65 20 65 61 63 68 20 6d 65 61 73 75 72 65 6d 65 6e e...*.....before.each.measuremen
6ae0 74 2e 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 0a 20 2a 2f 0a 76 6f 69 64 20 t....*.....Default.=.0..*/.void.
6b00 73 65 74 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 28 69 6e 74 20 63 6c 65 61 72 29 3b set_fcyc_clear_cache(int.clear);
6b20 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 73 69 7a 65 20 2d 20 53 ../*...*.set_fcyc_cache_size.-.S
6b40 65 74 20 73 69 7a 65 20 6f 66 20 63 61 63 68 65 20 74 6f 20 75 73 65 20 77 68 65 6e 20 63 6c 65 et.size.of.cache.to.use.when.cle
6b60 61 72 69 6e 67 20 63 61 63 68 65 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 31 3c aring.cache...*.....Default.=.1<
6b80 3c 31 39 20 28 35 31 32 4b 42 29 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 61 <19.(512KB)..*/.void.set_fcyc_ca
6ba0 63 68 65 5f 73 69 7a 65 28 69 6e 74 20 62 79 74 65 73 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 che_size(int.bytes);../*...*.set
6bc0 5f 66 63 79 63 5f 63 61 63 68 65 5f 62 6c 6f 63 6b 20 2d 20 53 65 74 20 73 69 7a 65 20 6f 66 20 _fcyc_cache_block.-.Set.size.of.
6be0 63 61 63 68 65 20 62 6c 6f 63 6b 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 33 32 cache.block...*.....Default.=.32
6c00 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 62 6c 6f 63 6b 28 69 ..*/.void.set_fcyc_cache_block(i
6c20 6e 74 20 62 79 74 65 73 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 63 6f 6d 70 nt.bytes);../*...*.set_fcyc_comp
6c40 65 6e 73 61 74 65 2d 20 57 68 65 6e 20 73 65 74 2c 20 77 69 6c 6c 20 61 74 74 65 6d 70 74 20 74 ensate-.When.set,.will.attempt.t
6c60 6f 20 63 6f 6d 70 65 6e 73 61 74 65 20 66 6f 72 20 0a 20 2a 20 20 20 20 20 74 69 6d 65 72 20 69 o.compensate.for...*.....timer.i
6c80 6e 74 65 72 72 75 70 74 20 6f 76 65 72 68 65 61 64 20 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c nterrupt.overhead...*.....Defaul
6ca0 74 20 3d 20 30 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 63 6f 6d 70 65 6e 73 61 t.=.0..*/.void.set_fcyc_compensa
6cc0 74 65 28 69 6e 74 20 63 6f 6d 70 65 6e 73 61 74 65 5f 61 72 67 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 te(int.compensate_arg);../*...*.
6ce0 73 65 74 5f 66 63 79 63 5f 6b 20 2d 20 56 61 6c 75 65 20 6f 66 20 4b 20 69 6e 20 4b 2d 62 65 73 set_fcyc_k.-.Value.of.K.in.K-bes
6d00 74 20 6d 65 61 73 75 72 65 6d 65 6e 74 20 73 63 68 65 6d 65 0a 20 2a 20 20 20 20 20 44 65 66 61 t.measurement.scheme..*.....Defa
6d20 75 6c 74 20 3d 20 33 0a 20 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 6b 28 69 6e 74 20 ult.=.3..*/.void.set_fcyc_k(int.
6d40 6b 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 5f 6d 61 78 73 61 6d 70 6c 65 73 20 k);../*...*.set_fcyc_maxsamples.
6d60 2d 20 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 20 73 61 6d 70 6c 65 73 20 61 74 74 65 -.Maximum.number.of.samples.atte
6d80 6d 70 74 69 6e 67 20 74 6f 20 66 69 6e 64 20 0a 20 2a 20 20 20 20 20 4b 2d 62 65 73 74 20 77 69 mpting.to.find...*.....K-best.wi
6da0 74 68 69 6e 20 73 6f 6d 65 20 74 6f 6c 65 72 61 6e 63 65 2e 0a 20 2a 20 20 20 20 20 57 68 65 6e thin.some.tolerance...*.....When
6dc0 20 65 78 63 65 65 64 65 64 2c 20 6a 75 73 74 20 72 65 74 75 72 6e 20 62 65 73 74 20 73 61 6d 70 .exceeded,.just.return.best.samp
6de0 6c 65 20 66 6f 75 6e 64 2e 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 32 30 0a 20 2a le.found...*.....Default.=.20..*
6e00 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 6d 61 78 73 61 6d 70 6c 65 73 28 69 6e 74 20 6d /.void.set_fcyc_maxsamples(int.m
6e20 61 78 73 61 6d 70 6c 65 73 5f 61 72 67 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 73 65 74 5f 66 63 79 63 axsamples_arg);../*...*.set_fcyc
6e40 5f 65 70 73 69 6c 6f 6e 20 2d 20 54 6f 6c 65 72 61 6e 63 65 20 72 65 71 75 69 72 65 64 20 66 6f _epsilon.-.Tolerance.required.fo
6e60 72 20 4b 2d 62 65 73 74 0a 20 2a 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20 30 2e 30 31 0a 20 r.K-best..*.....Default.=.0.01..
6e80 2a 2f 0a 76 6f 69 64 20 73 65 74 5f 66 63 79 63 5f 65 70 73 69 6c 6f 6e 28 64 6f 75 62 6c 65 20 */.void.set_fcyc_epsilon(double.
6ea0 65 70 73 69 6c 6f 6e 5f 61 72 67 29 3b 0a 0a 0a 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 epsilon_arg);...................
6ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
6fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7000 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 63 79 63 2e 6f 00 00 00 00 00 00 00 00 malloclab-handout/fcyc.o........
7020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
7080 30 30 30 36 36 32 30 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 34 33 32 00 20 30 00 00 00 0006620.12507032412.014432..0...
70a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
70e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7100 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
7120 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
7140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
71e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7200 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 .ELF............................
7220 8c 05 00 00 00 00 00 00 34 00 00 00 00 00 28 00 0d 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 ........4.....(.................
7240 8b 0d 04 00 00 00 8b 15 14 00 00 00 56 a1 08 00 00 00 53 dd 44 24 0c 39 d1 7d 6d dd 1c c8 89 ca ............V.....S.D$.9.}m.....
7260 83 c1 01 85 d2 89 0d 04 00 00 00 7e 57 8d 34 d5 f8 ff ff ff 8d 1c 30 dd 03 8d 4c 30 08 dd 01 d9 ...........~W.4.......0...L0....
7280 c9 8d 44 30 f8 db e9 77 1f dd d8 dd d8 eb 35 90 dd 00 89 c3 8d 48 08 83 e8 08 dd 40 10 d9 c9 db ..D0...w......5......H.....@....
72a0 e9 76 1d d9 c9 eb 09 90 d9 c9 8d b6 00 00 00 00 dd 1b 83 ea 01 dd 19 75 d7 eb 09 90 8d 74 26 00 .v.....................u.....t&.
72c0 dd d8 dd d8 5b 5e c3 90 8d 9a ff ff ff 1f dd 04 d8 df e9 76 0b 83 ea 01 dd 1c d8 eb 83 8d 76 00 ....[^.............v..........v.
72e0 dd d8 83 c1 01 5b 89 0d 04 00 00 00 5e c3 66 90 8b 15 14 00 00 00 31 c0 39 15 04 00 00 00 7c 1e .....[......^.f.......1.9.....|.
7300 d9 e8 a1 08 00 00 00 dc 05 08 00 00 00 dc 08 dd 44 d0 f8 d9 c9 31 c0 df e9 dd d8 0f 93 c0 f3 c3 ................D....1..........
7320 57 56 53 83 ec 10 8b 35 00 00 00 00 a1 0c 00 00 00 8b 1d 00 00 00 00 8b 3d 04 00 00 00 c1 ee 02 WVS....5................=.......
7340 85 c0 74 29 83 e7 fc 89 fa 01 c2 39 c2 76 11 8d 0c b5 00 00 00 00 66 90 03 18 01 c8 39 c2 77 f8 ..t).......9.v........f.....9.w.
7360 89 1d 00 00 00 00 83 c4 10 5b 5e 5f c3 89 3c 24 e8 fc ff ff ff 85 c0 a3 0c 00 00 00 75 c6 a1 00 .........[^_..<$............u...
7380 00 00 00 c7 44 24 08 3e 00 00 00 c7 44 24 04 01 00 00 00 c7 04 24 00 00 00 00 89 44 24 0c e8 fc ....D$.>....D$.......$.....D$...
73a0 ff ff ff c7 04 24 01 00 00 00 e8 fc ff ff ff 90 56 53 83 ec 14 a1 08 00 00 00 8b 5c 24 20 8b 74 .....$..........VS.........\$..t
73c0 24 24 85 c0 74 08 89 04 24 e8 fc ff ff ff a1 14 00 00 00 c7 44 24 04 08 00 00 00 89 04 24 e8 fc $$..t...$...........D$.......$..
73e0 ff ff ff 8b 0d 14 00 00 00 c7 05 04 00 00 00 00 00 00 00 85 c9 a3 08 00 00 00 74 77 eb 2f 66 90 ..........................tw./f.
7400 e8 fc ff ff ff 89 34 24 ff d3 e8 fc ff ff ff dd 1c 24 e8 29 fe ff ff e8 d4 fe ff ff 85 c0 75 60 ......4$.........$.)..........u`
7420 a1 10 00 00 00 39 05 04 00 00 00 7d 53 8b 15 10 00 00 00 85 d2 74 c9 e8 e4 fe ff ff eb c2 66 90 .....9.....}S........t........f.
7440 e8 db fe ff ff e8 fc ff ff ff 89 34 24 ff d3 90 e8 fc ff ff ff dd 1c 24 e8 e3 fd ff ff e8 8e fe ...........4$..........$........
7460 ff ff 85 c0 75 1a a1 10 00 00 00 39 05 04 00 00 00 7d 0d a1 10 00 00 00 85 c0 74 c9 eb c0 66 90 ....u......9.....}........t...f.
7480 a1 08 00 00 00 dd 00 89 04 24 dd 5c 24 08 e8 fc ff ff ff c7 05 08 00 00 00 00 00 00 00 dd 44 24 .........$.\$.................D$
74a0 08 83 c4 14 5b 5e c3 89 f6 8d bc 27 00 00 00 00 8b 44 24 04 a3 10 00 00 00 c3 8d b6 00 00 00 00 ....[^.....'.....D$.............
74c0 83 ec 1c 8b 44 24 20 3b 05 04 00 00 00 74 20 a3 04 00 00 00 a1 0c 00 00 00 85 c0 74 12 89 04 24 ....D$.;.....t.............t...$
74e0 e8 fc ff ff ff c7 05 0c 00 00 00 00 00 00 00 83 c4 1c c3 8d b6 00 00 00 00 8d bc 27 00 00 00 00 ...........................'....
7500 8b 44 24 04 a3 00 00 00 00 c3 8d b6 00 00 00 00 8b 44 24 04 a3 14 00 00 00 c3 8d b6 00 00 00 00 .D$..............D$.............
7520 8b 44 24 04 a3 14 00 00 00 c3 8d b6 00 00 00 00 8b 44 24 04 a3 10 00 00 00 c3 8d b6 00 00 00 00 .D$..............D$.............
7540 dd 44 24 04 dd 1d 08 00 00 00 c3 00 00 00 00 00 20 00 00 00 00 00 08 00 7b 14 ae 47 e1 7a 84 3f .D$.....................{..G.z.?
7560 14 00 00 00 03 00 00 00 46 61 74 61 6c 20 65 72 72 6f 72 2e 20 20 4d 61 6c 6c 6f 63 20 72 65 74 ........Fatal.error...Malloc.ret
7580 75 72 6e 65 64 20 6e 75 6c 6c 20 77 68 65 6e 20 74 72 79 69 6e 67 20 74 6f 20 63 6c 65 61 72 20 urned.null.when.trying.to.clear.
75a0 63 61 63 68 65 0a 00 00 47 43 43 3a 20 28 55 62 75 6e 74 75 20 34 2e 38 2e 31 2d 32 75 62 75 6e cache...GCC:.(Ubuntu.4.8.1-2ubun
75c0 74 75 31 7e 31 32 2e 30 34 29 20 34 2e 38 2e 31 00 00 00 00 14 00 00 00 00 00 00 00 01 7a 52 00 tu1~12.04).4.8.1.............zR.
75e0 01 7c 08 01 1b 0c 04 04 88 01 00 00 2c 00 00 00 1c 00 00 00 00 00 00 00 ae 00 00 00 00 4d 0e 08 .|..........,................M..
7600 86 02 46 0e 0c 83 03 02 72 0a c3 0e 08 41 c6 0e 04 42 0b 5e c3 0e 08 47 c6 0e 04 00 10 00 00 00 ..F.....r....A...B.^...G........
7620 4c 00 00 00 b0 00 00 00 30 00 00 00 00 00 00 00 34 00 00 00 60 00 00 00 e0 00 00 00 8f 00 00 00 L.......0.......4...`...........
7640 00 41 0e 08 87 02 41 0e 0c 86 03 41 0e 10 83 04 43 0e 20 02 43 0a 0e 10 41 c3 0e 0c 41 c6 0e 08 .A....A....A....C...C...A...A...
7660 41 c7 0e 04 41 0b 00 00 28 00 00 00 98 00 00 00 70 01 00 00 f7 00 00 00 00 41 0e 08 86 02 41 0e A...A...(.......p........A....A.
7680 0c 83 03 43 0e 20 02 ef 0e 0c 41 c3 0e 08 41 c6 0e 04 00 00 10 00 00 00 c4 00 00 00 70 02 00 00 ...C......A...A.............p...
76a0 0a 00 00 00 00 00 00 00 14 00 00 00 d8 00 00 00 80 02 00 00 33 00 00 00 00 43 0e 20 6f 0e 04 00 ....................3....C..o...
76c0 10 00 00 00 f0 00 00 00 c0 02 00 00 0a 00 00 00 00 00 00 00 10 00 00 00 04 01 00 00 d0 02 00 00 ................................
76e0 0a 00 00 00 00 00 00 00 10 00 00 00 18 01 00 00 e0 02 00 00 0a 00 00 00 00 00 00 00 10 00 00 00 ................................
7700 2c 01 00 00 f0 02 00 00 0a 00 00 00 00 00 00 00 10 00 00 00 40 01 00 00 00 03 00 00 0b 00 00 00 ,...................@...........
7720 00 00 00 00 00 2e 73 79 6d 74 61 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e ......symtab..strtab..shstrtab..
7740 72 65 6c 2e 74 65 78 74 00 2e 64 61 74 61 00 2e 62 73 73 00 2e 72 6f 64 61 74 61 2e 73 74 72 31 rel.text..data..bss..rodata.str1
7760 2e 34 00 2e 63 6f 6d 6d 65 6e 74 00 2e 6e 6f 74 65 2e 47 4e 55 2d 73 74 61 63 6b 00 2e 72 65 6c .4..comment..note.GNU-stack..rel
7780 2e 65 68 5f 66 72 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .eh_frame.......................
77a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 06 00 00 00 ................................
77c0 00 00 00 00 40 00 00 00 0b 03 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 1b 00 00 00 ....@...........................
77e0 09 00 00 00 00 00 00 00 00 00 00 00 a0 0b 00 00 98 01 00 00 0b 00 00 00 01 00 00 00 04 00 00 00 ................................
7800 08 00 00 00 25 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 50 03 00 00 18 00 00 00 00 00 00 00 ....%...............P...........
7820 00 00 00 00 08 00 00 00 00 00 00 00 2b 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 68 03 00 00 ............+...............h...
7840 18 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 30 00 00 00 01 00 00 00 32 00 00 00 ....................0.......2...
7860 00 00 00 00 68 03 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 3f 00 00 00 ....h...?...................?...
7880 01 00 00 00 30 00 00 00 00 00 00 00 a7 03 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ....0...........*...............
78a0 01 00 00 00 48 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 d1 03 00 00 00 00 00 00 00 00 00 00 ....H...........................
78c0 00 00 00 00 01 00 00 00 00 00 00 00 5c 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 d4 03 00 00 ............\...................
78e0 50 01 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 58 00 00 00 09 00 00 00 00 00 00 00 P...................X...........
7900 00 00 00 00 38 0d 00 00 58 00 00 00 0b 00 00 00 08 00 00 00 04 00 00 00 08 00 00 00 11 00 00 00 ....8...X.......................
7920 03 00 00 00 00 00 00 00 00 00 00 00 24 05 00 00 66 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ............$...f...............
7940 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 94 07 00 00 90 02 00 00 0c 00 00 00 ................................
7960 17 00 00 00 04 00 00 00 10 00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 24 0a 00 00 ............................$...
7980 7c 01 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |...............................
79a0 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79c0 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
79e0 03 00 04 00 08 00 00 00 00 00 00 00 ae 00 00 00 02 00 01 00 13 00 00 00 04 00 00 00 04 00 00 00 ................................
7a00 01 00 04 00 1f 00 00 00 14 00 00 00 04 00 00 00 01 00 03 00 25 00 00 00 08 00 00 00 04 00 00 00 ....................%...........
7a20 01 00 04 00 2c 00 00 00 b0 00 00 00 30 00 00 00 02 00 01 00 3a 00 00 00 08 00 00 00 08 00 00 00 ....,.......0.......:...........
7a40 01 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 05 00 42 00 00 00 e0 00 00 00 8f 00 00 00 ....................B...........
7a60 02 00 01 00 48 00 00 00 00 00 00 00 04 00 00 00 01 00 03 00 54 00 00 00 0c 00 00 00 04 00 00 00 ....H...............T...........
7a80 01 00 04 00 5e 00 00 00 00 00 00 00 04 00 00 00 01 00 04 00 63 00 00 00 04 00 00 00 04 00 00 00 ....^...............c...........
7aa0 01 00 03 00 6f 00 00 00 14 00 00 00 04 00 00 00 01 00 04 00 7a 00 00 00 10 00 00 00 04 00 00 00 ....o...............z...........
7ac0 01 00 03 00 85 00 00 00 10 00 00 00 04 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7ae0 03 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7b00 03 00 06 00 91 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 98 00 00 00 00 00 00 00 00 00 00 00 ................................
7b20 10 00 00 00 9f 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 a6 00 00 00 00 00 00 00 00 00 00 00 ................................
7b40 10 00 00 00 ab 00 00 00 70 01 00 00 f7 00 00 00 12 00 01 00 b0 00 00 00 00 00 00 00 00 00 00 00 ........p.......................
7b60 10 00 00 00 b5 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 bc 00 00 00 00 00 00 00 00 00 00 00 ................................
7b80 10 00 00 00 cf 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 e0 00 00 00 00 00 00 00 00 00 00 00 ................................
7ba0 10 00 00 00 ee 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 fa 00 00 00 70 02 00 00 0a 00 00 00 ........................p.......
7bc0 12 00 01 00 0f 01 00 00 80 02 00 00 33 00 00 00 12 00 01 00 23 01 00 00 c0 02 00 00 0a 00 00 00 ............3.......#...........
7be0 12 00 01 00 38 01 00 00 d0 02 00 00 0a 00 00 00 12 00 01 00 4c 01 00 00 e0 02 00 00 0a 00 00 00 ....8...............L...........
7c00 12 00 01 00 57 01 00 00 f0 02 00 00 0a 00 00 00 12 00 01 00 6b 01 00 00 00 03 00 00 0b 00 00 00 ....W...............k...........
7c20 12 00 01 00 00 66 63 79 63 2e 63 00 61 64 64 5f 73 61 6d 70 6c 65 00 73 61 6d 70 6c 65 63 6f 75 .....fcyc.c.add_sample.samplecou
7c40 6e 74 00 6b 62 65 73 74 00 76 61 6c 75 65 73 00 68 61 73 5f 63 6f 6e 76 65 72 67 65 64 00 65 70 nt.kbest.values.has_converged.ep
7c60 73 69 6c 6f 6e 00 63 6c 65 61 72 00 63 61 63 68 65 5f 62 6c 6f 63 6b 00 63 61 63 68 65 5f 62 75 silon.clear.cache_block.cache_bu
7c80 66 00 73 69 6e 6b 00 63 61 63 68 65 5f 62 79 74 65 73 00 63 6f 6d 70 65 6e 73 61 74 65 00 6d 61 f.sink.cache_bytes.compensate.ma
7ca0 78 73 61 6d 70 6c 65 73 00 63 6c 65 61 72 5f 63 61 63 68 65 00 6d 61 6c 6c 6f 63 00 73 74 64 65 xsamples.clear_cache.malloc.stde
7cc0 72 72 00 66 77 72 69 74 65 00 65 78 69 74 00 66 63 79 63 00 66 72 65 65 00 63 61 6c 6c 6f 63 00 rr.fwrite.exit.fcyc.free.calloc.
7ce0 73 74 61 72 74 5f 63 6f 6d 70 5f 63 6f 75 6e 74 65 72 00 67 65 74 5f 63 6f 6d 70 5f 63 6f 75 6e start_comp_counter.get_comp_coun
7d00 74 65 72 00 73 74 61 72 74 5f 63 6f 75 6e 74 65 72 00 67 65 74 5f 63 6f 75 6e 74 65 72 00 73 65 ter.start_counter.get_counter.se
7d20 74 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 00 73 65 74 5f 66 63 79 63 5f 63 61 63 68 t_fcyc_clear_cache.set_fcyc_cach
7d40 65 5f 73 69 7a 65 00 73 65 74 5f 66 63 79 63 5f 63 61 63 68 65 5f 62 6c 6f 63 6b 00 73 65 74 5f e_size.set_fcyc_cache_block.set_
7d60 66 63 79 63 5f 63 6f 6d 70 65 6e 73 61 74 65 00 73 65 74 5f 66 63 79 63 5f 6b 00 73 65 74 5f 66 fcyc_compensate.set_fcyc_k.set_f
7d80 63 79 63 5f 6d 61 78 73 61 6d 70 6c 65 73 00 73 65 74 5f 66 63 79 63 5f 65 70 73 69 6c 6f 6e 00 cyc_maxsamples.set_fcyc_epsilon.
7da0 02 00 00 00 01 04 00 00 08 00 00 00 01 03 00 00 0e 00 00 00 01 04 00 00 27 00 00 00 01 04 00 00 ........................'.......
7dc0 a8 00 00 00 01 04 00 00 b2 00 00 00 01 03 00 00 ba 00 00 00 01 04 00 00 c3 00 00 00 01 04 00 00 ................................
7de0 c9 00 00 00 01 03 00 00 e8 00 00 00 01 03 00 00 ed 00 00 00 01 04 00 00 f3 00 00 00 01 04 00 00 ................................
7e00 f9 00 00 00 01 03 00 00 22 01 00 00 01 04 00 00 31 01 00 00 02 17 00 00 38 01 00 00 01 04 00 00 ........".......1.......8.......
7e20 3f 01 00 00 01 18 00 00 56 01 00 00 01 0b 00 00 5f 01 00 00 02 19 00 00 6b 01 00 00 02 1a 00 00 ?.......V......._.......k.......
7e40 76 01 00 00 01 04 00 00 8a 01 00 00 02 1c 00 00 8f 01 00 00 01 03 00 00 9f 01 00 00 02 1d 00 00 v...............................
7e60 a5 01 00 00 01 04 00 00 ab 01 00 00 01 04 00 00 b6 01 00 00 01 04 00 00 c1 01 00 00 02 1e 00 00 ................................
7e80 cb 01 00 00 02 1f 00 00 e1 01 00 00 01 03 00 00 e7 01 00 00 01 04 00 00 ef 01 00 00 01 04 00 00 ................................
7ea0 06 02 00 00 02 20 00 00 11 02 00 00 02 21 00 00 27 02 00 00 01 03 00 00 2d 02 00 00 01 04 00 00 .............!..'.......-.......
7ec0 34 02 00 00 01 04 00 00 41 02 00 00 01 04 00 00 4f 02 00 00 02 1c 00 00 55 02 00 00 01 04 00 00 4.......A.......O.......U.......
7ee0 75 02 00 00 01 04 00 00 89 02 00 00 01 03 00 00 90 02 00 00 01 03 00 00 95 02 00 00 01 04 00 00 u...............................
7f00 a1 02 00 00 02 1c 00 00 a7 02 00 00 01 04 00 00 c5 02 00 00 01 03 00 00 d5 02 00 00 01 04 00 00 ................................
7f20 e5 02 00 00 01 03 00 00 f5 02 00 00 01 03 00 00 06 03 00 00 01 03 00 00 20 00 00 00 02 02 00 00 ................................
7f40 50 00 00 00 02 02 00 00 64 00 00 00 02 02 00 00 9c 00 00 00 02 02 00 00 c8 00 00 00 02 02 00 00 P.......d.......................
7f60 dc 00 00 00 02 02 00 00 f4 00 00 00 02 02 00 00 08 01 00 00 02 02 00 00 1c 01 00 00 02 02 00 00 ................................
7f80 30 01 00 00 02 02 00 00 44 01 00 00 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0.......D.......................
7fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
7fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8000 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 73 65 63 73 2e 63 00 00 00 00 00 00 00 malloclab-handout/fsecs.c.......
8020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
8080 30 30 30 32 33 34 31 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 35 37 31 00 20 30 00 00 00 0002341.12507032412.014571..0...
80a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
80e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8100 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
8120 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
8140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
81e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8200 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a /****************************..*
8220 20 48 69 67 68 2d 6c 65 76 65 6c 20 74 69 6d 69 6e 67 20 77 72 61 70 70 65 72 73 0a 20 2a 2a 2a .High-level.timing.wrappers..***
8240 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 23 69 6e 63 6c *************************/.#incl
8260 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 22 66 73 65 63 73 2e 68 22 ude.<stdio.h>.#include."fsecs.h"
8280 0a 23 69 6e 63 6c 75 64 65 20 22 66 63 79 63 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 63 6c 6f .#include."fcyc.h".#include."clo
82a0 63 6b 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 66 74 69 6d 65 72 2e 68 22 0a 23 69 6e 63 6c 75 ck.h".#include."ftimer.h".#inclu
82c0 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 0a 0a 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 4d 68 7a de."config.h"..static.double.Mhz
82e0 3b 20 20 2f 2a 20 65 73 74 69 6d 61 74 65 64 20 43 50 55 20 63 6c 6f 63 6b 20 66 72 65 71 75 65 ;../*.estimated.CPU.clock.freque
8300 6e 63 79 20 2a 2f 0a 0a 65 78 74 65 72 6e 20 69 6e 74 20 76 65 72 62 6f 73 65 3b 20 2f 2a 20 2d ncy.*/..extern.int.verbose;./*.-
8320 76 20 6f 70 74 69 6f 6e 20 69 6e 20 6d 64 72 69 76 65 72 2e 63 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 v.option.in.mdriver.c.*/../*..*.
8340 69 6e 69 74 5f 66 73 65 63 73 20 2d 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 74 69 6d 69 init_fsecs.-.initialize.the.timi
8360 6e 67 20 70 61 63 6b 61 67 65 0a 20 2a 2f 0a 76 6f 69 64 20 69 6e 69 74 5f 66 73 65 63 73 28 76 ng.package..*/.void.init_fsecs(v
8380 6f 69 64 29 0a 7b 0a 20 20 20 20 4d 68 7a 20 3d 20 30 3b 20 2f 2a 20 6b 65 65 70 20 67 63 63 20 oid).{.....Mhz.=.0;./*.keep.gcc.
83a0 2d 57 61 6c 6c 20 68 61 70 70 79 20 2a 2f 0a 0a 23 69 66 20 55 53 45 5f 46 43 59 43 0a 20 20 20 -Wall.happy.*/..#if.USE_FCYC....
83c0 20 69 66 20 28 76 65 72 62 6f 73 65 29 0a 09 70 72 69 6e 74 66 28 22 4d 65 61 73 75 72 69 6e 67 .if.(verbose)..printf("Measuring
83e0 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 77 69 74 68 20 61 20 63 79 63 6c 65 20 63 6f 75 6e 74 65 .performance.with.a.cycle.counte
8400 72 2e 5c 6e 22 29 3b 0a 0a 20 20 20 20 2f 2a 20 73 65 74 20 6b 65 79 20 70 61 72 61 6d 65 74 65 r.\n");....../*.set.key.paramete
8420 72 73 20 66 6f 72 20 74 68 65 20 66 63 79 63 20 70 61 63 6b 61 67 65 20 2a 2f 0a 20 20 20 20 73 rs.for.the.fcyc.package.*/.....s
8440 65 74 5f 66 63 79 63 5f 6d 61 78 73 61 6d 70 6c 65 73 28 32 30 29 3b 20 0a 20 20 20 20 73 65 74 et_fcyc_maxsamples(20);......set
8460 5f 66 63 79 63 5f 63 6c 65 61 72 5f 63 61 63 68 65 28 31 29 3b 0a 20 20 20 20 73 65 74 5f 66 63 _fcyc_clear_cache(1);.....set_fc
8480 79 63 5f 63 6f 6d 70 65 6e 73 61 74 65 28 31 29 3b 0a 20 20 20 20 73 65 74 5f 66 63 79 63 5f 65 yc_compensate(1);.....set_fcyc_e
84a0 70 73 69 6c 6f 6e 28 30 2e 30 31 29 3b 0a 20 20 20 20 73 65 74 5f 66 63 79 63 5f 6b 28 33 29 3b psilon(0.01);.....set_fcyc_k(3);
84c0 0a 20 20 20 20 4d 68 7a 20 3d 20 6d 68 7a 28 76 65 72 62 6f 73 65 20 3e 20 30 29 3b 0a 23 65 6c .....Mhz.=.mhz(verbose.>.0);.#el
84e0 69 66 20 55 53 45 5f 49 54 49 4d 45 52 0a 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0a 09 if.USE_ITIMER.....if.(verbose)..
8500 70 72 69 6e 74 66 28 22 4d 65 61 73 75 72 69 6e 67 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 77 69 printf("Measuring.performance.wi
8520 74 68 20 74 68 65 20 69 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 2e 5c 6e 22 29 3b 0a 23 65 6c 69 th.the.interval.timer.\n");.#eli
8540 66 20 55 53 45 5f 47 45 54 54 4f 44 0a 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0a 09 70 f.USE_GETTOD.....if.(verbose)..p
8560 72 69 6e 74 66 28 22 4d 65 61 73 75 72 69 6e 67 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 77 69 74 rintf("Measuring.performance.wit
8580 68 20 67 65 74 74 69 6d 65 6f 66 64 61 79 28 29 2e 5c 6e 22 29 3b 0a 23 65 6e 64 69 66 0a 7d 0a h.gettimeofday().\n");.#endif.}.
85a0 0a 2f 2a 0a 20 2a 20 66 73 65 63 73 20 2d 20 52 65 74 75 72 6e 20 74 68 65 20 72 75 6e 6e 69 6e ./*..*.fsecs.-.Return.the.runnin
85c0 67 20 74 69 6d 65 20 6f 66 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 20 28 69 6e 20 73 65 63 6f 6e g.time.of.a.function.f.(in.secon
85e0 64 73 29 0a 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 73 65 63 73 28 66 73 65 63 73 5f 74 65 73 74 5f ds)..*/.double.fsecs(fsecs_test_
8600 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 20 0a 7b 0a 23 69 66 20 55 53 45 5f funct.f,.void.*argp)..{.#if.USE_
8620 46 43 59 43 0a 20 20 20 20 64 6f 75 62 6c 65 20 63 79 63 6c 65 73 20 3d 20 66 63 79 63 28 66 2c FCYC.....double.cycles.=.fcyc(f,
8640 20 61 72 67 70 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 63 79 63 6c 65 73 2f 28 4d 68 7a 2a 31 .argp);.....return.cycles/(Mhz*1
8660 65 36 29 3b 0a 23 65 6c 69 66 20 55 53 45 5f 49 54 49 4d 45 52 0a 20 20 20 20 72 65 74 75 72 6e e6);.#elif.USE_ITIMER.....return
8680 20 66 74 69 6d 65 72 5f 69 74 69 6d 65 72 28 66 2c 20 61 72 67 70 2c 20 31 30 29 3b 0a 23 65 6c .ftimer_itimer(f,.argp,.10);.#el
86a0 69 66 20 55 53 45 5f 47 45 54 54 4f 44 0a 20 20 20 20 72 65 74 75 72 6e 20 66 74 69 6d 65 72 5f if.USE_GETTOD.....return.ftimer_
86c0 67 65 74 74 6f 64 28 66 2c 20 61 72 67 70 2c 20 31 30 29 3b 0a 23 65 6e 64 69 66 20 0a 7d 0a 0a gettod(f,.argp,.10);.#endif..}..
86e0 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
87e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8800 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 73 65 63 73 2e 68 00 00 00 00 00 00 00 malloclab-handout/fsecs.h.......
8820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8860 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
8880 30 30 30 30 31 36 30 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 35 37 33 00 20 30 00 00 00 0000160.12507032412.014573..0...
88a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
88e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8900 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
8920 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
8940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
89e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8a00 74 79 70 65 64 65 66 20 76 6f 69 64 20 28 2a 66 73 65 63 73 5f 74 65 73 74 5f 66 75 6e 63 74 29 typedef.void.(*fsecs_test_funct)
8a20 28 76 6f 69 64 20 2a 29 3b 0a 0a 76 6f 69 64 20 69 6e 69 74 5f 66 73 65 63 73 28 76 6f 69 64 29 (void.*);..void.init_fsecs(void)
8a40 3b 0a 64 6f 75 62 6c 65 20 66 73 65 63 73 28 66 73 65 63 73 5f 74 65 73 74 5f 66 75 6e 63 74 20 ;.double.fsecs(fsecs_test_funct.
8a60 66 2c 20 76 6f 69 64 20 2a 61 72 67 70 29 3b 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f,.void.*argp);.................
8a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 73 65 63 73 2e 6f 00 00 00 00 00 00 00 malloclab-handout/fsecs.o.......
8c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8c60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
8c80 30 30 30 32 34 31 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 36 30 36 00 20 30 00 00 00 0002414.12507032412.014606..0...
8ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
8d20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
8d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8e00 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 .ELF............................
8e20 a0 01 00 00 00 00 00 00 34 00 00 00 00 00 28 00 0d 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 ........4.....(.................
8e40 a1 00 00 00 00 d9 ee dd 1d 00 00 00 00 85 c0 75 07 c3 8d b6 00 00 00 00 83 ec 1c c7 04 24 00 00 ...............u.............$..
8e60 00 00 e8 fc ff ff ff 83 c4 1c c3 90 8d 74 26 00 83 ec 1c 8b 44 24 24 c7 44 24 08 0a 00 00 00 89 .............t&.....D$$.D$......
8e80 44 24 04 8b 44 24 20 89 04 24 e8 fc ff ff ff 83 c4 1c c3 00 00 00 00 00 4d 65 61 73 75 72 69 6e D$..D$...$..............Measurin
8ea0 67 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 77 69 74 68 20 67 65 74 74 69 6d 65 6f 66 64 61 79 28 g.performance.with.gettimeofday(
8ec0 29 2e 00 00 47 43 43 3a 20 28 55 62 75 6e 74 75 20 34 2e 38 2e 31 2d 32 75 62 75 6e 74 75 31 7e )...GCC:.(Ubuntu.4.8.1-2ubuntu1~
8ee0 31 32 2e 30 34 29 20 34 2e 38 2e 31 00 00 00 00 14 00 00 00 00 00 00 00 01 7a 52 00 01 7c 08 01 12.04).4.8.1.............zR..|..
8f00 1b 0c 04 04 88 01 00 00 14 00 00 00 1c 00 00 00 00 00 00 00 2b 00 00 00 00 5b 0e 20 4f 0e 04 00 ....................+....[..O...
8f20 14 00 00 00 34 00 00 00 30 00 00 00 23 00 00 00 00 43 0e 20 5f 0e 04 00 00 2e 73 79 6d 74 61 62 ....4...0...#....C.._.....symtab
8f40 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e 72 65 6c 2e 74 65 78 74 00 2e 64 61 ..strtab..shstrtab..rel.text..da
8f60 74 61 00 2e 62 73 73 00 2e 72 6f 64 61 74 61 2e 73 74 72 31 2e 34 00 2e 63 6f 6d 6d 65 6e 74 00 ta..bss..rodata.str1.4..comment.
8f80 2e 6e 6f 74 65 2e 47 4e 55 2d 73 74 61 63 6b 00 2e 72 65 6c 2e 65 68 5f 66 72 61 6d 65 00 00 00 .note.GNU-stack..rel.eh_frame...
8fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
8fc0 00 00 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 40 00 00 00 53 00 00 00 ........................@...S...
8fe0 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 1b 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ................................
9000 d4 04 00 00 28 00 00 00 0b 00 00 00 01 00 00 00 04 00 00 00 08 00 00 00 25 00 00 00 01 00 00 00 ....(...................%.......
9020 03 00 00 00 00 00 00 00 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................................
9040 2b 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 98 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 +...............................
9060 08 00 00 00 00 00 00 00 30 00 00 00 01 00 00 00 32 00 00 00 00 00 00 00 98 00 00 00 2b 00 00 00 ........0.......2...........+...
9080 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 3f 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00 ................?.......0.......
90a0 c3 00 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 48 00 00 00 01 00 00 00 ....*...................H.......
90c0 00 00 00 00 00 00 00 00 ed 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................................
90e0 5c 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 f0 00 00 00 48 00 00 00 00 00 00 00 00 00 00 00 \...................H...........
9100 04 00 00 00 00 00 00 00 58 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 fc 04 00 00 10 00 00 00 ........X.......................
9120 0b 00 00 00 08 00 00 00 04 00 00 00 08 00 00 00 11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................................
9140 38 01 00 00 66 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 8...f...........................
9160 00 00 00 00 00 00 00 00 a8 03 00 00 f0 00 00 00 0c 00 00 00 0a 00 00 00 04 00 00 00 10 00 00 00 ................................
9180 09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 98 04 00 00 39 00 00 00 00 00 00 00 00 00 00 00 ....................9...........
91a0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................................
91c0 00 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 00 00 00 00 03 00 01 00 00 00 00 00 00 00 00 00 ................................
91e0 00 00 00 00 03 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 04 00 00 00 00 00 00 00 00 00 ................................
9200 00 00 00 00 03 00 05 00 09 00 00 00 00 00 00 00 08 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 ................................
9220 00 00 00 00 03 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 08 00 00 00 00 00 00 00 00 00 ................................
9240 00 00 00 00 03 00 06 00 0d 00 00 00 00 00 00 00 2b 00 00 00 12 00 01 00 18 00 00 00 00 00 00 00 ................+...............
9260 00 00 00 00 10 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 25 00 00 00 30 00 00 00 ........................%...0...
9280 23 00 00 00 12 00 01 00 2b 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 66 73 65 63 73 2e 63 #.......+................fsecs.c
92a0 00 4d 68 7a 00 69 6e 69 74 5f 66 73 65 63 73 00 76 65 72 62 6f 73 65 00 70 75 74 73 00 66 73 65 .Mhz.init_fsecs.verbose.puts.fse
92c0 63 73 00 66 74 69 6d 65 72 5f 67 65 74 74 6f 64 00 00 00 00 01 00 00 00 01 0b 00 00 09 00 00 00 cs.ftimer_gettod................
92e0 01 04 00 00 1e 00 00 00 01 05 00 00 23 00 00 00 02 0c 00 00 4b 00 00 00 02 0e 00 00 20 00 00 00 ............#.......K...........
9300 02 02 00 00 38 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....8...........................
9320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
93e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9400 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 74 69 6d 65 72 2e 63 00 00 00 00 00 00 malloclab-handout/ftimer.c......
9420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9460 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
9480 30 30 30 35 33 37 32 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 36 33 00 20 30 00 00 00 0005372.12507032412.014763..0...
94a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
94e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9500 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
9520 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
9540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
95e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
9600 2f 2a 0a 20 2a 20 66 74 69 6d 65 72 2e 63 20 2d 20 45 73 74 69 6d 61 74 65 20 74 68 65 20 74 69 /*..*.ftimer.c.-.Estimate.the.ti
9620 6d 65 20 28 69 6e 20 73 65 63 6f 6e 64 73 29 20 75 73 65 64 20 62 79 20 61 20 66 75 6e 63 74 69 me.(in.seconds).used.by.a.functi
9640 6f 6e 20 66 20 0a 20 2a 20 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 32 30 30 32 2c on.f...*...*.Copyright.(c).2002,
9660 20 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 44 2e 20 4f 27 48 61 6c 6c 61 72 6f 6e 2c 20 41 6c .R..Bryant.and.D..O'Hallaron,.Al
9680 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 20 2a 20 4d 61 79 20 6e 6f 74 20 62 65 l.rights.reserved...*.May.not.be
96a0 20 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c 20 6f 72 20 63 6f 70 69 65 64 20 77 69 74 68 6f .used,.modified,.or.copied.witho
96c0 75 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 20 2a 0a 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 69 ut.permission...*..*.Function.ti
96e0 6d 65 72 73 20 74 68 61 74 20 65 73 74 69 6d 61 74 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74 mers.that.estimate.the.running.t
9700 69 6d 65 20 28 69 6e 20 73 65 63 6f 6e 64 73 29 20 6f 66 20 61 20 66 75 6e 63 74 69 6f 6e 20 66 ime.(in.seconds).of.a.function.f
9720 2e 0a 20 2a 20 20 20 20 66 74 69 6d 65 72 5f 69 74 69 6d 65 72 3a 20 76 65 72 73 69 6f 6e 20 74 ...*....ftimer_itimer:.version.t
9740 68 61 74 20 75 73 65 73 20 74 68 65 20 69 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 0a 20 2a 20 20 hat.uses.the.interval.timer..*..
9760 20 20 66 74 69 6d 65 72 5f 67 65 74 74 6f 64 3a 20 76 65 72 73 69 6f 6e 20 74 68 61 74 20 75 73 ..ftimer_gettod:.version.that.us
9780 65 73 20 67 65 74 74 69 6d 65 6f 66 64 61 79 0a 20 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 es.gettimeofday..*/.#include.<st
97a0 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 74 69 6d 65 2e 68 3e 0a 23 69 6e dio.h>.#include.<sys/time.h>.#in
97c0 63 6c 75 64 65 20 22 66 74 69 6d 65 72 2e 68 22 0a 0a 2f 2a 20 66 75 6e 63 74 69 6f 6e 20 70 72 clude."ftimer.h"../*.function.pr
97e0 6f 74 6f 74 79 70 65 73 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 69 6e 69 74 5f 65 74 69 ototypes.*/.static.void.init_eti
9800 6d 65 28 76 6f 69 64 29 3b 0a 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 67 65 74 5f 65 74 69 6d me(void);.static.double.get_etim
9820 65 28 76 6f 69 64 29 3b 0a 0a 2f 2a 20 0a 20 2a 20 66 74 69 6d 65 72 5f 69 74 69 6d 65 72 20 2d e(void);../*...*.ftimer_itimer.-
9840 20 55 73 65 20 74 68 65 20 69 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 20 74 6f 20 65 73 74 69 6d .Use.the.interval.timer.to.estim
9860 61 74 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74 69 6d 65 0a 20 2a 20 6f 66 20 66 28 61 72 67 ate.the.running.time..*.of.f(arg
9880 70 29 2e 20 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67 65 20 6f 66 20 6e 20 72 75 6e 73 p)..Return.the.average.of.n.runs
98a0 2e 20 20 0a 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 74 69 6d 65 72 5f 69 74 69 6d 65 72 28 66 74 69 .....*/.double.ftimer_itimer(fti
98c0 6d 65 72 5f 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 20 2a 61 72 67 70 2c 20 69 6e mer_test_funct.f,.void.*argp,.in
98e0 74 20 6e 29 0a 7b 0a 20 20 20 20 64 6f 75 62 6c 65 20 73 74 61 72 74 2c 20 74 6d 65 61 73 3b 0a t.n).{.....double.start,.tmeas;.
9900 20 20 20 20 69 6e 74 20 69 3b 0a 0a 20 20 20 20 69 6e 69 74 5f 65 74 69 6d 65 28 29 3b 0a 20 20 ....int.i;......init_etime();...
9920 20 20 73 74 61 72 74 20 3d 20 67 65 74 5f 65 74 69 6d 65 28 29 3b 0a 20 20 20 20 66 6f 72 20 28 ..start.=.get_etime();.....for.(
9940 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 0a 09 66 28 61 72 67 70 29 3b 0a 20 20 i.=.0;.i.<.n;.i++)...f(argp);...
9960 20 20 74 6d 65 61 73 20 3d 20 67 65 74 5f 65 74 69 6d 65 28 29 20 2d 20 73 74 61 72 74 3b 0a 20 ..tmeas.=.get_etime().-.start;..
9980 20 20 20 72 65 74 75 72 6e 20 74 6d 65 61 73 20 2f 20 6e 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 66 ...return.tmeas./.n;.}../*...*.f
99a0 74 69 6d 65 72 5f 67 65 74 74 6f 64 20 2d 20 55 73 65 20 67 65 74 74 69 6d 65 6f 66 64 61 79 20 timer_gettod.-.Use.gettimeofday.
99c0 74 6f 20 65 73 74 69 6d 61 74 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74 69 6d 65 20 6f 66 0a to.estimate.the.running.time.of.
99e0 20 2a 20 66 28 61 72 67 70 29 2e 20 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 72 61 67 65 20 6f .*.f(argp)..Return.the.average.o
9a00 66 20 6e 20 72 75 6e 73 2e 20 20 0a 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 74 69 6d 65 72 5f 67 65 f.n.runs.....*/.double.ftimer_ge
9a20 74 74 6f 64 28 66 74 69 6d 65 72 5f 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 20 2a ttod(ftimer_test_funct.f,.void.*
9a40 61 72 67 70 2c 20 69 6e 74 20 6e 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 73 74 argp,.int.n).{.....int.i;.....st
9a60 72 75 63 74 20 74 69 6d 65 76 61 6c 20 73 74 76 2c 20 65 74 76 3b 0a 20 20 20 20 64 6f 75 62 6c ruct.timeval.stv,.etv;.....doubl
9a80 65 20 64 69 66 66 3b 0a 0a 20 20 20 20 67 65 74 74 69 6d 65 6f 66 64 61 79 28 26 73 74 76 2c 20 e.diff;......gettimeofday(&stv,.
9aa0 4e 55 4c 4c 29 3b 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 69 20 3c 20 6e 3b 20 69 2b NULL);.....for.(i.=.0;.i.<.n;.i+
9ac0 2b 29 20 0a 09 66 28 61 72 67 70 29 3b 0a 20 20 20 20 67 65 74 74 69 6d 65 6f 66 64 61 79 28 26 +)...f(argp);.....gettimeofday(&
9ae0 65 74 76 2c 4e 55 4c 4c 29 3b 0a 20 20 20 20 64 69 66 66 20 3d 20 31 45 33 2a 28 65 74 76 2e 74 etv,NULL);.....diff.=.1E3*(etv.t
9b00 76 5f 73 65 63 20 2d 20 73 74 76 2e 74 76 5f 73 65 63 29 20 2b 20 31 45 2d 33 2a 28 65 74 76 2e v_sec.-.stv.tv_sec).+.1E-3*(etv.
9b20 74 76 5f 75 73 65 63 2d 73 74 76 2e 74 76 5f 75 73 65 63 29 3b 0a 20 20 20 20 64 69 66 66 20 2f tv_usec-stv.tv_usec);.....diff./
9b40 3d 20 6e 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 31 45 2d 33 2a 64 69 66 66 29 3b 0a 7d 0a 0a =.n;.....return.(1E-3*diff);.}..
9b60 0a 2f 2a 0a 20 2a 20 52 6f 75 74 69 6e 65 73 20 66 6f 72 20 6d 61 6e 69 70 75 6c 61 74 69 6e 67 ./*..*.Routines.for.manipulating
9b80 20 74 68 65 20 55 6e 69 78 20 69 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 0a 20 2a 2f 0a 0a 2f 2a .the.Unix.interval.timer..*/../*
9ba0 20 54 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 6e 74 65 72 76 .The.initial.value.of.the.interv
9bc0 61 6c 20 74 69 6d 65 72 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4d 41 58 5f 45 54 49 4d 45 20 38 36 al.timer.*/.#define.MAX_ETIME.86
9be0 34 30 30 20 20 20 0a 0a 2f 2a 20 73 74 61 74 69 63 20 76 61 72 69 61 62 6c 65 73 20 74 68 61 74 400...../*.static.variables.that
9c00 20 68 6f 6c 64 20 74 68 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 69 .hold.the.initial.value.of.the.i
9c20 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 20 2a 2f 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 nterval.timer.*/.static.struct.i
9c40 74 69 6d 65 72 76 61 6c 20 66 69 72 73 74 5f 75 3b 20 2f 2a 20 75 73 65 72 20 74 69 6d 65 20 2a timerval.first_u;./*.user.time.*
9c60 2f 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20 69 74 69 6d 65 72 76 61 6c 20 66 69 72 73 74 5f /.static.struct.itimerval.first_
9c80 72 3b 20 2f 2a 20 72 65 61 6c 20 74 69 6d 65 20 2a 2f 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 r;./*.real.time.*/.static.struct
9ca0 20 69 74 69 6d 65 72 76 61 6c 20 66 69 72 73 74 5f 70 3b 20 2f 2a 20 70 72 6f 66 20 74 69 6d 65 .itimerval.first_p;./*.prof.time
9cc0 2a 2f 0a 0a 2f 2a 20 69 6e 69 74 20 74 68 65 20 74 69 6d 65 72 20 2a 2f 0a 73 74 61 74 69 63 20 */../*.init.the.timer.*/.static.
9ce0 76 6f 69 64 20 69 6e 69 74 5f 65 74 69 6d 65 28 76 6f 69 64 29 0a 7b 0a 20 20 20 20 66 69 72 73 void.init_etime(void).{.....firs
9d00 74 5f 75 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 73 65 63 20 3d 20 30 3b 0a 20 20 20 20 t_u.it_interval.tv_sec.=.0;.....
9d20 66 69 72 73 74 5f 75 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 75 73 65 63 20 3d 20 30 3b first_u.it_interval.tv_usec.=.0;
9d40 0a 20 20 20 20 66 69 72 73 74 5f 75 2e 69 74 5f 76 61 6c 75 65 2e 74 76 5f 73 65 63 20 3d 20 4d .....first_u.it_value.tv_sec.=.M
9d60 41 58 5f 45 54 49 4d 45 3b 0a 20 20 20 20 66 69 72 73 74 5f 75 2e 69 74 5f 76 61 6c 75 65 2e 74 AX_ETIME;.....first_u.it_value.t
9d80 76 5f 75 73 65 63 20 3d 20 30 3b 0a 20 20 20 20 73 65 74 69 74 69 6d 65 72 28 49 54 49 4d 45 52 v_usec.=.0;.....setitimer(ITIMER
9da0 5f 56 49 52 54 55 41 4c 2c 20 26 66 69 72 73 74 5f 75 2c 20 4e 55 4c 4c 29 3b 0a 0a 20 20 20 20 _VIRTUAL,.&first_u,.NULL);......
9dc0 66 69 72 73 74 5f 72 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 73 65 63 20 3d 20 30 3b 0a first_r.it_interval.tv_sec.=.0;.
9de0 20 20 20 20 66 69 72 73 74 5f 72 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 75 73 65 63 20 ....first_r.it_interval.tv_usec.
9e00 3d 20 30 3b 0a 20 20 20 20 66 69 72 73 74 5f 72 2e 69 74 5f 76 61 6c 75 65 2e 74 76 5f 73 65 63 =.0;.....first_r.it_value.tv_sec
9e20 20 3d 20 4d 41 58 5f 45 54 49 4d 45 3b 0a 20 20 20 20 66 69 72 73 74 5f 72 2e 69 74 5f 76 61 6c .=.MAX_ETIME;.....first_r.it_val
9e40 75 65 2e 74 76 5f 75 73 65 63 20 3d 20 30 3b 0a 20 20 20 20 73 65 74 69 74 69 6d 65 72 28 49 54 ue.tv_usec.=.0;.....setitimer(IT
9e60 49 4d 45 52 5f 52 45 41 4c 2c 20 26 66 69 72 73 74 5f 72 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 0a IMER_REAL,.&first_r,.NULL);.....
9e80 20 20 20 20 66 69 72 73 74 5f 70 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 73 65 63 20 3d ....first_p.it_interval.tv_sec.=
9ea0 20 30 3b 0a 20 20 20 20 66 69 72 73 74 5f 70 2e 69 74 5f 69 6e 74 65 72 76 61 6c 2e 74 76 5f 75 .0;.....first_p.it_interval.tv_u
9ec0 73 65 63 20 3d 20 30 3b 0a 20 20 20 20 66 69 72 73 74 5f 70 2e 69 74 5f 76 61 6c 75 65 2e 74 76 sec.=.0;.....first_p.it_value.tv
9ee0 5f 73 65 63 20 3d 20 4d 41 58 5f 45 54 49 4d 45 3b 0a 20 20 20 20 66 69 72 73 74 5f 70 2e 69 74 _sec.=.MAX_ETIME;.....first_p.it
9f00 5f 76 61 6c 75 65 2e 74 76 5f 75 73 65 63 20 3d 20 30 3b 0a 20 20 20 20 73 65 74 69 74 69 6d 65 _value.tv_usec.=.0;.....setitime
9f20 72 28 49 54 49 4d 45 52 5f 50 52 4f 46 2c 20 26 66 69 72 73 74 5f 70 2c 20 4e 55 4c 4c 29 3b 0a r(ITIMER_PROF,.&first_p,.NULL);.
9f40 7d 0a 0a 2f 2a 20 72 65 74 75 72 6e 20 65 6c 61 70 73 65 64 20 72 65 61 6c 20 73 65 63 6f 6e 64 }../*.return.elapsed.real.second
9f60 73 20 73 69 6e 63 65 20 63 61 6c 6c 20 74 6f 20 69 6e 69 74 5f 65 74 69 6d 65 20 2a 2f 0a 73 74 s.since.call.to.init_etime.*/.st
9f80 61 74 69 63 20 64 6f 75 62 6c 65 20 67 65 74 5f 65 74 69 6d 65 28 76 6f 69 64 29 20 7b 0a 20 20 atic.double.get_etime(void).{...
9fa0 20 20 73 74 72 75 63 74 20 69 74 69 6d 65 72 76 61 6c 20 76 5f 63 75 72 72 3b 0a 20 20 20 20 73 ..struct.itimerval.v_curr;.....s
9fc0 74 72 75 63 74 20 69 74 69 6d 65 72 76 61 6c 20 72 5f 63 75 72 72 3b 0a 20 20 20 20 73 74 72 75 truct.itimerval.r_curr;.....stru
9fe0 63 74 20 69 74 69 6d 65 72 76 61 6c 20 70 5f 63 75 72 72 3b 0a 0a 20 20 20 20 67 65 74 69 74 69 ct.itimerval.p_curr;......getiti
a000 6d 65 72 28 49 54 49 4d 45 52 5f 56 49 52 54 55 41 4c 2c 20 26 76 5f 63 75 72 72 29 3b 0a 20 20 mer(ITIMER_VIRTUAL,.&v_curr);...
a020 20 20 67 65 74 69 74 69 6d 65 72 28 49 54 49 4d 45 52 5f 52 45 41 4c 2c 26 72 5f 63 75 72 72 29 ..getitimer(ITIMER_REAL,&r_curr)
a040 3b 0a 20 20 20 20 67 65 74 69 74 69 6d 65 72 28 49 54 49 4d 45 52 5f 50 52 4f 46 2c 26 70 5f 63 ;.....getitimer(ITIMER_PROF,&p_c
a060 75 72 72 29 3b 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 28 64 6f 75 62 6c 65 29 20 28 28 66 69 72 urr);......return.(double).((fir
a080 73 74 5f 70 2e 69 74 5f 76 61 6c 75 65 2e 74 76 5f 73 65 63 20 2d 20 72 5f 63 75 72 72 2e 69 74 st_p.it_value.tv_sec.-.r_curr.it
a0a0 5f 76 61 6c 75 65 2e 74 76 5f 73 65 63 29 20 2b 0a 09 09 20 20 20 20 20 28 66 69 72 73 74 5f 70 _value.tv_sec).+........(first_p
a0c0 2e 69 74 5f 76 61 6c 75 65 2e 74 76 5f 75 73 65 63 20 2d 20 72 5f 63 75 72 72 2e 69 74 5f 76 61 .it_value.tv_usec.-.r_curr.it_va
a0e0 6c 75 65 2e 74 76 5f 75 73 65 63 29 2a 31 65 2d 36 29 3b 0a 7d 0a 0a 0a 0a 0a 00 00 00 00 00 00 lue.tv_usec)*1e-6);.}...........
a100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a200 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 74 69 6d 65 72 2e 68 00 00 00 00 00 00 malloclab-handout/ftimer.h......
a220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
a280 30 30 30 30 36 32 31 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 36 30 00 20 30 00 00 00 0000621.12507032412.014760..0...
a2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a300 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
a320 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
a340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a400 2f 2a 20 0a 20 2a 20 46 75 6e 63 74 69 6f 6e 20 74 69 6d 65 72 73 20 0a 20 2a 2f 0a 74 79 70 65 /*...*.Function.timers...*/.type
a420 64 65 66 20 76 6f 69 64 20 28 2a 66 74 69 6d 65 72 5f 74 65 73 74 5f 66 75 6e 63 74 29 28 76 6f def.void.(*ftimer_test_funct)(vo
a440 69 64 20 2a 29 3b 20 0a 0a 2f 2a 20 45 73 74 69 6d 61 74 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 id.*);.../*.Estimate.the.running
a460 20 74 69 6d 65 20 6f 66 20 66 28 61 72 67 70 29 20 75 73 69 6e 67 20 74 68 65 20 55 6e 69 78 20 .time.of.f(argp).using.the.Unix.
a480 69 6e 74 65 72 76 61 6c 20 74 69 6d 65 72 2e 0a 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 61 76 interval.timer.....Return.the.av
a4a0 65 72 61 67 65 20 6f 66 20 6e 20 72 75 6e 73 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 74 69 6d 65 72 erage.of.n.runs.*/.double.ftimer
a4c0 5f 69 74 69 6d 65 72 28 66 74 69 6d 65 72 5f 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 _itimer(ftimer_test_funct.f,.voi
a4e0 64 20 2a 61 72 67 70 2c 20 69 6e 74 20 6e 29 3b 0a 0a 0a 2f 2a 20 45 73 74 69 6d 61 74 65 20 74 d.*argp,.int.n);.../*.Estimate.t
a500 68 65 20 72 75 6e 6e 69 6e 67 20 74 69 6d 65 20 6f 66 20 66 28 61 72 67 70 29 20 75 73 69 6e 67 he.running.time.of.f(argp).using
a520 20 67 65 74 74 69 6d 65 6f 66 64 61 79 20 0a 20 20 20 52 65 74 75 72 6e 20 74 68 65 20 61 76 65 .gettimeofday.....Return.the.ave
a540 72 61 67 65 20 6f 66 20 6e 20 72 75 6e 73 20 2a 2f 0a 64 6f 75 62 6c 65 20 66 74 69 6d 65 72 5f rage.of.n.runs.*/.double.ftimer_
a560 67 65 74 74 6f 64 28 66 74 69 6d 65 72 5f 74 65 73 74 5f 66 75 6e 63 74 20 66 2c 20 76 6f 69 64 gettod(ftimer_test_funct.f,.void
a580 20 2a 61 72 67 70 2c 20 69 6e 74 20 6e 29 3b 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .*argp,.int.n);.................
a5a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a5e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a600 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 66 74 69 6d 65 72 2e 6f 00 00 00 00 00 00 malloclab-handout/ftimer.o......
a620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
a680 30 30 30 34 32 31 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 37 31 00 20 30 00 00 00 0004214.12507032412.014771..0...
a6a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a6e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a700 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
a720 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
a740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a7e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
a800 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 .ELF............................
a820 c8 03 00 00 00 00 00 00 34 00 00 00 00 00 28 00 0e 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 ........4.....(.................
a840 83 ec 4c 8d 44 24 10 89 44 24 04 c7 04 24 01 00 00 00 e8 fc ff ff ff 8d 44 24 20 89 44 24 04 c7 ..L.D$..D$...$..........D$..D$..
a860 04 24 00 00 00 00 e8 fc ff ff ff 8d 44 24 30 89 44 24 04 c7 04 24 02 00 00 00 e8 fc ff ff ff a1 .$..........D$0.D$...$..........
a880 08 00 00 00 2b 44 24 28 89 44 24 0c a1 0c 00 00 00 2b 44 24 2c db 44 24 0c 89 44 24 0c db 44 24 ....+D$(.D$......+D$,.D$..D$..D$
a8a0 0c dc 0d 00 00 00 00 83 c4 4c de c1 c3 8d 76 00 55 57 56 53 31 db 83 ec 2c c7 44 24 08 00 00 00 .........L....v.UWVS1...,.D$....
a8c0 00 8b 74 24 48 c7 44 24 04 20 00 00 00 8b 6c 24 40 c7 04 24 01 00 00 00 8b 7c 24 44 c7 05 20 00 ..t$H.D$......l$@..$.....|$D....
a8e0 00 00 00 00 00 00 c7 05 24 00 00 00 00 00 00 00 c7 05 28 00 00 00 80 51 01 00 c7 05 2c 00 00 00 ........$.........(....Q....,...
a900 00 00 00 00 e8 fc ff ff ff c7 44 24 08 00 00 00 00 c7 44 24 04 10 00 00 00 c7 04 24 00 00 00 00 ..........D$......D$.......$....
a920 c7 05 10 00 00 00 00 00 00 00 c7 05 14 00 00 00 00 00 00 00 c7 05 18 00 00 00 80 51 01 00 c7 05 ...........................Q....
a940 1c 00 00 00 00 00 00 00 e8 fc ff ff ff c7 44 24 08 00 00 00 00 c7 44 24 04 00 00 00 00 c7 04 24 ..............D$......D$.......$
a960 02 00 00 00 c7 05 00 00 00 00 00 00 00 00 c7 05 04 00 00 00 00 00 00 00 c7 05 08 00 00 00 80 51 ...............................Q
a980 01 00 c7 05 0c 00 00 00 00 00 00 00 e8 fc ff ff ff e8 aa fe ff ff 85 f6 dd 5c 24 10 7e 0e 66 90 .........................\$.~.f.
a9a0 83 c3 01 89 3c 24 ff d5 39 f3 75 f4 e8 8f fe ff ff 89 74 24 1c dc 64 24 10 db 44 24 1c 83 c4 2c ....<$..9.u.......t$..d$..D$...,
a9c0 5b de f9 5e 5f 5d c3 89 f6 8d bc 27 00 00 00 00 55 57 56 53 31 db 83 ec 2c 8b 74 24 48 8d 44 24 [..^_].....'....UWVS1...,.t$H.D$
a9e0 10 c7 44 24 04 00 00 00 00 8b 6c 24 40 89 04 24 8b 7c 24 44 e8 fc ff ff ff 85 f6 7e 0f 8d 76 00 ..D$......l$@..$.|$D.......~..v.
aa00 83 c3 01 89 3c 24 ff d5 39 f3 75 f4 8d 44 24 18 c7 44 24 04 00 00 00 00 89 04 24 e8 fc ff ff ff ....<$..9.u..D$..D$.......$.....
aa20 8b 44 24 18 2b 44 24 10 89 44 24 0c 8b 44 24 1c 2b 44 24 14 db 44 24 0c d8 0d 00 00 00 00 89 44 .D$.+D$..D$..D$.+D$..D$........D
aa40 24 0c db 44 24 0c dd 05 08 00 00 00 dc c9 d9 ca 89 74 24 0c de c1 db 44 24 0c 83 c4 2c de f9 5b $..D$............t$....D$...,..[
aa60 5e 5f 5d de c9 c3 00 00 8d ed b5 a0 f7 c6 b0 3e fc a9 f1 d2 4d 62 50 3f 00 00 7a 44 00 47 43 43 ^_]............>....MbP?..zD.GCC
aa80 3a 20 28 55 62 75 6e 74 75 20 34 2e 38 2e 31 2d 32 75 62 75 6e 74 75 31 7e 31 32 2e 30 34 29 20 :.(Ubuntu.4.8.1-2ubuntu1~12.04).
aaa0 34 2e 38 2e 31 00 00 00 14 00 00 00 00 00 00 00 01 7a 52 00 01 7c 08 01 1b 0c 04 04 88 01 00 00 4.8.1............zR..|..........
aac0 14 00 00 00 1c 00 00 00 00 00 00 00 6d 00 00 00 00 43 0e 50 02 67 0e 04 3c 00 00 00 34 00 00 00 ............m....C.P.g..<...4...
aae0 70 00 00 00 17 01 00 00 00 41 0e 08 85 02 41 0e 0c 87 03 41 0e 10 86 04 41 0e 14 83 05 45 0e 40 p........A....A....A....A....E.@
ab00 03 07 01 0e 14 41 c3 0e 10 43 c6 0e 0c 41 c7 0e 08 41 c5 0e 04 00 00 00 38 00 00 00 74 00 00 00 .....A...C...A...A......8...t...
ab20 90 01 00 00 96 00 00 00 00 41 0e 08 85 02 41 0e 0c 87 03 41 0e 10 86 04 41 0e 14 83 05 45 0e 40 .........A....A....A....A....E.@
ab40 02 84 0e 14 43 c3 0e 10 41 c6 0e 0c 41 c7 0e 08 41 c5 0e 04 00 2e 73 79 6d 74 61 62 00 2e 73 74 ....C...A...A...A.....symtab..st
ab60 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e 72 65 6c 2e 74 65 78 74 00 2e 64 61 74 61 00 2e rtab..shstrtab..rel.text..data..
ab80 62 73 73 00 2e 72 6f 64 61 74 61 2e 63 73 74 38 00 2e 72 6f 64 61 74 61 2e 63 73 74 34 00 2e 63 bss..rodata.cst8..rodata.cst4..c
aba0 6f 6d 6d 65 6e 74 00 2e 6e 6f 74 65 2e 47 4e 55 2d 73 74 61 63 6b 00 2e 72 65 6c 2e 65 68 5f 66 omment..note.GNU-stack..rel.eh_f
abc0 72 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 rame............................
abe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 01 00 00 00 06 00 00 00 00 00 00 00 ................................
ac00 40 00 00 00 26 02 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 1b 00 00 00 09 00 00 00 @...&...........................
ac20 00 00 00 00 00 00 00 00 94 07 00 00 e0 00 00 00 0c 00 00 00 01 00 00 00 04 00 00 00 08 00 00 00 ................................
ac40 25 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 68 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 %...............h...............
ac60 04 00 00 00 00 00 00 00 2b 00 00 00 08 00 00 00 03 00 00 00 00 00 00 00 68 02 00 00 30 00 00 00 ........+...............h...0...
ac80 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 30 00 00 00 01 00 00 00 12 00 00 00 00 00 00 00 ................0...............
aca0 68 02 00 00 10 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 08 00 00 00 3d 00 00 00 01 00 00 00 h.......................=.......
acc0 12 00 00 00 00 00 00 00 78 02 00 00 04 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 04 00 00 00 ........x.......................
ace0 4a 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00 7c 02 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 J.......0.......|...*...........
ad00 01 00 00 00 01 00 00 00 53 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 a6 02 00 00 00 00 00 00 ........S.......................
ad20 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 67 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 ................g...............
ad40 a8 02 00 00 ac 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 63 00 00 00 09 00 00 00 ........................c.......
ad60 00 00 00 00 00 00 00 00 74 08 00 00 18 00 00 00 0c 00 00 00 09 00 00 00 04 00 00 00 08 00 00 00 ........t.......................
ad80 11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 54 03 00 00 71 00 00 00 00 00 00 00 00 00 00 00 ................T...q...........
ada0 01 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 f8 05 00 00 30 01 00 00 ............................0...
adc0 0d 00 00 00 0e 00 00 00 04 00 00 00 10 00 00 00 09 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................................
ade0 28 07 00 00 69 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (...i...........................
ae00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 04 00 f1 ff 00 00 00 00 00 00 00 00 ................................
ae20 00 00 00 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 03 00 00 00 00 00 00 00 00 00 ................................
ae40 00 00 00 00 03 00 04 00 0a 00 00 00 00 00 00 00 6d 00 00 00 02 00 01 00 14 00 00 00 00 00 00 00 ................m...............
ae60 10 00 00 00 01 00 04 00 1c 00 00 00 20 00 00 00 10 00 00 00 01 00 04 00 24 00 00 00 10 00 00 00 ........................$.......
ae80 10 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 05 00 00 00 00 00 00 00 00 00 ................................
aea0 00 00 00 00 03 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 08 00 00 00 00 00 00 00 00 00 ................................
aec0 00 00 00 00 03 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 07 00 2c 00 00 00 00 00 00 00 ........................,.......
aee0 00 00 00 00 10 00 00 00 36 00 00 00 70 00 00 00 17 01 00 00 12 00 01 00 44 00 00 00 00 00 00 00 ........6...p...........D.......
af00 00 00 00 00 10 00 00 00 4e 00 00 00 90 01 00 00 96 00 00 00 12 00 01 00 5c 00 00 00 00 00 00 00 ........N...............\.......
af20 00 00 00 00 10 00 00 00 00 66 74 69 6d 65 72 2e 63 00 67 65 74 5f 65 74 69 6d 65 00 66 69 72 73 .........ftimer.c.get_etime.firs
af40 74 5f 70 00 66 69 72 73 74 5f 75 00 66 69 72 73 74 5f 72 00 67 65 74 69 74 69 6d 65 72 00 66 74 t_p.first_u.first_r.getitimer.ft
af60 69 6d 65 72 5f 69 74 69 6d 65 72 00 73 65 74 69 74 69 6d 65 72 00 66 74 69 6d 65 72 5f 67 65 74 imer_itimer.setitimer.ftimer_get
af80 74 6f 64 00 67 65 74 74 69 6d 65 6f 66 64 61 79 00 00 00 00 13 00 00 00 02 0e 00 00 27 00 00 00 tod.gettimeofday............'...
afa0 02 0e 00 00 3b 00 00 00 02 0e 00 00 40 00 00 00 01 04 00 00 4d 00 00 00 01 04 00 00 63 00 00 00 ....;.......@.......M.......c...
afc0 01 09 00 00 89 00 00 00 01 04 00 00 9e 00 00 00 01 04 00 00 a8 00 00 00 01 04 00 00 b2 00 00 00 ................................
afe0 01 04 00 00 bc 00 00 00 01 04 00 00 c5 00 00 00 02 10 00 00 d5 00 00 00 01 04 00 00 e2 00 00 00 ................................
b000 01 04 00 00 ec 00 00 00 01 04 00 00 f6 00 00 00 01 04 00 00 00 01 00 00 01 04 00 00 09 01 00 00 ................................
b020 02 10 00 00 19 01 00 00 01 04 00 00 26 01 00 00 01 04 00 00 30 01 00 00 01 04 00 00 3a 01 00 00 ............&.......0.......:...
b040 01 04 00 00 44 01 00 00 01 04 00 00 4d 01 00 00 02 10 00 00 b5 01 00 00 02 12 00 00 dc 01 00 00 ....D.......M...................
b060 02 12 00 00 fa 01 00 00 01 0a 00 00 08 02 00 00 01 09 00 00 20 00 00 00 02 02 00 00 38 00 00 00 ............................8...
b080 02 02 00 00 78 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ....x...........................
b0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b200 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 65 6d 6c 69 62 2e 63 00 00 00 00 00 00 malloclab-handout/memlib.c......
b220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
b280 30 30 30 34 33 33 36 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 34 31 00 20 30 00 00 00 0004336.12507032412.014741..0...
b2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b300 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
b320 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
b340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
b400 2f 2a 0a 20 2a 20 6d 65 6d 6c 69 62 2e 63 20 2d 20 61 20 6d 6f 64 75 6c 65 20 74 68 61 74 20 73 /*..*.memlib.c.-.a.module.that.s
b420 69 6d 75 6c 61 74 65 73 20 74 68 65 20 6d 65 6d 6f 72 79 20 73 79 73 74 65 6d 2e 20 20 4e 65 65 imulates.the.memory.system...Nee
b440 64 65 64 20 62 65 63 61 75 73 65 20 69 74 20 0a 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 61 6c ded.because.it...*............al
b460 6c 6f 77 73 20 75 73 20 74 6f 20 69 6e 74 65 72 6c 65 61 76 65 20 63 61 6c 6c 73 20 66 72 6f 6d lows.us.to.interleave.calls.from
b480 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 0a 20 .the.student's.malloc.package...
b4a0 2a 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 20 74 68 65 20 73 79 73 74 65 6d 27 73 20 6d *............with.the.system's.m
b4c0 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 69 6e 20 6c 69 62 63 2e 0a 20 2a 2f 0a 23 69 6e 63 6c alloc.package.in.libc...*/.#incl
b4e0 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 ude.<stdio.h>.#include.<stdlib.h
b500 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 61 73 73 65 72 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c >.#include.<assert.h>.#include.<
b520 75 6e 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 79 73 2f 6d 6d 61 6e 2e 68 3e 0a unistd.h>.#include.<sys/mman.h>.
b540 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 65 72 #include.<string.h>.#include.<er
b560 72 6e 6f 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6d 65 6d 6c 69 62 2e 68 22 0a 23 69 6e 63 rno.h>..#include."memlib.h".#inc
b580 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 0a 0a 2f 2a 20 70 72 69 76 61 74 65 20 76 61 72 69 lude."config.h"../*.private.vari
b5a0 61 62 6c 65 73 20 2a 2f 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 6d 65 6d 5f 73 74 61 72 74 5f ables.*/.static.char.*mem_start_
b5c0 62 72 6b 3b 20 20 2f 2a 20 70 6f 69 6e 74 73 20 74 6f 20 66 69 72 73 74 20 62 79 74 65 20 6f 66 brk;../*.points.to.first.byte.of
b5e0 20 68 65 61 70 20 2a 2f 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 6d 65 6d 5f 62 72 6b 3b 20 20 .heap.*/.static.char.*mem_brk;..
b600 20 20 20 20 20 20 2f 2a 20 70 6f 69 6e 74 73 20 74 6f 20 6c 61 73 74 20 62 79 74 65 20 6f 66 20 ....../*.points.to.last.byte.of.
b620 68 65 61 70 20 2a 2f 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 6d 65 6d 5f 6d 61 78 5f 61 64 64 heap.*/.static.char.*mem_max_add
b640 72 3b 20 20 20 2f 2a 20 6c 61 72 67 65 73 74 20 6c 65 67 61 6c 20 68 65 61 70 20 61 64 64 72 65 r;.../*.largest.legal.heap.addre
b660 73 73 20 2a 2f 20 0a 0a 2f 2a 20 0a 20 2a 20 6d 65 6d 5f 69 6e 69 74 20 2d 20 69 6e 69 74 69 61 ss.*/.../*...*.mem_init.-.initia
b680 6c 69 7a 65 20 74 68 65 20 6d 65 6d 6f 72 79 20 73 79 73 74 65 6d 20 6d 6f 64 65 6c 0a 20 2a 2f lize.the.memory.system.model..*/
b6a0 0a 76 6f 69 64 20 6d 65 6d 5f 69 6e 69 74 28 76 6f 69 64 29 0a 7b 0a 20 20 20 20 2f 2a 20 61 6c .void.mem_init(void).{...../*.al
b6c0 6c 6f 63 61 74 65 20 74 68 65 20 73 74 6f 72 61 67 65 20 77 65 20 77 69 6c 6c 20 75 73 65 20 74 locate.the.storage.we.will.use.t
b6e0 6f 20 6d 6f 64 65 6c 20 74 68 65 20 61 76 61 69 6c 61 62 6c 65 20 56 4d 20 2a 2f 0a 20 20 20 20 o.model.the.available.VM.*/.....
b700 69 66 20 28 28 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 20 3d 20 28 63 68 61 72 20 2a 29 6d 61 6c if.((mem_start_brk.=.(char.*)mal
b720 6c 6f 63 28 4d 41 58 5f 48 45 41 50 29 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 66 70 72 69 6e loc(MAX_HEAP)).==.NULL).{..fprin
b740 74 66 28 73 74 64 65 72 72 2c 20 22 6d 65 6d 5f 69 6e 69 74 5f 76 6d 3a 20 6d 61 6c 6c 6f 63 20 tf(stderr,."mem_init_vm:.malloc.
b760 65 72 72 6f 72 5c 6e 22 29 3b 0a 09 65 78 69 74 28 31 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 error\n");..exit(1);.....}......
b780 6d 65 6d 5f 6d 61 78 5f 61 64 64 72 20 3d 20 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 20 2b 20 4d mem_max_addr.=.mem_start_brk.+.M
b7a0 41 58 5f 48 45 41 50 3b 20 20 2f 2a 20 6d 61 78 20 6c 65 67 61 6c 20 68 65 61 70 20 61 64 64 72 AX_HEAP;../*.max.legal.heap.addr
b7c0 65 73 73 20 2a 2f 0a 20 20 20 20 6d 65 6d 5f 62 72 6b 20 3d 20 6d 65 6d 5f 73 74 61 72 74 5f 62 ess.*/.....mem_brk.=.mem_start_b
b7e0 72 6b 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 68 65 61 70 20 69 73 20 rk;................../*.heap.is.
b800 65 6d 70 74 79 20 69 6e 69 74 69 61 6c 6c 79 20 2a 2f 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 6d 65 6d empty.initially.*/.}../*...*.mem
b820 5f 64 65 69 6e 69 74 20 2d 20 66 72 65 65 20 74 68 65 20 73 74 6f 72 61 67 65 20 75 73 65 64 20 _deinit.-.free.the.storage.used.
b840 62 79 20 74 68 65 20 6d 65 6d 6f 72 79 20 73 79 73 74 65 6d 20 6d 6f 64 65 6c 0a 20 2a 2f 0a 76 by.the.memory.system.model..*/.v
b860 6f 69 64 20 6d 65 6d 5f 64 65 69 6e 69 74 28 76 6f 69 64 29 0a 7b 0a 20 20 20 20 66 72 65 65 28 oid.mem_deinit(void).{.....free(
b880 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 6d 65 6d 5f 72 65 73 mem_start_brk);.}../*..*.mem_res
b8a0 65 74 5f 62 72 6b 20 2d 20 72 65 73 65 74 20 74 68 65 20 73 69 6d 75 6c 61 74 65 64 20 62 72 6b et_brk.-.reset.the.simulated.brk
b8c0 20 70 6f 69 6e 74 65 72 20 74 6f 20 6d 61 6b 65 20 61 6e 20 65 6d 70 74 79 20 68 65 61 70 0a 20 .pointer.to.make.an.empty.heap..
b8e0 2a 2f 0a 76 6f 69 64 20 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 28 29 0a 7b 0a 20 20 20 20 6d 65 */.void.mem_reset_brk().{.....me
b900 6d 5f 62 72 6b 20 3d 20 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a m_brk.=.mem_start_brk;.}../*...*
b920 20 6d 65 6d 5f 73 62 72 6b 20 2d 20 73 69 6d 70 6c 65 20 6d 6f 64 65 6c 20 6f 66 20 74 68 65 20 .mem_sbrk.-.simple.model.of.the.
b940 73 62 72 6b 20 66 75 6e 63 74 69 6f 6e 2e 20 45 78 74 65 6e 64 73 20 74 68 65 20 68 65 61 70 20 sbrk.function..Extends.the.heap.
b960 0a 20 2a 20 20 20 20 62 79 20 69 6e 63 72 20 62 79 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 ..*....by.incr.bytes.and.returns
b980 20 74 68 65 20 73 74 61 72 74 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 6e 65 77 20 61 72 .the.start.address.of.the.new.ar
b9a0 65 61 2e 20 49 6e 0a 20 2a 20 20 20 20 74 68 69 73 20 6d 6f 64 65 6c 2c 20 74 68 65 20 68 65 61 ea..In..*....this.model,.the.hea
b9c0 70 20 63 61 6e 6e 6f 74 20 62 65 20 73 68 72 75 6e 6b 2e 0a 20 2a 2f 0a 76 6f 69 64 20 2a 6d 65 p.cannot.be.shrunk...*/.void.*me
b9e0 6d 5f 73 62 72 6b 28 69 6e 74 20 69 6e 63 72 29 20 0a 7b 0a 20 20 20 20 63 68 61 72 20 2a 6f 6c m_sbrk(int.incr)..{.....char.*ol
ba00 64 5f 62 72 6b 20 3d 20 6d 65 6d 5f 62 72 6b 3b 0a 0a 20 20 20 20 69 66 20 28 20 28 69 6e 63 72 d_brk.=.mem_brk;......if.(.(incr
ba20 20 3c 20 30 29 20 7c 7c 20 28 28 6d 65 6d 5f 62 72 6b 20 2b 20 69 6e 63 72 29 20 3e 20 6d 65 6d .<.0).||.((mem_brk.+.incr).>.mem
ba40 5f 6d 61 78 5f 61 64 64 72 29 29 20 7b 0a 09 65 72 72 6e 6f 20 3d 20 45 4e 4f 4d 45 4d 3b 0a 09 _max_addr)).{..errno.=.ENOMEM;..
ba60 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 45 52 52 4f 52 3a 20 6d 65 6d 5f 73 62 72 6b fprintf(stderr,."ERROR:.mem_sbrk
ba80 20 66 61 69 6c 65 64 2e 20 52 61 6e 20 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 2e 2e 2e 5c 6e 22 .failed..Ran.out.of.memory...\n"
baa0 29 3b 0a 09 72 65 74 75 72 6e 20 28 76 6f 69 64 20 2a 29 2d 31 3b 0a 20 20 20 20 7d 0a 20 20 20 );..return.(void.*)-1;.....}....
bac0 20 6d 65 6d 5f 62 72 6b 20 2b 3d 20 69 6e 63 72 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 76 6f .mem_brk.+=.incr;.....return.(vo
bae0 69 64 20 2a 29 6f 6c 64 5f 62 72 6b 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 6d 65 6d 5f 68 65 61 70 5f id.*)old_brk;.}../*..*.mem_heap_
bb00 6c 6f 20 2d 20 72 65 74 75 72 6e 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 66 69 72 73 74 lo.-.return.address.of.the.first
bb20 20 68 65 61 70 20 62 79 74 65 0a 20 2a 2f 0a 76 6f 69 64 20 2a 6d 65 6d 5f 68 65 61 70 5f 6c 6f .heap.byte..*/.void.*mem_heap_lo
bb40 28 29 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 76 6f 69 64 20 2a 29 6d 65 6d 5f 73 74 61 72 ().{.....return.(void.*)mem_star
bb60 74 5f 62 72 6b 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 6d 65 6d 5f 68 65 61 70 5f 68 69 20 2d 20 72 t_brk;.}../*...*.mem_heap_hi.-.r
bb80 65 74 75 72 6e 20 61 64 64 72 65 73 73 20 6f 66 20 6c 61 73 74 20 68 65 61 70 20 62 79 74 65 0a eturn.address.of.last.heap.byte.
bba0 20 2a 2f 0a 76 6f 69 64 20 2a 6d 65 6d 5f 68 65 61 70 5f 68 69 28 29 0a 7b 0a 20 20 20 20 72 65 .*/.void.*mem_heap_hi().{.....re
bbc0 74 75 72 6e 20 28 76 6f 69 64 20 2a 29 28 6d 65 6d 5f 62 72 6b 20 2d 20 31 29 3b 0a 7d 0a 0a 2f turn.(void.*)(mem_brk.-.1);.}../
bbe0 2a 0a 20 2a 20 6d 65 6d 5f 68 65 61 70 73 69 7a 65 28 29 20 2d 20 72 65 74 75 72 6e 73 20 74 68 *..*.mem_heapsize().-.returns.th
bc00 65 20 68 65 61 70 20 73 69 7a 65 20 69 6e 20 62 79 74 65 73 0a 20 2a 2f 0a 73 69 7a 65 5f 74 20 e.heap.size.in.bytes..*/.size_t.
bc20 6d 65 6d 5f 68 65 61 70 73 69 7a 65 28 29 20 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 28 73 69 mem_heapsize()..{.....return.(si
bc40 7a 65 5f 74 29 28 6d 65 6d 5f 62 72 6b 20 2d 20 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 29 3b 0a ze_t)(mem_brk.-.mem_start_brk);.
bc60 7d 0a 0a 2f 2a 0a 20 2a 20 6d 65 6d 5f 70 61 67 65 73 69 7a 65 28 29 20 2d 20 72 65 74 75 72 6e }../*..*.mem_pagesize().-.return
bc80 73 20 74 68 65 20 70 61 67 65 20 73 69 7a 65 20 6f 66 20 74 68 65 20 73 79 73 74 65 6d 0a 20 2a s.the.page.size.of.the.system..*
bca0 2f 0a 73 69 7a 65 5f 74 20 6d 65 6d 5f 70 61 67 65 73 69 7a 65 28 29 0a 7b 0a 20 20 20 20 72 65 /.size_t.mem_pagesize().{.....re
bcc0 74 75 72 6e 20 28 73 69 7a 65 5f 74 29 67 65 74 70 61 67 65 73 69 7a 65 28 29 3b 0a 7d 0a 00 00 turn.(size_t)getpagesize();.}...
bce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 65 6d 6c 69 62 2e 68 00 00 00 00 00 00 malloclab-handout/memlib.h......
be20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
be60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
be80 30 30 30 30 33 35 36 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 34 34 00 20 30 00 00 00 0000356.12507032412.014744..0...
bea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
bf20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
bf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
bfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c000 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 0a 0a 76 6f 69 64 20 6d 65 6d 5f 69 6e #include.<unistd.h>..void.mem_in
c020 69 74 28 76 6f 69 64 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a 76 6f 69 64 20 6d 65 it(void);................void.me
c040 6d 5f 64 65 69 6e 69 74 28 76 6f 69 64 29 3b 0a 76 6f 69 64 20 2a 6d 65 6d 5f 73 62 72 6b 28 69 m_deinit(void);.void.*mem_sbrk(i
c060 6e 74 20 69 6e 63 72 29 3b 0a 76 6f 69 64 20 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 28 76 6f 69 nt.incr);.void.mem_reset_brk(voi
c080 64 29 3b 20 0a 76 6f 69 64 20 2a 6d 65 6d 5f 68 65 61 70 5f 6c 6f 28 76 6f 69 64 29 3b 0a 76 6f d);..void.*mem_heap_lo(void);.vo
c0a0 69 64 20 2a 6d 65 6d 5f 68 65 61 70 5f 68 69 28 76 6f 69 64 29 3b 0a 73 69 7a 65 5f 74 20 6d 65 id.*mem_heap_hi(void);.size_t.me
c0c0 6d 5f 68 65 61 70 73 69 7a 65 28 76 6f 69 64 29 3b 0a 73 69 7a 65 5f 74 20 6d 65 6d 5f 70 61 67 m_heapsize(void);.size_t.mem_pag
c0e0 65 73 69 7a 65 28 76 6f 69 64 29 3b 0a 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 esize(void);....................
c100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c200 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 65 6d 6c 69 62 2e 6f 00 00 00 00 00 00 malloclab-handout/memlib.o......
c220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
c280 30 30 30 34 33 35 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 37 35 35 00 20 30 00 00 00 0004354.12507032412.014755..0...
c2a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c2e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c300 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
c320 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
c340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c3e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c400 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 01 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 .ELF............................
c420 34 03 00 00 00 00 00 00 34 00 00 00 00 00 28 00 0e 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 4.......4.....(.................
c440 83 ec 1c c7 04 24 00 00 40 01 e8 fc ff ff ff 85 c0 a3 08 00 00 00 74 15 8d 90 00 00 40 01 89 15 .....$..@.............t.....@...
c460 00 00 00 00 a3 04 00 00 00 83 c4 1c c3 a1 00 00 00 00 c7 44 24 08 1a 00 00 00 c7 44 24 04 01 00 ...................D$......D$...
c480 00 00 c7 04 24 00 00 00 00 89 44 24 0c e8 fc ff ff ff c7 04 24 01 00 00 00 e8 fc ff ff ff 66 90 ....$.....D$........$.........f.
c4a0 83 ec 1c a1 08 00 00 00 89 04 24 e8 fc ff ff ff 83 c4 1c c3 8d b6 00 00 00 00 8d bf 00 00 00 00 ..........$.....................
c4c0 a1 08 00 00 00 a3 04 00 00 00 c3 90 8d 74 26 00 83 ec 1c a1 04 00 00 00 8b 54 24 20 85 d2 78 18 .............t&..........T$...x.
c4e0 01 c2 3b 15 00 00 00 00 77 0e 89 15 04 00 00 00 83 c4 1c c3 8d 74 26 00 e8 fc ff ff ff c7 00 0c ..;.....w............t&.........
c500 00 00 00 a1 00 00 00 00 c7 44 24 08 2d 00 00 00 c7 44 24 04 01 00 00 00 c7 04 24 00 00 00 00 89 .........D$.-....D$.......$.....
c520 44 24 0c e8 fc ff ff ff b8 ff ff ff ff 83 c4 1c c3 eb 0d 90 90 90 90 90 90 90 90 90 90 90 90 90 D$..............................
c540 a1 08 00 00 00 c3 8d 76 00 8d bc 27 00 00 00 00 a1 04 00 00 00 83 e8 01 c3 8d b4 26 00 00 00 00 .......v...'...............&....
c560 a1 04 00 00 00 2b 05 08 00 00 00 c3 8d 74 26 00 e9 fc ff ff ff 00 00 00 6d 65 6d 5f 69 6e 69 74 .....+.......t&.........mem_init
c580 5f 76 6d 3a 20 6d 61 6c 6c 6f 63 20 65 72 72 6f 72 0a 00 00 45 52 52 4f 52 3a 20 6d 65 6d 5f 73 _vm:.malloc.error...ERROR:.mem_s
c5a0 62 72 6b 20 66 61 69 6c 65 64 2e 20 52 61 6e 20 6f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 2e 2e 2e brk.failed..Ran.out.of.memory...
c5c0 0a 00 00 47 43 43 3a 20 28 55 62 75 6e 74 75 20 34 2e 38 2e 31 2d 32 75 62 75 6e 74 75 31 7e 31 ...GCC:.(Ubuntu.4.8.1-2ubuntu1~1
c5e0 32 2e 30 34 29 20 34 2e 38 2e 31 00 14 00 00 00 00 00 00 00 01 7a 52 00 01 7c 08 01 1b 0c 04 04 2.04).4.8.1..........zR..|......
c600 88 01 00 00 18 00 00 00 1c 00 00 00 00 00 00 00 5e 00 00 00 00 43 0e 20 69 0a 0e 04 41 0b 00 00 ................^....C..i...A...
c620 14 00 00 00 38 00 00 00 60 00 00 00 14 00 00 00 00 43 0e 20 50 0e 04 00 10 00 00 00 50 00 00 00 ....8...`........C..P.......P...
c640 80 00 00 00 0b 00 00 00 00 00 00 00 1c 00 00 00 64 00 00 00 90 00 00 00 61 00 00 00 00 43 0e 20 ................d.......a....C..
c660 60 0a 0e 04 45 0b 78 0e 04 00 00 00 10 00 00 00 84 00 00 00 00 01 00 00 06 00 00 00 00 00 00 00 `...E.x.........................
c680 10 00 00 00 98 00 00 00 10 01 00 00 09 00 00 00 00 00 00 00 10 00 00 00 ac 00 00 00 20 01 00 00 ................................
c6a0 0c 00 00 00 00 00 00 00 10 00 00 00 c0 00 00 00 30 01 00 00 05 00 00 00 00 00 00 00 00 2e 73 79 ................0.............sy
c6c0 6d 74 61 62 00 2e 73 74 72 74 61 62 00 2e 73 68 73 74 72 74 61 62 00 2e 72 65 6c 2e 74 65 78 74 mtab..strtab..shstrtab..rel.text
c6e0 00 2e 64 61 74 61 00 2e 62 73 73 00 2e 72 6f 64 61 74 61 2e 73 74 72 31 2e 31 00 2e 72 6f 64 61 ..data..bss..rodata.str1.1..roda
c700 74 61 2e 73 74 72 31 2e 34 00 2e 63 6f 6d 6d 65 6e 74 00 2e 6e 6f 74 65 2e 47 4e 55 2d 73 74 61 ta.str1.4..comment..note.GNU-sta
c720 63 6b 00 2e 72 65 6c 2e 65 68 5f 66 72 61 6d 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ck..rel.eh_frame................
c740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f 00 00 00 ................................
c760 01 00 00 00 06 00 00 00 00 00 00 00 40 00 00 00 35 01 00 00 00 00 00 00 00 00 00 00 10 00 00 00 ............@...5...............
c780 00 00 00 00 1b 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ec 07 00 00 c0 00 00 00 0c 00 00 00 ................................
c7a0 01 00 00 00 04 00 00 00 08 00 00 00 25 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 78 01 00 00 ............%...............x...
c7c0 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 2b 00 00 00 08 00 00 00 03 00 00 00 ....................+...........
c7e0 00 00 00 00 78 01 00 00 0c 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 30 00 00 00 ....x.......................0...
c800 01 00 00 00 32 00 00 00 00 00 00 00 78 01 00 00 1b 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ....2.......x...................
c820 01 00 00 00 3f 00 00 00 01 00 00 00 32 00 00 00 00 00 00 00 94 01 00 00 2e 00 00 00 00 00 00 00 ....?.......2...................
c840 00 00 00 00 04 00 00 00 01 00 00 00 4e 00 00 00 01 00 00 00 30 00 00 00 00 00 00 00 c2 01 00 00 ............N.......0...........
c860 2a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 57 00 00 00 01 00 00 00 00 00 00 00 *...................W...........
c880 00 00 00 00 ec 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 6b 00 00 00 ............................k...
c8a0 01 00 00 00 02 00 00 00 00 00 00 00 ec 01 00 00 d0 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 ................................
c8c0 00 00 00 00 67 00 00 00 09 00 00 00 00 00 00 00 00 00 00 00 ac 08 00 00 40 00 00 00 0c 00 00 00 ....g...................@.......
c8e0 09 00 00 00 04 00 00 00 08 00 00 00 11 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 bc 02 00 00 ................................
c900 75 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 u...............................
c920 00 00 00 00 64 05 00 00 c0 01 00 00 0d 00 00 00 0d 00 00 00 04 00 00 00 10 00 00 00 09 00 00 00 ....d...........................
c940 03 00 00 00 00 00 00 00 00 00 00 00 24 07 00 00 c6 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ............$...................
c960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................................
c980 04 00 f1 ff 00 00 00 00 00 00 00 00 00 00 00 00 03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c9a0 03 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
c9c0 03 00 05 00 0a 00 00 00 08 00 00 00 04 00 00 00 01 00 04 00 18 00 00 00 00 00 00 00 04 00 00 00 ................................
c9e0 01 00 04 00 25 00 00 00 04 00 00 00 04 00 00 00 01 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 ....%...........................
ca00 03 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ca20 03 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 07 00 2d 00 00 00 00 00 00 00 5e 00 00 00 ....................-.......^...
ca40 12 00 01 00 36 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 3d 00 00 00 00 00 00 00 00 00 00 00 ....6...............=...........
ca60 10 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 4b 00 00 00 00 00 00 00 00 00 00 00 ....D...............K...........
ca80 10 00 00 00 50 00 00 00 60 00 00 00 14 00 00 00 12 00 01 00 5b 00 00 00 00 00 00 00 00 00 00 00 ....P...`...........[...........
caa0 10 00 00 00 60 00 00 00 80 00 00 00 0b 00 00 00 12 00 01 00 6e 00 00 00 90 00 00 00 61 00 00 00 ....`...............n.......a...
cac0 12 00 01 00 77 00 00 00 00 00 00 00 00 00 00 00 10 00 00 00 88 00 00 00 00 01 00 00 06 00 00 00 ....w...........................
cae0 12 00 01 00 94 00 00 00 10 01 00 00 09 00 00 00 12 00 01 00 a0 00 00 00 20 01 00 00 0c 00 00 00 ................................
cb00 12 00 01 00 ad 00 00 00 30 01 00 00 05 00 00 00 12 00 01 00 ba 00 00 00 00 00 00 00 00 00 00 00 ........0.......................
cb20 10 00 00 00 00 6d 65 6d 6c 69 62 2e 63 00 6d 65 6d 5f 73 74 61 72 74 5f 62 72 6b 00 6d 65 6d 5f .....memlib.c.mem_start_brk.mem_
cb40 6d 61 78 5f 61 64 64 72 00 6d 65 6d 5f 62 72 6b 00 6d 65 6d 5f 69 6e 69 74 00 6d 61 6c 6c 6f 63 max_addr.mem_brk.mem_init.malloc
cb60 00 73 74 64 65 72 72 00 66 77 72 69 74 65 00 65 78 69 74 00 6d 65 6d 5f 64 65 69 6e 69 74 00 66 .stderr.fwrite.exit.mem_deinit.f
cb80 72 65 65 00 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 00 6d 65 6d 5f 73 62 72 6b 00 5f 5f 65 72 72 ree.mem_reset_brk.mem_sbrk.__err
cba0 6e 6f 5f 6c 6f 63 61 74 69 6f 6e 00 6d 65 6d 5f 68 65 61 70 5f 6c 6f 00 6d 65 6d 5f 68 65 61 70 no_location.mem_heap_lo.mem_heap
cbc0 5f 68 69 00 6d 65 6d 5f 68 65 61 70 73 69 7a 65 00 6d 65 6d 5f 70 61 67 65 73 69 7a 65 00 67 65 _hi.mem_heapsize.mem_pagesize.ge
cbe0 74 70 61 67 65 73 69 7a 65 00 00 00 0b 00 00 00 02 0e 00 00 12 00 00 00 01 04 00 00 20 00 00 00 tpagesize.......................
cc00 01 04 00 00 25 00 00 00 01 04 00 00 2e 00 00 00 01 0f 00 00 45 00 00 00 01 05 00 00 4e 00 00 00 ....%...............E.......N...
cc20 02 10 00 00 5a 00 00 00 02 11 00 00 64 00 00 00 01 04 00 00 6c 00 00 00 02 13 00 00 81 00 00 00 ....Z.......d.......l...........
cc40 01 04 00 00 86 00 00 00 01 04 00 00 94 00 00 00 01 04 00 00 a4 00 00 00 01 04 00 00 ac 00 00 00 ................................
cc60 01 04 00 00 b9 00 00 00 02 16 00 00 c4 00 00 00 01 0f 00 00 db 00 00 00 01 09 00 00 e4 00 00 00 ................................
cc80 02 10 00 00 01 01 00 00 01 04 00 00 11 01 00 00 01 04 00 00 21 01 00 00 01 04 00 00 27 01 00 00 ....................!.......'...
cca0 01 04 00 00 31 01 00 00 02 1b 00 00 20 00 00 00 02 02 00 00 3c 00 00 00 02 02 00 00 54 00 00 00 ....1...............<.......T...
ccc0 02 02 00 00 68 00 00 00 02 02 00 00 88 00 00 00 02 02 00 00 9c 00 00 00 02 02 00 00 b0 00 00 00 ....h...........................
cce0 02 02 00 00 c4 00 00 00 02 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cd80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cda0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cdc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cde0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ce00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 6d 2e 63 00 00 00 00 00 00 00 00 00 00 malloclab-handout/mm.c..........
ce20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ce40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
ce60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
ce80 30 30 30 34 35 33 34 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 31 30 35 00 20 30 00 00 00 0004534.12507032412.014105..0...
cea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
cf20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
cf40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cf80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
cfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d000 2f 2a 0a 20 2a 20 6d 6d 2d 6e 61 69 76 65 2e 63 20 2d 20 54 68 65 20 66 61 73 74 65 73 74 2c 20 /*..*.mm-naive.c.-.The.fastest,.
d020 6c 65 61 73 74 20 6d 65 6d 6f 72 79 2d 65 66 66 69 63 69 65 6e 74 20 6d 61 6c 6c 6f 63 20 70 61 least.memory-efficient.malloc.pa
d040 63 6b 61 67 65 2e 0a 20 2a 20 0a 20 2a 20 49 6e 20 74 68 69 73 20 6e 61 69 76 65 20 61 70 70 72 ckage...*...*.In.this.naive.appr
d060 6f 61 63 68 2c 20 61 20 62 6c 6f 63 6b 20 69 73 20 61 6c 6c 6f 63 61 74 65 64 20 62 79 20 73 69 oach,.a.block.is.allocated.by.si
d080 6d 70 6c 79 20 69 6e 63 72 65 6d 65 6e 74 69 6e 67 0a 20 2a 20 74 68 65 20 62 72 6b 20 70 6f 69 mply.incrementing..*.the.brk.poi
d0a0 6e 74 65 72 2e 20 20 41 20 62 6c 6f 63 6b 20 69 73 20 70 75 72 65 20 70 61 79 6c 6f 61 64 2e 20 nter...A.block.is.pure.payload..
d0c0 54 68 65 72 65 20 61 72 65 20 6e 6f 20 68 65 61 64 65 72 73 20 6f 72 0a 20 2a 20 66 6f 6f 74 65 There.are.no.headers.or..*.foote
d0e0 72 73 2e 20 20 42 6c 6f 63 6b 73 20 61 72 65 20 6e 65 76 65 72 20 63 6f 61 6c 65 73 63 65 64 20 rs...Blocks.are.never.coalesced.
d100 6f 72 20 72 65 75 73 65 64 2e 20 52 65 61 6c 6c 6f 63 20 69 73 0a 20 2a 20 69 6d 70 6c 65 6d 65 or.reused..Realloc.is..*.impleme
d120 6e 74 65 64 20 64 69 72 65 63 74 6c 79 20 75 73 69 6e 67 20 6d 6d 5f 6d 61 6c 6c 6f 63 20 61 6e nted.directly.using.mm_malloc.an
d140 64 20 6d 6d 5f 66 72 65 65 2e 0a 20 2a 0a 20 2a 20 4e 4f 54 45 20 54 4f 20 53 54 55 44 45 4e 54 d.mm_free...*..*.NOTE.TO.STUDENT
d160 53 3a 20 52 65 70 6c 61 63 65 20 74 68 69 73 20 68 65 61 64 65 72 20 63 6f 6d 6d 65 6e 74 20 77 S:.Replace.this.header.comment.w
d180 69 74 68 20 79 6f 75 72 20 6f 77 6e 20 68 65 61 64 65 72 0a 20 2a 20 63 6f 6d 6d 65 6e 74 20 74 ith.your.own.header..*.comment.t
d1a0 68 61 74 20 67 69 76 65 73 20 61 20 68 69 67 68 20 6c 65 76 65 6c 20 64 65 73 63 72 69 70 74 69 hat.gives.a.high.level.descripti
d1c0 6f 6e 20 6f 66 20 79 6f 75 72 20 73 6f 6c 75 74 69 6f 6e 2e 0a 20 2a 2f 0a 23 69 6e 63 6c 75 64 on.of.your.solution...*/.#includ
d1e0 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a e.<stdio.h>.#include.<stdlib.h>.
d200 23 69 6e 63 6c 75 64 65 20 3c 61 73 73 65 72 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 75 6e #include.<assert.h>.#include.<un
d220 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 0a 23 69 6e istd.h>.#include.<string.h>..#in
d240 63 6c 75 64 65 20 22 6d 6d 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6d 65 6d 6c 69 62 2e 68 22 clude."mm.h".#include."memlib.h"
d260 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ../*****************************
d280 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 ****************************..*.
d2a0 4e 4f 54 45 20 54 4f 20 53 54 55 44 45 4e 54 53 3a 20 42 65 66 6f 72 65 20 79 6f 75 20 64 6f 20 NOTE.TO.STUDENTS:.Before.you.do.
d2c0 61 6e 79 74 68 69 6e 67 20 65 6c 73 65 2c 20 70 6c 65 61 73 65 0a 20 2a 20 70 72 6f 76 69 64 65 anything.else,.please..*.provide
d2e0 20 79 6f 75 72 20 74 65 61 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 66 6f .your.team.information.in.the.fo
d300 6c 6c 6f 77 69 6e 67 20 73 74 72 75 63 74 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a llowing.struct...***************
d320 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
d340 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 74 65 61 6d 5f 74 20 74 65 61 6d 20 3d 20 7b 0a 20 20 20 20 2f *********/.team_t.team.=.{...../
d360 2a 20 54 65 61 6d 20 6e 61 6d 65 20 2a 2f 0a 20 20 20 20 22 61 74 65 61 6d 22 2c 0a 20 20 20 20 *.Team.name.*/....."ateam",.....
d380 2f 2a 20 46 69 72 73 74 20 6d 65 6d 62 65 72 27 73 20 66 75 6c 6c 20 6e 61 6d 65 20 2a 2f 0a 20 /*.First.member's.full.name.*/..
d3a0 20 20 20 22 48 61 72 72 79 20 42 6f 76 69 6b 22 2c 0a 20 20 20 20 2f 2a 20 46 69 72 73 74 20 6d ..."Harry.Bovik",...../*.First.m
d3c0 65 6d 62 65 72 27 73 20 65 6d 61 69 6c 20 61 64 64 72 65 73 73 20 2a 2f 0a 20 20 20 20 22 62 6f ember's.email.address.*/....."bo
d3e0 76 69 6b 40 63 73 2e 63 6d 75 2e 65 64 75 22 2c 0a 20 20 20 20 2f 2a 20 53 65 63 6f 6e 64 20 6d vik@cs.cmu.edu",...../*.Second.m
d400 65 6d 62 65 72 27 73 20 66 75 6c 6c 20 6e 61 6d 65 20 28 6c 65 61 76 65 20 62 6c 61 6e 6b 20 69 ember's.full.name.(leave.blank.i
d420 66 20 6e 6f 6e 65 29 20 2a 2f 0a 20 20 20 20 22 22 2c 0a 20 20 20 20 2f 2a 20 53 65 63 6f 6e 64 f.none).*/....."",...../*.Second
d440 20 6d 65 6d 62 65 72 27 73 20 65 6d 61 69 6c 20 61 64 64 72 65 73 73 20 28 6c 65 61 76 65 20 62 .member's.email.address.(leave.b
d460 6c 61 6e 6b 20 69 66 20 6e 6f 6e 65 29 20 2a 2f 0a 20 20 20 20 22 22 0a 7d 3b 0a 0a 2f 2a 20 73 lank.if.none).*/....."".};../*.s
d480 69 6e 67 6c 65 20 77 6f 72 64 20 28 34 29 20 6f 72 20 64 6f 75 62 6c 65 20 77 6f 72 64 20 28 38 ingle.word.(4).or.double.word.(8
d4a0 29 20 61 6c 69 67 6e 6d 65 6e 74 20 2a 2f 0a 23 64 65 66 69 6e 65 20 41 4c 49 47 4e 4d 45 4e 54 ).alignment.*/.#define.ALIGNMENT
d4c0 20 38 0a 0a 2f 2a 20 72 6f 75 6e 64 73 20 75 70 20 74 6f 20 74 68 65 20 6e 65 61 72 65 73 74 20 .8../*.rounds.up.to.the.nearest.
d4e0 6d 75 6c 74 69 70 6c 65 20 6f 66 20 41 4c 49 47 4e 4d 45 4e 54 20 2a 2f 0a 23 64 65 66 69 6e 65 multiple.of.ALIGNMENT.*/.#define
d500 20 41 4c 49 47 4e 28 73 69 7a 65 29 20 28 28 28 73 69 7a 65 29 20 2b 20 28 41 4c 49 47 4e 4d 45 .ALIGN(size).(((size).+.(ALIGNME
d520 4e 54 2d 31 29 29 20 26 20 7e 30 78 37 29 0a 0a 0a 23 64 65 66 69 6e 65 20 53 49 5a 45 5f 54 5f NT-1)).&.~0x7)...#define.SIZE_T_
d540 53 49 5a 45 20 28 41 4c 49 47 4e 28 73 69 7a 65 6f 66 28 73 69 7a 65 5f 74 29 29 29 0a 0a 2f 2a SIZE.(ALIGN(sizeof(size_t)))../*
d560 20 0a 20 2a 20 6d 6d 5f 69 6e 69 74 20 2d 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6d 61 ...*.mm_init.-.initialize.the.ma
d580 6c 6c 6f 63 20 70 61 63 6b 61 67 65 2e 0a 20 2a 2f 0a 69 6e 74 20 6d 6d 5f 69 6e 69 74 28 76 6f lloc.package...*/.int.mm_init(vo
d5a0 69 64 29 0a 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 6d 6d id).{.....return.0;.}../*...*.mm
d5c0 5f 6d 61 6c 6c 6f 63 20 2d 20 41 6c 6c 6f 63 61 74 65 20 61 20 62 6c 6f 63 6b 20 62 79 20 69 6e _malloc.-.Allocate.a.block.by.in
d5e0 63 72 65 6d 65 6e 74 69 6e 67 20 74 68 65 20 62 72 6b 20 70 6f 69 6e 74 65 72 2e 0a 20 2a 20 20 crementing.the.brk.pointer...*..
d600 20 20 20 41 6c 77 61 79 73 20 61 6c 6c 6f 63 61 74 65 20 61 20 62 6c 6f 63 6b 20 77 68 6f 73 65 ...Always.allocate.a.block.whose
d620 20 73 69 7a 65 20 69 73 20 61 20 6d 75 6c 74 69 70 6c 65 20 6f 66 20 74 68 65 20 61 6c 69 67 6e .size.is.a.multiple.of.the.align
d640 6d 65 6e 74 2e 0a 20 2a 2f 0a 76 6f 69 64 20 2a 6d 6d 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 5f 74 ment...*/.void.*mm_malloc(size_t
d660 20 73 69 7a 65 29 0a 7b 0a 20 20 20 20 69 6e 74 20 6e 65 77 73 69 7a 65 20 3d 20 41 4c 49 47 4e .size).{.....int.newsize.=.ALIGN
d680 28 73 69 7a 65 20 2b 20 53 49 5a 45 5f 54 5f 53 49 5a 45 29 3b 0a 20 20 20 20 76 6f 69 64 20 2a (size.+.SIZE_T_SIZE);.....void.*
d6a0 70 20 3d 20 6d 65 6d 5f 73 62 72 6b 28 6e 65 77 73 69 7a 65 29 3b 0a 20 20 20 20 69 66 20 28 70 p.=.mem_sbrk(newsize);.....if.(p
d6c0 20 3d 3d 20 28 76 6f 69 64 20 2a 29 2d 31 29 0a 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 .==.(void.*)-1)..return.NULL;...
d6e0 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 2a 28 73 69 7a 65 5f 74 20 2a 29 70 20 3d 20 ..else.{.........*(size_t.*)p.=.
d700 73 69 7a 65 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 76 6f 69 64 20 2a 29 28 28 63 size;.........return.(void.*)((c
d720 68 61 72 20 2a 29 70 20 2b 20 53 49 5a 45 5f 54 5f 53 49 5a 45 29 3b 0a 20 20 20 20 7d 0a 7d 0a har.*)p.+.SIZE_T_SIZE);.....}.}.
d740 0a 2f 2a 0a 20 2a 20 6d 6d 5f 66 72 65 65 20 2d 20 46 72 65 65 69 6e 67 20 61 20 62 6c 6f 63 6b ./*..*.mm_free.-.Freeing.a.block
d760 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 2e 0a 20 2a 2f 0a 76 6f 69 64 20 6d 6d 5f 66 72 65 65 28 .does.nothing...*/.void.mm_free(
d780 76 6f 69 64 20 2a 70 74 72 29 0a 7b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 6d 6d 5f 72 65 61 6c 6c 6f 63 void.*ptr).{.}../*..*.mm_realloc
d7a0 20 2d 20 49 6d 70 6c 65 6d 65 6e 74 65 64 20 73 69 6d 70 6c 79 20 69 6e 20 74 65 72 6d 73 20 6f .-.Implemented.simply.in.terms.o
d7c0 66 20 6d 6d 5f 6d 61 6c 6c 6f 63 20 61 6e 64 20 6d 6d 5f 66 72 65 65 0a 20 2a 2f 0a 76 6f 69 64 f.mm_malloc.and.mm_free..*/.void
d7e0 20 2a 6d 6d 5f 72 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 73 .*mm_realloc(void.*ptr,.size_t.s
d800 69 7a 65 29 0a 7b 0a 20 20 20 20 76 6f 69 64 20 2a 6f 6c 64 70 74 72 20 3d 20 70 74 72 3b 0a 20 ize).{.....void.*oldptr.=.ptr;..
d820 20 20 20 76 6f 69 64 20 2a 6e 65 77 70 74 72 3b 0a 20 20 20 20 73 69 7a 65 5f 74 20 63 6f 70 79 ...void.*newptr;.....size_t.copy
d840 53 69 7a 65 3b 0a 20 20 20 20 0a 20 20 20 20 6e 65 77 70 74 72 20 3d 20 6d 6d 5f 6d 61 6c 6c 6f Size;..........newptr.=.mm_mallo
d860 63 28 73 69 7a 65 29 3b 0a 20 20 20 20 69 66 20 28 6e 65 77 70 74 72 20 3d 3d 20 4e 55 4c 4c 29 c(size);.....if.(newptr.==.NULL)
d880 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 20 20 63 6f 70 79 53 69 7a 65 .......return.NULL;.....copySize
d8a0 20 3d 20 2a 28 73 69 7a 65 5f 74 20 2a 29 28 28 63 68 61 72 20 2a 29 6f 6c 64 70 74 72 20 2d 20 .=.*(size_t.*)((char.*)oldptr.-.
d8c0 53 49 5a 45 5f 54 5f 53 49 5a 45 29 3b 0a 20 20 20 20 69 66 20 28 73 69 7a 65 20 3c 20 63 6f 70 SIZE_T_SIZE);.....if.(size.<.cop
d8e0 79 53 69 7a 65 29 0a 20 20 20 20 20 20 63 6f 70 79 53 69 7a 65 20 3d 20 73 69 7a 65 3b 0a 20 20 ySize).......copySize.=.size;...
d900 20 20 6d 65 6d 63 70 79 28 6e 65 77 70 74 72 2c 20 6f 6c 64 70 74 72 2c 20 63 6f 70 79 53 69 7a ..memcpy(newptr,.oldptr,.copySiz
d920 65 29 3b 0a 20 20 20 20 6d 6d 5f 66 72 65 65 28 6f 6c 64 70 74 72 29 3b 0a 20 20 20 20 72 65 74 e);.....mm_free(oldptr);.....ret
d940 75 72 6e 20 6e 65 77 70 74 72 3b 0a 7d 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 0a 00 00 00 00 urn.newptr;.}...................
d960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d9a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d9c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
d9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
da00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 6d 2e 68 00 00 00 00 00 00 00 00 00 00 malloclab-handout/mm.h..........
da20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
da40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
da60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
da80 30 30 30 31 31 37 36 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 34 31 31 31 00 20 30 00 00 00 0001176.12507032412.014111..0...
daa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
db20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
db40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
db80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dbc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dbe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dc00 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 0a 65 78 74 65 72 6e 20 69 6e 74 20 6d #include.<stdio.h>..extern.int.m
dc20 6d 5f 69 6e 69 74 20 28 76 6f 69 64 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 20 2a 6d 6d 5f 6d m_init.(void);.extern.void.*mm_m
dc40 61 6c 6c 6f 63 20 28 73 69 7a 65 5f 74 20 73 69 7a 65 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 64 alloc.(size_t.size);.extern.void
dc60 20 6d 6d 5f 66 72 65 65 20 28 76 6f 69 64 20 2a 70 74 72 29 3b 0a 65 78 74 65 72 6e 20 76 6f 69 .mm_free.(void.*ptr);.extern.voi
dc80 64 20 2a 6d 6d 5f 72 65 61 6c 6c 6f 63 28 76 6f 69 64 20 2a 70 74 72 2c 20 73 69 7a 65 5f 74 20 d.*mm_realloc(void.*ptr,.size_t.
dca0 73 69 7a 65 29 3b 0a 0a 0a 2f 2a 20 0a 20 2a 20 53 74 75 64 65 6e 74 73 20 77 6f 72 6b 20 69 6e size);.../*...*.Students.work.in
dcc0 20 74 65 61 6d 73 20 6f 66 20 6f 6e 65 20 6f 72 20 74 77 6f 2e 20 20 54 65 61 6d 73 20 65 6e 74 .teams.of.one.or.two...Teams.ent
dce0 65 72 20 74 68 65 69 72 20 74 65 61 6d 20 6e 61 6d 65 2c 20 0a 20 2a 20 70 65 72 73 6f 6e 61 6c er.their.team.name,...*.personal
dd00 20 6e 61 6d 65 73 20 61 6e 64 20 6c 6f 67 69 6e 20 49 44 73 20 69 6e 20 61 20 73 74 72 75 63 74 .names.and.login.IDs.in.a.struct
dd20 20 6f 66 20 74 68 69 73 0a 20 2a 20 74 79 70 65 20 69 6e 20 74 68 65 69 72 20 62 69 74 73 2e 63 .of.this..*.type.in.their.bits.c
dd40 20 66 69 6c 65 2e 0a 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 .file...*/.typedef.struct.{.....
dd60 63 68 61 72 20 2a 74 65 61 6d 6e 61 6d 65 3b 20 2f 2a 20 49 44 31 2b 49 44 32 20 6f 72 20 49 44 char.*teamname;./*.ID1+ID2.or.ID
dd80 31 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 6e 61 6d 65 31 3b 20 20 20 20 2f 2a 20 66 75 6c 6c 1.*/.....char.*name1;..../*.full
dda0 20 6e 61 6d 65 20 6f 66 20 66 69 72 73 74 20 6d 65 6d 62 65 72 20 2a 2f 0a 20 20 20 20 63 68 61 .name.of.first.member.*/.....cha
ddc0 72 20 2a 69 64 31 3b 20 20 20 20 20 20 2f 2a 20 6c 6f 67 69 6e 20 49 44 20 6f 66 20 66 69 72 73 r.*id1;....../*.login.ID.of.firs
dde0 74 20 6d 65 6d 62 65 72 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 6e 61 6d 65 32 3b 20 20 20 20 t.member.*/.....char.*name2;....
de00 2f 2a 20 66 75 6c 6c 20 6e 61 6d 65 20 6f 66 20 73 65 63 6f 6e 64 20 6d 65 6d 62 65 72 20 28 69 /*.full.name.of.second.member.(i
de20 66 20 61 6e 79 29 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 69 64 32 3b 20 20 20 20 20 20 2f 2a f.any).*/.....char.*id2;....../*
de40 20 6c 6f 67 69 6e 20 49 44 20 6f 66 20 73 65 63 6f 6e 64 20 6d 65 6d 62 65 72 20 2a 2f 0a 7d 20 .login.ID.of.second.member.*/.}.
de60 74 65 61 6d 5f 74 3b 0a 0a 65 78 74 65 72 6e 20 74 65 61 6d 5f 74 20 74 65 61 6d 3b 0a 0a 00 00 team_t;..extern.team_t.team;....
de80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
df80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
dfe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e000 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 6d 64 72 69 76 65 72 2e 63 00 00 00 00 00 malloclab-handout/mdriver.c.....
e020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e060 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
e080 30 30 37 31 37 37 33 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 35 31 35 35 00 20 30 00 00 00 0071773.12507032412.015155..0...
e0a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e0c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e0e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e100 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
e120 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
e140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e1e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
e200 2f 2a 0a 20 2a 20 6d 64 72 69 76 65 72 2e 63 20 2d 20 43 53 3a 41 50 50 20 4d 61 6c 6c 6f 63 20 /*..*.mdriver.c.-.CS:APP.Malloc.
e220 4c 61 62 20 44 72 69 76 65 72 0a 20 2a 20 0a 20 2a 20 55 73 65 73 20 61 20 63 6f 6c 6c 65 63 74 Lab.Driver..*...*.Uses.a.collect
e240 69 6f 6e 20 6f 66 20 74 72 61 63 65 20 66 69 6c 65 73 20 74 6f 20 74 65 73 74 73 20 61 20 6d 61 ion.of.trace.files.to.tests.a.ma
e260 6c 6c 6f 63 2f 66 72 65 65 2f 72 65 61 6c 6c 6f 63 0a 20 2a 20 69 6d 70 6c 65 6d 65 6e 74 61 74 lloc/free/realloc..*.implementat
e280 69 6f 6e 20 69 6e 20 6d 6d 2e 63 2e 0a 20 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 ion.in.mm.c...*..*.Copyright.(c)
e2a0 20 32 30 30 32 2c 20 52 2e 20 42 72 79 61 6e 74 20 61 6e 64 20 44 2e 20 4f 27 48 61 6c 6c 61 72 .2002,.R..Bryant.and.D..O'Hallar
e2c0 6f 6e 2c 20 41 6c 6c 20 72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 2e 0a 20 2a 20 4d 61 79 20 on,.All.rights.reserved...*.May.
e2e0 6e 6f 74 20 62 65 20 75 73 65 64 2c 20 6d 6f 64 69 66 69 65 64 2c 20 6f 72 20 63 6f 70 69 65 64 not.be.used,.modified,.or.copied
e300 20 77 69 74 68 6f 75 74 20 70 65 72 6d 69 73 73 69 6f 6e 2e 0a 20 2a 2f 0a 23 69 6e 63 6c 75 64 .without.permission...*/.#includ
e320 65 20 3c 73 74 64 69 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 6c 69 62 2e 68 3e 0a e.<stdio.h>.#include.<stdlib.h>.
e340 23 69 6e 63 6c 75 64 65 20 3c 75 6e 69 73 74 64 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 65 72 #include.<unistd.h>.#include.<er
e360 72 6e 6f 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 6c rno.h>.#include.<string.h>.#incl
e380 75 64 65 20 3c 61 73 73 65 72 74 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 66 6c 6f 61 74 2e 68 ude.<assert.h>.#include.<float.h
e3a0 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 74 69 6d 65 2e 68 3e 0a 0a 23 69 6e 63 6c 75 64 65 20 22 6d >.#include.<time.h>..#include."m
e3c0 6d 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 6d 65 6d 6c 69 62 2e 68 22 0a 23 69 6e 63 6c 75 64 m.h".#include."memlib.h".#includ
e3e0 65 20 22 66 73 65 63 73 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 0a e."fsecs.h".#include."config.h".
e400 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 43 6f 6e 73 ./**********************..*.Cons
e420 74 61 6e 74 73 20 61 6e 64 20 6d 61 63 72 6f 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a tants.and.macros..**************
e440 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 4d 69 73 63 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4d 41 ********/../*.Misc.*/.#define.MA
e460 58 4c 49 4e 45 20 20 20 20 20 31 30 32 34 20 2f 2a 20 6d 61 78 20 73 74 72 69 6e 67 20 73 69 7a XLINE.....1024./*.max.string.siz
e480 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 48 44 52 4c 49 4e 45 53 20 20 20 20 20 20 20 34 20 2f 2a e.*/.#define.HDRLINES.......4./*
e4a0 20 6e 75 6d 62 65 72 20 6f 66 20 68 65 61 64 65 72 20 6c 69 6e 65 73 20 69 6e 20 61 20 74 72 61 .number.of.header.lines.in.a.tra
e4c0 63 65 20 66 69 6c 65 20 2a 2f 0a 23 64 65 66 69 6e 65 20 4c 49 4e 45 4e 55 4d 28 69 29 20 28 69 ce.file.*/.#define.LINENUM(i).(i
e4e0 2b 35 29 20 2f 2a 20 63 6e 76 74 20 74 72 61 63 65 20 72 65 71 75 65 73 74 20 6e 75 6d 73 20 74 +5)./*.cnvt.trace.request.nums.t
e500 6f 20 6c 69 6e 65 6e 75 6d 73 20 28 6f 72 69 67 69 6e 20 31 29 20 2a 2f 0a 0a 2f 2a 20 52 65 74 o.linenums.(origin.1).*/../*.Ret
e520 75 72 6e 73 20 74 72 75 65 20 69 66 20 70 20 69 73 20 41 4c 49 47 4e 4d 45 4e 54 2d 62 79 74 65 urns.true.if.p.is.ALIGNMENT-byte
e540 20 61 6c 69 67 6e 65 64 20 2a 2f 0a 23 64 65 66 69 6e 65 20 49 53 5f 41 4c 49 47 4e 45 44 28 70 .aligned.*/.#define.IS_ALIGNED(p
e560 29 20 20 28 28 28 28 75 6e 73 69 67 6e 65 64 20 69 6e 74 29 28 70 29 29 20 25 20 41 4c 49 47 4e )..((((unsigned.int)(p)).%.ALIGN
e580 4d 45 4e 54 29 20 3d 3d 20 30 29 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a MENT).==.0)../******************
e5a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 0a 20 2a 20 54 68 65 20 6b 65 79 20 63 6f 6d 70 6f 75 6e ************...*.The.key.compoun
e5c0 64 20 64 61 74 61 20 74 79 70 65 73 20 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a d.data.types...*****************
e5e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 52 65 63 6f 72 64 73 20 74 68 65 20 65 78 ************/../*.Records.the.ex
e600 74 65 6e 74 20 6f 66 20 65 61 63 68 20 62 6c 6f 63 6b 27 73 20 70 61 79 6c 6f 61 64 20 2a 2f 0a tent.of.each.block's.payload.*/.
e620 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 72 61 6e 67 65 5f 74 20 7b 0a 20 20 20 20 63 68 61 typedef.struct.range_t.{.....cha
e640 72 20 2a 6c 6f 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 6c 6f 77 20 70 61 79 6c 6f r.*lo;............../*.low.paylo
e660 61 64 20 61 64 64 72 65 73 73 20 2a 2f 0a 20 20 20 20 63 68 61 72 20 2a 68 69 3b 20 20 20 20 20 ad.address.*/.....char.*hi;.....
e680 20 20 20 20 20 20 20 20 20 2f 2a 20 68 69 67 68 20 70 61 79 6c 6f 61 64 20 61 64 64 72 65 73 73 ........./*.high.payload.address
e6a0 20 2a 2f 0a 20 20 20 20 73 74 72 75 63 74 20 72 61 6e 67 65 5f 74 20 2a 6e 65 78 74 3b 20 20 2f .*/.....struct.range_t.*next;../
e6c0 2a 20 6e 65 78 74 20 6c 69 73 74 20 65 6c 65 6d 65 6e 74 20 2a 2f 0a 7d 20 72 61 6e 67 65 5f 74 *.next.list.element.*/.}.range_t
e6e0 3b 0a 0a 2f 2a 20 43 68 61 72 61 63 74 65 72 69 7a 65 73 20 61 20 73 69 6e 67 6c 65 20 74 72 61 ;../*.Characterizes.a.single.tra
e700 63 65 20 6f 70 65 72 61 74 69 6f 6e 20 28 61 6c 6c 6f 63 61 74 6f 72 20 72 65 71 75 65 73 74 29 ce.operation.(allocator.request)
e720 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 65 6e 75 6d 20 7b 41 .*/.typedef.struct.{.....enum.{A
e740 4c 4c 4f 43 2c 20 46 52 45 45 2c 20 52 45 41 4c 4c 4f 43 7d 20 74 79 70 65 3b 20 2f 2a 20 74 79 LLOC,.FREE,.REALLOC}.type;./*.ty
e760 70 65 20 6f 66 20 72 65 71 75 65 73 74 20 2a 2f 0a 20 20 20 20 69 6e 74 20 69 6e 64 65 78 3b 20 pe.of.request.*/.....int.index;.
e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 64 65 78 20 ......................./*.index.
e7a0 66 6f 72 20 66 72 65 65 28 29 20 74 6f 20 75 73 65 20 6c 61 74 65 72 20 2a 2f 0a 20 20 20 20 69 for.free().to.use.later.*/.....i
e7c0 6e 74 20 73 69 7a 65 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 nt.size;........................
e7e0 20 2f 2a 20 62 79 74 65 20 73 69 7a 65 20 6f 66 20 61 6c 6c 6f 63 2f 72 65 61 6c 6c 6f 63 20 72 ./*.byte.size.of.alloc/realloc.r
e800 65 71 75 65 73 74 20 2a 2f 0a 7d 20 74 72 61 63 65 6f 70 5f 74 3b 0a 0a 2f 2a 20 48 6f 6c 64 73 equest.*/.}.traceop_t;../*.Holds
e820 20 74 68 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 66 6f 72 20 6f 6e 65 20 74 72 61 63 65 20 66 .the.information.for.one.trace.f
e840 69 6c 65 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 69 6e 74 20 73 ile*/.typedef.struct.{.....int.s
e860 75 67 67 5f 68 65 61 70 73 69 7a 65 3b 20 20 20 2f 2a 20 73 75 67 67 65 73 74 65 64 20 68 65 61 ugg_heapsize;.../*.suggested.hea
e880 70 20 73 69 7a 65 20 28 75 6e 75 73 65 64 29 20 2a 2f 0a 20 20 20 20 69 6e 74 20 6e 75 6d 5f 69 p.size.(unused).*/.....int.num_i
e8a0 64 73 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 6e 75 6d 62 65 72 20 6f 66 20 61 6c 6c 6f 63 2f 72 ds;........./*.number.of.alloc/r
e8c0 65 61 6c 6c 6f 63 20 69 64 73 20 2a 2f 0a 20 20 20 20 69 6e 74 20 6e 75 6d 5f 6f 70 73 3b 20 20 ealloc.ids.*/.....int.num_ops;..
e8e0 20 20 20 20 20 20 20 2f 2a 20 6e 75 6d 62 65 72 20 6f 66 20 64 69 73 74 69 6e 63 74 20 72 65 71 ......./*.number.of.distinct.req
e900 75 65 73 74 73 20 2a 2f 0a 20 20 20 20 69 6e 74 20 77 65 69 67 68 74 3b 20 20 20 20 20 20 20 20 uests.*/.....int.weight;........
e920 20 20 2f 2a 20 77 65 69 67 68 74 20 66 6f 72 20 74 68 69 73 20 74 72 61 63 65 20 28 75 6e 75 73 ../*.weight.for.this.trace.(unus
e940 65 64 29 20 2a 2f 0a 20 20 20 20 74 72 61 63 65 6f 70 5f 74 20 2a 6f 70 73 3b 20 20 20 20 20 20 ed).*/.....traceop_t.*ops;......
e960 2f 2a 20 61 72 72 61 79 20 6f 66 20 72 65 71 75 65 73 74 73 20 2a 2f 0a 20 20 20 20 63 68 61 72 /*.array.of.requests.*/.....char
e980 20 2a 2a 62 6c 6f 63 6b 73 3b 20 20 20 20 20 20 20 2f 2a 20 61 72 72 61 79 20 6f 66 20 70 74 72 .**blocks;......./*.array.of.ptr
e9a0 73 20 72 65 74 75 72 6e 65 64 20 62 79 20 6d 61 6c 6c 6f 63 2f 72 65 61 6c 6c 6f 63 2e 2e 2e 20 s.returned.by.malloc/realloc....
e9c0 2a 2f 0a 20 20 20 20 73 69 7a 65 5f 74 20 2a 62 6c 6f 63 6b 5f 73 69 7a 65 73 3b 20 2f 2a 20 2e */.....size_t.*block_sizes;./*..
e9e0 2e 2e 20 61 6e 64 20 61 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 61 72 72 61 79 20 6f 66 20 ...and.a.corresponding.array.of.
ea00 70 61 79 6c 6f 61 64 20 73 69 7a 65 73 20 2a 2f 0a 7d 20 74 72 61 63 65 5f 74 3b 0a 0a 2f 2a 20 payload.sizes.*/.}.trace_t;../*.
ea20 0a 20 2a 20 48 6f 6c 64 73 20 74 68 65 20 70 61 72 61 6d 73 20 74 6f 20 74 68 65 20 78 78 78 5f ..*.Holds.the.params.to.the.xxx_
ea40 73 70 65 65 64 20 66 75 6e 63 74 69 6f 6e 73 2c 20 77 68 69 63 68 20 61 72 65 20 74 69 6d 65 64 speed.functions,.which.are.timed
ea60 20 62 79 20 66 63 79 63 2e 20 0a 20 2a 20 54 68 69 73 20 73 74 72 75 63 74 20 69 73 20 6e 65 63 .by.fcyc....*.This.struct.is.nec
ea80 65 73 73 61 72 79 20 62 65 63 61 75 73 65 20 66 63 79 63 20 61 63 63 65 70 74 73 20 6f 6e 6c 79 essary.because.fcyc.accepts.only
eaa0 20 61 20 70 6f 69 6e 74 65 72 20 61 72 72 61 79 0a 20 2a 20 61 73 20 69 6e 70 75 74 2e 0a 20 2a .a.pointer.array..*.as.input...*
eac0 2f 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 7b 0a 20 20 20 20 74 72 61 63 65 5f 74 20 2a /.typedef.struct.{.....trace_t.*
eae0 74 72 61 63 65 3b 20 20 0a 20 20 20 20 72 61 6e 67 65 5f 74 20 2a 72 61 6e 67 65 73 3b 0a 7d 20 trace;.......range_t.*ranges;.}.
eb00 73 70 65 65 64 5f 74 3b 0a 0a 2f 2a 20 53 75 6d 6d 61 72 69 7a 65 73 20 74 68 65 20 69 6d 70 6f speed_t;../*.Summarizes.the.impo
eb20 72 74 61 6e 74 20 73 74 61 74 73 20 66 6f 72 20 73 6f 6d 65 20 6d 61 6c 6c 6f 63 20 66 75 6e 63 rtant.stats.for.some.malloc.func
eb40 74 69 6f 6e 20 6f 6e 20 73 6f 6d 65 20 74 72 61 63 65 20 2a 2f 0a 74 79 70 65 64 65 66 20 73 74 tion.on.some.trace.*/.typedef.st
eb60 72 75 63 74 20 7b 0a 20 20 20 20 2f 2a 20 64 65 66 69 6e 65 64 20 66 6f 72 20 62 6f 74 68 20 6c ruct.{...../*.defined.for.both.l
eb80 69 62 63 20 6d 61 6c 6c 6f 63 20 61 6e 64 20 73 74 75 64 65 6e 74 20 6d 61 6c 6c 6f 63 20 70 61 ibc.malloc.and.student.malloc.pa
eba0 63 6b 61 67 65 20 28 6d 6d 2e 63 29 20 2a 2f 0a 20 20 20 20 64 6f 75 62 6c 65 20 6f 70 73 3b 20 ckage.(mm.c).*/.....double.ops;.
ebc0 20 20 20 20 20 2f 2a 20 6e 75 6d 62 65 72 20 6f 66 20 6f 70 73 20 28 6d 61 6c 6c 6f 63 2f 66 72 ...../*.number.of.ops.(malloc/fr
ebe0 65 65 2f 72 65 61 6c 6c 6f 63 29 20 69 6e 20 74 68 65 20 74 72 61 63 65 20 2a 2f 0a 20 20 20 20 ee/realloc).in.the.trace.*/.....
ec00 69 6e 74 20 76 61 6c 69 64 3b 20 20 20 20 20 20 20 2f 2a 20 77 61 73 20 74 68 65 20 74 72 61 63 int.valid;......./*.was.the.trac
ec20 65 20 70 72 6f 63 65 73 73 65 64 20 63 6f 72 72 65 63 74 6c 79 20 62 79 20 74 68 65 20 61 6c 6c e.processed.correctly.by.the.all
ec40 6f 63 61 74 6f 72 3f 20 2a 2f 0a 20 20 20 20 64 6f 75 62 6c 65 20 73 65 63 73 3b 20 20 20 20 20 ocator?.*/.....double.secs;.....
ec60 2f 2a 20 6e 75 6d 62 65 72 20 6f 66 20 73 65 63 73 20 6e 65 65 64 65 64 20 74 6f 20 72 75 6e 20 /*.number.of.secs.needed.to.run.
ec80 74 68 65 20 74 72 61 63 65 20 2a 2f 0a 0a 20 20 20 20 2f 2a 20 64 65 66 69 6e 65 64 20 6f 6e 6c the.trace.*/....../*.defined.onl
eca0 79 20 66 6f 72 20 74 68 65 20 73 74 75 64 65 6e 74 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 y.for.the.student.malloc.package
ecc0 20 2a 2f 0a 20 20 20 20 64 6f 75 62 6c 65 20 75 74 69 6c 3b 20 20 20 20 20 2f 2a 20 73 70 61 63 .*/.....double.util;...../*.spac
ece0 65 20 75 74 69 6c 69 7a 61 74 69 6f 6e 20 66 6f 72 20 74 68 69 73 20 74 72 61 63 65 20 28 61 6c e.utilization.for.this.trace.(al
ed00 77 61 79 73 20 30 20 66 6f 72 20 6c 69 62 63 29 20 2a 2f 0a 0a 20 20 20 20 2f 2a 20 4e 6f 74 65 ways.0.for.libc).*/....../*.Note
ed20 3a 20 73 65 63 73 20 61 6e 64 20 75 74 69 6c 20 61 72 65 20 6f 6e 6c 79 20 64 65 66 69 6e 65 64 :.secs.and.util.are.only.defined
ed40 20 69 66 20 76 61 6c 69 64 20 69 73 20 74 72 75 65 20 2a 2f 0a 7d 20 73 74 61 74 73 5f 74 3b 20 .if.valid.is.true.*/.}.stats_t;.
ed60 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 47 6c 6f 62 61 ../********************..*.Globa
ed80 6c 20 76 61 72 69 61 62 6c 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a l.variables..*******************
eda0 2f 0a 69 6e 74 20 76 65 72 62 6f 73 65 20 3d 20 30 3b 20 20 20 20 20 20 20 20 2f 2a 20 67 6c 6f /.int.verbose.=.0;......../*.glo
edc0 62 61 6c 20 66 6c 61 67 20 66 6f 72 20 76 65 72 62 6f 73 65 20 6f 75 74 70 75 74 20 2a 2f 0a 73 bal.flag.for.verbose.output.*/.s
ede0 74 61 74 69 63 20 69 6e 74 20 65 72 72 6f 72 73 20 3d 20 30 3b 20 20 2f 2a 20 6e 75 6d 62 65 72 tatic.int.errors.=.0;../*.number
ee00 20 6f 66 20 65 72 72 73 20 66 6f 75 6e 64 20 77 68 65 6e 20 72 75 6e 6e 69 6e 67 20 73 74 75 64 .of.errs.found.when.running.stud
ee20 65 6e 74 20 6d 61 6c 6c 6f 63 20 2a 2f 0a 63 68 61 72 20 6d 73 67 5b 4d 41 58 4c 49 4e 45 5d 3b ent.malloc.*/.char.msg[MAXLINE];
ee40 20 20 20 20 20 20 2f 2a 20 66 6f 72 20 77 68 65 6e 65 76 65 72 20 77 65 20 6e 65 65 64 20 74 6f ....../*.for.whenever.we.need.to
ee60 20 63 6f 6d 70 6f 73 65 20 61 6e 20 65 72 72 6f 72 20 6d 65 73 73 61 67 65 20 2a 2f 0a 0a 2f 2a .compose.an.error.message.*/../*
ee80 20 44 69 72 65 63 74 6f 72 79 20 77 68 65 72 65 20 64 65 66 61 75 6c 74 20 74 72 61 63 65 66 69 .Directory.where.default.tracefi
eea0 6c 65 73 20 61 72 65 20 66 6f 75 6e 64 20 2a 2f 0a 73 74 61 74 69 63 20 63 68 61 72 20 74 72 61 les.are.found.*/.static.char.tra
eec0 63 65 64 69 72 5b 4d 41 58 4c 49 4e 45 5d 20 3d 20 54 52 41 43 45 44 49 52 3b 0a 0a 2f 2a 20 54 cedir[MAXLINE].=.TRACEDIR;../*.T
eee0 68 65 20 66 69 6c 65 6e 61 6d 65 73 20 6f 66 20 74 68 65 20 64 65 66 61 75 6c 74 20 74 72 61 63 he.filenames.of.the.default.trac
ef00 65 66 69 6c 65 73 20 2a 2f 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 64 65 66 61 75 6c 74 5f 74 efiles.*/.static.char.*default_t
ef20 72 61 63 65 66 69 6c 65 73 5b 5d 20 3d 20 7b 20 20 0a 20 20 20 20 44 45 46 41 55 4c 54 5f 54 52 racefiles[].=.{.......DEFAULT_TR
ef40 41 43 45 46 49 4c 45 53 2c 20 4e 55 4c 4c 0a 7d 3b 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ACEFILES,.NULL.};.../***********
ef60 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 20 0a 20 2a 20 46 75 6e 63 74 69 6f 6e 20 70 72 6f 74 6f 74 79 70 **********...*.Function.prototyp
ef80 65 73 20 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 20 es...*********************/../*.
efa0 74 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 6d 61 6e 69 70 75 6c 61 74 65 20 72 61 6e 67 65 these.functions.manipulate.range
efc0 20 6c 69 73 74 73 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 61 64 64 5f 72 61 6e 67 65 28 72 .lists.*/.static.int.add_range(r
efe0 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 73 2c 20 63 68 61 72 20 2a 6c 6f 2c 20 69 6e 74 20 73 ange_t.**ranges,.char.*lo,.int.s
f000 69 7a 65 2c 20 0a 09 09 20 20 20 20 20 69 6e 74 20 74 72 61 63 65 6e 75 6d 2c 20 69 6e 74 20 6f ize,.........int.tracenum,.int.o
f020 70 6e 75 6d 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 6d 6f 76 65 5f 72 61 6e 67 65 28 pnum);.static.void.remove_range(
f040 72 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 73 2c 20 63 68 61 72 20 2a 6c 6f 29 3b 0a 73 74 61 range_t.**ranges,.char.*lo);.sta
f060 74 69 63 20 76 6f 69 64 20 63 6c 65 61 72 5f 72 61 6e 67 65 73 28 72 61 6e 67 65 5f 74 20 2a 2a tic.void.clear_ranges(range_t.**
f080 72 61 6e 67 65 73 29 3b 0a 0a 2f 2a 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 61 ranges);../*.These.functions.rea
f0a0 64 2c 20 61 6c 6c 6f 63 61 74 65 2c 20 61 6e 64 20 66 72 65 65 20 73 74 6f 72 61 67 65 20 66 6f d,.allocate,.and.free.storage.fo
f0c0 72 20 74 72 61 63 65 73 20 2a 2f 0a 73 74 61 74 69 63 20 74 72 61 63 65 5f 74 20 2a 72 65 61 64 r.traces.*/.static.trace_t.*read
f0e0 5f 74 72 61 63 65 28 63 68 61 72 20 2a 74 72 61 63 65 64 69 72 2c 20 63 68 61 72 20 2a 66 69 6c _trace(char.*tracedir,.char.*fil
f100 65 6e 61 6d 65 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 66 72 65 65 5f 74 72 61 63 65 28 74 ename);.static.void.free_trace(t
f120 72 61 63 65 5f 74 20 2a 74 72 61 63 65 29 3b 0a 0a 2f 2a 20 52 6f 75 74 69 6e 65 73 20 66 6f 72 race_t.*trace);../*.Routines.for
f140 20 65 76 61 6c 75 61 74 69 6e 67 20 74 68 65 20 63 6f 72 72 65 63 74 6e 65 73 73 20 61 6e 64 20 .evaluating.the.correctness.and.
f160 73 70 65 65 64 20 6f 66 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 2a 2f 0a 73 74 61 74 69 63 20 69 speed.of.libc.malloc.*/.static.i
f180 6e 74 20 65 76 61 6c 5f 6c 69 62 63 5f 76 61 6c 69 64 28 74 72 61 63 65 5f 74 20 2a 74 72 61 63 nt.eval_libc_valid(trace_t.*trac
f1a0 65 2c 20 69 6e 74 20 74 72 61 63 65 6e 75 6d 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 65 76 e,.int.tracenum);.static.void.ev
f1c0 61 6c 5f 6c 69 62 63 5f 73 70 65 65 64 28 76 6f 69 64 20 2a 70 74 72 29 3b 0a 0a 2f 2a 20 52 6f al_libc_speed(void.*ptr);../*.Ro
f1e0 75 74 69 6e 65 73 20 66 6f 72 20 65 76 61 6c 75 61 74 69 6e 67 20 63 6f 72 72 65 63 74 6e 65 73 utines.for.evaluating.correctnes
f200 2c 20 73 70 61 63 65 20 75 74 69 6c 69 7a 61 74 69 6f 6e 2c 20 61 6e 64 20 73 70 65 65 64 20 0a ,.space.utilization,.and.speed..
f220 20 20 20 6f 66 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 ...of.the.student's.malloc.packa
f240 67 65 20 69 6e 20 6d 6d 2e 63 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 65 76 61 6c 5f 6d 6d ge.in.mm.c.*/.static.int.eval_mm
f260 5f 76 61 6c 69 64 28 74 72 61 63 65 5f 74 20 2a 74 72 61 63 65 2c 20 69 6e 74 20 74 72 61 63 65 _valid(trace_t.*trace,.int.trace
f280 6e 75 6d 2c 20 72 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 73 29 3b 0a 73 74 61 74 69 63 20 64 num,.range_t.**ranges);.static.d
f2a0 6f 75 62 6c 65 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 28 74 72 61 63 65 5f 74 20 2a 74 72 61 63 ouble.eval_mm_util(trace_t.*trac
f2c0 65 2c 20 69 6e 74 20 74 72 61 63 65 6e 75 6d 2c 20 72 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 e,.int.tracenum,.range_t.**range
f2e0 73 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 65 76 61 6c 5f 6d 6d 5f 73 70 65 65 64 28 76 6f s);.static.void.eval_mm_speed(vo
f300 69 64 20 2a 70 74 72 29 3b 0a 0a 2f 2a 20 56 61 72 69 6f 75 73 20 68 65 6c 70 65 72 20 72 6f 75 id.*ptr);../*.Various.helper.rou
f320 74 69 6e 65 73 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 70 72 69 6e 74 72 65 73 75 6c 74 tines.*/.static.void.printresult
f340 73 28 69 6e 74 20 6e 2c 20 73 74 61 74 73 5f 74 20 2a 73 74 61 74 73 29 3b 0a 73 74 61 74 69 63 s(int.n,.stats_t.*stats);.static
f360 20 76 6f 69 64 20 75 73 61 67 65 28 76 6f 69 64 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 75 .void.usage(void);.static.void.u
f380 6e 69 78 5f 65 72 72 6f 72 28 63 68 61 72 20 2a 6d 73 67 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 nix_error(char.*msg);.static.voi
f3a0 64 20 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 69 6e 74 20 74 72 61 63 65 6e 75 6d 2c 20 69 6e 74 d.malloc_error(int.tracenum,.int
f3c0 20 6f 70 6e 75 6d 2c 20 63 68 61 72 20 2a 6d 73 67 29 3b 0a 73 74 61 74 69 63 20 76 6f 69 64 20 .opnum,.char.*msg);.static.void.
f3e0 61 70 70 5f 65 72 72 6f 72 28 63 68 61 72 20 2a 6d 73 67 29 3b 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a app_error(char.*msg);../********
f400 2a 2a 2a 2a 2a 2a 0a 20 2a 20 4d 61 69 6e 20 72 6f 75 74 69 6e 65 0a 20 2a 2a 2a 2a 2a 2a 2a 2a ******..*.Main.routine..********
f420 2a 2a 2a 2a 2a 2a 2f 0a 69 6e 74 20 6d 61 69 6e 28 69 6e 74 20 61 72 67 63 2c 20 63 68 61 72 20 ******/.int.main(int.argc,.char.
f440 2a 2a 61 72 67 76 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 63 68 61 72 20 63 3b **argv).{.....int.i;.....char.c;
f460 0a 20 20 20 20 63 68 61 72 20 2a 2a 74 72 61 63 65 66 69 6c 65 73 20 3d 20 4e 55 4c 4c 3b 20 20 .....char.**tracefiles.=.NULL;..
f480 2f 2a 20 6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20 61 72 72 61 79 20 6f 66 20 74 72 61 63 /*.null-terminated.array.of.trac
f4a0 65 20 66 69 6c 65 20 6e 61 6d 65 73 20 2a 2f 0a 20 20 20 20 69 6e 74 20 6e 75 6d 5f 74 72 61 63 e.file.names.*/.....int.num_trac
f4c0 65 66 69 6c 65 73 20 3d 20 30 3b 20 20 20 20 2f 2a 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 efiles.=.0;..../*.the.number.of.
f4e0 74 72 61 63 65 73 20 69 6e 20 74 68 61 74 20 61 72 72 61 79 20 2a 2f 0a 20 20 20 20 74 72 61 63 traces.in.that.array.*/.....trac
f500 65 5f 74 20 2a 74 72 61 63 65 20 3d 20 4e 55 4c 4c 3b 20 20 20 20 20 2f 2a 20 73 74 6f 72 65 73 e_t.*trace.=.NULL;...../*.stores
f520 20 61 20 73 69 6e 67 6c 65 20 74 72 61 63 65 20 66 69 6c 65 20 69 6e 20 6d 65 6d 6f 72 79 20 2a .a.single.trace.file.in.memory.*
f540 2f 0a 20 20 20 20 72 61 6e 67 65 5f 74 20 2a 72 61 6e 67 65 73 20 3d 20 4e 55 4c 4c 3b 20 20 20 /.....range_t.*ranges.=.NULL;...
f560 20 2f 2a 20 6b 65 65 70 73 20 74 72 61 63 6b 20 6f 66 20 62 6c 6f 63 6b 20 65 78 74 65 6e 74 73 ./*.keeps.track.of.block.extents
f580 20 66 6f 72 20 6f 6e 65 20 74 72 61 63 65 20 2a 2f 0a 20 20 20 20 73 74 61 74 73 5f 74 20 2a 6c .for.one.trace.*/.....stats_t.*l
f5a0 69 62 63 5f 73 74 61 74 73 20 3d 20 4e 55 4c 4c 3b 2f 2a 20 6c 69 62 63 20 73 74 61 74 73 20 66 ibc_stats.=.NULL;/*.libc.stats.f
f5c0 6f 72 20 65 61 63 68 20 74 72 61 63 65 20 2a 2f 0a 20 20 20 20 73 74 61 74 73 5f 74 20 2a 6d 6d or.each.trace.*/.....stats_t.*mm
f5e0 5f 73 74 61 74 73 20 3d 20 4e 55 4c 4c 3b 20 20 2f 2a 20 6d 6d 20 28 69 2e 65 2e 20 73 74 75 64 _stats.=.NULL;../*.mm.(i.e..stud
f600 65 6e 74 29 20 73 74 61 74 73 20 66 6f 72 20 65 61 63 68 20 74 72 61 63 65 20 2a 2f 0a 20 20 20 ent).stats.for.each.trace.*/....
f620 20 73 70 65 65 64 5f 74 20 73 70 65 65 64 5f 70 61 72 61 6d 73 3b 20 20 20 20 20 20 2f 2a 20 69 .speed_t.speed_params;....../*.i
f640 6e 70 75 74 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 65 20 78 78 5f 73 70 65 65 64 20 nput.parameters.to.the.xx_speed.
f660 72 6f 75 74 69 6e 65 73 20 2a 2f 20 0a 0a 20 20 20 20 69 6e 74 20 74 65 61 6d 5f 63 68 65 63 6b routines.*/.......int.team_check
f680 20 3d 20 31 3b 20 20 2f 2a 20 49 66 20 73 65 74 2c 20 63 68 65 63 6b 20 74 65 61 6d 20 73 74 72 .=.1;../*.If.set,.check.team.str
f6a0 75 63 74 75 72 65 20 28 72 65 73 65 74 20 62 79 20 2d 61 29 20 2a 2f 0a 20 20 20 20 69 6e 74 20 ucture.(reset.by.-a).*/.....int.
f6c0 72 75 6e 5f 6c 69 62 63 20 3d 20 30 3b 20 20 20 20 2f 2a 20 49 66 20 73 65 74 2c 20 72 75 6e 20 run_libc.=.0;..../*.If.set,.run.
f6e0 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 28 73 65 74 20 62 79 20 2d 6c 29 20 2a 2f 0a 20 20 20 20 69 libc.malloc.(set.by.-l).*/.....i
f700 6e 74 20 61 75 74 6f 67 72 61 64 65 72 20 3d 20 30 3b 20 20 2f 2a 20 49 66 20 73 65 74 2c 20 65 nt.autograder.=.0;../*.If.set,.e
f720 6d 69 74 20 73 75 6d 6d 61 72 79 20 69 6e 66 6f 20 66 6f 72 20 61 75 74 6f 67 72 61 64 65 72 20 mit.summary.info.for.autograder.
f740 28 2d 67 29 20 2a 2f 0a 0a 20 20 20 20 2f 2a 20 74 65 6d 70 6f 72 61 72 69 65 73 20 75 73 65 64 (-g).*/....../*.temporaries.used
f760 20 74 6f 20 63 6f 6d 70 75 74 65 20 74 68 65 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 64 65 .to.compute.the.performance.inde
f780 78 20 2a 2f 0a 20 20 20 20 64 6f 75 62 6c 65 20 73 65 63 73 2c 20 6f 70 73 2c 20 75 74 69 6c 2c x.*/.....double.secs,.ops,.util,
f7a0 20 61 76 67 5f 6d 6d 5f 75 74 69 6c 2c 20 61 76 67 5f 6d 6d 5f 74 68 72 6f 75 67 68 70 75 74 2c .avg_mm_util,.avg_mm_throughput,
f7c0 20 70 31 2c 20 70 32 2c 20 70 65 72 66 69 6e 64 65 78 3b 0a 20 20 20 20 69 6e 74 20 6e 75 6d 63 .p1,.p2,.perfindex;.....int.numc
f7e0 6f 72 72 65 63 74 3b 0a 20 20 20 20 0a 20 20 20 20 2f 2a 20 0a 20 20 20 20 20 2a 20 52 65 61 64 orrect;........../*.......*.Read
f800 20 61 6e 64 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 .and.interpret.the.command.line.
f820 61 72 67 75 6d 65 6e 74 73 20 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 77 68 69 6c 65 20 28 28 63 arguments.......*/.....while.((c
f840 20 3d 20 67 65 74 6f 70 74 28 61 72 67 63 2c 20 61 72 67 76 2c 20 22 66 3a 74 3a 68 76 56 67 61 .=.getopt(argc,.argv,."f:t:hvVga
f860 6c 22 29 29 20 21 3d 20 45 4f 46 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 63 l")).!=.EOF).{.........switch.(c
f880 29 20 7b 0a 09 63 61 73 65 20 27 67 27 3a 20 2f 2a 20 47 65 6e 65 72 61 74 65 20 73 75 6d 6d 61 ).{..case.'g':./*.Generate.summa
f8a0 72 79 20 69 6e 66 6f 20 66 6f 72 20 74 68 65 20 61 75 74 6f 67 72 61 64 65 72 20 2a 2f 0a 09 20 ry.info.for.the.autograder.*/...
f8c0 20 20 20 61 75 74 6f 67 72 61 64 65 72 20 3d 20 31 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 ...autograder.=.1;......break;..
f8e0 20 20 20 20 20 20 20 63 61 73 65 20 27 66 27 3a 20 2f 2a 20 55 73 65 20 6f 6e 65 20 73 70 65 63 .......case.'f':./*.Use.one.spec
f900 69 66 69 63 20 74 72 61 63 65 20 66 69 6c 65 20 6f 6e 6c 79 20 28 72 65 6c 61 74 69 76 65 20 74 ific.trace.file.only.(relative.t
f920 6f 20 63 75 72 72 20 64 69 72 29 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6d 5f 74 o.curr.dir).*/.............num_t
f940 72 61 63 65 66 69 6c 65 73 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 racefiles.=.1;.............if.((
f960 74 72 61 63 65 66 69 6c 65 73 20 3d 20 72 65 61 6c 6c 6f 63 28 74 72 61 63 65 66 69 6c 65 73 2c tracefiles.=.realloc(tracefiles,
f980 20 32 2a 73 69 7a 65 6f 66 28 63 68 61 72 20 2a 29 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 75 .2*sizeof(char.*))).==.NULL)...u
f9a0 6e 69 78 5f 65 72 72 6f 72 28 22 45 52 52 4f 52 3a 20 72 65 61 6c 6c 6f 63 20 66 61 69 6c 65 64 nix_error("ERROR:.realloc.failed
f9c0 20 69 6e 20 6d 61 69 6e 22 29 3b 0a 09 20 20 20 20 73 74 72 63 70 79 28 74 72 61 63 65 64 69 72 .in.main");......strcpy(tracedir
f9e0 2c 20 22 2e 2f 22 29 3b 20 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 66 69 6c 65 73 ,."./");..............tracefiles
fa00 5b 30 5d 20 3d 20 73 74 72 64 75 70 28 6f 70 74 61 72 67 29 3b 0a 20 20 20 20 20 20 20 20 20 20 [0].=.strdup(optarg);...........
fa20 20 20 74 72 61 63 65 66 69 6c 65 73 5b 31 5d 20 3d 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 20 20 20 ..tracefiles[1].=.NULL;.........
fa40 20 20 20 20 62 72 65 61 6b 3b 0a 09 63 61 73 65 20 27 74 27 3a 20 2f 2a 20 44 69 72 65 63 74 6f ....break;..case.'t':./*.Directo
fa60 72 79 20 77 68 65 72 65 20 74 68 65 20 74 72 61 63 65 73 20 61 72 65 20 6c 6f 63 61 74 65 64 20 ry.where.the.traces.are.located.
fa80 2a 2f 0a 09 20 20 20 20 69 66 20 28 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 20 3d 3d 20 31 29 */......if.(num_tracefiles.==.1)
faa0 20 2f 2a 20 69 67 6e 6f 72 65 20 69 66 20 2d 66 20 61 6c 72 65 61 64 79 20 65 6e 63 6f 75 6e 74 ./*.ignore.if.-f.already.encount
fac0 65 72 65 64 20 2a 2f 0a 09 09 62 72 65 61 6b 3b 0a 09 20 20 20 20 73 74 72 63 70 79 28 74 72 61 ered.*/...break;......strcpy(tra
fae0 63 65 64 69 72 2c 20 6f 70 74 61 72 67 29 3b 0a 09 20 20 20 20 69 66 20 28 74 72 61 63 65 64 69 cedir,.optarg);......if.(tracedi
fb00 72 5b 73 74 72 6c 65 6e 28 74 72 61 63 65 64 69 72 29 2d 31 5d 20 21 3d 20 27 2f 27 29 20 0a 09 r[strlen(tracedir)-1].!=.'/')...
fb20 09 73 74 72 63 61 74 28 74 72 61 63 65 64 69 72 2c 20 22 2f 22 29 3b 20 2f 2a 20 70 61 74 68 20 .strcat(tracedir,."/");./*.path.
fb40 61 6c 77 61 79 73 20 65 6e 64 73 20 77 69 74 68 20 22 2f 22 20 2a 2f 0a 09 20 20 20 20 62 72 65 always.ends.with."/".*/......bre
fb60 61 6b 3b 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 61 27 3a 20 2f 2a 20 44 6f 6e 27 74 20 63 ak;.........case.'a':./*.Don't.c
fb80 68 65 63 6b 20 74 65 61 6d 20 73 74 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 heck.team.structure.*/..........
fba0 20 20 20 74 65 61 6d 5f 63 68 65 63 6b 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 ...team_check.=.0;.............b
fbc0 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 6c 27 3a 20 2f 2a 20 52 75 6e 20 6c reak;.........case.'l':./*.Run.l
fbe0 69 62 63 20 6d 61 6c 6c 6f 63 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 75 6e 5f 6c 69 ibc.malloc.*/.............run_li
fc00 62 63 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 bc.=.1;.............break;......
fc20 20 20 20 63 61 73 65 20 27 76 27 3a 20 2f 2a 20 50 72 69 6e 74 20 70 65 72 2d 74 72 61 63 65 20 ...case.'v':./*.Print.per-trace.
fc40 70 65 72 66 6f 72 6d 61 6e 63 65 20 62 72 65 61 6b 64 6f 77 6e 20 2a 2f 0a 20 20 20 20 20 20 20 performance.breakdown.*/........
fc60 20 20 20 20 20 76 65 72 62 6f 73 65 20 3d 20 31 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 .....verbose.=.1;.............br
fc80 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 56 27 3a 20 2f 2a 20 42 65 20 6d 6f 72 eak;.........case.'V':./*.Be.mor
fca0 65 20 76 65 72 62 6f 73 65 20 74 68 61 6e 20 2d 76 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 e.verbose.than.-v.*/............
fcc0 20 76 65 72 62 6f 73 65 20 3d 20 32 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b .verbose.=.2;.............break;
fce0 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 27 68 27 3a 20 2f 2a 20 50 72 69 6e 74 20 74 68 69 73 .........case.'h':./*.Print.this
fd00 20 6d 65 73 73 61 67 65 20 2a 2f 0a 09 20 20 20 20 75 73 61 67 65 28 29 3b 0a 20 20 20 20 20 20 .message.*/......usage();.......
fd20 20 20 20 20 20 20 65 78 69 74 28 30 29 3b 0a 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a ......exit(0);.........default:.
fd40 09 20 20 20 20 75 73 61 67 65 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 78 69 74 28 31 .....usage();.............exit(1
fd60 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 09 0a 20 20 20 20 2f 2a 20 0a 20 20 20 );.........}.....}......./*.....
fd80 20 20 2a 20 43 68 65 63 6b 20 61 6e 64 20 70 72 69 6e 74 20 74 65 61 6d 20 69 6e 66 6f 20 0a 20 ..*.Check.and.print.team.info...
fda0 20 20 20 20 2a 2f 0a 20 20 20 20 69 66 20 28 74 65 61 6d 5f 63 68 65 63 6b 29 20 7b 0a 09 2f 2a ....*/.....if.(team_check).{../*
fdc0 20 53 74 75 64 65 6e 74 73 20 6d 75 73 74 20 66 69 6c 6c 20 69 6e 20 74 68 65 69 72 20 74 65 61 .Students.must.fill.in.their.tea
fde0 6d 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 2a 2f 0a 09 69 66 20 28 21 73 74 72 63 6d 70 28 74 65 m.information.*/..if.(!strcmp(te
fe00 61 6d 2e 74 65 61 6d 6e 61 6d 65 2c 20 22 22 29 29 20 7b 0a 09 20 20 20 20 70 72 69 6e 74 66 28 am.teamname,."")).{......printf(
fe20 22 45 52 52 4f 52 3a 20 50 6c 65 61 73 65 20 70 72 6f 76 69 64 65 20 74 68 65 20 69 6e 66 6f 72 "ERROR:.Please.provide.the.infor
fe40 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 79 6f 75 72 20 74 65 61 6d 20 69 6e 20 6d 6d 2e 63 2e 5c mation.about.your.team.in.mm.c.\
fe60 6e 22 29 3b 0a 09 20 20 20 20 65 78 69 74 28 31 29 3b 0a 09 7d 20 65 6c 73 65 0a 09 20 20 20 20 n");......exit(1);..}.else......
fe80 70 72 69 6e 74 66 28 22 54 65 61 6d 20 4e 61 6d 65 3a 25 73 5c 6e 22 2c 20 74 65 61 6d 2e 74 65 printf("Team.Name:%s\n",.team.te
fea0 61 6d 6e 61 6d 65 29 3b 0a 09 69 66 20 28 28 2a 74 65 61 6d 2e 6e 61 6d 65 31 20 3d 3d 20 27 5c amname);..if.((*team.name1.==.'\
fec0 30 27 29 20 7c 7c 20 28 2a 74 65 61 6d 2e 69 64 31 20 3d 3d 20 27 5c 30 27 29 29 20 7b 0a 09 20 0').||.(*team.id1.==.'\0')).{...
fee0 20 20 20 70 72 69 6e 74 66 28 22 45 52 52 4f 52 2e 20 20 59 6f 75 20 6d 75 73 74 20 66 69 6c 6c ...printf("ERROR...You.must.fill
ff00 20 69 6e 20 61 6c 6c 20 74 65 61 6d 20 6d 65 6d 62 65 72 20 31 20 66 69 65 6c 64 73 21 5c 6e 22 .in.all.team.member.1.fields!\n"
ff20 29 3b 0a 09 20 20 20 20 65 78 69 74 28 31 29 3b 0a 09 7d 20 0a 09 65 6c 73 65 0a 09 20 20 20 20 );......exit(1);..}...else......
ff40 70 72 69 6e 74 66 28 22 4d 65 6d 62 65 72 20 31 20 3a 25 73 3a 25 73 5c 6e 22 2c 20 74 65 61 6d printf("Member.1.:%s:%s\n",.team
ff60 2e 6e 61 6d 65 31 2c 20 74 65 61 6d 2e 69 64 31 29 3b 0a 0a 09 69 66 20 28 28 28 2a 74 65 61 6d .name1,.team.id1);...if.(((*team
ff80 2e 6e 61 6d 65 32 20 21 3d 20 27 5c 30 27 29 20 26 26 20 28 2a 74 65 61 6d 2e 69 64 32 20 3d 3d .name2.!=.'\0').&&.(*team.id2.==
ffa0 20 27 5c 30 27 29 29 20 7c 7c 0a 09 20 20 20 20 28 28 2a 74 65 61 6d 2e 6e 61 6d 65 32 20 3d 3d .'\0')).||......((*team.name2.==
ffc0 20 27 5c 30 27 29 20 26 26 20 28 2a 74 65 61 6d 2e 69 64 32 20 21 3d 20 27 5c 30 27 29 29 29 20 .'\0').&&.(*team.id2.!=.'\0'))).
ffe0 7b 20 0a 09 20 20 20 20 70 72 69 6e 74 66 28 22 45 52 52 4f 52 2e 20 20 59 6f 75 20 6d 75 73 74 {.......printf("ERROR...You.must
10000 20 66 69 6c 6c 20 69 6e 20 61 6c 6c 20 6f 72 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 74 65 61 6d .fill.in.all.or.none.of.the.team
10020 20 6d 65 6d 62 65 72 20 32 20 49 44 20 66 69 65 6c 64 73 21 5c 6e 22 29 3b 0a 09 20 20 20 20 65 .member.2.ID.fields!\n");......e
10040 78 69 74 28 31 29 3b 0a 09 7d 0a 09 65 6c 73 65 20 69 66 20 28 2a 74 65 61 6d 2e 6e 61 6d 65 32 xit(1);..}..else.if.(*team.name2
10060 20 21 3d 20 27 5c 30 27 29 0a 09 20 20 20 20 70 72 69 6e 74 66 28 22 4d 65 6d 62 65 72 20 32 20 .!=.'\0')......printf("Member.2.
10080 3a 25 73 3a 25 73 5c 6e 22 2c 20 74 65 61 6d 2e 6e 61 6d 65 32 2c 20 74 65 61 6d 2e 69 64 32 29 :%s:%s\n",.team.name2,.team.id2)
100a0 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 0a 20 20 20 20 20 2a 20 49 66 20 6e 6f 20 2d 66 ;.....}....../*.......*.If.no.-f
100c0 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 2c 20 74 68 65 6e 20 75 73 65 20 74 68 65 20 .command.line.arg,.then.use.the.
100e0 65 6e 74 69 72 65 20 73 65 74 20 6f 66 20 74 72 61 63 65 66 69 6c 65 73 20 0a 20 20 20 20 20 2a entire.set.of.tracefiles.......*
10100 20 64 65 66 69 6e 65 64 20 69 6e 20 64 65 66 61 75 6c 74 5f 74 72 61 63 65 73 5b 5d 0a 20 20 20 .defined.in.default_traces[]....
10120 20 20 2a 2f 0a 20 20 20 20 69 66 20 28 74 72 61 63 65 66 69 6c 65 73 20 3d 3d 20 4e 55 4c 4c 29 ..*/.....if.(tracefiles.==.NULL)
10140 20 7b 0a 20 20 20 20 20 20 20 20 74 72 61 63 65 66 69 6c 65 73 20 3d 20 64 65 66 61 75 6c 74 5f .{.........tracefiles.=.default_
10160 74 72 61 63 65 66 69 6c 65 73 3b 0a 20 20 20 20 20 20 20 20 6e 75 6d 5f 74 72 61 63 65 66 69 6c tracefiles;.........num_tracefil
10180 65 73 20 3d 20 73 69 7a 65 6f 66 28 64 65 66 61 75 6c 74 5f 74 72 61 63 65 66 69 6c 65 73 29 20 es.=.sizeof(default_tracefiles).
101a0 2f 20 73 69 7a 65 6f 66 28 63 68 61 72 20 2a 29 20 2d 20 31 3b 0a 09 70 72 69 6e 74 66 28 22 55 /.sizeof(char.*).-.1;..printf("U
101c0 73 69 6e 67 20 64 65 66 61 75 6c 74 20 74 72 61 63 65 66 69 6c 65 73 20 69 6e 20 25 73 5c 6e 22 sing.default.tracefiles.in.%s\n"
101e0 2c 20 74 72 61 63 65 64 69 72 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 49 6e 69 74 69 ,.tracedir);.....}....../*.Initi
10200 61 6c 69 7a 65 20 74 68 65 20 74 69 6d 69 6e 67 20 70 61 63 6b 61 67 65 20 2a 2f 0a 20 20 20 20 alize.the.timing.package.*/.....
10220 69 6e 69 74 5f 66 73 65 63 73 28 29 3b 0a 0a 20 20 20 20 2f 2a 0a 20 20 20 20 20 2a 20 4f 70 74 init_fsecs();....../*......*.Opt
10240 69 6f 6e 61 6c 6c 79 20 72 75 6e 20 61 6e 64 20 65 76 61 6c 75 61 74 65 20 74 68 65 20 6c 69 62 ionally.run.and.evaluate.the.lib
10260 63 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 69 66 c.malloc.package.......*/.....if
10280 20 28 72 75 6e 5f 6c 69 62 63 29 20 7b 0a 09 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a .(run_libc).{..if.(verbose.>.1).
102a0 09 20 20 20 20 70 72 69 6e 74 66 28 22 5c 6e 54 65 73 74 69 6e 67 20 6c 69 62 63 20 6d 61 6c 6c .....printf("\nTesting.libc.mall
102c0 6f 63 5c 6e 22 29 3b 0a 09 0a 09 2f 2a 20 41 6c 6c 6f 63 61 74 65 20 6c 69 62 63 20 73 74 61 74 oc\n");..../*.Allocate.libc.stat
102e0 73 20 61 72 72 61 79 2c 20 77 69 74 68 20 6f 6e 65 20 73 74 61 74 73 5f 74 20 73 74 72 75 63 74 s.array,.with.one.stats_t.struct
10300 20 70 65 72 20 74 72 61 63 65 66 69 6c 65 20 2a 2f 0a 09 6c 69 62 63 5f 73 74 61 74 73 20 3d 20 .per.tracefile.*/..libc_stats.=.
10320 28 73 74 61 74 73 5f 74 20 2a 29 63 61 6c 6c 6f 63 28 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 (stats_t.*)calloc(num_tracefiles
10340 2c 20 73 69 7a 65 6f 66 28 73 74 61 74 73 5f 74 29 29 3b 0a 09 69 66 20 28 6c 69 62 63 5f 73 74 ,.sizeof(stats_t));..if.(libc_st
10360 61 74 73 20 3d 3d 20 4e 55 4c 4c 29 0a 09 20 20 20 20 75 6e 69 78 5f 65 72 72 6f 72 28 22 6c 69 ats.==.NULL)......unix_error("li
10380 62 63 5f 73 74 61 74 73 20 63 61 6c 6c 6f 63 20 69 6e 20 6d 61 69 6e 20 66 61 69 6c 65 64 22 29 bc_stats.calloc.in.main.failed")
103a0 3b 0a 09 0a 09 2f 2a 20 45 76 61 6c 75 61 74 65 20 74 68 65 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 ;..../*.Evaluate.the.libc.malloc
103c0 20 70 61 63 6b 61 67 65 20 75 73 69 6e 67 20 74 68 65 20 4b 2d 62 65 73 74 20 73 63 68 65 6d 65 .package.using.the.K-best.scheme
103e0 20 2a 2f 0a 09 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 .*/..for.(i=0;.i.<.num_tracefile
10400 73 3b 20 69 2b 2b 29 20 7b 0a 09 20 20 20 20 74 72 61 63 65 20 3d 20 72 65 61 64 5f 74 72 61 63 s;.i++).{......trace.=.read_trac
10420 65 28 74 72 61 63 65 64 69 72 2c 20 74 72 61 63 65 66 69 6c 65 73 5b 69 5d 29 3b 0a 09 20 20 20 e(tracedir,.tracefiles[i]);.....
10440 20 6c 69 62 63 5f 73 74 61 74 73 5b 69 5d 2e 6f 70 73 20 3d 20 74 72 61 63 65 2d 3e 6e 75 6d 5f .libc_stats[i].ops.=.trace->num_
10460 6f 70 73 3b 0a 09 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a 09 09 70 72 69 ops;......if.(verbose.>.1)...pri
10480 6e 74 66 28 22 43 68 65 63 6b 69 6e 67 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 66 6f 72 20 63 6f ntf("Checking.libc.malloc.for.co
104a0 72 72 65 63 74 6e 65 73 73 2c 20 22 29 3b 0a 09 20 20 20 20 6c 69 62 63 5f 73 74 61 74 73 5b 69 rrectness,.");......libc_stats[i
104c0 5d 2e 76 61 6c 69 64 20 3d 20 65 76 61 6c 5f 6c 69 62 63 5f 76 61 6c 69 64 28 74 72 61 63 65 2c ].valid.=.eval_libc_valid(trace,
104e0 20 69 29 3b 0a 09 20 20 20 20 69 66 20 28 6c 69 62 63 5f 73 74 61 74 73 5b 69 5d 2e 76 61 6c 69 .i);......if.(libc_stats[i].vali
10500 64 29 20 7b 0a 09 09 73 70 65 65 64 5f 70 61 72 61 6d 73 2e 74 72 61 63 65 20 3d 20 74 72 61 63 d).{...speed_params.trace.=.trac
10520 65 3b 0a 09 09 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a 09 09 20 20 20 20 70 72 69 6e e;...if.(verbose.>.1).......prin
10540 74 66 28 22 61 6e 64 20 70 65 72 66 6f 72 6d 61 6e 63 65 2e 5c 6e 22 29 3b 0a 09 09 6c 69 62 63 tf("and.performance.\n");...libc
10560 5f 73 74 61 74 73 5b 69 5d 2e 73 65 63 73 20 3d 20 66 73 65 63 73 28 65 76 61 6c 5f 6c 69 62 63 _stats[i].secs.=.fsecs(eval_libc
10580 5f 73 70 65 65 64 2c 20 26 73 70 65 65 64 5f 70 61 72 61 6d 73 29 3b 0a 09 20 20 20 20 7d 0a 09 _speed,.&speed_params);......}..
105a0 20 20 20 20 66 72 65 65 5f 74 72 61 63 65 28 74 72 61 63 65 29 3b 0a 09 7d 0a 0a 09 2f 2a 20 44 ....free_trace(trace);..}.../*.D
105c0 69 73 70 6c 61 79 20 74 68 65 20 6c 69 62 63 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20 63 6f 6d isplay.the.libc.results.in.a.com
105e0 70 61 63 74 20 74 61 62 6c 65 20 2a 2f 0a 09 69 66 20 28 76 65 72 62 6f 73 65 29 20 7b 0a 09 20 pact.table.*/..if.(verbose).{...
10600 20 20 20 70 72 69 6e 74 66 28 22 5c 6e 52 65 73 75 6c 74 73 20 66 6f 72 20 6c 69 62 63 20 6d 61 ...printf("\nResults.for.libc.ma
10620 6c 6c 6f 63 3a 5c 6e 22 29 3b 0a 09 20 20 20 20 70 72 69 6e 74 72 65 73 75 6c 74 73 28 6e 75 6d lloc:\n");......printresults(num
10640 5f 74 72 61 63 65 66 69 6c 65 73 2c 20 6c 69 62 63 5f 73 74 61 74 73 29 3b 0a 09 7d 0a 20 20 20 _tracefiles,.libc_stats);..}....
10660 20 7d 0a 0a 20 20 20 20 2f 2a 0a 20 20 20 20 20 2a 20 41 6c 77 61 79 73 20 72 75 6e 20 61 6e 64 .}....../*......*.Always.run.and
10680 20 65 76 61 6c 75 61 74 65 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 6d 20 70 61 63 6b 61 .evaluate.the.student's.mm.packa
106a0 67 65 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a ge......*/.....if.(verbose.>.1).
106c0 09 70 72 69 6e 74 66 28 22 5c 6e 54 65 73 74 69 6e 67 20 6d 6d 20 6d 61 6c 6c 6f 63 5c 6e 22 29 .printf("\nTesting.mm.malloc\n")
106e0 3b 0a 0a 20 20 20 20 2f 2a 20 41 6c 6c 6f 63 61 74 65 20 74 68 65 20 6d 6d 20 73 74 61 74 73 20 ;....../*.Allocate.the.mm.stats.
10700 61 72 72 61 79 2c 20 77 69 74 68 20 6f 6e 65 20 73 74 61 74 73 5f 74 20 73 74 72 75 63 74 20 70 array,.with.one.stats_t.struct.p
10720 65 72 20 74 72 61 63 65 66 69 6c 65 20 2a 2f 0a 20 20 20 20 6d 6d 5f 73 74 61 74 73 20 3d 20 28 er.tracefile.*/.....mm_stats.=.(
10740 73 74 61 74 73 5f 74 20 2a 29 63 61 6c 6c 6f 63 28 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 2c stats_t.*)calloc(num_tracefiles,
10760 20 73 69 7a 65 6f 66 28 73 74 61 74 73 5f 74 29 29 3b 0a 20 20 20 20 69 66 20 28 6d 6d 5f 73 74 .sizeof(stats_t));.....if.(mm_st
10780 61 74 73 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 6d 5f 73 74 61 ats.==.NULL)..unix_error("mm_sta
107a0 74 73 20 63 61 6c 6c 6f 63 20 69 6e 20 6d 61 69 6e 20 66 61 69 6c 65 64 22 29 3b 0a 20 20 20 20 ts.calloc.in.main.failed");.....
107c0 0a 20 20 20 20 2f 2a 20 49 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 73 69 6d 75 6c 61 74 65 64 ...../*.Initialize.the.simulated
107e0 20 6d 65 6d 6f 72 79 20 73 79 73 74 65 6d 20 69 6e 20 6d 65 6d 6c 69 62 2e 63 20 2a 2f 0a 20 20 .memory.system.in.memlib.c.*/...
10800 20 20 6d 65 6d 5f 69 6e 69 74 28 29 3b 20 0a 0a 20 20 20 20 2f 2a 20 45 76 61 6c 75 61 74 65 20 ..mem_init();......./*.Evaluate.
10820 73 74 75 64 65 6e 74 27 73 20 6d 6d 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 75 73 69 6e student's.mm.malloc.package.usin
10840 67 20 74 68 65 20 4b 2d 62 65 73 74 20 73 63 68 65 6d 65 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 g.the.K-best.scheme.*/.....for.(
10860 69 3d 30 3b 20 69 20 3c 20 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 3b 20 69 2b 2b 29 20 7b 0a i=0;.i.<.num_tracefiles;.i++).{.
10880 09 74 72 61 63 65 20 3d 20 72 65 61 64 5f 74 72 61 63 65 28 74 72 61 63 65 64 69 72 2c 20 74 72 .trace.=.read_trace(tracedir,.tr
108a0 61 63 65 66 69 6c 65 73 5b 69 5d 29 3b 0a 09 6d 6d 5f 73 74 61 74 73 5b 69 5d 2e 6f 70 73 20 3d acefiles[i]);..mm_stats[i].ops.=
108c0 20 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 3b 0a 09 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 .trace->num_ops;..if.(verbose.>.
108e0 31 29 0a 09 20 20 20 20 70 72 69 6e 74 66 28 22 43 68 65 63 6b 69 6e 67 20 6d 6d 5f 6d 61 6c 6c 1)......printf("Checking.mm_mall
10900 6f 63 20 66 6f 72 20 63 6f 72 72 65 63 74 6e 65 73 73 2c 20 22 29 3b 0a 09 6d 6d 5f 73 74 61 74 oc.for.correctness,.");..mm_stat
10920 73 5b 69 5d 2e 76 61 6c 69 64 20 3d 20 65 76 61 6c 5f 6d 6d 5f 76 61 6c 69 64 28 74 72 61 63 65 s[i].valid.=.eval_mm_valid(trace
10940 2c 20 69 2c 20 26 72 61 6e 67 65 73 29 3b 0a 09 69 66 20 28 6d 6d 5f 73 74 61 74 73 5b 69 5d 2e ,.i,.&ranges);..if.(mm_stats[i].
10960 76 61 6c 69 64 29 20 7b 0a 09 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a 09 valid).{......if.(verbose.>.1)..
10980 09 70 72 69 6e 74 66 28 22 65 66 66 69 63 69 65 6e 63 79 2c 20 22 29 3b 0a 09 20 20 20 20 6d 6d .printf("efficiency,.");......mm
109a0 5f 73 74 61 74 73 5b 69 5d 2e 75 74 69 6c 20 3d 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 28 74 72 _stats[i].util.=.eval_mm_util(tr
109c0 61 63 65 2c 20 69 2c 20 26 72 61 6e 67 65 73 29 3b 0a 09 20 20 20 20 73 70 65 65 64 5f 70 61 72 ace,.i,.&ranges);......speed_par
109e0 61 6d 73 2e 74 72 61 63 65 20 3d 20 74 72 61 63 65 3b 0a 09 20 20 20 20 73 70 65 65 64 5f 70 61 ams.trace.=.trace;......speed_pa
10a00 72 61 6d 73 2e 72 61 6e 67 65 73 20 3d 20 72 61 6e 67 65 73 3b 0a 09 20 20 20 20 69 66 20 28 76 rams.ranges.=.ranges;......if.(v
10a20 65 72 62 6f 73 65 20 3e 20 31 29 0a 09 09 70 72 69 6e 74 66 28 22 61 6e 64 20 70 65 72 66 6f 72 erbose.>.1)...printf("and.perfor
10a40 6d 61 6e 63 65 2e 5c 6e 22 29 3b 0a 09 20 20 20 20 6d 6d 5f 73 74 61 74 73 5b 69 5d 2e 73 65 63 mance.\n");......mm_stats[i].sec
10a60 73 20 3d 20 66 73 65 63 73 28 65 76 61 6c 5f 6d 6d 5f 73 70 65 65 64 2c 20 26 73 70 65 65 64 5f s.=.fsecs(eval_mm_speed,.&speed_
10a80 70 61 72 61 6d 73 29 3b 0a 09 7d 0a 09 66 72 65 65 5f 74 72 61 63 65 28 74 72 61 63 65 29 3b 0a params);..}..free_trace(trace);.
10aa0 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 44 69 73 70 6c 61 79 20 74 68 65 20 6d 6d 20 72 65 73 ....}....../*.Display.the.mm.res
10ac0 75 6c 74 73 20 69 6e 20 61 20 63 6f 6d 70 61 63 74 20 74 61 62 6c 65 20 2a 2f 0a 20 20 20 20 69 ults.in.a.compact.table.*/.....i
10ae0 66 20 28 76 65 72 62 6f 73 65 29 20 7b 0a 09 70 72 69 6e 74 66 28 22 5c 6e 52 65 73 75 6c 74 73 f.(verbose).{..printf("\nResults
10b00 20 66 6f 72 20 6d 6d 20 6d 61 6c 6c 6f 63 3a 5c 6e 22 29 3b 0a 09 70 72 69 6e 74 72 65 73 75 6c .for.mm.malloc:\n");..printresul
10b20 74 73 28 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 2c 20 6d 6d 5f 73 74 61 74 73 29 3b 0a 09 70 ts(num_tracefiles,.mm_stats);..p
10b40 72 69 6e 74 66 28 22 5c 6e 22 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 0a 20 20 20 20 rintf("\n");.....}....../*......
10b60 20 2a 20 41 63 63 75 6d 75 6c 61 74 65 20 74 68 65 20 61 67 67 72 65 67 61 74 65 20 73 74 61 74 .*.Accumulate.the.aggregate.stat
10b80 69 73 74 69 63 73 20 66 6f 72 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 6d 20 70 61 63 6b istics.for.the.student's.mm.pack
10ba0 61 67 65 20 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 73 65 63 73 20 3d 20 30 3b 0a 20 20 20 20 6f age.......*/.....secs.=.0;.....o
10bc0 70 73 20 3d 20 30 3b 0a 20 20 20 20 75 74 69 6c 20 3d 20 30 3b 0a 20 20 20 20 6e 75 6d 63 6f 72 ps.=.0;.....util.=.0;.....numcor
10be0 72 65 63 74 20 3d 20 30 3b 0a 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6e 75 6d 5f rect.=.0;.....for.(i=0;.i.<.num_
10c00 74 72 61 63 65 66 69 6c 65 73 3b 20 69 2b 2b 29 20 7b 0a 09 73 65 63 73 20 2b 3d 20 6d 6d 5f 73 tracefiles;.i++).{..secs.+=.mm_s
10c20 74 61 74 73 5b 69 5d 2e 73 65 63 73 3b 0a 09 6f 70 73 20 2b 3d 20 6d 6d 5f 73 74 61 74 73 5b 69 tats[i].secs;..ops.+=.mm_stats[i
10c40 5d 2e 6f 70 73 3b 0a 09 75 74 69 6c 20 2b 3d 20 6d 6d 5f 73 74 61 74 73 5b 69 5d 2e 75 74 69 6c ].ops;..util.+=.mm_stats[i].util
10c60 3b 0a 09 69 66 20 28 6d 6d 5f 73 74 61 74 73 5b 69 5d 2e 76 61 6c 69 64 29 0a 09 20 20 20 20 6e ;..if.(mm_stats[i].valid)......n
10c80 75 6d 63 6f 72 72 65 63 74 2b 2b 3b 0a 20 20 20 20 7d 0a 20 20 20 20 61 76 67 5f 6d 6d 5f 75 74 umcorrect++;.....}.....avg_mm_ut
10ca0 69 6c 20 3d 20 75 74 69 6c 2f 6e 75 6d 5f 74 72 61 63 65 66 69 6c 65 73 3b 0a 0a 20 20 20 20 2f il.=.util/num_tracefiles;....../
10cc0 2a 20 0a 20 20 20 20 20 2a 20 43 6f 6d 70 75 74 65 20 61 6e 64 20 70 72 69 6e 74 20 74 68 65 20 *.......*.Compute.and.print.the.
10ce0 70 65 72 66 6f 72 6d 61 6e 63 65 20 69 6e 64 65 78 20 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 69 performance.index.......*/.....i
10d00 66 20 28 65 72 72 6f 72 73 20 3d 3d 20 30 29 20 7b 0a 09 61 76 67 5f 6d 6d 5f 74 68 72 6f 75 67 f.(errors.==.0).{..avg_mm_throug
10d20 68 70 75 74 20 3d 20 6f 70 73 2f 73 65 63 73 3b 0a 0a 09 70 31 20 3d 20 55 54 49 4c 5f 57 45 49 hput.=.ops/secs;...p1.=.UTIL_WEI
10d40 47 48 54 20 2a 20 61 76 67 5f 6d 6d 5f 75 74 69 6c 3b 0a 09 69 66 20 28 61 76 67 5f 6d 6d 5f 74 GHT.*.avg_mm_util;..if.(avg_mm_t
10d60 68 72 6f 75 67 68 70 75 74 20 3e 20 41 56 47 5f 4c 49 42 43 5f 54 48 52 55 50 55 54 29 20 7b 0a hroughput.>.AVG_LIBC_THRUPUT).{.
10d80 09 20 20 20 20 70 32 20 3d 20 28 64 6f 75 62 6c 65 29 28 31 2e 30 20 2d 20 55 54 49 4c 5f 57 45 .....p2.=.(double)(1.0.-.UTIL_WE
10da0 49 47 48 54 29 3b 0a 09 7d 20 0a 09 65 6c 73 65 20 7b 0a 09 20 20 20 20 70 32 20 3d 20 28 28 64 IGHT);..}...else.{......p2.=.((d
10dc0 6f 75 62 6c 65 29 20 28 31 2e 30 20 2d 20 55 54 49 4c 5f 57 45 49 47 48 54 29 29 20 2a 20 0a 09 ouble).(1.0.-.UTIL_WEIGHT)).*...
10de0 09 28 61 76 67 5f 6d 6d 5f 74 68 72 6f 75 67 68 70 75 74 2f 41 56 47 5f 4c 49 42 43 5f 54 48 52 .(avg_mm_throughput/AVG_LIBC_THR
10e00 55 50 55 54 29 3b 0a 09 7d 0a 09 0a 09 70 65 72 66 69 6e 64 65 78 20 3d 20 28 70 31 20 2b 20 70 UPUT);..}....perfindex.=.(p1.+.p
10e20 32 29 2a 31 30 30 2e 30 3b 0a 09 70 72 69 6e 74 66 28 22 50 65 72 66 20 69 6e 64 65 78 20 3d 20 2)*100.0;..printf("Perf.index.=.
10e40 25 2e 30 66 20 28 75 74 69 6c 29 20 2b 20 25 2e 30 66 20 28 74 68 72 75 29 20 3d 20 25 2e 30 66 %.0f.(util).+.%.0f.(thru).=.%.0f
10e60 2f 31 30 30 5c 6e 22 2c 0a 09 20 20 20 20 20 20 20 70 31 2a 31 30 30 2c 20 0a 09 20 20 20 20 20 /100\n",.........p1*100,........
10e80 20 20 70 32 2a 31 30 30 2c 20 0a 09 20 20 20 20 20 20 20 70 65 72 66 69 6e 64 65 78 29 3b 0a 09 ..p2*100,..........perfindex);..
10ea0 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 20 2f 2a 20 54 68 65 72 65 20 77 65 72 65 20 .....}.....else.{./*.There.were.
10ec0 65 72 72 6f 72 73 20 2a 2f 0a 09 70 65 72 66 69 6e 64 65 78 20 3d 20 30 2e 30 3b 0a 09 70 72 69 errors.*/..perfindex.=.0.0;..pri
10ee0 6e 74 66 28 22 54 65 72 6d 69 6e 61 74 65 64 20 77 69 74 68 20 25 64 20 65 72 72 6f 72 73 5c 6e ntf("Terminated.with.%d.errors\n
10f00 22 2c 20 65 72 72 6f 72 73 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 69 66 20 28 61 75 74 6f 67 ",.errors);.....}......if.(autog
10f20 72 61 64 65 72 29 20 7b 0a 09 70 72 69 6e 74 66 28 22 63 6f 72 72 65 63 74 3a 25 64 5c 6e 22 2c rader).{..printf("correct:%d\n",
10f40 20 6e 75 6d 63 6f 72 72 65 63 74 29 3b 0a 09 70 72 69 6e 74 66 28 22 70 65 72 66 69 64 78 3a 25 .numcorrect);..printf("perfidx:%
10f60 2e 30 66 5c 6e 22 2c 20 70 65 72 66 69 6e 64 65 78 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 65 .0f\n",.perfindex);.....}......e
10f80 78 69 74 28 30 29 3b 0a 7d 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a xit(0);.}.../*******************
10fa0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
10fc0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 **************..*.The.following.
10fe0 72 6f 75 74 69 6e 65 73 20 6d 61 6e 69 70 75 6c 61 74 65 20 74 68 65 20 72 61 6e 67 65 20 6c 69 routines.manipulate.the.range.li
11000 73 74 2c 20 77 68 69 63 68 20 6b 65 65 70 73 20 0a 20 2a 20 74 72 61 63 6b 20 6f 66 20 74 68 65 st,.which.keeps...*.track.of.the
11020 20 65 78 74 65 6e 74 20 6f 66 20 65 76 65 72 79 20 61 6c 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b .extent.of.every.allocated.block
11040 20 70 61 79 6c 6f 61 64 2e 20 57 65 20 75 73 65 20 74 68 65 20 0a 20 2a 20 72 61 6e 67 65 20 6c .payload..We.use.the...*.range.l
11060 69 73 74 20 74 6f 20 64 65 74 65 63 74 20 61 6e 79 20 6f 76 65 72 6c 61 70 70 69 6e 67 20 61 6c ist.to.detect.any.overlapping.al
11080 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a located.blocks...***************
110a0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
110c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 20 2a 20 61 64 64 5f 72 61 *****************/../*..*.add_ra
110e0 6e 67 65 20 2d 20 41 73 20 64 69 72 65 63 74 65 64 20 62 79 20 72 65 71 75 65 73 74 20 6f 70 6e nge.-.As.directed.by.request.opn
11100 75 6d 20 69 6e 20 74 72 61 63 65 20 74 72 61 63 65 6e 75 6d 2c 0a 20 2a 20 20 20 20 20 77 65 27 um.in.trace.tracenum,..*.....we'
11120 76 65 20 6a 75 73 74 20 63 61 6c 6c 65 64 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 6d 5f ve.just.called.the.student's.mm_
11140 6d 61 6c 6c 6f 63 20 74 6f 20 61 6c 6c 6f 63 61 74 65 20 61 20 62 6c 6f 63 6b 20 6f 66 20 0a 20 malloc.to.allocate.a.block.of...
11160 2a 20 20 20 20 20 73 69 7a 65 20 62 79 74 65 73 20 61 74 20 61 64 64 72 20 6c 6f 2e 20 41 66 74 *.....size.bytes.at.addr.lo..Aft
11180 65 72 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 62 6c 6f 63 6b 20 66 6f 72 20 63 6f 72 72 65 63 er.checking.the.block.for.correc
111a0 74 6e 65 73 73 2c 0a 20 2a 20 20 20 20 20 77 65 20 63 72 65 61 74 65 20 61 20 72 61 6e 67 65 20 tness,..*.....we.create.a.range.
111c0 73 74 72 75 63 74 20 66 6f 72 20 74 68 69 73 20 62 6c 6f 63 6b 20 61 6e 64 20 61 64 64 20 69 74 struct.for.this.block.and.add.it
111e0 20 74 6f 20 74 68 65 20 72 61 6e 67 65 20 6c 69 73 74 2e 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 .to.the.range.list....*/.static.
11200 69 6e 74 20 61 64 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 73 2c 20 int.add_range(range_t.**ranges,.
11220 63 68 61 72 20 2a 6c 6f 2c 20 69 6e 74 20 73 69 7a 65 2c 20 0a 09 09 20 20 20 20 20 69 6e 74 20 char.*lo,.int.size,.........int.
11240 74 72 61 63 65 6e 75 6d 2c 20 69 6e 74 20 6f 70 6e 75 6d 29 0a 7b 0a 20 20 20 20 63 68 61 72 20 tracenum,.int.opnum).{.....char.
11260 2a 68 69 20 3d 20 6c 6f 20 2b 20 73 69 7a 65 20 2d 20 31 3b 0a 20 20 20 20 72 61 6e 67 65 5f 74 *hi.=.lo.+.size.-.1;.....range_t
11280 20 2a 70 3b 0a 20 20 20 20 63 68 61 72 20 6d 73 67 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 0a 20 20 20 .*p;.....char.msg[MAXLINE];.....
112a0 20 61 73 73 65 72 74 28 73 69 7a 65 20 3e 20 30 29 3b 0a 0a 20 20 20 20 2f 2a 20 50 61 79 6c 6f .assert(size.>.0);....../*.Paylo
112c0 61 64 20 61 64 64 72 65 73 73 65 73 20 6d 75 73 74 20 62 65 20 41 4c 49 47 4e 4d 45 4e 54 2d 62 ad.addresses.must.be.ALIGNMENT-b
112e0 79 74 65 20 61 6c 69 67 6e 65 64 20 2a 2f 0a 20 20 20 20 69 66 20 28 21 49 53 5f 41 4c 49 47 4e yte.aligned.*/.....if.(!IS_ALIGN
11300 45 44 28 6c 6f 29 29 20 7b 0a 09 73 70 72 69 6e 74 66 28 6d 73 67 2c 20 22 50 61 79 6c 6f 61 64 ED(lo)).{..sprintf(msg,."Payload
11320 20 61 64 64 72 65 73 73 20 28 25 70 29 20 6e 6f 74 20 61 6c 69 67 6e 65 64 20 74 6f 20 25 64 20 .address.(%p).not.aligned.to.%d.
11340 62 79 74 65 73 22 2c 20 0a 09 09 6c 6f 2c 20 41 4c 49 47 4e 4d 45 4e 54 29 3b 0a 20 20 20 20 20 bytes",....lo,.ALIGNMENT);......
11360 20 20 20 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 6f 70 6e 75 6d 2c ...malloc_error(tracenum,.opnum,
11380 20 6d 73 67 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 7d 0a 0a .msg);.........return.0;.....}..
113a0 20 20 20 20 2f 2a 20 54 68 65 20 70 61 79 6c 6f 61 64 20 6d 75 73 74 20 6c 69 65 20 77 69 74 68 ..../*.The.payload.must.lie.with
113c0 69 6e 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 74 68 65 20 68 65 61 70 20 2a 2f 0a 20 20 20 in.the.extent.of.the.heap.*/....
113e0 20 69 66 20 28 28 6c 6f 20 3c 20 28 63 68 61 72 20 2a 29 6d 65 6d 5f 68 65 61 70 5f 6c 6f 28 29 .if.((lo.<.(char.*)mem_heap_lo()
11400 29 20 7c 7c 20 28 6c 6f 20 3e 20 28 63 68 61 72 20 2a 29 6d 65 6d 5f 68 65 61 70 5f 68 69 28 29 ).||.(lo.>.(char.*)mem_heap_hi()
11420 29 20 7c 7c 20 0a 09 28 68 69 20 3c 20 28 63 68 61 72 20 2a 29 6d 65 6d 5f 68 65 61 70 5f 6c 6f ).||...(hi.<.(char.*)mem_heap_lo
11440 28 29 29 20 7c 7c 20 28 68 69 20 3e 20 28 63 68 61 72 20 2a 29 6d 65 6d 5f 68 65 61 70 5f 68 69 ()).||.(hi.>.(char.*)mem_heap_hi
11460 28 29 29 29 20 7b 0a 09 73 70 72 69 6e 74 66 28 6d 73 67 2c 20 22 50 61 79 6c 6f 61 64 20 28 25 ())).{..sprintf(msg,."Payload.(%
11480 70 3a 25 70 29 20 6c 69 65 73 20 6f 75 74 73 69 64 65 20 68 65 61 70 20 28 25 70 3a 25 70 29 22 p:%p).lies.outside.heap.(%p:%p)"
114a0 2c 0a 09 09 6c 6f 2c 20 68 69 2c 20 6d 65 6d 5f 68 65 61 70 5f 6c 6f 28 29 2c 20 6d 65 6d 5f 68 ,...lo,.hi,.mem_heap_lo(),.mem_h
114c0 65 61 70 5f 68 69 28 29 29 3b 0a 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e 75 eap_hi());..malloc_error(tracenu
114e0 6d 2c 20 6f 70 6e 75 6d 2c 20 6d 73 67 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 m,.opnum,.msg);.........return.0
11500 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 54 68 65 20 70 61 79 6c 6f 61 64 20 6d 75 73 74 ;.....}....../*.The.payload.must
11520 20 6e 6f 74 20 6f 76 65 72 6c 61 70 20 61 6e 79 20 6f 74 68 65 72 20 70 61 79 6c 6f 61 64 73 20 .not.overlap.any.other.payloads.
11540 2a 2f 0a 20 20 20 20 66 6f 72 20 28 70 20 3d 20 2a 72 61 6e 67 65 73 3b 20 20 70 20 21 3d 20 4e */.....for.(p.=.*ranges;..p.!=.N
11560 55 4c 4c 3b 20 20 70 20 3d 20 70 2d 3e 6e 65 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 ULL;..p.=.p->next).{.........if.
11580 28 28 6c 6f 20 3e 3d 20 70 2d 3e 6c 6f 20 26 26 20 6c 6f 20 3c 3d 20 70 2d 3e 20 68 69 29 20 7c ((lo.>=.p->lo.&&.lo.<=.p->.hi).|
115a0 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 68 69 20 3e 3d 20 70 2d 3e 6c 6f 20 26 26 20 68 69 |.............(hi.>=.p->lo.&&.hi
115c0 20 3c 3d 20 70 2d 3e 68 69 29 29 20 7b 0a 09 20 20 20 20 73 70 72 69 6e 74 66 28 6d 73 67 2c 20 .<=.p->hi)).{......sprintf(msg,.
115e0 22 50 61 79 6c 6f 61 64 20 28 25 70 3a 25 70 29 20 6f 76 65 72 6c 61 70 73 20 61 6e 6f 74 68 65 "Payload.(%p:%p).overlaps.anothe
11600 72 20 70 61 79 6c 6f 61 64 20 28 25 70 3a 25 70 29 5c 6e 22 2c 0a 09 09 20 20 20 20 6c 6f 2c 20 r.payload.(%p:%p)\n",.......lo,.
11620 68 69 2c 20 70 2d 3e 6c 6f 2c 20 70 2d 3e 68 69 29 3b 0a 09 20 20 20 20 6d 61 6c 6c 6f 63 5f 65 hi,.p->lo,.p->hi);......malloc_e
11640 72 72 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 6f 70 6e 75 6d 2c 20 6d 73 67 29 3b 0a 09 20 20 20 rror(tracenum,.opnum,.msg);.....
11660 20 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 .return.0;.........}.....}......
11680 2f 2a 20 0a 20 20 20 20 20 2a 20 45 76 65 72 79 74 68 69 6e 67 20 6c 6f 6f 6b 73 20 4f 4b 2c 20 /*.......*.Everything.looks.OK,.
116a0 73 6f 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 65 78 74 65 6e 74 20 6f 66 20 74 68 69 73 20 62 so.remember.the.extent.of.this.b
116c0 6c 6f 63 6b 20 0a 20 20 20 20 20 2a 20 62 79 20 63 72 65 61 74 69 6e 67 20 61 20 72 61 6e 67 65 lock.......*.by.creating.a.range
116e0 20 73 74 72 75 63 74 20 61 6e 64 20 61 64 64 69 6e 67 20 69 74 20 74 68 65 20 72 61 6e 67 65 20 .struct.and.adding.it.the.range.
11700 6c 69 73 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 70 20 3d 20 28 72 61 6e 67 list.......*/.....if.((p.=.(rang
11720 65 5f 74 20 2a 29 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 72 61 6e 67 65 5f 74 29 29 29 20 3d e_t.*)malloc(sizeof(range_t))).=
11740 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 65 72 72 6f =.NULL)..unix_error("malloc.erro
11760 72 20 69 6e 20 61 64 64 5f 72 61 6e 67 65 22 29 3b 0a 20 20 20 20 70 2d 3e 6e 65 78 74 20 3d 20 r.in.add_range");.....p->next.=.
11780 2a 72 61 6e 67 65 73 3b 0a 20 20 20 20 70 2d 3e 6c 6f 20 3d 20 6c 6f 3b 0a 20 20 20 20 70 2d 3e *ranges;.....p->lo.=.lo;.....p->
117a0 68 69 20 3d 20 68 69 3b 0a 20 20 20 20 2a 72 61 6e 67 65 73 20 3d 20 70 3b 0a 20 20 20 20 72 65 hi.=.hi;.....*ranges.=.p;.....re
117c0 74 75 72 6e 20 31 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 72 65 6d 6f 76 65 5f 72 61 6e 67 65 20 2d turn.1;.}../*...*.remove_range.-
117e0 20 46 72 65 65 20 74 68 65 20 72 61 6e 67 65 20 72 65 63 6f 72 64 20 6f 66 20 62 6c 6f 63 6b 20 .Free.the.range.record.of.block.
11800 77 68 6f 73 65 20 70 61 79 6c 6f 61 64 20 73 74 61 72 74 73 20 61 74 20 6c 6f 20 0a 20 2a 2f 0a whose.payload.starts.at.lo...*/.
11820 73 74 61 74 69 63 20 76 6f 69 64 20 72 65 6d 6f 76 65 5f 72 61 6e 67 65 28 72 61 6e 67 65 5f 74 static.void.remove_range(range_t
11840 20 2a 2a 72 61 6e 67 65 73 2c 20 63 68 61 72 20 2a 6c 6f 29 0a 7b 0a 20 20 20 20 72 61 6e 67 65 .**ranges,.char.*lo).{.....range
11860 5f 74 20 2a 70 3b 0a 20 20 20 20 72 61 6e 67 65 5f 74 20 2a 2a 70 72 65 76 70 70 20 3d 20 72 61 _t.*p;.....range_t.**prevpp.=.ra
11880 6e 67 65 73 3b 0a 20 20 20 20 69 6e 74 20 73 69 7a 65 3b 0a 0a 20 20 20 20 66 6f 72 20 28 70 20 nges;.....int.size;......for.(p.
118a0 3d 20 2a 72 61 6e 67 65 73 3b 20 20 70 20 21 3d 20 4e 55 4c 4c 3b 20 70 20 3d 20 70 2d 3e 6e 65 =.*ranges;..p.!=.NULL;.p.=.p->ne
118c0 78 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 2d 3e 6c 6f 20 3d 3d 20 6c 6f 29 20 7b xt).{.........if.(p->lo.==.lo).{
118e0 0a 09 20 20 20 20 2a 70 72 65 76 70 70 20 3d 20 70 2d 3e 6e 65 78 74 3b 0a 20 20 20 20 20 20 20 ......*prevpp.=.p->next;........
11900 20 20 20 20 20 73 69 7a 65 20 3d 20 70 2d 3e 68 69 20 2d 20 70 2d 3e 6c 6f 20 2b 20 31 3b 0a 20 .....size.=.p->hi.-.p->lo.+.1;..
11920 20 20 20 20 20 20 20 20 20 20 20 66 72 65 65 28 70 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ...........free(p);.............
11940 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 70 72 65 76 70 70 20 break;.........}.........prevpp.
11960 3d 20 26 28 70 2d 3e 6e 65 78 74 29 3b 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2a 0a 20 2a 20 63 6c 65 =.&(p->next);.....}.}../*..*.cle
11980 61 72 5f 72 61 6e 67 65 73 20 2d 20 66 72 65 65 20 61 6c 6c 20 6f 66 20 74 68 65 20 72 61 6e 67 ar_ranges.-.free.all.of.the.rang
119a0 65 20 72 65 63 6f 72 64 73 20 66 6f 72 20 61 20 74 72 61 63 65 20 0a 20 2a 2f 0a 73 74 61 74 69 e.records.for.a.trace...*/.stati
119c0 63 20 76 6f 69 64 20 63 6c 65 61 72 5f 72 61 6e 67 65 73 28 72 61 6e 67 65 5f 74 20 2a 2a 72 61 c.void.clear_ranges(range_t.**ra
119e0 6e 67 65 73 29 0a 7b 0a 20 20 20 20 72 61 6e 67 65 5f 74 20 2a 70 3b 0a 20 20 20 20 72 61 6e 67 nges).{.....range_t.*p;.....rang
11a00 65 5f 74 20 2a 70 6e 65 78 74 3b 0a 0a 20 20 20 20 66 6f 72 20 28 70 20 3d 20 2a 72 61 6e 67 65 e_t.*pnext;......for.(p.=.*range
11a20 73 3b 20 20 70 20 21 3d 20 4e 55 4c 4c 3b 20 20 70 20 3d 20 70 6e 65 78 74 29 20 7b 0a 20 20 20 s;..p.!=.NULL;..p.=.pnext).{....
11a40 20 20 20 20 20 70 6e 65 78 74 20 3d 20 70 2d 3e 6e 65 78 74 3b 0a 20 20 20 20 20 20 20 20 66 72 .....pnext.=.p->next;.........fr
11a60 65 65 28 70 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2a 72 61 6e 67 65 73 20 3d 20 4e 55 4c 4c 3b ee(p);.....}.....*ranges.=.NULL;
11a80 0a 7d 0a 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .}.../**************************
11aa0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 20 66 6f 6c 6c ********************..*.The.foll
11ac0 6f 77 69 6e 67 20 72 6f 75 74 69 6e 65 73 20 6d 61 6e 69 70 75 6c 61 74 65 20 74 72 61 63 65 66 owing.routines.manipulate.tracef
11ae0 69 6c 65 73 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a iles..**************************
11b00 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a 0a 20 2a 20 72 65 61 64 *******************/../*..*.read
11b20 5f 74 72 61 63 65 20 2d 20 72 65 61 64 20 61 20 74 72 61 63 65 20 66 69 6c 65 20 61 6e 64 20 73 _trace.-.read.a.trace.file.and.s
11b40 74 6f 72 65 20 69 74 20 69 6e 20 6d 65 6d 6f 72 79 0a 20 2a 2f 0a 73 74 61 74 69 63 20 74 72 61 tore.it.in.memory..*/.static.tra
11b60 63 65 5f 74 20 2a 72 65 61 64 5f 74 72 61 63 65 28 63 68 61 72 20 2a 74 72 61 63 65 64 69 72 2c ce_t.*read_trace(char.*tracedir,
11b80 20 63 68 61 72 20 2a 66 69 6c 65 6e 61 6d 65 29 0a 7b 0a 20 20 20 20 46 49 4c 45 20 2a 74 72 61 .char.*filename).{.....FILE.*tra
11ba0 63 65 66 69 6c 65 3b 0a 20 20 20 20 74 72 61 63 65 5f 74 20 2a 74 72 61 63 65 3b 0a 20 20 20 20 cefile;.....trace_t.*trace;.....
11bc0 63 68 61 72 20 74 79 70 65 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 63 68 61 72 20 70 61 74 char.type[MAXLINE];.....char.pat
11be0 68 5b 4d 41 58 4c 49 4e 45 5d 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 69 6e 64 65 78 2c 20 h[MAXLINE];.....unsigned.index,.
11c00 73 69 7a 65 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6d 61 78 5f 69 6e 64 65 78 20 3d 20 30 size;.....unsigned.max_index.=.0
11c20 3b 0a 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6f 70 5f 69 6e 64 65 78 3b 0a 0a 20 20 20 20 69 66 ;.....unsigned.op_index;......if
11c40 20 28 76 65 72 62 6f 73 65 20 3e 20 31 29 0a 09 70 72 69 6e 74 66 28 22 52 65 61 64 69 6e 67 20 .(verbose.>.1)..printf("Reading.
11c60 74 72 61 63 65 66 69 6c 65 3a 20 25 73 5c 6e 22 2c 20 66 69 6c 65 6e 61 6d 65 29 3b 0a 0a 20 20 tracefile:.%s\n",.filename);....
11c80 20 20 2f 2a 20 41 6c 6c 6f 63 61 74 65 20 74 68 65 20 74 72 61 63 65 20 72 65 63 6f 72 64 20 2a ../*.Allocate.the.trace.record.*
11ca0 2f 0a 20 20 20 20 69 66 20 28 28 74 72 61 63 65 20 3d 20 28 74 72 61 63 65 5f 74 20 2a 29 20 6d /.....if.((trace.=.(trace_t.*).m
11cc0 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 74 72 61 63 65 5f 74 29 29 29 20 3d 3d 20 4e 55 4c 4c 29 alloc(sizeof(trace_t))).==.NULL)
11ce0 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 31 20 66 61 69 6c 65 64 20 69 6e ..unix_error("malloc.1.failed.in
11d00 20 72 65 61 64 5f 74 72 61 6e 63 65 22 29 3b 0a 09 0a 20 20 20 20 2f 2a 20 52 65 61 64 20 74 68 .read_trance");......./*.Read.th
11d20 65 20 74 72 61 63 65 20 66 69 6c 65 20 68 65 61 64 65 72 20 2a 2f 0a 20 20 20 20 73 74 72 63 70 e.trace.file.header.*/.....strcp
11d40 79 28 70 61 74 68 2c 20 74 72 61 63 65 64 69 72 29 3b 0a 20 20 20 20 73 74 72 63 61 74 28 70 61 y(path,.tracedir);.....strcat(pa
11d60 74 68 2c 20 66 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 20 20 69 66 20 28 28 74 72 61 63 65 66 69 6c th,.filename);.....if.((tracefil
11d80 65 20 3d 20 66 6f 70 65 6e 28 70 61 74 68 2c 20 22 72 22 29 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b e.=.fopen(path,."r")).==.NULL).{
11da0 0a 09 73 70 72 69 6e 74 66 28 6d 73 67 2c 20 22 43 6f 75 6c 64 20 6e 6f 74 20 6f 70 65 6e 20 25 ..sprintf(msg,."Could.not.open.%
11dc0 73 20 69 6e 20 72 65 61 64 5f 74 72 61 63 65 22 2c 20 70 61 74 68 29 3b 0a 09 75 6e 69 78 5f 65 s.in.read_trace",.path);..unix_e
11de0 72 72 6f 72 28 6d 73 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 73 63 61 6e 66 28 74 72 61 63 rror(msg);.....}.....fscanf(trac
11e00 65 66 69 6c 65 2c 20 22 25 64 22 2c 20 26 28 74 72 61 63 65 2d 3e 73 75 67 67 5f 68 65 61 70 73 efile,."%d",.&(trace->sugg_heaps
11e20 69 7a 65 29 29 3b 20 2f 2a 20 6e 6f 74 20 75 73 65 64 20 2a 2f 0a 20 20 20 20 66 73 63 61 6e 66 ize));./*.not.used.*/.....fscanf
11e40 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 64 22 2c 20 26 28 74 72 61 63 65 2d 3e 6e 75 6d 5f 69 (tracefile,."%d",.&(trace->num_i
11e60 64 73 29 29 3b 20 20 20 20 20 0a 20 20 20 20 66 73 63 61 6e 66 28 74 72 61 63 65 66 69 6c 65 2c ds));..........fscanf(tracefile,
11e80 20 22 25 64 22 2c 20 26 28 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 29 29 3b 20 20 20 20 20 0a ."%d",.&(trace->num_ops));......
11ea0 20 20 20 20 66 73 63 61 6e 66 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 64 22 2c 20 26 28 74 72 ....fscanf(tracefile,."%d",.&(tr
11ec0 61 63 65 2d 3e 77 65 69 67 68 74 29 29 3b 20 20 20 20 20 20 20 20 2f 2a 20 6e 6f 74 20 75 73 65 ace->weight));......../*.not.use
11ee0 64 20 2a 2f 0a 20 20 20 20 0a 20 20 20 20 2f 2a 20 57 65 27 6c 6c 20 73 74 6f 72 65 20 65 61 63 d.*/........../*.We'll.store.eac
11f00 68 20 72 65 71 75 65 73 74 20 6c 69 6e 65 20 69 6e 20 74 68 65 20 74 72 61 63 65 20 69 6e 20 74 h.request.line.in.the.trace.in.t
11f20 68 69 73 20 61 72 72 61 79 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 74 72 61 63 65 2d 3e 6f 70 73 his.array.*/.....if.((trace->ops
11f40 20 3d 20 0a 09 20 28 74 72 61 63 65 6f 70 5f 74 20 2a 29 6d 61 6c 6c 6f 63 28 74 72 61 63 65 2d .=....(traceop_t.*)malloc(trace-
11f60 3e 6e 75 6d 5f 6f 70 73 20 2a 20 73 69 7a 65 6f 66 28 74 72 61 63 65 6f 70 5f 74 29 29 29 20 3d >num_ops.*.sizeof(traceop_t))).=
11f80 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 32 20 66 61 =.NULL)..unix_error("malloc.2.fa
11fa0 69 6c 65 64 20 69 6e 20 72 65 61 64 5f 74 72 61 63 65 22 29 3b 0a 0a 20 20 20 20 2f 2a 20 57 65 iled.in.read_trace");....../*.We
11fc0 27 6c 6c 20 6b 65 65 70 20 61 6e 20 61 72 72 61 79 20 6f 66 20 70 6f 69 6e 74 65 72 73 20 74 6f 'll.keep.an.array.of.pointers.to
11fe0 20 74 68 65 20 61 6c 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 20 68 65 72 65 2e 2e 2e 20 2a 2f .the.allocated.blocks.here....*/
12000 0a 20 20 20 20 69 66 20 28 28 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 20 3d 20 0a 09 20 28 63 68 .....if.((trace->blocks.=....(ch
12020 61 72 20 2a 2a 29 6d 61 6c 6c 6f 63 28 74 72 61 63 65 2d 3e 6e 75 6d 5f 69 64 73 20 2a 20 73 69 ar.**)malloc(trace->num_ids.*.si
12040 7a 65 6f 66 28 63 68 61 72 20 2a 29 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 zeof(char.*))).==.NULL)..unix_er
12060 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 33 20 66 61 69 6c 65 64 20 69 6e 20 72 65 61 64 5f 74 72 61 ror("malloc.3.failed.in.read_tra
12080 63 65 22 29 3b 0a 0a 20 20 20 20 2f 2a 20 2e 2e 2e 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 65 ce");....../*.....along.with.the
120a0 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 62 79 74 65 20 73 69 7a 65 73 20 6f 66 20 65 61 63 .corresponding.byte.sizes.of.eac
120c0 68 20 62 6c 6f 63 6b 20 2a 2f 0a 20 20 20 20 69 66 20 28 28 74 72 61 63 65 2d 3e 62 6c 6f 63 6b h.block.*/.....if.((trace->block
120e0 5f 73 69 7a 65 73 20 3d 20 0a 09 20 28 73 69 7a 65 5f 74 20 2a 29 6d 61 6c 6c 6f 63 28 74 72 61 _sizes.=....(size_t.*)malloc(tra
12100 63 65 2d 3e 6e 75 6d 5f 69 64 73 20 2a 20 73 69 7a 65 6f 66 28 73 69 7a 65 5f 74 29 29 29 20 3d ce->num_ids.*.sizeof(size_t))).=
12120 3d 20 4e 55 4c 4c 29 0a 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 34 20 66 61 =.NULL)..unix_error("malloc.4.fa
12140 69 6c 65 64 20 69 6e 20 72 65 61 64 5f 74 72 61 63 65 22 29 3b 0a 20 20 20 20 0a 20 20 20 20 2f iled.in.read_trace");........../
12160 2a 20 72 65 61 64 20 65 76 65 72 79 20 72 65 71 75 65 73 74 20 6c 69 6e 65 20 69 6e 20 74 68 65 *.read.every.request.line.in.the
12180 20 74 72 61 63 65 20 66 69 6c 65 20 2a 2f 0a 20 20 20 20 69 6e 64 65 78 20 3d 20 30 3b 0a 20 20 .trace.file.*/.....index.=.0;...
121a0 20 20 6f 70 5f 69 6e 64 65 78 20 3d 20 30 3b 0a 20 20 20 20 77 68 69 6c 65 20 28 66 73 63 61 6e ..op_index.=.0;.....while.(fscan
121c0 66 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 73 22 2c 20 74 79 70 65 29 20 21 3d 20 45 4f 46 29 f(tracefile,."%s",.type).!=.EOF)
121e0 20 7b 0a 09 73 77 69 74 63 68 28 74 79 70 65 5b 30 5d 29 20 7b 0a 09 63 61 73 65 20 27 61 27 3a .{..switch(type[0]).{..case.'a':
12200 0a 09 20 20 20 20 66 73 63 61 6e 66 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 75 20 25 75 22 2c ......fscanf(tracefile,."%u.%u",
12220 20 26 69 6e 64 65 78 2c 20 26 73 69 7a 65 29 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 6f 70 73 .&index,.&size);......trace->ops
12240 5b 6f 70 5f 69 6e 64 65 78 5d 2e 74 79 70 65 20 3d 20 41 4c 4c 4f 43 3b 0a 09 20 20 20 20 74 72 [op_index].type.=.ALLOC;......tr
12260 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78 ace->ops[op_index].index.=.index
12280 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 73 69 7a 65 ;......trace->ops[op_index].size
122a0 20 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 6d 61 78 5f 69 6e 64 65 78 20 3d 20 28 69 6e 64 65 78 .=.size;......max_index.=.(index
122c0 20 3e 20 6d 61 78 5f 69 6e 64 65 78 29 20 3f 20 69 6e 64 65 78 20 3a 20 6d 61 78 5f 69 6e 64 65 .>.max_index).?.index.:.max_inde
122e0 78 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 09 63 61 73 65 20 27 72 27 3a 0a 09 20 20 20 20 66 x;......break;..case.'r':......f
12300 73 63 61 6e 66 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 75 20 25 75 22 2c 20 26 69 6e 64 65 78 scanf(tracefile,."%u.%u",.&index
12320 2c 20 26 73 69 7a 65 29 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 ,.&size);......trace->ops[op_ind
12340 65 78 5d 2e 74 79 70 65 20 3d 20 52 45 41 4c 4c 4f 43 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e ex].type.=.REALLOC;......trace->
12360 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 69 6e 64 65 78 20 3d 20 69 6e 64 65 78 3b 0a 09 20 20 ops[op_index].index.=.index;....
12380 20 20 74 72 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 73 69 7a 65 20 3d 20 73 69 ..trace->ops[op_index].size.=.si
123a0 7a 65 3b 0a 09 20 20 20 20 6d 61 78 5f 69 6e 64 65 78 20 3d 20 28 69 6e 64 65 78 20 3e 20 6d 61 ze;......max_index.=.(index.>.ma
123c0 78 5f 69 6e 64 65 78 29 20 3f 20 69 6e 64 65 78 20 3a 20 6d 61 78 5f 69 6e 64 65 78 3b 0a 09 20 x_index).?.index.:.max_index;...
123e0 20 20 20 62 72 65 61 6b 3b 0a 09 63 61 73 65 20 27 66 27 3a 0a 09 20 20 20 20 66 73 63 61 6e 66 ...break;..case.'f':......fscanf
12400 28 74 72 61 63 65 66 69 6c 65 2c 20 22 25 75 64 22 2c 20 26 69 6e 64 65 78 29 3b 0a 09 20 20 20 (tracefile,."%ud",.&index);.....
12420 20 74 72 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 74 79 70 65 20 3d 20 46 52 45 .trace->ops[op_index].type.=.FRE
12440 45 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 6f 70 73 5b 6f 70 5f 69 6e 64 65 78 5d 2e 69 6e 64 E;......trace->ops[op_index].ind
12460 65 78 20 3d 20 69 6e 64 65 78 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 09 64 65 66 61 75 6c 74 ex.=.index;......break;..default
12480 3a 0a 09 20 20 20 20 70 72 69 6e 74 66 28 22 42 6f 67 75 73 20 74 79 70 65 20 63 68 61 72 61 63 :......printf("Bogus.type.charac
124a0 74 65 72 20 28 25 63 29 20 69 6e 20 74 72 61 63 65 66 69 6c 65 20 25 73 5c 6e 22 2c 20 0a 09 09 ter.(%c).in.tracefile.%s\n",....
124c0 20 20 20 74 79 70 65 5b 30 5d 2c 20 70 61 74 68 29 3b 0a 09 20 20 20 20 65 78 69 74 28 31 29 3b ...type[0],.path);......exit(1);
124e0 0a 09 7d 0a 09 6f 70 5f 69 6e 64 65 78 2b 2b 3b 0a 09 0a 20 20 20 20 7d 0a 20 20 20 20 66 63 6c ..}..op_index++;.......}.....fcl
12500 6f 73 65 28 74 72 61 63 65 66 69 6c 65 29 3b 0a 20 20 20 20 61 73 73 65 72 74 28 6d 61 78 5f 69 ose(tracefile);.....assert(max_i
12520 6e 64 65 78 20 3d 3d 20 74 72 61 63 65 2d 3e 6e 75 6d 5f 69 64 73 20 2d 20 31 29 3b 0a 20 20 20 ndex.==.trace->num_ids.-.1);....
12540 20 61 73 73 65 72 74 28 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 20 3d 3d 20 6f 70 5f 69 6e 64 .assert(trace->num_ops.==.op_ind
12560 65 78 29 3b 0a 20 20 20 20 0a 20 20 20 20 72 65 74 75 72 6e 20 74 72 61 63 65 3b 0a 7d 0a 0a 2f ex);..........return.trace;.}../
12580 2a 0a 20 2a 20 66 72 65 65 5f 74 72 61 63 65 20 2d 20 46 72 65 65 20 74 68 65 20 74 72 61 63 65 *..*.free_trace.-.Free.the.trace
125a0 20 72 65 63 6f 72 64 20 61 6e 64 20 74 68 65 20 74 68 72 65 65 20 61 72 72 61 79 73 20 69 74 20 .record.and.the.three.arrays.it.
125c0 70 6f 69 6e 74 73 0a 20 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 2c 20 61 6c 6c 20 6f points..*..............to,.all.o
125e0 66 20 77 68 69 63 68 20 77 65 72 65 20 61 6c 6c 6f 63 61 74 65 64 20 69 6e 20 72 65 61 64 5f 74 f.which.were.allocated.in.read_t
12600 72 61 63 65 28 29 2e 0a 20 2a 2f 0a 76 6f 69 64 20 66 72 65 65 5f 74 72 61 63 65 28 74 72 61 63 race()...*/.void.free_trace(trac
12620 65 5f 74 20 2a 74 72 61 63 65 29 0a 7b 0a 20 20 20 20 66 72 65 65 28 74 72 61 63 65 2d 3e 6f 70 e_t.*trace).{.....free(trace->op
12640 73 29 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 66 72 65 65 20 74 68 65 20 74 68 72 65 65 20 61 72 s);........./*.free.the.three.ar
12660 72 61 79 73 2e 2e 2e 20 2a 2f 0a 20 20 20 20 66 72 65 65 28 74 72 61 63 65 2d 3e 62 6c 6f 63 6b rays....*/.....free(trace->block
12680 73 29 3b 20 20 20 20 20 20 0a 20 20 20 20 66 72 65 65 28 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f s);...........free(trace->block_
126a0 73 69 7a 65 73 29 3b 0a 20 20 20 20 66 72 65 65 28 74 72 61 63 65 29 3b 20 20 20 20 20 20 20 20 sizes);.....free(trace);........
126c0 20 20 20 20 20 20 2f 2a 20 61 6e 64 20 74 68 65 20 74 72 61 63 65 20 72 65 63 6f 72 64 20 69 74 ....../*.and.the.trace.record.it
126e0 73 65 6c 66 2e 2e 2e 20 2a 2f 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a self....*/.}../*****************
12700 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
12720 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 54 68 65 20 66 6f 6c *********************..*.The.fol
12740 6c 6f 77 69 6e 67 20 66 75 6e 63 74 69 6f 6e 73 20 65 76 61 6c 75 61 74 65 20 74 68 65 20 63 6f lowing.functions.evaluate.the.co
12760 72 72 65 63 74 6e 65 73 73 2c 20 73 70 61 63 65 20 75 74 69 6c 69 7a 61 74 69 6f 6e 2c 0a 20 2a rrectness,.space.utilization,..*
12780 20 61 6e 64 20 74 68 72 6f 75 67 68 70 75 74 20 6f 66 20 74 68 65 20 6c 69 62 63 20 61 6e 64 20 .and.throughput.of.the.libc.and.
127a0 6d 6d 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 73 2e 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a mm.malloc.packages...***********
127c0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
127e0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 0a 2f 2a ***************************/../*
12800 0a 20 2a 20 65 76 61 6c 5f 6d 6d 5f 76 61 6c 69 64 20 2d 20 43 68 65 63 6b 20 74 68 65 20 6d 6d ..*.eval_mm_valid.-.Check.the.mm
12820 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 66 6f 72 20 63 6f 72 72 65 63 74 6e 65 73 73 0a .malloc.package.for.correctness.
12840 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 65 76 61 6c 5f 6d 6d 5f 76 61 6c 69 64 28 74 72 61 .*/.static.int.eval_mm_valid(tra
12860 63 65 5f 74 20 2a 74 72 61 63 65 2c 20 69 6e 74 20 74 72 61 63 65 6e 75 6d 2c 20 72 61 6e 67 65 ce_t.*trace,.int.tracenum,.range
12880 5f 74 20 2a 2a 72 61 6e 67 65 73 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 69 2c 20 6a 3b 0a 20 20 _t.**ranges)..{.....int.i,.j;...
128a0 20 20 69 6e 74 20 69 6e 64 65 78 3b 0a 20 20 20 20 69 6e 74 20 73 69 7a 65 3b 0a 20 20 20 20 69 ..int.index;.....int.size;.....i
128c0 6e 74 20 6f 6c 64 73 69 7a 65 3b 0a 20 20 20 20 63 68 61 72 20 2a 6e 65 77 70 3b 0a 20 20 20 20 nt.oldsize;.....char.*newp;.....
128e0 63 68 61 72 20 2a 6f 6c 64 70 3b 0a 20 20 20 20 63 68 61 72 20 2a 70 3b 0a 20 20 20 20 0a 20 20 char.*oldp;.....char.*p;........
12900 20 20 2f 2a 20 52 65 73 65 74 20 74 68 65 20 68 65 61 70 20 61 6e 64 20 66 72 65 65 20 61 6e 79 ../*.Reset.the.heap.and.free.any
12920 20 72 65 63 6f 72 64 73 20 69 6e 20 74 68 65 20 72 61 6e 67 65 20 6c 69 73 74 20 2a 2f 0a 20 20 .records.in.the.range.list.*/...
12940 20 20 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 28 29 3b 0a 20 20 20 20 63 6c 65 61 72 5f 72 61 6e ..mem_reset_brk();.....clear_ran
12960 67 65 73 28 72 61 6e 67 65 73 29 3b 0a 0a 20 20 20 20 2f 2a 20 43 61 6c 6c 20 74 68 65 20 6d 6d ges(ranges);....../*.Call.the.mm
12980 20 70 61 63 6b 61 67 65 27 73 20 69 6e 69 74 20 66 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 .package's.init.function.*/.....
129a0 69 66 20 28 6d 6d 5f 69 6e 69 74 28 29 20 3c 20 30 29 20 7b 0a 09 6d 61 6c 6c 6f 63 5f 65 72 72 if.(mm_init().<.0).{..malloc_err
129c0 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 30 2c 20 22 6d 6d 5f 69 6e 69 74 20 66 61 69 6c 65 64 2e or(tracenum,.0,."mm_init.failed.
129e0 22 29 3b 0a 09 72 65 74 75 72 6e 20 30 3b 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 49 6e 74 ");..return.0;.....}....../*.Int
12a00 65 72 70 72 65 74 20 65 61 63 68 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20 74 68 65 20 74 72 61 erpret.each.operation.in.the.tra
12a20 63 65 20 69 6e 20 6f 72 64 65 72 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 20 ce.in.order.*/.....for.(i.=.0;..
12a40 69 20 3c 20 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 3b 20 20 69 2b 2b 29 20 7b 0a 09 69 6e 64 i.<.trace->num_ops;..i++).{..ind
12a60 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 09 73 69 7a 65 20 ex.=.trace->ops[i].index;..size.
12a80 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 0a 20 20 20 20 20 20 20 20 73 =.trace->ops[i].size;..........s
12aa0 77 69 74 63 68 20 28 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 74 79 70 65 29 20 7b 0a 0a 20 20 witch.(trace->ops[i].type).{....
12ac0 20 20 20 20 20 20 63 61 73 65 20 41 4c 4c 4f 43 3a 20 2f 2a 20 6d 6d 5f 6d 61 6c 6c 6f 63 20 2a ......case.ALLOC:./*.mm_malloc.*
12ae0 2f 0a 0a 09 20 20 20 20 2f 2a 20 43 61 6c 6c 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 61 /......./*.Call.the.student's.ma
12b00 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 66 20 28 28 70 20 3d 20 6d 6d 5f 6d 61 6c 6c 6f 63 28 lloc.*/......if.((p.=.mm_malloc(
12b20 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 size)).==.NULL).{...malloc_error
12b40 28 74 72 61 63 65 6e 75 6d 2c 20 69 2c 20 22 6d 6d 5f 6d 61 6c 6c 6f 63 20 66 61 69 6c 65 64 2e (tracenum,.i,."mm_malloc.failed.
12b60 22 29 3b 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 0a 09 20 20 ");...return.0;......}..........
12b80 20 20 2f 2a 20 0a 09 20 20 20 20 20 2a 20 54 65 73 74 20 74 68 65 20 72 61 6e 67 65 20 6f 66 20 ../*........*.Test.the.range.of.
12ba0 74 68 65 20 6e 65 77 20 62 6c 6f 63 6b 20 66 6f 72 20 63 6f 72 72 65 63 74 6e 65 73 73 20 61 6e the.new.block.for.correctness.an
12bc0 64 20 61 64 64 20 69 74 20 0a 09 20 20 20 20 20 2a 20 74 6f 20 74 68 65 20 72 61 6e 67 65 20 6c d.add.it........*.to.the.range.l
12be0 69 73 74 20 69 66 20 4f 4b 2e 20 54 68 65 20 62 6c 6f 63 6b 20 6d 75 73 74 20 62 65 20 20 62 65 ist.if.OK..The.block.must.be..be
12c00 20 61 6c 69 67 6e 65 64 20 70 72 6f 70 65 72 6c 79 2c 0a 09 20 20 20 20 20 2a 20 61 6e 64 20 6d .aligned.properly,.......*.and.m
12c20 75 73 74 20 6e 6f 74 20 6f 76 65 72 6c 61 70 20 61 6e 79 20 63 75 72 72 65 6e 74 6c 79 20 61 6c ust.not.overlap.any.currently.al
12c40 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 2e 20 0a 09 20 20 20 20 20 2a 2f 20 0a 09 20 20 20 20 69 located.block.........*/.......i
12c60 66 20 28 61 64 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 73 2c 20 70 2c 20 73 69 7a 65 2c 20 74 72 f.(add_range(ranges,.p,.size,.tr
12c80 61 63 65 6e 75 6d 2c 20 69 29 20 3d 3d 20 30 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 acenum,.i).==.0)...return.0;....
12ca0 20 20 0a 09 20 20 20 20 2f 2a 20 41 44 44 45 44 3a 20 63 67 77 0a 09 20 20 20 20 20 2a 20 66 69 ......../*.ADDED:.cgw.......*.fi
12cc0 6c 6c 20 72 61 6e 67 65 20 77 69 74 68 20 6c 6f 77 20 62 79 74 65 20 6f 66 20 69 6e 64 65 78 2e ll.range.with.low.byte.of.index.
12ce0 20 20 54 68 69 73 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 6c 61 74 65 72 0a 09 20 20 20 20 20 ..This.will.be.used.later.......
12d00 2a 20 69 66 20 77 65 20 72 65 61 6c 6c 6f 63 20 74 68 65 20 62 6c 6f 63 6b 20 61 6e 64 20 77 69 *.if.we.realloc.the.block.and.wi
12d20 73 68 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6f 6c 64 0a 09 20 20 sh.to.make.sure.that.the.old....
12d40 20 20 20 2a 20 64 61 74 61 20 77 61 73 20 63 6f 70 69 65 64 20 74 6f 20 74 68 65 20 6e 65 77 20 ...*.data.was.copied.to.the.new.
12d60 62 6c 6f 63 6b 0a 09 20 20 20 20 20 2a 2f 0a 09 20 20 20 20 6d 65 6d 73 65 74 28 70 2c 20 69 6e block.......*/......memset(p,.in
12d80 64 65 78 20 26 20 30 78 46 46 2c 20 73 69 7a 65 29 3b 0a 0a 09 20 20 20 20 2f 2a 20 52 65 6d 65 dex.&.0xFF,.size);......./*.Reme
12da0 6d 62 65 72 20 72 65 67 69 6f 6e 20 2a 2f 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b mber.region.*/......trace->block
12dc0 73 5b 69 6e 64 65 78 5d 20 3d 20 70 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f s[index].=.p;......trace->block_
12de0 73 69 7a 65 73 5b 69 6e 64 65 78 5d 20 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b sizes[index].=.size;......break;
12e00 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 52 45 41 4c 4c 4f 43 3a 20 2f 2a 20 6d 6d 5f 72 65 ..........case.REALLOC:./*.mm_re
12e20 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 43 61 6c 6c 20 74 68 65 20 alloc.*/............/*.Call.the.
12e40 73 74 75 64 65 6e 74 27 73 20 72 65 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 6f 6c 64 70 20 3d student's.realloc.*/......oldp.=
12e60 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 69 66 20 28 .trace->blocks[index];......if.(
12e80 28 6e 65 77 70 20 3d 20 6d 6d 5f 72 65 61 6c 6c 6f 63 28 6f 6c 64 70 2c 20 73 69 7a 65 29 29 20 (newp.=.mm_realloc(oldp,.size)).
12ea0 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 09 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e ==.NULL).{...malloc_error(tracen
12ec0 75 6d 2c 20 69 2c 20 22 6d 6d 5f 72 65 61 6c 6c 6f 63 20 66 61 69 6c 65 64 2e 22 29 3b 0a 09 09 um,.i,."mm_realloc.failed.");...
12ee0 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 7d 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 52 return.0;......}............/*.R
12f00 65 6d 6f 76 65 20 74 68 65 20 6f 6c 64 20 72 65 67 69 6f 6e 20 66 72 6f 6d 20 74 68 65 20 72 61 emove.the.old.region.from.the.ra
12f20 6e 67 65 20 6c 69 73 74 20 2a 2f 0a 09 20 20 20 20 72 65 6d 6f 76 65 5f 72 61 6e 67 65 28 72 61 nge.list.*/......remove_range(ra
12f40 6e 67 65 73 2c 20 6f 6c 64 70 29 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 43 68 65 63 6b nges,.oldp);............/*.Check
12f60 20 6e 65 77 20 62 6c 6f 63 6b 20 66 6f 72 20 63 6f 72 72 65 63 74 6e 65 73 73 20 61 6e 64 20 61 .new.block.for.correctness.and.a
12f80 64 64 20 69 74 20 74 6f 20 72 61 6e 67 65 20 6c 69 73 74 20 2a 2f 0a 09 20 20 20 20 69 66 20 28 dd.it.to.range.list.*/......if.(
12fa0 61 64 64 5f 72 61 6e 67 65 28 72 61 6e 67 65 73 2c 20 6e 65 77 70 2c 20 73 69 7a 65 2c 20 74 72 add_range(ranges,.newp,.size,.tr
12fc0 61 63 65 6e 75 6d 2c 20 69 29 20 3d 3d 20 30 29 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 acenum,.i).==.0)...return.0;....
12fe0 20 20 0a 09 20 20 20 20 2f 2a 20 41 44 44 45 44 3a 20 63 67 77 0a 09 20 20 20 20 20 2a 20 4d 61 ......../*.ADDED:.cgw.......*.Ma
13000 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 20 6e 65 77 20 62 6c 6f 63 6b 20 63 6f 6e 74 61 ke.sure.that.the.new.block.conta
13020 69 6e 73 20 74 68 65 20 64 61 74 61 20 66 72 6f 6d 20 74 68 65 20 6f 6c 64 20 0a 09 20 20 20 20 ins.the.data.from.the.old.......
13040 20 2a 20 62 6c 6f 63 6b 20 61 6e 64 20 74 68 65 6e 20 66 69 6c 6c 20 69 6e 20 74 68 65 20 6e 65 .*.block.and.then.fill.in.the.ne
13060 77 20 62 6c 6f 63 6b 20 77 69 74 68 20 74 68 65 20 6c 6f 77 20 6f 72 64 65 72 20 62 79 74 65 0a w.block.with.the.low.order.byte.
13080 09 20 20 20 20 20 2a 20 6f 66 20 74 68 65 20 6e 65 77 20 69 6e 64 65 78 0a 09 20 20 20 20 20 2a ......*.of.the.new.index.......*
130a0 2f 0a 09 20 20 20 20 6f 6c 64 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f 73 69 /......oldsize.=.trace->block_si
130c0 7a 65 73 5b 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 69 66 20 28 73 69 7a 65 20 3c 20 6f 6c 64 73 zes[index];......if.(size.<.olds
130e0 69 7a 65 29 20 6f 6c 64 73 69 7a 65 20 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 66 6f 72 20 28 6a ize).oldsize.=.size;......for.(j
13100 20 3d 20 30 3b 20 6a 20 3c 20 6f 6c 64 73 69 7a 65 3b 20 6a 2b 2b 29 20 7b 0a 09 20 20 20 20 20 .=.0;.j.<.oldsize;.j++).{.......
13120 20 69 66 20 28 6e 65 77 70 5b 6a 5d 20 21 3d 20 28 69 6e 64 65 78 20 26 20 30 78 46 46 29 29 20 .if.(newp[j].!=.(index.&.0xFF)).
13140 7b 0a 09 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 69 2c 20 22 6d {...malloc_error(tracenum,.i,."m
13160 6d 5f 72 65 61 6c 6c 6f 63 20 64 69 64 20 6e 6f 74 20 70 72 65 73 65 72 76 65 20 74 68 65 20 22 m_realloc.did.not.preserve.the."
13180 0a 09 09 09 20 20 20 20 20 22 64 61 74 61 20 66 72 6f 6d 20 6f 6c 64 20 62 6c 6f 63 6b 22 29 3b ........."data.from.old.block");
131a0 0a 09 09 72 65 74 75 72 6e 20 30 3b 0a 09 20 20 20 20 20 20 7d 0a 09 20 20 20 20 7d 0a 09 20 20 ...return.0;........}......}....
131c0 20 20 6d 65 6d 73 65 74 28 6e 65 77 70 2c 20 69 6e 64 65 78 20 26 20 30 78 46 46 2c 20 73 69 7a ..memset(newp,.index.&.0xFF,.siz
131e0 65 29 3b 0a 0a 09 20 20 20 20 2f 2a 20 52 65 6d 65 6d 62 65 72 20 72 65 67 69 6f 6e 20 2a 2f 0a e);......./*.Remember.region.*/.
13200 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 6e 65 77 70 .....trace->blocks[index].=.newp
13220 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f 73 69 7a 65 73 5b 69 6e 64 65 78 5d ;......trace->block_sizes[index]
13240 20 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 20 20 20 20 20 20 20 20 63 61 .=.size;......break;..........ca
13260 73 65 20 46 52 45 45 3a 20 2f 2a 20 6d 6d 5f 66 72 65 65 20 2a 2f 0a 09 20 20 20 20 0a 09 20 20 se.FREE:./*.mm_free.*/..........
13280 20 20 2f 2a 20 52 65 6d 6f 76 65 20 72 65 67 69 6f 6e 20 66 72 6f 6d 20 6c 69 73 74 20 61 6e 64 ../*.Remove.region.from.list.and
132a0 20 63 61 6c 6c 20 73 74 75 64 65 6e 74 27 73 20 66 72 65 65 20 66 75 6e 63 74 69 6f 6e 20 2a 2f .call.student's.free.function.*/
132c0 0a 09 20 20 20 20 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 3b 0a ......p.=.trace->blocks[index];.
132e0 09 20 20 20 20 72 65 6d 6f 76 65 5f 72 61 6e 67 65 28 72 61 6e 67 65 73 2c 20 70 29 3b 0a 09 20 .....remove_range(ranges,.p);...
13300 20 20 20 6d 6d 5f 66 72 65 65 28 70 29 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 64 65 66 ...mm_free(p);......break;...def
13320 61 75 6c 74 3a 0a 09 20 20 20 20 61 70 70 5f 65 72 72 6f 72 28 22 4e 6f 6e 65 78 69 73 74 65 6e ault:......app_error("Nonexisten
13340 74 20 72 65 71 75 65 73 74 20 74 79 70 65 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f 76 61 6c 69 64 22 t.request.type.in.eval_mm_valid"
13360 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 41 73 20 66 );.........}......}....../*.As.f
13380 61 72 20 61 73 20 77 65 20 6b 6e 6f 77 2c 20 74 68 69 73 20 69 73 20 61 20 76 61 6c 69 64 20 6d ar.as.we.know,.this.is.a.valid.m
133a0 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 2a 2f 0a 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 7d alloc.package.*/.....return.1;.}
133c0 0a 0a 2f 2a 20 0a 20 2a 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 20 2d 20 45 76 61 6c 75 61 74 65 ../*...*.eval_mm_util.-.Evaluate
133e0 20 74 68 65 20 73 70 61 63 65 20 75 74 69 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 .the.space.utilization.of.the.st
13400 75 64 65 6e 74 27 73 20 70 61 63 6b 61 67 65 0a 20 2a 20 20 20 54 68 65 20 69 64 65 61 20 69 73 udent's.package..*...The.idea.is
13420 20 74 6f 20 72 65 6d 65 6d 62 65 72 20 74 68 65 20 68 69 67 68 20 77 61 74 65 72 20 6d 61 72 6b .to.remember.the.high.water.mark
13440 20 22 68 77 6d 22 20 6f 66 20 74 68 65 20 68 65 61 70 20 66 6f 72 20 0a 20 2a 20 20 20 61 6e 20 ."hwm".of.the.heap.for...*...an.
13460 6f 70 74 69 6d 61 6c 20 61 6c 6c 6f 63 61 74 6f 72 2c 20 69 2e 65 2e 2c 20 6e 6f 20 67 61 70 73 optimal.allocator,.i.e.,.no.gaps
13480 20 61 6e 64 20 6e 6f 20 69 6e 74 65 72 6e 61 6c 20 66 72 61 67 6d 65 6e 74 61 74 69 6f 6e 2e 0a .and.no.internal.fragmentation..
134a0 20 2a 20 20 20 55 74 69 6c 69 7a 61 74 69 6f 6e 20 69 73 20 74 68 65 20 72 61 74 69 6f 20 68 77 .*...Utilization.is.the.ratio.hw
134c0 6d 2f 68 65 61 70 73 69 7a 65 2c 20 77 68 65 72 65 20 68 65 61 70 73 69 7a 65 20 69 73 20 74 68 m/heapsize,.where.heapsize.is.th
134e0 65 20 0a 20 2a 20 20 20 73 69 7a 65 20 6f 66 20 74 68 65 20 68 65 61 70 20 69 6e 20 62 79 74 65 e...*...size.of.the.heap.in.byte
13500 73 20 61 66 74 65 72 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 73 74 75 64 65 6e 74 27 73 20 6d 61 s.after.running.the.student's.ma
13520 6c 6c 6f 63 20 0a 20 2a 20 20 20 70 61 63 6b 61 67 65 20 6f 6e 20 74 68 65 20 74 72 61 63 65 2e lloc...*...package.on.the.trace.
13540 20 4e 6f 74 65 20 74 68 61 74 20 6f 75 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 .Note.that.our.implementation.of
13560 20 6d 65 6d 5f 73 62 72 6b 28 29 20 0a 20 2a 20 20 20 64 6f 65 73 6e 27 74 20 61 6c 6c 6f 77 20 .mem_sbrk()...*...doesn't.allow.
13580 74 68 65 20 73 74 75 64 65 6e 74 73 20 74 6f 20 64 65 63 72 65 6d 65 6e 74 20 74 68 65 20 62 72 the.students.to.decrement.the.br
135a0 6b 20 70 6f 69 6e 74 65 72 2c 20 73 6f 20 62 72 6b 0a 20 2a 20 20 20 69 73 20 61 6c 77 61 79 73 k.pointer,.so.brk..*...is.always
135c0 20 74 68 65 20 68 69 67 68 20 77 61 74 65 72 20 6d 61 72 6b 20 6f 66 20 74 68 65 20 68 65 61 70 .the.high.water.mark.of.the.heap
135e0 2e 20 0a 20 2a 20 20 20 0a 20 2a 2f 0a 73 74 61 74 69 63 20 64 6f 75 62 6c 65 20 65 76 61 6c 5f ....*.....*/.static.double.eval_
13600 6d 6d 5f 75 74 69 6c 28 74 72 61 63 65 5f 74 20 2a 74 72 61 63 65 2c 20 69 6e 74 20 74 72 61 63 mm_util(trace_t.*trace,.int.trac
13620 65 6e 75 6d 2c 20 72 61 6e 67 65 5f 74 20 2a 2a 72 61 6e 67 65 73 29 0a 7b 20 20 20 0a 20 20 20 enum,.range_t.**ranges).{.......
13640 20 69 6e 74 20 69 3b 0a 20 20 20 20 69 6e 74 20 69 6e 64 65 78 3b 0a 20 20 20 20 69 6e 74 20 73 .int.i;.....int.index;.....int.s
13660 69 7a 65 2c 20 6e 65 77 73 69 7a 65 2c 20 6f 6c 64 73 69 7a 65 3b 0a 20 20 20 20 69 6e 74 20 6d ize,.newsize,.oldsize;.....int.m
13680 61 78 5f 74 6f 74 61 6c 5f 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 69 6e 74 20 74 6f 74 61 6c ax_total_size.=.0;.....int.total
136a0 5f 73 69 7a 65 20 3d 20 30 3b 0a 20 20 20 20 63 68 61 72 20 2a 70 3b 0a 20 20 20 20 63 68 61 72 _size.=.0;.....char.*p;.....char
136c0 20 2a 6e 65 77 70 2c 20 2a 6f 6c 64 70 3b 0a 0a 20 20 20 20 2f 2a 20 69 6e 69 74 69 61 6c 69 7a .*newp,.*oldp;....../*.initializ
136e0 65 20 74 68 65 20 68 65 61 70 20 61 6e 64 20 74 68 65 20 6d 6d 20 6d 61 6c 6c 6f 63 20 70 61 63 e.the.heap.and.the.mm.malloc.pac
13700 6b 61 67 65 20 2a 2f 0a 20 20 20 20 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 28 29 3b 0a 20 20 20 kage.*/.....mem_reset_brk();....
13720 20 69 66 20 28 6d 6d 5f 69 6e 69 74 28 29 20 3c 20 30 29 0a 09 61 70 70 5f 65 72 72 6f 72 28 22 .if.(mm_init().<.0)..app_error("
13740 6d 6d 5f 69 6e 69 74 20 66 61 69 6c 65 64 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 22 29 mm_init.failed.in.eval_mm_util")
13760 3b 0a 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 20 69 20 3c 20 74 72 61 63 65 2d 3e 6e ;......for.(i.=.0;..i.<.trace->n
13780 75 6d 5f 6f 70 73 3b 20 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 um_ops;..i++).{.........switch.(
137a0 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 74 79 70 65 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 63 trace->ops[i].type).{..........c
137c0 61 73 65 20 41 4c 4c 4f 43 3a 20 2f 2a 20 6d 6d 5f 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 ase.ALLOC:./*.mm_alloc.*/......i
137e0 6e 64 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 09 20 20 20 ndex.=.trace->ops[i].index;.....
13800 20 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 0a 09 20 20 .size.=.trace->ops[i].size;.....
13820 20 20 69 66 20 28 28 70 20 3d 20 6d 6d 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 29 20 3d 3d 20 4e ..if.((p.=.mm_malloc(size)).==.N
13840 55 4c 4c 29 20 0a 09 09 61 70 70 5f 65 72 72 6f 72 28 22 6d 6d 5f 6d 61 6c 6c 6f 63 20 66 61 69 ULL)....app_error("mm_malloc.fai
13860 6c 65 64 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 22 29 3b 0a 09 20 20 20 20 0a 09 20 20 led.in.eval_mm_util");..........
13880 20 20 2f 2a 20 52 65 6d 65 6d 62 65 72 20 72 65 67 69 6f 6e 20 61 6e 64 20 73 69 7a 65 20 2a 2f ../*.Remember.region.and.size.*/
138a0 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 70 3b 0a ......trace->blocks[index].=.p;.
138c0 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f 73 69 7a 65 73 5b 69 6e 64 65 78 5d 20 3d .....trace->block_sizes[index].=
138e0 20 73 69 7a 65 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 4b 65 65 70 20 74 72 61 63 6b 20 .size;............/*.Keep.track.
13900 6f 66 20 63 75 72 72 65 6e 74 20 74 6f 74 61 6c 20 73 69 7a 65 0a 09 20 20 20 20 20 2a 20 6f 66 of.current.total.size.......*.of
13920 20 61 6c 6c 20 61 6c 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 20 2a 2f 0a 09 20 20 20 20 74 6f .all.allocated.blocks.*/......to
13940 74 61 6c 5f 73 69 7a 65 20 2b 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 tal_size.+=.size;............/*.
13960 55 70 64 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 2a 2f 0a 09 20 20 20 20 6d 61 78 5f 74 6f Update.statistics.*/......max_to
13980 74 61 6c 5f 73 69 7a 65 20 3d 20 28 74 6f 74 61 6c 5f 73 69 7a 65 20 3e 20 6d 61 78 5f 74 6f 74 tal_size.=.(total_size.>.max_tot
139a0 61 6c 5f 73 69 7a 65 29 20 3f 0a 09 09 74 6f 74 61 6c 5f 73 69 7a 65 20 3a 20 6d 61 78 5f 74 6f al_size).?...total_size.:.max_to
139c0 74 61 6c 5f 73 69 7a 65 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 63 61 73 65 20 52 45 41 tal_size;......break;...case.REA
139e0 4c 4c 4f 43 3a 20 2f 2a 20 6d 6d 5f 72 65 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 6e 64 65 LLOC:./*.mm_realloc.*/......inde
13a00 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 09 20 20 20 20 6e 65 x.=.trace->ops[i].index;......ne
13a20 77 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 09 20 20 20 wsize.=.trace->ops[i].size;.....
13a40 20 6f 6c 64 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f 73 69 7a 65 73 5b 69 6e .oldsize.=.trace->block_sizes[in
13a60 64 65 78 5d 3b 0a 0a 09 20 20 20 20 6f 6c 64 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 dex];.......oldp.=.trace->blocks
13a80 5b 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 69 66 20 28 28 6e 65 77 70 20 3d 20 6d 6d 5f 72 65 61 [index];......if.((newp.=.mm_rea
13aa0 6c 6c 6f 63 28 6f 6c 64 70 2c 6e 65 77 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 61 lloc(oldp,newsize)).==.NULL)...a
13ac0 70 70 5f 65 72 72 6f 72 28 22 6d 6d 5f 72 65 61 6c 6c 6f 63 20 66 61 69 6c 65 64 20 69 6e 20 65 pp_error("mm_realloc.failed.in.e
13ae0 76 61 6c 5f 6d 6d 5f 75 74 69 6c 22 29 3b 0a 0a 09 20 20 20 20 2f 2a 20 52 65 6d 65 6d 62 65 72 val_mm_util");......./*.Remember
13b00 20 72 65 67 69 6f 6e 20 61 6e 64 20 73 69 7a 65 20 2a 2f 0a 09 20 20 20 20 74 72 61 63 65 2d 3e .region.and.size.*/......trace->
13b20 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 6e 65 77 70 3b 0a 09 20 20 20 20 74 72 61 63 65 blocks[index].=.newp;......trace
13b40 2d 3e 62 6c 6f 63 6b 5f 73 69 7a 65 73 5b 69 6e 64 65 78 5d 20 3d 20 6e 65 77 73 69 7a 65 3b 0a ->block_sizes[index].=.newsize;.
13b60 09 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 4b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 63 75 72 72 .........../*.Keep.track.of.curr
13b80 65 6e 74 20 74 6f 74 61 6c 20 73 69 7a 65 0a 09 20 20 20 20 20 2a 20 6f 66 20 61 6c 6c 20 61 6c ent.total.size.......*.of.all.al
13ba0 6c 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 20 2a 2f 0a 09 20 20 20 20 74 6f 74 61 6c 5f 73 69 7a located.blocks.*/......total_siz
13bc0 65 20 2b 3d 20 28 6e 65 77 73 69 7a 65 20 2d 20 6f 6c 64 73 69 7a 65 29 3b 0a 09 20 20 20 20 0a e.+=.(newsize.-.oldsize);.......
13be0 09 20 20 20 20 2f 2a 20 55 70 64 61 74 65 20 73 74 61 74 69 73 74 69 63 73 20 2a 2f 0a 09 20 20 ...../*.Update.statistics.*/....
13c00 20 20 6d 61 78 5f 74 6f 74 61 6c 5f 73 69 7a 65 20 3d 20 28 74 6f 74 61 6c 5f 73 69 7a 65 20 3e ..max_total_size.=.(total_size.>
13c20 20 6d 61 78 5f 74 6f 74 61 6c 5f 73 69 7a 65 29 20 3f 0a 09 09 74 6f 74 61 6c 5f 73 69 7a 65 20 .max_total_size).?...total_size.
13c40 3a 20 6d 61 78 5f 74 6f 74 61 6c 5f 73 69 7a 65 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 20 :.max_total_size;......break;...
13c60 20 20 20 20 20 20 20 63 61 73 65 20 46 52 45 45 3a 20 2f 2a 20 6d 6d 5f 66 72 65 65 20 2a 2f 0a .......case.FREE:./*.mm_free.*/.
13c80 09 20 20 20 20 69 6e 64 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 .....index.=.trace->ops[i].index
13ca0 3b 0a 09 20 20 20 20 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 5f 73 69 7a 65 73 ;......size.=.trace->block_sizes
13cc0 5b 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b [index];......p.=.trace->blocks[
13ce0 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 6d 6d 5f 66 72 65 65 28 70 29 3b 0a 09 index];............mm_free(p);..
13d00 20 20 20 20 0a 09 20 20 20 20 2f 2a 20 4b 65 65 70 20 74 72 61 63 6b 20 6f 66 20 63 75 72 72 65 ........../*.Keep.track.of.curre
13d20 6e 74 20 74 6f 74 61 6c 20 73 69 7a 65 0a 09 20 20 20 20 20 2a 20 6f 66 20 61 6c 6c 20 61 6c 6c nt.total.size.......*.of.all.all
13d40 6f 63 61 74 65 64 20 62 6c 6f 63 6b 73 20 2a 2f 0a 09 20 20 20 20 74 6f 74 61 6c 5f 73 69 7a 65 ocated.blocks.*/......total_size
13d60 20 2d 3d 20 73 69 7a 65 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 64 65 .-=.size;............break;...de
13d80 66 61 75 6c 74 3a 0a 09 20 20 20 20 61 70 70 5f 65 72 72 6f 72 28 22 4e 6f 6e 65 78 69 73 74 65 fault:......app_error("Nonexiste
13da0 6e 74 20 72 65 71 75 65 73 74 20 74 79 70 65 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f 75 74 69 6c 22 nt.request.type.in.eval_mm_util"
13dc0 29 3b 0a 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 );..........}.....}......return.
13de0 28 28 64 6f 75 62 6c 65 29 6d 61 78 5f 74 6f 74 61 6c 5f 73 69 7a 65 20 2f 20 28 64 6f 75 62 6c ((double)max_total_size./.(doubl
13e00 65 29 6d 65 6d 5f 68 65 61 70 73 69 7a 65 28 29 29 3b 0a 7d 0a 0a 0a 2f 2a 0a 20 2a 20 65 76 61 e)mem_heapsize());.}.../*..*.eva
13e20 6c 5f 6d 6d 5f 73 70 65 65 64 20 2d 20 54 68 69 73 20 69 73 20 74 68 65 20 66 75 6e 63 74 69 6f l_mm_speed.-.This.is.the.functio
13e40 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 20 62 79 20 66 63 79 63 28 29 0a 20 2a 20 20 20 20 74 n.that.is.used.by.fcyc()..*....t
13e60 6f 20 6d 65 61 73 75 72 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74 69 6d 65 20 6f 66 20 74 68 o.measure.the.running.time.of.th
13e80 65 20 6d 6d 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 2e 0a 20 2a 2f 0a 73 74 61 74 69 63 20 e.mm.malloc.package...*/.static.
13ea0 76 6f 69 64 20 65 76 61 6c 5f 6d 6d 5f 73 70 65 65 64 28 76 6f 69 64 20 2a 70 74 72 29 0a 7b 0a void.eval_mm_speed(void.*ptr).{.
13ec0 20 20 20 20 69 6e 74 20 69 2c 20 69 6e 64 65 78 2c 20 73 69 7a 65 2c 20 6e 65 77 73 69 7a 65 3b ....int.i,.index,.size,.newsize;
13ee0 0a 20 20 20 20 63 68 61 72 20 2a 70 2c 20 2a 6e 65 77 70 2c 20 2a 6f 6c 64 70 2c 20 2a 62 6c 6f .....char.*p,.*newp,.*oldp,.*blo
13f00 63 6b 3b 0a 20 20 20 20 74 72 61 63 65 5f 74 20 2a 74 72 61 63 65 20 3d 20 28 28 73 70 65 65 64 ck;.....trace_t.*trace.=.((speed
13f20 5f 74 20 2a 29 70 74 72 29 2d 3e 74 72 61 63 65 3b 0a 0a 20 20 20 20 2f 2a 20 52 65 73 65 74 20 _t.*)ptr)->trace;....../*.Reset.
13f40 74 68 65 20 68 65 61 70 20 61 6e 64 20 69 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 6d 6d 20 70 the.heap.and.initialize.the.mm.p
13f60 61 63 6b 61 67 65 20 2a 2f 0a 20 20 20 20 6d 65 6d 5f 72 65 73 65 74 5f 62 72 6b 28 29 3b 0a 20 ackage.*/.....mem_reset_brk();..
13f80 20 20 20 69 66 20 28 6d 6d 5f 69 6e 69 74 28 29 20 3c 20 30 29 20 0a 09 61 70 70 5f 65 72 72 6f ...if.(mm_init().<.0)...app_erro
13fa0 72 28 22 6d 6d 5f 69 6e 69 74 20 66 61 69 6c 65 64 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f 73 70 65 r("mm_init.failed.in.eval_mm_spe
13fc0 65 64 22 29 3b 0a 0a 20 20 20 20 2f 2a 20 49 6e 74 65 72 70 72 65 74 20 65 61 63 68 20 74 72 61 ed");....../*.Interpret.each.tra
13fe0 63 65 20 72 65 71 75 65 73 74 20 2a 2f 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 20 69 ce.request.*/.....for.(i.=.0;..i
14000 20 3c 20 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 3b 20 20 69 2b 2b 29 0a 20 20 20 20 20 20 20 .<.trace->num_ops;..i++)........
14020 20 73 77 69 74 63 68 20 28 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 74 79 70 65 29 20 7b 0a 0a .switch.(trace->ops[i].type).{..
14040 20 20 20 20 20 20 20 20 63 61 73 65 20 41 4c 4c 4f 43 3a 20 2f 2a 20 6d 6d 5f 6d 61 6c 6c 6f 63 ........case.ALLOC:./*.mm_malloc
14060 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f .*/.............index.=.trace->o
14080 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 20 3d 20 ps[i].index;.............size.=.
140a0 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 trace->ops[i].size;.............
140c0 69 66 20 28 28 70 20 3d 20 6d 6d 5f 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c if.((p.=.mm_malloc(size)).==.NUL
140e0 4c 29 0a 09 09 61 70 70 5f 65 72 72 6f 72 28 22 6d 6d 5f 6d 61 6c 6c 6f 63 20 65 72 72 6f 72 20 L)...app_error("mm_malloc.error.
14100 69 6e 20 65 76 61 6c 5f 6d 6d 5f 73 70 65 65 64 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 in.eval_mm_speed");.............
14120 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 70 3b 0a 20 20 20 20 20 20 trace->blocks[index].=.p;.......
14140 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 63 61 73 65 20 52 45 41 4c 4c 4f 43 3a 20 2f 2a 20 ......break;...case.REALLOC:./*.
14160 6d 6d 5f 72 65 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 6e 64 65 78 20 3d 20 74 72 61 63 65 mm_realloc.*/......index.=.trace
14180 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 73 ->ops[i].index;.............news
141a0 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 09 20 20 20 20 6f ize.=.trace->ops[i].size;......o
141c0 6c 64 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 3b 0a 20 20 20 20 ldp.=.trace->blocks[index];.....
141e0 20 20 20 20 20 20 20 20 69 66 20 28 28 6e 65 77 70 20 3d 20 6d 6d 5f 72 65 61 6c 6c 6f 63 28 6f ........if.((newp.=.mm_realloc(o
14200 6c 64 70 2c 6e 65 77 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 61 70 70 5f 65 72 72 ldp,newsize)).==.NULL)...app_err
14220 6f 72 28 22 6d 6d 5f 72 65 61 6c 6c 6f 63 20 65 72 72 6f 72 20 69 6e 20 65 76 61 6c 5f 6d 6d 5f or("mm_realloc.error.in.eval_mm_
14240 73 70 65 65 64 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 speed");.............trace->bloc
14260 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 6e 65 77 70 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72 ks[index].=.newp;.............br
14280 65 61 6b 3b 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 46 52 45 45 3a 20 2f 2a 20 6d 6d 5f 66 eak;..........case.FREE:./*.mm_f
142a0 72 65 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 20 3d 20 74 72 61 63 65 ree.*/.............index.=.trace
142c0 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6c 6f 63 ->ops[i].index;.............bloc
142e0 6b 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 3b 0a 20 20 20 20 20 20 k.=.trace->blocks[index];.......
14300 20 20 20 20 20 20 6d 6d 5f 66 72 65 65 28 62 6c 6f 63 6b 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ......mm_free(block);...........
14320 20 20 62 72 65 61 6b 3b 0a 0a 09 64 65 66 61 75 6c 74 3a 0a 09 20 20 20 20 61 70 70 5f 65 72 72 ..break;...default:......app_err
14340 6f 72 28 22 4e 6f 6e 65 78 69 73 74 65 6e 74 20 72 65 71 75 65 73 74 20 74 79 70 65 20 69 6e 20 or("Nonexistent.request.type.in.
14360 65 76 61 6c 5f 6d 6d 5f 76 61 6c 69 64 22 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 7d 0a 0a 2f 2a eval_mm_valid");.........}.}../*
14380 0a 20 2a 20 65 76 61 6c 5f 6c 69 62 63 5f 76 61 6c 69 64 20 2d 20 57 65 20 72 75 6e 20 74 68 69 ..*.eval_libc_valid.-.We.run.thi
143a0 73 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 s.function.to.make.sure.that.the
143c0 0a 20 2a 20 20 20 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 63 61 6e 20 72 75 6e 20 74 6f 20 63 6f ..*....libc.malloc.can.run.to.co
143e0 6d 70 6c 65 74 69 6f 6e 20 6f 6e 20 74 68 65 20 73 65 74 20 6f 66 20 74 72 61 63 65 73 2e 0a 20 mpletion.on.the.set.of.traces...
14400 2a 20 20 20 20 57 65 27 6c 6c 20 62 65 20 63 6f 6e 73 65 72 76 61 74 69 76 65 20 61 6e 64 20 74 *....We'll.be.conservative.and.t
14420 65 72 6d 69 6e 61 74 65 20 69 66 20 61 6e 79 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 63 61 6c 6c erminate.if.any.libc.malloc.call
14440 20 66 61 69 6c 73 2e 0a 20 2a 0a 20 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 65 76 61 6c 5f 6c .fails...*..*/.static.int.eval_l
14460 69 62 63 5f 76 61 6c 69 64 28 74 72 61 63 65 5f 74 20 2a 74 72 61 63 65 2c 20 69 6e 74 20 74 72 ibc_valid(trace_t.*trace,.int.tr
14480 61 63 65 6e 75 6d 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 2c 20 6e 65 77 73 69 7a 65 3b 0a 20 20 acenum).{.....int.i,.newsize;...
144a0 20 20 63 68 61 72 20 2a 70 2c 20 2a 6e 65 77 70 2c 20 2a 6f 6c 64 70 3b 0a 0a 20 20 20 20 66 6f ..char.*p,.*newp,.*oldp;......fo
144c0 72 20 28 69 20 3d 20 30 3b 20 20 69 20 3c 20 74 72 61 63 65 2d 3e 6e 75 6d 5f 6f 70 73 3b 20 20 r.(i.=.0;..i.<.trace->num_ops;..
144e0 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 72 61 63 65 2d 3e 6f 70 i++).{.........switch.(trace->op
14500 73 5b 69 5d 2e 74 79 70 65 29 20 7b 0a 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 41 4c 4c 4f 43 s[i].type).{..........case.ALLOC
14520 3a 20 2f 2a 20 6d 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 66 20 28 28 70 20 3d 20 6d 61 6c :./*.malloc.*/......if.((p.=.mal
14540 6c 6f 63 28 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c loc(trace->ops[i].size)).==.NULL
14560 29 20 7b 0a 09 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 69 2c 20 ).{...malloc_error(tracenum,.i,.
14580 22 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 66 61 69 6c 65 64 22 29 3b 0a 09 09 75 6e 69 78 5f 65 72 "libc.malloc.failed");...unix_er
145a0 72 6f 72 28 22 53 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 3b 0a 09 20 20 20 20 7d 0a 09 20 ror("System.message");......}...
145c0 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 ...trace->blocks[trace->ops[i].i
145e0 6e 64 65 78 5d 20 3d 20 70 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 63 61 73 65 20 52 45 ndex].=.p;......break;...case.RE
14600 41 4c 4c 4f 43 3a 20 2f 2a 20 72 65 61 6c 6c 6f 63 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 ALLOC:./*.realloc.*/............
14620 20 6e 65 77 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 09 .newsize.=.trace->ops[i].size;..
14640 20 20 20 20 6f 6c 64 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 74 72 61 63 65 2d 3e ....oldp.=.trace->blocks[trace->
14660 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 5d 3b 0a 09 20 20 20 20 69 66 20 28 28 6e 65 77 70 20 3d 20 ops[i].index];......if.((newp.=.
14680 72 65 61 6c 6c 6f 63 28 6f 6c 64 70 2c 20 6e 65 77 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 realloc(oldp,.newsize)).==.NULL)
146a0 20 7b 0a 09 09 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 28 74 72 61 63 65 6e 75 6d 2c 20 69 2c 20 22 .{...malloc_error(tracenum,.i,."
146c0 6c 69 62 63 20 72 65 61 6c 6c 6f 63 20 66 61 69 6c 65 64 22 29 3b 0a 09 09 75 6e 69 78 5f 65 72 libc.realloc.failed");...unix_er
146e0 72 6f 72 28 22 53 79 73 74 65 6d 20 6d 65 73 73 61 67 65 22 29 3b 0a 09 20 20 20 20 7d 0a 09 20 ror("System.message");......}...
14700 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 ...trace->blocks[trace->ops[i].i
14720 6e 64 65 78 5d 20 3d 20 6e 65 77 70 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 0a ndex].=.newp;......break;.......
14740 20 20 20 20 20 20 20 20 63 61 73 65 20 46 52 45 45 3a 20 2f 2a 20 66 72 65 65 20 2a 2f 0a 09 20 ........case.FREE:./*.free.*/...
14760 20 20 20 66 72 65 65 28 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 74 72 61 63 65 2d 3e 6f 70 73 ...free(trace->blocks[trace->ops
14780 5b 69 5d 2e 69 6e 64 65 78 5d 29 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 64 65 66 61 75 [i].index]);......break;...defau
147a0 6c 74 3a 0a 09 20 20 20 20 61 70 70 5f 65 72 72 6f 72 28 22 69 6e 76 61 6c 69 64 20 6f 70 65 72 lt:......app_error("invalid.oper
147c0 61 74 69 6f 6e 20 74 79 70 65 20 20 69 6e 20 65 76 61 6c 5f 6c 69 62 63 5f 76 61 6c 69 64 22 29 ation.type..in.eval_libc_valid")
147e0 3b 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 7d 0a 0a 2f 2a 20 ;..}.....}......return.1;.}../*.
14800 0a 20 2a 20 65 76 61 6c 5f 6c 69 62 63 5f 73 70 65 65 64 20 2d 20 54 68 69 73 20 69 73 20 74 68 ..*.eval_libc_speed.-.This.is.th
14820 65 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 69 73 20 75 73 65 64 20 62 79 20 66 63 79 63 28 e.function.that.is.used.by.fcyc(
14840 29 20 74 6f 0a 20 2a 20 20 20 20 6d 65 61 73 75 72 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 74 ).to..*....measure.the.running.t
14860 69 6d 65 20 6f 66 20 74 68 65 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 20 6f ime.of.the.libc.malloc.package.o
14880 6e 20 74 68 65 20 73 65 74 0a 20 2a 20 20 20 20 6f 66 20 74 72 61 63 65 73 2e 0a 20 2a 2f 0a 73 n.the.set..*....of.traces...*/.s
148a0 74 61 74 69 63 20 76 6f 69 64 20 65 76 61 6c 5f 6c 69 62 63 5f 73 70 65 65 64 28 76 6f 69 64 20 tatic.void.eval_libc_speed(void.
148c0 2a 70 74 72 29 0a 7b 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 69 6e 74 20 69 6e 64 65 78 *ptr).{.....int.i;.....int.index
148e0 2c 20 73 69 7a 65 2c 20 6e 65 77 73 69 7a 65 3b 0a 20 20 20 20 63 68 61 72 20 2a 70 2c 20 2a 6e ,.size,.newsize;.....char.*p,.*n
14900 65 77 70 2c 20 2a 6f 6c 64 70 2c 20 2a 62 6c 6f 63 6b 3b 0a 20 20 20 20 74 72 61 63 65 5f 74 20 ewp,.*oldp,.*block;.....trace_t.
14920 2a 74 72 61 63 65 20 3d 20 28 28 73 70 65 65 64 5f 74 20 2a 29 70 74 72 29 2d 3e 74 72 61 63 65 *trace.=.((speed_t.*)ptr)->trace
14940 3b 0a 0a 20 20 20 20 66 6f 72 20 28 69 20 3d 20 30 3b 20 20 69 20 3c 20 74 72 61 63 65 2d 3e 6e ;......for.(i.=.0;..i.<.trace->n
14960 75 6d 5f 6f 70 73 3b 20 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 um_ops;..i++).{.........switch.(
14980 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 74 79 70 65 29 20 7b 0a 20 20 20 20 20 20 20 20 63 61 trace->ops[i].type).{.........ca
149a0 73 65 20 41 4c 4c 4f 43 3a 20 2f 2a 20 6d 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 6e 64 65 se.ALLOC:./*.malloc.*/......inde
149c0 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 09 20 20 20 20 73 69 x.=.trace->ops[i].index;......si
149e0 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 09 20 20 20 20 69 66 ze.=.trace->ops[i].size;......if
14a00 20 28 28 70 20 3d 20 6d 61 6c 6c 6f 63 28 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 .((p.=.malloc(size)).==.NULL)...
14a20 75 6e 69 78 5f 65 72 72 6f 72 28 22 6d 61 6c 6c 6f 63 20 66 61 69 6c 65 64 20 69 6e 20 65 76 61 unix_error("malloc.failed.in.eva
14a40 6c 5f 6c 69 62 63 5f 73 70 65 65 64 22 29 3b 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 l_libc_speed");......trace->bloc
14a60 6b 73 5b 69 6e 64 65 78 5d 20 3d 20 70 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 0a 09 63 61 73 ks[index].=.p;......break;...cas
14a80 65 20 52 45 41 4c 4c 4f 43 3a 20 2f 2a 20 72 65 61 6c 6c 6f 63 20 2a 2f 0a 09 20 20 20 20 69 6e e.REALLOC:./*.realloc.*/......in
14aa0 64 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b 0a 09 20 20 20 20 dex.=.trace->ops[i].index;......
14ac0 6e 65 77 73 69 7a 65 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 73 69 7a 65 3b 0a 09 20 newsize.=.trace->ops[i].size;...
14ae0 20 20 20 6f 6c 64 70 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 78 5d 3b 0a ...oldp.=.trace->blocks[index];.
14b00 09 20 20 20 20 69 66 20 28 28 6e 65 77 70 20 3d 20 72 65 61 6c 6c 6f 63 28 6f 6c 64 70 2c 20 6e .....if.((newp.=.realloc(oldp,.n
14b20 65 77 73 69 7a 65 29 29 20 3d 3d 20 4e 55 4c 4c 29 0a 09 09 75 6e 69 78 5f 65 72 72 6f 72 28 22 ewsize)).==.NULL)...unix_error("
14b40 72 65 61 6c 6c 6f 63 20 66 61 69 6c 65 64 20 69 6e 20 65 76 61 6c 5f 6c 69 62 63 5f 73 70 65 65 realloc.failed.in.eval_libc_spee
14b60 64 5c 6e 22 29 3b 0a 09 20 20 20 20 0a 09 20 20 20 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b d\n");............trace->blocks[
14b80 69 6e 64 65 78 5d 20 3d 20 6e 65 77 70 3b 0a 09 20 20 20 20 62 72 65 61 6b 3b 0a 09 20 20 20 20 index].=.newp;......break;......
14ba0 0a 20 20 20 20 20 20 20 20 63 61 73 65 20 46 52 45 45 3a 20 2f 2a 20 66 72 65 65 20 2a 2f 0a 09 .........case.FREE:./*.free.*/..
14bc0 20 20 20 20 69 6e 64 65 78 20 3d 20 74 72 61 63 65 2d 3e 6f 70 73 5b 69 5d 2e 69 6e 64 65 78 3b ....index.=.trace->ops[i].index;
14be0 0a 09 20 20 20 20 62 6c 6f 63 6b 20 3d 20 74 72 61 63 65 2d 3e 62 6c 6f 63 6b 73 5b 69 6e 64 65 ......block.=.trace->blocks[inde
14c00 78 5d 3b 0a 09 20 20 20 20 66 72 65 65 28 62 6c 6f 63 6b 29 3b 0a 09 20 20 20 20 62 72 65 61 6b x];......free(block);......break
14c20 3b 0a 09 7d 0a 20 20 20 20 7d 0a 7d 0a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;..}.....}.}../*****************
14c40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 2a 20 53 6f 6d 65 20 6d 69 73 ********************..*.Some.mis
14c60 63 65 6c 6c 61 6e 65 6f 75 73 20 68 65 6c 70 65 72 20 72 6f 75 74 69 6e 65 73 0a 20 2a 2a 2a 2a cellaneous.helper.routines..****
14c80 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ********************************
14ca0 2f 0a 0a 0a 2f 2a 0a 20 2a 20 70 72 69 6e 74 72 65 73 75 6c 74 73 20 2d 20 70 72 69 6e 74 73 20 /.../*..*.printresults.-.prints.
14cc0 61 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 73 75 6d 6d 61 72 79 20 66 6f 72 20 73 6f 6d 65 20 6d a.performance.summary.for.some.m
14ce0 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 0a 20 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 70 72 alloc.package..*/.static.void.pr
14d00 69 6e 74 72 65 73 75 6c 74 73 28 69 6e 74 20 6e 2c 20 73 74 61 74 73 5f 74 20 2a 73 74 61 74 73 intresults(int.n,.stats_t.*stats
14d20 29 20 0a 7b 0a 20 20 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 64 6f 75 62 6c 65 20 73 65 63 73 20 )..{.....int.i;.....double.secs.
14d40 3d 20 30 3b 0a 20 20 20 20 64 6f 75 62 6c 65 20 6f 70 73 20 3d 20 30 3b 0a 20 20 20 20 64 6f 75 =.0;.....double.ops.=.0;.....dou
14d60 62 6c 65 20 75 74 69 6c 20 3d 20 30 3b 0a 0a 20 20 20 20 2f 2a 20 50 72 69 6e 74 20 74 68 65 20 ble.util.=.0;....../*.Print.the.
14d80 69 6e 64 69 76 69 64 75 61 6c 20 72 65 73 75 6c 74 73 20 66 6f 72 20 65 61 63 68 20 74 72 61 63 individual.results.for.each.trac
14da0 65 20 2a 2f 0a 20 20 20 20 70 72 69 6e 74 66 28 22 25 35 73 25 37 73 20 25 35 73 25 38 73 25 31 e.*/.....printf("%5s%7s.%5s%8s%1
14dc0 30 73 25 36 73 5c 6e 22 2c 20 0a 09 20 20 20 22 74 72 61 63 65 22 2c 20 22 20 76 61 6c 69 64 22 0s%6s\n",......"trace",.".valid"
14de0 2c 20 22 75 74 69 6c 22 2c 20 22 6f 70 73 22 2c 20 22 73 65 63 73 22 2c 20 22 4b 6f 70 73 22 29 ,."util",."ops",."secs",."Kops")
14e00 3b 0a 20 20 20 20 66 6f 72 20 28 69 3d 30 3b 20 69 20 3c 20 6e 3b 20 69 2b 2b 29 20 7b 0a 09 69 ;.....for.(i=0;.i.<.n;.i++).{..i
14e20 66 20 28 73 74 61 74 73 5b 69 5d 2e 76 61 6c 69 64 29 20 7b 0a 09 20 20 20 20 70 72 69 6e 74 66 f.(stats[i].valid).{......printf
14e40 28 22 25 32 64 25 31 30 73 25 35 2e 30 66 25 25 25 38 2e 30 66 25 31 30 2e 36 66 25 36 2e 30 66 ("%2d%10s%5.0f%%%8.0f%10.6f%6.0f
14e60 5c 6e 22 2c 20 0a 09 09 20 20 20 69 2c 0a 09 09 20 20 20 22 79 65 73 22 2c 0a 09 09 20 20 20 73 \n",.......i,......"yes",......s
14e80 74 61 74 73 5b 69 5d 2e 75 74 69 6c 2a 31 30 30 2e 30 2c 0a 09 09 20 20 20 73 74 61 74 73 5b 69 tats[i].util*100.0,......stats[i
14ea0 5d 2e 6f 70 73 2c 0a 09 09 20 20 20 73 74 61 74 73 5b 69 5d 2e 73 65 63 73 2c 0a 09 09 20 20 20 ].ops,......stats[i].secs,......
14ec0 28 73 74 61 74 73 5b 69 5d 2e 6f 70 73 2f 31 65 33 29 2f 73 74 61 74 73 5b 69 5d 2e 73 65 63 73 (stats[i].ops/1e3)/stats[i].secs
14ee0 29 3b 0a 09 20 20 20 20 73 65 63 73 20 2b 3d 20 73 74 61 74 73 5b 69 5d 2e 73 65 63 73 3b 0a 09 );......secs.+=.stats[i].secs;..
14f00 20 20 20 20 6f 70 73 20 2b 3d 20 73 74 61 74 73 5b 69 5d 2e 6f 70 73 3b 0a 09 20 20 20 20 75 74 ....ops.+=.stats[i].ops;......ut
14f20 69 6c 20 2b 3d 20 73 74 61 74 73 5b 69 5d 2e 75 74 69 6c 3b 0a 09 7d 0a 09 65 6c 73 65 20 7b 0a il.+=.stats[i].util;..}..else.{.
14f40 09 20 20 20 20 70 72 69 6e 74 66 28 22 25 32 64 25 31 30 73 25 36 73 25 38 73 25 31 30 73 25 36 .....printf("%2d%10s%6s%8s%10s%6
14f60 73 5c 6e 22 2c 20 0a 09 09 20 20 20 69 2c 0a 09 09 20 20 20 22 6e 6f 22 2c 0a 09 09 20 20 20 22 s\n",.......i,......"no",......"
14f80 2d 22 2c 0a 09 09 20 20 20 22 2d 22 2c 0a 09 09 20 20 20 22 2d 22 2c 0a 09 09 20 20 20 22 2d 22 -",......"-",......"-",......"-"
14fa0 29 3b 0a 09 7d 0a 20 20 20 20 7d 0a 0a 20 20 20 20 2f 2a 20 50 72 69 6e 74 20 74 68 65 20 61 67 );..}.....}....../*.Print.the.ag
14fc0 67 72 65 67 61 74 65 20 72 65 73 75 6c 74 73 20 66 6f 72 20 74 68 65 20 73 65 74 20 6f 66 20 74 gregate.results.for.the.set.of.t
14fe0 72 61 63 65 73 20 2a 2f 0a 20 20 20 20 69 66 20 28 65 72 72 6f 72 73 20 3d 3d 20 30 29 20 7b 0a races.*/.....if.(errors.==.0).{.
15000 09 70 72 69 6e 74 66 28 22 25 31 32 73 25 35 2e 30 66 25 25 25 38 2e 30 66 25 31 30 2e 36 66 25 .printf("%12s%5.0f%%%8.0f%10.6f%
15020 36 2e 30 66 5c 6e 22 2c 20 0a 09 20 20 20 20 20 20 20 22 54 6f 74 61 6c 20 20 20 20 20 20 20 22 6.0f\n",.........."Total......."
15040 2c 0a 09 20 20 20 20 20 20 20 28 75 74 69 6c 2f 6e 29 2a 31 30 30 2e 30 2c 0a 09 20 20 20 20 20 ,.........(util/n)*100.0,.......
15060 20 20 6f 70 73 2c 20 0a 09 20 20 20 20 20 20 20 73 65 63 73 2c 0a 09 20 20 20 20 20 20 20 28 6f ..ops,..........secs,.........(o
15080 70 73 2f 31 65 33 29 2f 73 65 63 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 65 6c 73 65 20 7b 0a ps/1e3)/secs);.....}.....else.{.
150a0 09 70 72 69 6e 74 66 28 22 25 31 32 73 25 36 73 25 38 73 25 31 30 73 25 36 73 5c 6e 22 2c 20 0a .printf("%12s%6s%8s%10s%6s\n",..
150c0 09 20 20 20 20 20 20 20 22 54 6f 74 61 6c 20 20 20 20 20 20 20 22 2c 0a 09 20 20 20 20 20 20 20 ........"Total.......",.........
150e0 22 2d 22 2c 20 0a 09 20 20 20 20 20 20 20 22 2d 22 2c 20 0a 09 20 20 20 20 20 20 20 22 2d 22 2c "-",.........."-",.........."-",
15100 20 0a 09 20 20 20 20 20 20 20 22 2d 22 29 3b 0a 20 20 20 20 7d 0a 0a 7d 0a 0a 2f 2a 20 0a 20 2a .........."-");.....}..}../*...*
15120 20 61 70 70 5f 65 72 72 6f 72 20 2d 20 52 65 70 6f 72 74 20 61 6e 20 61 72 62 69 74 72 61 72 79 .app_error.-.Report.an.arbitrary
15140 20 61 70 70 6c 69 63 61 74 69 6f 6e 20 65 72 72 6f 72 0a 20 2a 2f 0a 76 6f 69 64 20 61 70 70 5f .application.error..*/.void.app_
15160 65 72 72 6f 72 28 63 68 61 72 20 2a 6d 73 67 29 20 0a 7b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 error(char.*msg)..{.....printf("
15180 25 73 5c 6e 22 2c 20 6d 73 67 29 3b 0a 20 20 20 20 65 78 69 74 28 31 29 3b 0a 7d 0a 0a 2f 2a 20 %s\n",.msg);.....exit(1);.}../*.
151a0 0a 20 2a 20 75 6e 69 78 5f 65 72 72 6f 72 20 2d 20 52 65 70 6f 72 74 20 61 20 55 6e 69 78 2d 73 ..*.unix_error.-.Report.a.Unix-s
151c0 74 79 6c 65 20 65 72 72 6f 72 0a 20 2a 2f 0a 76 6f 69 64 20 75 6e 69 78 5f 65 72 72 6f 72 28 63 tyle.error..*/.void.unix_error(c
151e0 68 61 72 20 2a 6d 73 67 29 20 0a 7b 0a 20 20 20 20 70 72 69 6e 74 66 28 22 25 73 3a 20 25 73 5c har.*msg)..{.....printf("%s:.%s\
15200 6e 22 2c 20 6d 73 67 2c 20 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29 3b 0a 20 20 20 20 65 n",.msg,.strerror(errno));.....e
15220 78 69 74 28 31 29 3b 0a 7d 0a 0a 2f 2a 0a 20 2a 20 6d 61 6c 6c 6f 63 5f 65 72 72 6f 72 20 2d 20 xit(1);.}../*..*.malloc_error.-.
15240 52 65 70 6f 72 74 20 61 6e 20 65 72 72 6f 72 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 65 20 Report.an.error.returned.by.the.
15260 6d 6d 5f 6d 61 6c 6c 6f 63 20 70 61 63 6b 61 67 65 0a 20 2a 2f 0a 76 6f 69 64 20 6d 61 6c 6c 6f mm_malloc.package..*/.void.mallo
15280 63 5f 65 72 72 6f 72 28 69 6e 74 20 74 72 61 63 65 6e 75 6d 2c 20 69 6e 74 20 6f 70 6e 75 6d 2c c_error(int.tracenum,.int.opnum,
152a0 20 63 68 61 72 20 2a 6d 73 67 29 0a 7b 0a 20 20 20 20 65 72 72 6f 72 73 2b 2b 3b 0a 20 20 20 20 .char.*msg).{.....errors++;.....
152c0 70 72 69 6e 74 66 28 22 45 52 52 4f 52 20 5b 74 72 61 63 65 20 25 64 2c 20 6c 69 6e 65 20 25 64 printf("ERROR.[trace.%d,.line.%d
152e0 5d 3a 20 25 73 5c 6e 22 2c 20 74 72 61 63 65 6e 75 6d 2c 20 4c 49 4e 45 4e 55 4d 28 6f 70 6e 75 ]:.%s\n",.tracenum,.LINENUM(opnu
15300 6d 29 2c 20 6d 73 67 29 3b 0a 7d 0a 0a 2f 2a 20 0a 20 2a 20 75 73 61 67 65 20 2d 20 45 78 70 6c m),.msg);.}../*...*.usage.-.Expl
15320 61 69 6e 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 0a 20 ain.the.command.line.arguments..
15340 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64 20 75 73 61 67 65 28 76 6f 69 64 29 20 0a 7b 0a 20 20 */.static.void.usage(void)..{...
15360 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 55 73 61 67 65 3a 20 6d 64 72 69 76 65 ..fprintf(stderr,."Usage:.mdrive
15380 72 20 5b 2d 68 76 56 61 6c 5d 20 5b 2d 66 20 3c 66 69 6c 65 3e 5d 20 5b 2d 74 20 3c 64 69 72 3e r.[-hvVal].[-f.<file>].[-t.<dir>
153a0 5d 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 4f 70 74 69 ]\n");.....fprintf(stderr,."Opti
153c0 6f 6e 73 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 5c 74 ons\n");.....fprintf(stderr,."\t
153e0 2d 61 20 20 20 20 20 20 20 20 20 44 6f 6e 27 74 20 63 68 65 63 6b 20 74 68 65 20 74 65 61 6d 20 -a.........Don't.check.the.team.
15400 73 74 72 75 63 74 75 72 65 2e 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 structure.\n");.....fprintf(stde
15420 72 72 2c 20 22 5c 74 2d 66 20 3c 66 69 6c 65 3e 20 20 55 73 65 20 3c 66 69 6c 65 3e 20 61 73 20 rr,."\t-f.<file>..Use.<file>.as.
15440 74 68 65 20 74 72 61 63 65 20 66 69 6c 65 2e 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 the.trace.file.\n");.....fprintf
15460 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 67 20 20 20 20 20 20 20 20 20 47 65 6e 65 72 61 74 65 20 (stderr,."\t-g.........Generate.
15480 73 75 6d 6d 61 72 79 20 69 6e 66 6f 20 66 6f 72 20 61 75 74 6f 67 72 61 64 65 72 2e 5c 6e 22 29 summary.info.for.autograder.\n")
154a0 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 68 20 20 20 20 20 ;.....fprintf(stderr,."\t-h.....
154c0 20 20 20 20 50 72 69 6e 74 20 74 68 69 73 20 6d 65 73 73 61 67 65 2e 5c 6e 22 29 3b 0a 20 20 20 ....Print.this.message.\n");....
154e0 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 6c 20 20 20 20 20 20 20 20 20 52 .fprintf(stderr,."\t-l.........R
15500 75 6e 20 6c 69 62 63 20 6d 61 6c 6c 6f 63 20 61 73 20 77 65 6c 6c 2e 5c 6e 22 29 3b 0a 20 20 20 un.libc.malloc.as.well.\n");....
15520 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 74 20 3c 64 69 72 3e 20 20 20 44 .fprintf(stderr,."\t-t.<dir>...D
15540 69 72 65 63 74 6f 72 79 20 74 6f 20 66 69 6e 64 20 64 65 66 61 75 6c 74 20 74 72 61 63 65 73 2e irectory.to.find.default.traces.
15560 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 76 20 \n");.....fprintf(stderr,."\t-v.
15580 20 20 20 20 20 20 20 20 50 72 69 6e 74 20 70 65 72 2d 74 72 61 63 65 20 70 65 72 66 6f 72 6d 61 ........Print.per-trace.performa
155a0 6e 63 65 20 62 72 65 61 6b 64 6f 77 6e 73 2e 5c 6e 22 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 nce.breakdowns.\n");.....fprintf
155c0 28 73 74 64 65 72 72 2c 20 22 5c 74 2d 56 20 20 20 20 20 20 20 20 20 50 72 69 6e 74 20 61 64 64 (stderr,."\t-V.........Print.add
155e0 69 74 69 6f 6e 61 6c 20 64 65 62 75 67 20 69 6e 66 6f 2e 5c 6e 22 29 3b 0a 7d 0a 00 00 00 00 00 itional.debug.info.\n");.}......
15600 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 73 68 6f 72 74 31 2d 62 61 6c 2e 72 65 70 malloclab-handout/short1-bal.rep
15620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15660 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
15680 30 30 30 30 31 33 31 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 36 30 30 31 00 20 30 00 00 00 0000131.12507032412.016001..0...
156a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
156c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
156e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15700 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
15720 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
15740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
157a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
157c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
157e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15800 32 30 30 30 30 0a 36 0a 31 32 0a 31 0a 61 20 30 20 32 30 34 30 0a 61 20 31 20 32 30 34 30 0a 66 20000.6.12.1.a.0.2040.a.1.2040.f
15820 20 31 0a 61 20 32 20 34 38 0a 61 20 33 20 34 30 37 32 0a 66 20 33 0a 61 20 34 20 34 30 37 32 0a .1.a.2.48.a.3.4072.f.3.a.4.4072.
15840 66 20 30 0a 66 20 32 0a 61 20 35 20 34 30 37 32 0a 66 20 34 0a 66 20 35 0a 00 00 00 00 00 00 00 f.0.f.2.a.5.4072.f.4.f.5........
15860 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
158a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
158c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
158e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
159e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a00 6d 61 6c 6c 6f 63 6c 61 62 2d 68 61 6e 64 6f 75 74 2f 73 68 6f 72 74 32 2d 62 61 6c 2e 72 65 70 malloclab-handout/short2-bal.rep
15a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a60 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 36 36 32 36 00 30 30 30 30 31 34 34 00 30 30 30 30 ....0000644.0006626.0000144.0000
15a80 30 30 30 30 31 33 31 00 31 32 35 30 37 30 33 32 34 31 32 00 30 31 36 30 30 32 00 20 30 00 00 00 0000131.12507032412.016002..0...
15aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b00 00 75 73 74 61 72 20 20 00 64 72 6f 68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .ustar...droh...................
15b20 00 00 00 00 00 00 00 00 00 75 73 65 72 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .........users..................
15b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15be0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c00 32 30 30 30 30 0a 36 0a 31 32 0a 31 0a 61 20 30 20 32 30 34 30 0a 61 20 31 20 34 30 31 30 0a 61 20000.6.12.1.a.0.2040.a.1.4010.a
15c20 20 32 20 34 38 0a 61 20 33 20 34 30 37 32 0a 61 20 34 20 34 30 37 32 0a 61 20 35 20 34 30 37 32 .2.48.a.3.4072.a.4.4072.a.5.4072
15c40 0a 66 20 30 0a 66 20 31 0a 66 20 32 0a 66 20 33 0a 66 20 34 0a 66 20 35 0a 00 00 00 00 00 00 00 .f.0.f.1.f.2.f.3.f.4.f.5........
15c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15d80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15da0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15dc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15de0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ea0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ec0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15ee0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
160a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
160c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
160e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
161e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16260 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16280 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
162a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
162c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
162e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
163e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16400 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16420 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16440 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16460 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16480 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
164a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
164c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
164e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
165a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
165c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
165e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16660 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
166a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
166c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
166e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
16780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
167e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................