home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume41 / parallel / part01 next >
SHell self-extracting ARchive  |  1993-12-19  |  16.2 KB

view JSON data     |     view as text     |     open on a Mac     |     open on a PC

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: part01

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 72 6c 61 72 | 6b 69 6e 40 6c 61 75 72 |om: rlar|kin@laur|
|00000030| 65 6c 2e 6f 63 73 2e 6d | 71 2e 65 64 75 2e 61 75 |el.ocs.m|q.edu.au|
|00000040| 20 28 52 69 63 6b 20 4c | 61 72 6b 69 6e 29 0a 53 | (Rick L|arkin).S|
|00000050| 75 62 6a 65 63 74 3a 20 | 76 34 31 69 30 34 39 3a |ubject: |v41i049:|
|00000060| 20 20 70 61 72 61 6c 6c | 65 6c 20 2d 20 50 61 72 | parall|el - Par|
|00000070| 61 6c 6c 65 6c 69 73 69 | 6e 67 20 72 6f 75 74 69 |allelisi|ng routi|
|00000080| 6e 65 73 2c 20 50 61 72 | 74 30 31 2f 30 31 0a 4d |nes, Par|t01/01.M|
|00000090| 65 73 73 61 67 65 2d 49 | 44 3a 20 3c 31 39 39 33 |essage-I|D: <1993|
|000000a0| 44 65 63 31 39 2e 32 32 | 30 31 31 38 2e 37 30 35 |Dec19.22|0118.705|
|000000b0| 30 40 73 70 61 72 6b 79 | 2e 73 74 65 72 6c 69 6e |0@sparky|.sterlin|
|000000c0| 67 2e 63 6f 6d 3e 0a 58 | 2d 4d 64 34 2d 53 69 67 |g.com>.X|-Md4-Sig|
|000000d0| 6e 61 74 75 72 65 3a 20 | 36 62 32 61 38 33 65 63 |nature: |6b2a83ec|
|000000e0| 61 37 33 63 36 34 32 63 | 64 36 62 64 61 62 32 31 |a73c642c|d6bdab21|
|000000f0| 38 62 30 61 36 37 39 32 | 0a 53 65 6e 64 65 72 3a |8b0a6792|.Sender:|
|00000100| 20 6b 65 6e 74 40 73 70 | 61 72 6b 79 2e 73 74 65 | kent@sp|arky.ste|
|00000110| 72 6c 69 6e 67 2e 63 6f | 6d 20 28 4b 65 6e 74 20 |rling.co|m (Kent |
|00000120| 4c 61 6e 64 66 69 65 6c | 64 29 0a 4f 72 67 61 6e |Landfiel|d).Organ|
|00000130| 69 7a 61 74 69 6f 6e 3a | 20 4d 61 63 71 75 61 72 |ization:| Macquar|
|00000140| 69 65 20 55 6e 69 76 65 | 72 73 69 74 79 2c 20 53 |ie Unive|rsity, S|
|00000150| 79 64 6e 65 79 20 41 75 | 73 74 72 61 6c 69 61 0a |ydney Au|stralia.|
|00000160| 44 61 74 65 3a 20 53 75 | 6e 2c 20 31 39 20 44 65 |Date: Su|n, 19 De|
|00000170| 63 20 31 39 39 33 20 32 | 32 3a 30 31 3a 31 38 20 |c 1993 2|2:01:18 |
|00000180| 47 4d 54 0a 41 70 70 72 | 6f 76 65 64 3a 20 6b 65 |GMT.Appr|oved: ke|
|00000190| 6e 74 40 73 70 61 72 6b | 79 2e 73 74 65 72 6c 69 |nt@spark|y.sterli|
|000001a0| 6e 67 2e 63 6f 6d 0a 0a | 53 75 62 6d 69 74 74 65 |ng.com..|Submitte|
|000001b0| 64 2d 62 79 3a 20 72 6c | 61 72 6b 69 6e 40 6c 61 |d-by: rl|arkin@la|
|000001c0| 75 72 65 6c 2e 6f 63 73 | 2e 6d 71 2e 65 64 75 2e |urel.ocs|.mq.edu.|
|000001d0| 61 75 20 28 52 69 63 6b | 20 4c 61 72 6b 69 6e 29 |au (Rick| Larkin)|
|000001e0| 0a 50 6f 73 74 69 6e 67 | 2d 6e 75 6d 62 65 72 3a |.Posting|-number:|
|000001f0| 20 56 6f 6c 75 6d 65 20 | 34 31 2c 20 49 73 73 75 | Volume |41, Issu|
|00000200| 65 20 34 39 0a 41 72 63 | 68 69 76 65 2d 6e 61 6d |e 49.Arc|hive-nam|
|00000210| 65 3a 20 70 61 72 61 6c | 6c 65 6c 2f 70 61 72 74 |e: paral|lel/part|
|00000220| 30 31 0a 45 6e 76 69 72 | 6f 6e 6d 65 6e 74 3a 20 |01.Envir|onment: |
|00000230| 53 75 6e 4f 53 2c 20 4d | 53 44 4f 53 0a 0a 42 65 |SunOS, M|SDOS..Be|
|00000240| 6c 6f 77 20 61 72 65 20 | 70 61 72 61 6c 6c 65 6c |low are |parallel|
|00000250| 2e 63 2c 20 70 61 72 61 | 6c 6c 65 6c 2e 68 20 61 |.c, para|llel.h a|
|00000260| 6e 64 20 70 74 70 2e 63 | 2e 20 20 54 68 65 79 20 |nd ptp.c|. They |
|00000270| 61 6c 6c 6f 77 20 65 61 | 73 79 20 70 61 72 61 6c |allow ea|sy paral|
|00000280| 6c 65 6c 69 73 61 74 69 | 6f 6e 20 0a 6f 66 20 6c |lelisati|on .of l|
|00000290| 6f 6f 70 73 20 6f 6e 20 | 6d 75 6c 74 69 70 72 6f |oops on |multipro|
|000002a0| 63 65 73 73 6f 72 20 68 | 61 72 64 77 61 72 65 2e |cessor h|ardware.|
|000002b0| 20 20 49 6e 63 72 65 61 | 73 65 73 20 6c 6f 6f 70 | Increa|ses loop|
|000002c0| 20 73 70 65 65 64 20 62 | 79 20 75 70 20 74 6f 20 | speed b|y up to |
|000002d0| 33 20 74 69 6d 65 73 20 | 0a 6f 6e 20 61 20 34 20 |3 times |.on a 4 |
|000002e0| 70 72 6f 63 65 73 73 6f | 72 20 53 55 4e 20 67 61 |processo|r SUN ga|
|000002f0| 6c 61 78 79 2e 0a 0a 57 | 6f 72 6b 73 20 6f 6e 20 |laxy...W|orks on |
|00000300| 53 55 4e 4f 53 20 62 61 | 73 65 64 20 53 55 4e 73 |SUNOS ba|sed SUNs|
|00000310| 20 61 6e 64 20 4d 53 44 | 4f 53 20 50 43 73 2c 20 | and MSD|OS PCs, |
|00000320| 64 6f 6e 27 74 20 6b 6e | 6f 77 20 61 62 6f 75 74 |don't kn|ow about|
|00000330| 20 61 6e 79 20 6f 74 68 | 65 72 73 2e 0a 2d 2d 2d | any oth|ers..---|
|00000340| 2d 0a 23 21 20 2f 62 69 | 6e 2f 73 68 0a 23 20 54 |-.#! /bi|n/sh.# T|
|00000350| 68 69 73 20 69 73 20 61 | 20 73 68 65 6c 6c 20 61 |his is a| shell a|
|00000360| 72 63 68 69 76 65 2e 20 | 20 52 65 6d 6f 76 65 20 |rchive. | Remove |
|00000370| 61 6e 79 74 68 69 6e 67 | 20 62 65 66 6f 72 65 20 |anything| before |
|00000380| 74 68 69 73 20 6c 69 6e | 65 2c 20 74 68 65 6e 20 |this lin|e, then |
|00000390| 66 65 65 64 20 69 74 0a | 23 20 69 6e 74 6f 20 61 |feed it.|# into a|
|000003a0| 20 73 68 65 6c 6c 20 76 | 69 61 20 22 73 68 20 66 | shell v|ia "sh f|
|000003b0| 69 6c 65 22 20 6f 72 20 | 73 69 6d 69 6c 61 72 2e |ile" or |similar.|
|000003c0| 20 20 54 6f 20 6f 76 65 | 72 77 72 69 74 65 20 65 | To ove|rwrite e|
|000003d0| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 73 2c 0a 23 |xisting |files,.#|
|000003e0| 20 74 79 70 65 20 22 73 | 68 20 66 69 6c 65 20 2d | type "s|h file -|
|000003f0| 63 22 2e 0a 23 20 43 6f | 6e 74 65 6e 74 73 3a 20 |c"..# Co|ntents: |
|00000400| 20 4d 61 6b 65 66 69 6c | 65 20 70 61 72 61 6c 6c | Makefil|e parall|
|00000410| 65 6c 2e 63 20 70 61 72 | 61 6c 6c 65 6c 2e 68 20 |el.c par|allel.h |
|00000420| 70 74 70 2e 63 0a 23 20 | 57 72 61 70 70 65 64 20 |ptp.c.# |Wrapped |
|00000430| 62 79 20 6b 65 6e 74 40 | 73 70 61 72 6b 79 20 6f |by kent@|sparky o|
|00000440| 6e 20 53 75 6e 20 44 65 | 63 20 31 39 20 31 35 3a |n Sun De|c 19 15:|
|00000450| 35 35 3a 35 37 20 31 39 | 39 33 0a 50 41 54 48 3d |55:57 19|93.PATH=|
|00000460| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|00000470| 73 72 2f 75 63 62 3a 2f | 75 73 72 2f 6c 6f 63 61 |sr/ucb:/|usr/loca|
|00000480| 6c 2f 62 69 6e 3a 2f 75 | 73 72 2f 6c 62 69 6e 3a |l/bin:/u|sr/lbin:|
|00000490| 24 50 41 54 48 20 3b 20 | 65 78 70 6f 72 74 20 50 |$PATH ; |export P|
|000004a0| 41 54 48 0a 65 63 68 6f | 20 49 66 20 74 68 69 73 |ATH.echo| If this|
|000004b0| 20 61 72 63 68 69 76 65 | 20 69 73 20 63 6f 6d 70 | archive| is comp|
|000004c0| 6c 65 74 65 2c 20 79 6f | 75 20 77 69 6c 6c 20 73 |lete, yo|u will s|
|000004d0| 65 65 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |ee the f|ollowing|
|000004e0| 20 6d 65 73 73 61 67 65 | 3a 0a 65 63 68 6f 20 27 | message|:.echo '|
|000004f0| 20 20 20 20 20 20 20 20 | 20 20 22 73 68 61 72 3a | | "shar:|
|00000500| 20 45 6e 64 20 6f 66 20 | 61 72 63 68 69 76 65 20 | End of |archive |
|00000510| 31 20 28 6f 66 20 31 29 | 2e 22 27 0a 69 66 20 74 |1 (of 1)|."'.if t|
|00000520| 65 73 74 20 2d 66 20 27 | 4d 61 6b 65 66 69 6c 65 |est -f '|Makefile|
|00000530| 27 20 2d 61 20 22 24 7b | 31 7d 22 20 21 3d 20 22 |' -a "${|1}" != "|
|00000540| 2d 63 22 20 3b 20 74 68 | 65 6e 20 0a 20 20 65 63 |-c" ; th|en . ec|
|00000550| 68 6f 20 73 68 61 72 3a | 20 57 69 6c 6c 20 6e 6f |ho shar:| Will no|
|00000560| 74 20 63 6c 6f 62 62 65 | 72 20 65 78 69 73 74 69 |t clobbe|r existi|
|00000570| 6e 67 20 66 69 6c 65 20 | 5c 22 27 4d 61 6b 65 66 |ng file |\"'Makef|
|00000580| 69 6c 65 27 5c 22 0a 65 | 6c 73 65 0a 20 20 65 63 |ile'\".e|lse. ec|
|00000590| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|000005a0| 69 6e 67 20 5c 22 27 4d | 61 6b 65 66 69 6c 65 27 |ing \"'M|akefile'|
|000005b0| 5c 22 20 5c 28 31 36 34 | 20 63 68 61 72 61 63 74 |\" \(164| charact|
|000005c0| 65 72 73 5c 29 0a 20 20 | 73 65 64 20 22 73 2f 5e |ers\). |sed "s/^|
|000005d0| 58 2f 2f 22 20 3e 27 4d | 61 6b 65 66 69 6c 65 27 |X//" >'M|akefile'|
|000005e0| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|000005f0| 0a 58 23 0a 58 23 20 20 | 4d 61 6b 65 66 69 6c 65 |.X#.X# |Makefile|
|00000600| 20 66 69 6c 65 20 66 6f | 72 20 70 61 72 61 6c 6c | file fo|r parall|
|00000610| 65 6c 0a 58 23 0a 58 23 | 20 20 57 6f 72 6b 73 20 |el.X#.X#| Works |
|00000620| 6f 6e 20 53 55 4e 4f 53 | 20 62 61 73 65 64 20 53 |on SUNOS| based S|
|00000630| 55 4e 73 20 61 6e 64 20 | 4d 53 44 4f 53 20 50 43 |UNs and |MSDOS PC|
|00000640| 73 2c 20 64 6f 6e 27 74 | 20 6b 6e 6f 77 20 61 62 |s, don't| know ab|
|00000650| 6f 75 74 20 61 6e 79 20 | 6f 74 68 65 72 73 2e 0a |out any |others..|
|00000660| 58 23 0a 58 0a 58 61 6c | 6c 3a 20 70 74 70 0a 58 |X#.X.Xal|l: ptp.X|
|00000670| 0a 58 70 74 70 3a 0a 58 | 09 67 63 63 20 2d 6f 20 |.Xptp:.X|.gcc -o |
|00000680| 70 74 70 20 70 74 70 2e | 63 20 70 61 72 61 6c 6c |ptp ptp.|c parall|
|00000690| 65 6c 2e 63 20 2d 44 53 | 55 4e 20 2d 6c 6d 0a 45 |el.c -DS|UN -lm.E|
|000006a0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 0a 20 20 69 66 20 |ND_OF_FI|LE. if |
|000006b0| 74 65 73 74 20 31 36 34 | 20 2d 6e 65 20 60 77 63 |test 164| -ne `wc|
|000006c0| 20 2d 63 20 3c 27 4d 61 | 6b 65 66 69 6c 65 27 60 | -c <'Ma|kefile'`|
|000006d0| 3b 20 74 68 65 6e 0a 20 | 20 20 20 65 63 68 6f 20 |; then. | echo |
|000006e0| 73 68 61 72 3a 20 5c 22 | 27 4d 61 6b 65 66 69 6c |shar: \"|'Makefil|
|000006f0| 65 27 5c 22 20 75 6e 70 | 61 63 6b 65 64 20 77 69 |e'\" unp|acked wi|
|00000700| 74 68 20 77 72 6f 6e 67 | 20 73 69 7a 65 21 0a 20 |th wrong| size!. |
|00000710| 20 66 69 0a 20 20 23 20 | 65 6e 64 20 6f 66 20 27 | fi. # |end of '|
|00000720| 4d 61 6b 65 66 69 6c 65 | 27 0a 66 69 0a 69 66 20 |Makefile|'.fi.if |
|00000730| 74 65 73 74 20 2d 66 20 | 27 70 61 72 61 6c 6c 65 |test -f |'paralle|
|00000740| 6c 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |l.c' -a |"${1}" !|
|00000750| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00000760| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00000770| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00000780| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 70 61 |sting fi|le \"'pa|
|00000790| 72 61 6c 6c 65 6c 2e 63 | 27 5c 22 0a 65 6c 73 65 |rallel.c|'\".else|
|000007a0| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |. echo |shar: Ex|
|000007b0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 70 61 72 61 |tracting| \"'para|
|000007c0| 6c 6c 65 6c 2e 63 27 5c | 22 20 5c 28 36 31 31 38 |llel.c'\|" \(6118|
|000007d0| 20 63 68 61 72 61 63 74 | 65 72 73 5c 29 0a 20 20 | charact|ers\). |
|000007e0| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 70 |sed "s/^|X//" >'p|
|000007f0| 61 72 61 6c 6c 65 6c 2e | 63 27 20 3c 3c 27 45 4e |arallel.|c' <<'EN|
|00000800| 44 5f 4f 46 5f 46 49 4c | 45 27 0a 58 2f 2a 2a 2a |D_OF_FIL|E'.X/***|
|00000810| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000820| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000830| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000840| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000850| 2a 2a 2a 2a 2a 2a 2a 2a | 0a 58 20 54 68 65 20 66 |********|.X The f|
|00000860| 6f 6c 6c 6f 77 69 6e 67 | 20 69 73 2e 2e 2e 0a 58 |ollowing| is....X|
|00000870| 20 20 20 20 20 20 43 6f | 70 79 72 69 67 68 74 20 | Co|pyright |
|00000880| 28 43 29 20 31 39 39 33 | 20 62 79 20 4d 61 63 71 |(C) 1993| by Macq|
|00000890| 75 61 72 69 65 20 55 6e | 69 76 65 72 73 69 74 79 |uarie Un|iversity|
|000008a0| 0a 58 20 20 20 20 20 20 | 52 65 6c 65 61 73 65 64 |.X |Released|
|000008b0| 20 77 69 74 68 6f 75 74 | 20 41 4e 59 20 77 61 72 | without| ANY war|
|000008c0| 72 61 6e 74 79 20 74 6f | 20 74 68 65 20 70 75 62 |ranty to| the pub|
|000008d0| 6c 69 63 20 64 6f 6d 61 | 69 6e 2e 0a 58 20 20 20 |lic doma|in..X |
|000008e0| 20 20 20 57 72 69 74 74 | 65 6e 20 62 79 20 52 69 | Writt|en by Ri|
|000008f0| 63 68 61 72 64 20 4c 61 | 72 6b 69 6e 2e 20 72 6c |chard La|rkin. rl|
|00000900| 61 72 6b 69 6e 40 7a 65 | 6e 2e 65 66 73 2e 6d 71 |arkin@ze|n.efs.mq|
|00000910| 2e 65 64 75 2e 61 75 0a | 58 0a 58 20 20 20 20 20 |.edu.au.|X.X |
|00000920| 20 54 68 61 6e 6b 73 20 | 67 6f 20 74 6f 20 4d 61 | Thanks |go to Ma|
|00000930| 72 6b 20 48 61 68 6e 20 | 66 6f 72 20 68 65 6c 70 |rk Hahn |for help|
|00000940| 20 77 69 74 68 20 3c 73 | 79 73 2f 6d 6d 61 6e 2e | with <s|ys/mman.|
|00000950| 68 3e 20 66 75 6e 63 74 | 69 6f 6e 73 2e 0a 58 0a |h> funct|ions..X.|
|00000960| 58 20 70 61 72 61 6c 6c | 65 6c 2e 63 20 2d 20 43 |X parall|el.c - C|
|00000970| 6f 64 65 20 74 6f 20 61 | 63 68 69 65 76 65 20 70 |ode to a|chieve p|
|00000980| 61 72 61 6c 6c 65 6c 69 | 73 6d 20 6f 6e 20 6d 75 |aralleli|sm on mu|
|00000990| 6c 74 69 70 72 6f 63 65 | 73 73 6f 72 20 61 72 63 |ltiproce|ssor arc|
|000009a0| 68 69 74 65 63 74 75 72 | 65 73 2e 0a 58 20 2a 2a |hitectur|es..X **|
|000009b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000009c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000009d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000009e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000009f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2f 0a 58 0a 58 23 69 |********|*/.X.X#i|
|00000a00| 6e 63 6c 75 64 65 20 22 | 70 61 72 61 6c 6c 65 6c |nclude "|parallel|
|00000a10| 2e 68 22 0a 58 0a 58 23 | 69 66 6e 64 65 66 20 4d |.h".X.X#|ifndef M|
|00000a20| 53 44 4f 53 0a 58 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |SDOS.X.X|/*******|
|00000a30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000a70| 2a 2a 2a 2a 0a 58 20 49 | 6e 74 65 72 6e 61 6c 6c |****.X I|nternall|
|00000a80| 79 20 75 73 65 64 20 73 | 74 72 75 63 74 75 72 65 |y used s|tructure|
|00000a90| 73 2e 0a 58 20 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |s..X ***|********|
|00000aa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ab0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ac0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ad0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ae0| 2f 0a 58 74 79 70 65 64 | 65 66 20 73 74 72 75 63 |/.Xtyped|ef struc|
|00000af0| 74 0a 58 7b 0a 58 20 20 | 76 6f 69 64 20 2a 50 3b |t.X{.X |void *P;|
|00000b00| 0a 58 20 20 6c 6f 6e 67 | 20 69 6e 74 20 53 69 7a |.X long| int Siz|
|00000b10| 65 3b 0a 58 7d 20 50 4d | 41 49 6e 66 6f 3b 0a 58 |e;.X} PM|AInfo;.X|
|00000b20| 0a 58 0a 58 2f 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X.X/***|********|
|00000b30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000b70| 0a 58 20 4e 75 6d 62 65 | 72 50 72 6f 63 20 6e 75 |.X Numbe|rProc nu|
|00000b80| 6d 62 65 72 20 6f 66 20 | 70 72 6f 63 65 73 73 6f |mber of |processo|
|00000b90| 72 73 20 61 76 61 69 6c | 61 62 6c 65 2e 0a 58 20 |rs avail|able..X |
|00000ba0| 4e 75 6d 62 65 72 50 72 | 6f 63 55 73 65 64 20 6e |NumberPr|ocUsed n|
|00000bb0| 75 6d 62 65 72 20 6f 66 | 20 70 72 6f 63 65 73 73 |umber of| process|
|00000bc0| 6f 72 73 20 69 6e 20 75 | 73 65 20 61 66 74 65 72 |ors in u|se after|
|00000bd0| 20 6c 61 73 74 20 73 70 | 6c 69 74 2e 0a 58 20 50 | last sp|lit..X P|
|00000be0| 61 72 65 6e 74 50 72 6f | 63 65 73 73 20 74 72 75 |arentPro|cess tru|
|00000bf0| 65 20 69 6e 20 74 68 65 | 20 70 61 72 65 6e 74 20 |e in the| parent |
|00000c00| 70 72 6f 63 65 73 73 2e | 0a 58 20 2a 2a 2a 2a 2a |process.|.X *****|
|00000c10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000c50| 2a 2a 2a 2a 2a 2a 2f 0a | 58 73 74 61 74 69 63 20 |******/.|Xstatic |
|00000c60| 6c 6f 6e 67 20 69 6e 74 | 20 4e 75 6d 62 65 72 50 |long int| NumberP|
|00000c70| 72 6f 63 20 3d 20 31 3b | 0a 58 73 74 61 74 69 63 |roc = 1;|.Xstatic|
|00000c80| 20 6c 6f 6e 67 20 69 6e | 74 20 4e 75 6d 62 65 72 | long in|t Number|
|00000c90| 50 72 6f 63 55 73 65 64 | 20 3d 20 31 3b 0a 58 73 |ProcUsed| = 1;.Xs|
|00000ca0| 74 61 74 69 63 20 69 6e | 74 20 50 61 72 65 6e 74 |tatic in|t Parent|
|00000cb0| 50 72 6f 63 65 73 73 20 | 3d 20 54 52 55 45 3b 0a |Process |= TRUE;.|
|00000cc0| 58 0a 58 0a 58 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X.X/**|********|
|00000cd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ce0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000cf0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d10| 2a 0a 58 20 50 61 72 61 | 6c 6c 65 6c 20 6d 65 6d |*.X Para|llel mem|
|00000d20| 6f 72 79 20 64 65 74 61 | 69 6c 73 2e 0a 58 20 2a |ory deta|ils..X *|
|00000d30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000d70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2f 0a 58 73 74 61 |********|**/.Xsta|
|00000d80| 74 69 63 20 50 4d 41 49 | 6e 66 6f 20 2a 50 4d 41 |tic PMAI|nfo *PMA|
|00000d90| 20 3d 20 4e 55 4c 4c 3b | 0a 58 73 74 61 74 69 63 | = NULL;|.Xstatic|
|00000da0| 20 6c 6f 6e 67 20 69 6e | 74 20 50 4d 41 43 6e 74 | long in|t PMACnt|
|00000db0| 20 3d 20 30 3b 0a 58 0a | 58 0a 58 2f 2a 2a 2a 2a | = 0;.X.|X.X/****|
|00000dc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000dd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000de0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000df0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000e00| 2a 2a 2a 2a 2a 2a 2a 0a | 58 20 50 61 72 61 6c 6c |*******.|X Parall|
|00000e10| 65 6c 50 72 6f 63 65 73 | 73 6f 72 73 20 74 65 6c |elProces|sors tel|
|00000e20| 6c 20 70 61 72 61 6c 6c | 65 6c 20 72 6f 75 74 69 |l parall|el routi|
|00000e30| 6e 65 73 20 68 6f 77 20 | 6d 61 6e 79 20 70 72 6f |nes how |many pro|
|00000e40| 63 65 73 73 6f 72 73 20 | 74 6f 20 61 73 73 75 6d |cessors |to assum|
|00000e50| 65 2e 0a 58 20 50 72 65 | 20 3a 20 6e 6f 6e 65 2e |e..X Pre| : none.|
|00000e60| 0a 58 20 50 6f 73 74 3a | 20 49 6e 74 65 72 6e 61 |.X Post:| Interna|
|00000e70| 6c 20 6b 6e 6f 77 6c 65 | 64 67 65 20 6f 66 20 6e |l knowle|dge of n|
|00000e80| 75 6d 62 65 72 20 6f 66 | 20 70 72 6f 63 65 73 73 |umber of| process|
|00000e90| 6f 72 73 20 73 65 74 20 | 74 6f 20 6d 61 78 69 6d |ors set |to maxim|
|00000ea0| 75 6d 20 6f 66 20 4e 20 | 61 6e 64 20 31 2e 0a 58 |um of N |and 1..X|
|00000eb0| 20 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *******|********|
|00000ec0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ed0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ee0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000ef0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2f 0a 58 76 |********|****/.Xv|
|00000f00| 6f 69 64 20 50 61 72 61 | 6c 6c 65 6c 50 72 6f 63 |oid Para|llelProc|
|00000f10| 65 73 73 6f 72 73 28 6c | 6f 6e 67 20 69 6e 74 20 |essors(l|ong int |
|00000f20| 4e 29 0a 58 7b 0a 58 20 | 20 4e 75 6d 62 65 72 50 |N).X{.X | NumberP|
|00000f30| 72 6f 63 20 3d 20 4e 20 | 3c 20 31 20 3f 20 31 20 |roc = N |< 1 ? 1 |
|00000f40| 3a 20 4e 3b 0a 58 7d 0a | 58 0a 58 0a 58 2f 2a 2a |: N;.X}.|X.X.X/**|
|00000f50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000f60| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000f70| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000f80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000f90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 0a 58 20 50 61 72 61 |********|*.X Para|
|00000fa0| 6c 6c 65 6c 53 70 6c 69 | 74 20 73 70 6c 69 74 20 |llelSpli|t split |
|00000fb0| 69 6e 74 6f 20 75 73 65 | 66 75 6c 20 6e 75 6d 62 |into use|ful numb|
|00000fc0| 65 72 20 6f 66 20 70 72 | 6f 63 65 73 73 65 73 20 |er of pr|ocesses |
|00000fd0| 61 6e 64 20 72 65 74 75 | 72 6e 0a 58 20 69 6e 74 |and retu|rn.X int|
|00000fe0| 65 72 76 61 6c 20 6f 66 | 20 72 65 6c 65 76 61 6e |erval of| relevan|
|00000ff0| 63 65 20 74 6f 20 65 61 | 63 68 20 70 72 6f 63 65 |ce to ea|ch proce|
|00001000| 73 73 2e 0a 58 20 43 61 | 6c 6c 73 20 74 6f 20 50 |ss..X Ca|lls to P|
|00001010| 61 72 61 6c 6c 65 6c 53 | 70 6c 69 74 20 63 61 6e |arallelS|plit can|
|00001020| 6e 6f 74 20 62 65 20 6e | 65 73 74 65 64 2e 0a 58 |not be n|ested..X|
|00001030| 20 50 72 65 20 3a 20 4d | 69 6e 2c 20 4d 61 78 20 | Pre : M|in, Max |
|00001040| 6e 6f 74 20 4e 55 4c 4c | 2e 20 4e 75 6d 62 65 72 |not NULL|. Number|
|00001050| 50 72 6f 63 55 73 65 64 | 20 3d 3d 20 31 2e 0a 58 |ProcUsed| == 1..X|
|00001060| 20 50 6f 73 74 3a 20 4e | 75 6d 62 65 72 50 72 6f | Post: N|umberPro|
|00001070| 63 55 73 65 64 20 69 73 | 20 6e 75 6d 62 65 72 20 |cUsed is| number |
|00001080| 6f 66 20 61 63 74 69 76 | 65 20 70 72 6f 63 65 73 |of activ|e proces|
|00001090| 73 65 73 2e 0a 58 20 20 | 20 20 20 20 20 5b 4d 69 |ses..X | [Mi|
|000010a0| 6e 2e 2e 4d 61 78 29 20 | 77 69 6c 6c 20 62 65 20 |n..Max) |will be |
|000010b0| 69 6e 74 65 72 76 61 6c | 20 6f 66 20 52 61 6e 67 |interval| of Rang|
|000010c0| 65 20 74 6f 20 75 73 65 | 20 66 6f 72 20 65 61 63 |e to use| for eac|
|000010d0| 68 20 70 72 6f 63 65 73 | 73 2e 0a 58 20 2a 2a 2a |h proces|s..X ***|
|000010e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000010f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001100| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001110| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001120| 2a 2a 2a 2a 2a 2a 2a 2a | 2f 0a 58 76 6f 69 64 20 |********|/.Xvoid |
|00001130| 50 61 72 61 6c 6c 65 6c | 53 70 6c 69 74 28 6c 6f |Parallel|Split(lo|
|00001140| 6e 67 20 69 6e 74 20 52 | 61 6e 67 65 2c 20 6c 6f |ng int R|ange, lo|
|00001150| 6e 67 20 69 6e 74 20 2a | 4d 69 6e 2c 20 6c 6f 6e |ng int *|Min, lon|
|00001160| 67 20 69 6e 74 20 2a 4d | 61 78 29 0a 58 7b 0a 58 |g int *M|ax).X{.X|
|00001170| 20 20 4e 75 6d 62 65 72 | 50 72 6f 63 55 73 65 64 | Number|ProcUsed|
|00001180| 20 3d 20 52 61 6e 67 65 | 20 3c 20 4e 75 6d 62 65 | = Range| < Numbe|
|00001190| 72 50 72 6f 63 20 3f 20 | 52 61 6e 67 65 20 3a 20 |rProc ? |Range : |
|000011a0| 4e 75 6d 62 65 72 50 72 | 6f 63 3b 0a 58 0a 58 20 |NumberPr|oc;.X.X |
|000011b0| 20 2f 2a 20 44 6f 20 77 | 65 20 6e 65 65 64 20 74 | /* Do w|e need t|
|000011c0| 6f 20 73 70 6c 69 74 3f | 20 20 20 20 20 20 20 20 |o split?| |
|000011d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000011e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000011f0| 20 20 20 20 20 20 20 20 | 20 20 2a 2f 0a 58 20 20 | | */.X |
|00001200| 69 66 20 28 4e 75 6d 62 | 65 72 50 72 6f 63 55 73 |if (Numb|erProcUs|
|00001210| 65 64 20 3e 20 31 29 0a | 58 20 20 7b 0a 58 20 20 |ed > 1).|X {.X |
|00001220| 20 20 6c 6f 6e 67 20 69 | 6e 74 20 69 3b 0a 58 0a | long i|nt i;.X.|
|00001230| 58 20 20 20 20 2f 2a 20 | 53 70 6c 69 74 20 69 6e |X /* |Split in|
|00001240| 74 6f 20 73 65 70 65 72 | 61 74 65 20 70 72 6f 63 |to seper|ate proc|
|00001250| 65 73 73 65 73 2e 20 20 | 20 20 20 20 20 20 20 20 |esses. | |
|00001260| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001270| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2f 0a 58 | | */.X|
|00001280| 20 20 20 20 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 | for |(i = 0; |
|00001290| 69 20 3c 20 4e 75 6d 62 | 65 72 50 72 6f 63 55 73 |i < Numb|erProcUs|
|000012a0| 65 64 20 2d 20 31 3b 20 | 69 2b 2b 29 0a 58 20 20 |ed - 1; |i++).X |
|000012b0| 20 20 20 20 69 66 20 28 | 66 6f 72 6b 28 29 20 3d | if (|fork() =|
|000012c0| 3d 20 30 29 20 62 72 65 | 61 6b 3b 20 20 20 20 20 |= 0) bre|ak; |
|000012d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000012e0| 2f 2a 45 52 52 4f 52 20 | 66 6f 72 6b 28 29 20 63 |/*ERROR |fork() c|
|000012f0| 68 65 63 6b 73 2e 2e 2e | 20 2a 2f 0a 58 0a 58 20 |hecks...| */.X.X |
|00001300| 20 20 20 2f 2a 20 50 61 | 72 65 6e 74 20 69 73 20 | /* Pa|rent is |
|00001310| 6f 6e 6c 79 20 70 72 6f | 63 65 73 73 20 74 68 61 |only pro|cess tha|
|00001320| 74 20 6d 61 6b 65 73 20 | 69 74 20 74 68 72 6f 75 |t makes |it throu|
|00001330| 67 68 20 65 6e 74 69 72 | 65 20 6c 6f 6f 70 2e 20 |gh entir|e loop. |
|00001340| 20 20 20 20 20 20 20 20 | 20 20 2a 2f 0a 58 20 20 | | */.X |
|00001350| 20 20 50 61 72 65 6e 74 | 50 72 6f 63 65 73 73 20 | Parent|Process |
|00001360| 3d 20 28 69 20 3d 3d 20 | 4e 75 6d 62 65 72 50 72 |= (i == |NumberPr|
|00001370| 6f 63 55 73 65 64 2d 31 | 29 3b 0a 58 0a 58 20 20 |ocUsed-1|);.X.X |
|00001380| 20 20 2f 2a 20 53 65 6c | 65 63 74 20 74 68 65 20 | /* Sel|ect the |
|00001390| 72 61 6e 67 65 20 66 6f | 72 20 74 68 69 73 20 70 |range fo|r this p|
|000013a0| 72 6f 63 65 73 73 2e 20 | 20 20 20 20 20 20 20 20 |rocess. | |
|000013b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000013c0| 20 20 20 20 20 20 20 20 | 20 2a 2f 0a 58 20 20 20 | | */.X |
|000013d0| 20 2a 4d 69 6e 20 3d 20 | 69 20 2a 20 28 52 61 6e | *Min = |i * (Ran|
|000013e0| 67 65 20 2f 20 4e 75 6d | 62 65 72 50 72 6f 63 55 |ge / Num|berProcU|
|000013f0| 73 65 64 29 3b 0a 58 20 | 20 20 20 2a 4d 61 78 20 |sed);.X | *Max |
|00001400| 3d 20 50 61 72 65 6e 74 | 50 72 6f 63 65 73 73 20 |= Parent|Process |
|00001410| 3f 20 52 61 6e 67 65 20 | 3a 20 28 69 2b 31 29 20 |? Range |: (i+1) |
|00001420| 2a 20 28 52 61 6e 67 65 | 20 2f 20 4e 75 6d 62 65 |* (Range| / Numbe|
|00001430| 72 50 72 6f 63 55 73 65 | 64 29 3b 0a 58 20 20 7d |rProcUse|d);.X }|
|00001440| 0a 58 20 20 65 6c 73 65 | 0a 58 20 20 7b 0a 58 20 |.X else|.X {.X |
|00001450| 20 20 20 2f 2a 20 54 72 | 69 76 69 61 6c 20 72 61 | /* Tr|ivial ra|
|00001460| 6e 67 65 20 6f 72 20 6e | 75 6d 62 65 72 20 6f 66 |nge or n|umber of|
|00001470| 20 70 72 6f 63 65 73 73 | 6f 72 73 2e 20 20 20 20 | process|ors. |
|00001480| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001490| 20 20 20 20 20 20 20 20 | 20 20 2a 2f 0a 58 20 20 | | */.X |
|000014a0| 20 20 2a 4d 69 6e 20 3d | 20 30 3b 20 2a 4d 61 78 | *Min =| 0; *Max|
|000014b0| 20 3d 20 52 61 6e 67 65 | 3b 0a 58 20 20 7d 0a 58 | = Range|;.X }.X|
|000014c0| 7d 0a 58 0a 58 0a 58 2f | 2a 2a 2a 2a 2a 2a 2a 2a |}.X.X.X/|********|
|000014d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000014e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000014f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001500| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001510| 2a 2a 2a 0a 58 20 50 61 | 72 61 6c 6c 65 6c 52 65 |***.X Pa|rallelRe|
|00001520| 67 72 6f 75 70 20 63 68 | 69 6c 64 72 65 6e 20 61 |group ch|ildren a|
|00001530| 6c 6c 20 72 65 74 75 72 | 6e 20 74 6f 20 74 68 65 |ll retur|n to the|
|00001540| 69 72 20 70 61 72 65 6e | 74 20 77 68 6f 20 77 61 |ir paren|t who wa|
|00001550| 69 74 73 20 66 6f 72 20 | 74 68 65 6d 2e 0a 58 20 |its for |them..X |
|00001560| 50 72 65 20 3a 20 4e 75 | 6d 62 65 72 50 72 6f 63 |Pre : Nu|mberProc|
|00001570| 55 73 65 64 20 69 73 20 | 6e 75 6d 62 65 72 20 6f |Used is |number o|
|00001580| 66 20 61 63 74 69 76 65 | 20 70 72 6f 63 65 73 73 |f active| process|
|00001590| 65 73 2e 0a 58 20 50 6f | 73 74 3a 20 4f 6e 65 20 |es..X Po|st: One |
|000015a0| 70 61 72 65 6e 74 20 70 | 72 6f 63 65 73 73 2e 20 |parent p|rocess. |
|000015b0| 4e 75 6d 62 65 72 50 72 | 6f 63 55 73 65 64 20 3d |NumberPr|ocUsed =|
|000015c0| 20 31 3b 0a 58 20 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | 1;.X **|********|
|000015d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000015f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001600| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001610| 2a 2f 0a 58 76 6f 69 64 | 20 50 61 72 61 6c 6c 65 |*/.Xvoid| Paralle|
|00001620| 6c 52 65 67 72 6f 75 70 | 28 76 6f 69 64 29 0a 58 |lRegroup|(void).X|
|00001630| 7b 0a 58 20 20 2f 2a 20 | 4e 6f 6e 74 72 69 76 69 |{.X /* |Nontrivi|
|00001640| 61 6c 20 72 65 67 72 6f | 75 70 3f 20 20 20 20 20 |al regro|up? |
|00001650| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001660| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001670| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2a 2f | | */|
|00001680| 0a 58 20 20 69 66 20 28 | 4e 75 6d 62 65 72 50 72 |.X if (|NumberPr|
|00001690| 6f 63 55 73 65 64 20 3e | 20 31 29 0a 58 20 20 7b |ocUsed >| 1).X {|
|000016a0| 0a 58 20 20 20 20 2f 2a | 20 43 68 69 6c 64 72 65 |.X /*| Childre|
|000016b0| 6e 20 47 4f 20 48 4f 4d | 45 21 20 20 20 20 20 20 |n GO HOM|E! |
|000016c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000016d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000016e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2a 2f 0a | | */.|
|000016f0| 58 20 20 20 20 69 66 20 | 28 21 50 61 72 65 6e 74 |X if |(!Parent|
|00001700| 50 72 6f 63 65 73 73 29 | 20 65 78 69 74 28 30 29 |Process)| exit(0)|
|00001710| 3b 0a 58 0a 58 20 20 20 | 20 2f 2a 20 50 61 74 69 |;.X.X | /* Pati|
|00001720| 65 6e 74 20 70 61 72 65 | 6e 74 20 77 61 69 74 73 |ent pare|nt waits|
|00001730| 20 66 6f 72 20 63 68 69 | 6c 64 72 65 6e 20 74 6f | for chi|ldren to|
|00001740| 20 61 72 72 69 76 65 2e | 20 20 20 20 20 20 20 20 | arrive.| |
|00001750| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001760| 2a 2f 0a 58 20 20 20 20 | 77 68 69 6c 65 20 28 4e |*/.X |while (N|
|00001770| 75 6d 62 65 72 50 72 6f | 63 55 73 65 64 2d 2d 20 |umberPro|cUsed-- |
|00001780| 3e 20 31 29 20 77 61 69 | 74 28 4e 55 4c 4c 29 3b |> 1) wai|t(NULL);|
|00001790| 0a 58 20 20 7d 0a 58 7d | 0a 58 0a 58 0a 58 2f 2a |.X }.X}|.X.X.X/*|
|000017a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000017b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000017c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000017d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000017e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 0a 58 20 50 61 72 |********|**.X Par|
|000017f0| 61 6c 6c 65 6c 43 61 6c | 6c 6f 63 20 61 6c 6c 6f |allelCal|loc allo|
|00001800| 63 61 74 65 64 20 61 20 | 70 69 65 63 65 20 6f 66 |cated a |piece of|
|00001810| 20 6d 65 6d 6f 72 79 20 | 74 6f 20 62 65 20 67 6c | memory |to be gl|
|00001820| 6f 62 61 6c 6c 79 20 61 | 63 63 65 73 73 69 62 6c |obally a|ccessibl|
|00001830| 65 0a 58 20 74 68 72 6f | 75 67 68 6f 75 74 20 61 |e.X thro|ughout a|
|00001840| 6c 6c 20 70 72 6f 63 65 | 73 73 6f 72 73 2e 0a 58 |ll proce|ssors..X|
|00001850| 20 50 72 65 20 3a 20 6e | 6f 6e 65 2e 0a 58 20 50 | Pre : n|one..X P|
|00001860| 6f 73 74 3a 20 52 65 74 | 75 72 6e 73 20 70 6f 69 |ost: Ret|urns poi|
|00001870| 6e 74 65 72 20 74 6f 20 | 6d 65 6d 6f 72 79 20 6d |nter to |memory m|
|00001880| 61 70 70 65 64 20 70 61 | 72 61 6c 6c 65 6c 20 61 |apped pa|rallel a|
|00001890| 72 72 61 79 20 66 69 6c | 65 20 6f 72 0a 58 20 20 |rray fil|e or.X |
|000018a0| 20 20 20 20 20 69 6e 20 | 63 61 73 65 20 6f 66 20 | in |case of |
|000018b0| 74 72 69 76 69 61 6c 20 | 70 72 6f 63 65 73 73 6f |trivial |processo|
|000018c0| 72 73 20 72 65 74 75 72 | 6e 73 20 6e 6f 72 6d 61 |rs retur|ns norma|
|000018d0| 6c 20 43 61 6c 6c 6f 63 | 20 72 65 73 75 6c 74 2e |l Calloc| result.|
|000018e0| 0a 58 20 20 20 20 20 20 | 20 4e 75 6c 6c 20 72 65 |.X | Null re|
|000018f0| 74 75 72 6e 65 64 20 6f | 6e 20 66 61 69 6c 75 72 |turned o|n failur|
|00001900| 65 2e 0a 58 20 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |e..X ***|********|
|00001910| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001920| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001930| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001940| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001950| 2f 0a 58 76 6f 69 64 20 | 2a 50 61 72 61 6c 6c 65 |/.Xvoid |*Paralle|
|00001960| 6c 43 61 6c 6c 6f 63 28 | 73 69 7a 65 5f 74 20 6e |lCalloc(|size_t n|
|00001970| 69 74 65 6d 73 2c 20 73 | 69 7a 65 5f 74 20 73 69 |items, s|ize_t si|
|00001980| 7a 65 29 0a 58 7b 0a 58 | 20 20 76 6f 69 64 20 2a |ze).X{.X| void *|
|00001990| 50 3b 0a 58 0a 58 20 20 | 69 66 20 28 4e 75 6d 62 |P;.X.X |if (Numb|
|000019a0| 65 72 50 72 6f 63 20 3e | 20 31 29 0a 58 20 20 7b |erProc >| 1).X {|
|000019b0| 0a 58 20 20 20 20 50 4d | 41 20 3d 20 52 65 61 6c |.X PM|A = Real|
|000019c0| 6c 6f 63 28 50 4d 41 2c | 20 28 50 4d 41 43 6e 74 |loc(PMA,| (PMACnt|
|000019d0| 2b 31 29 20 2a 20 73 69 | 7a 65 6f 66 28 50 4d 41 |+1) * si|zeof(PMA|
|000019e0| 5b 30 5d 29 29 3b 0a 58 | 20 20 20 20 50 4d 41 5b |[0]));.X| PMA[|
|000019f0| 50 4d 41 43 6e 74 5d 2e | 53 69 7a 65 20 3d 20 6e |PMACnt].|Size = n|
|00001a00| 69 74 65 6d 73 20 2a 20 | 73 69 7a 65 3b 0a 58 0a |items * |size;.X.|
|00001a10| 58 20 20 20 20 2f 2a 20 | 53 65 74 20 75 70 20 74 |X /* |Set up t|
|00001a20| 68 65 20 64 69 73 6b 20 | 66 69 6c 65 20 74 6f 20 |he disk |file to |
|00001a30| 6d 61 70 20 69 6e 74 6f | 20 6d 65 6d 6f 72 79 2e |map into| memory.|
|00001a40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001a50| 20 20 20 20 20 20 20 20 | 20 20 20 20 2a 2f 0a 58 | | */.X|
|00001a60| 20 20 20 20 2f 2a 20 4d | 61 70 20 61 72 72 61 79 | /* M|ap array|
|00001a70| 20 61 6e 64 20 66 69 6c | 65 20 74 6f 67 65 74 68 | and fil|e togeth|
|00001a80| 65 72 2e 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |er. | |
|00001a90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001aa0| 20 20 20 20 20 20 20 20 | 20 20 20 2a 2f 0a 58 23 | | */.X#|
|00001ab0| 69 66 64 65 66 20 53 55 | 4e 0a 58 20 20 20 20 7b |ifdef SU|N.X {|
|00001ac0| 0a 58 20 20 20 20 20 20 | 69 6e 74 20 66 64 3b 0a |.X |int fd;.|
|00001ad0| 58 20 20 20 20 20 20 69 | 66 20 28 28 66 64 20 3d |X i|f ((fd =|
|00001ae0| 20 6f 70 65 6e 28 22 2f | 64 65 76 2f 7a 65 72 6f | open("/|dev/zero|
|00001af0| 22 2c 20 4f 5f 52 44 57 | 52 29 29 20 3d 3d 20 2d |", O_RDW|R)) == -|
|00001b00| 31 29 20 7b 2f 2a 45 52 | 52 4f 52 2a 2f 7d 3b 0a |1) {/*ER|ROR*/};.|
|00001b10| 58 0a 58 20 20 20 20 20 | 20 50 20 3d 20 6d 6d 61 |X.X | P = mma|
|00001b20| 70 28 30 2c 20 50 4d 41 | 5b 50 4d 41 43 6e 74 5d |p(0, PMA|[PMACnt]|
|00001b30| 2e 53 69 7a 65 2c 20 50 | 52 4f 54 5f 52 45 41 44 |.Size, P|ROT_READ|
|00001b40| 7c 50 52 4f 54 5f 57 52 | 49 54 45 2c 20 4d 41 50 ||PROT_WR|ITE, MAP|
|00001b50| 5f 53 48 41 52 45 44 2c | 20 66 64 2c 20 30 29 3b |_SHARED,| fd, 0);|
|00001b60| 0a 58 20 20 20 20 20 20 | 63 6c 6f 73 65 28 66 64 |.X |close(fd|
|00001b70| 29 3b 20 20 20 20 20 20 | 2f 2a 45 52 52 4f 52 20 |); |/*ERROR |
|00001b80| 63 68 65 63 6b 20 50 20 | 21 3d 20 2d 31 20 2a 2f |check P |!= -1 */|
|00001b90| 0a 58 20 20 20 20 7d 0a | 58 23 65 6c 73 65 0a 58 |.X }.|X#else.X|
|00001ba0| 20 20 20 20 50 20 3d 20 | 6d 6d 61 70 28 30 2c 20 | P = |mmap(0, |
|00001bb0| 50 4d 41 5b 50 4d 41 43 | 6e 74 5d 2e 53 69 7a 65 |PMA[PMAC|nt].Size|
|00001bc0| 2c 20 50 52 4f 54 5f 52 | 45 41 44 7c 50 52 4f 54 |, PROT_R|EAD|PROT|
|00001bd0| 5f 57 52 49 54 45 2c 20 | 0a 58 20 20 20 20 20 20 |_WRITE, |.X |
|00001be0| 20 20 20 20 20 20 20 20 | 20 20 4d 41 50 5f 53 48 | | MAP_SH|
|00001bf0| 41 52 45 44 7c 4d 41 50 | 5f 41 4e 4f 4e 59 4d 4f |ARED|MAP|_ANONYMO|
|00001c00| 55 53 2c 20 66 64 2c 20 | 30 29 3b 0a 58 23 65 6e |US, fd, |0);.X#en|
|00001c10| 64 69 66 0a 58 0a 58 20 | 20 20 20 6d 61 64 76 69 |dif.X.X | madvi|
|00001c20| 73 65 28 50 2c 20 50 4d | 41 5b 50 4d 41 43 6e 74 |se(P, PM|A[PMACnt|
|00001c30| 5d 2e 53 69 7a 65 2c 20 | 4d 41 44 56 5f 57 49 4c |].Size, |MADV_WIL|
|00001c40| 4c 4e 45 45 44 29 3b 0a | 58 0a 58 20 20 20 20 2f |LNEED);.|X.X /|
|00001c50| 2a 20 53 74 6f 72 65 20 | 73 6f 20 77 65 20 63 61 |* Store |so we ca|
|00001c60| 6e 20 74 69 64 79 20 75 | 70 20 6c 61 74 65 72 2e |n tidy u|p later.|
|00001c70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001c80| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00001c90| 20 20 20 20 20 20 2a 2f | 0a 58 20 20 20 20 50 4d | */|.X PM|
|00001ca0| 41 5b 50 4d 41 43 6e 74 | 5d 2e 50 20 3d 20 50 3b |A[PMACnt|].P = P;|
|00001cb0| 0a 58 20 20 20 20 50 4d | 41 43 6e 74 2b 2b 3b 0a |.X PM|ACnt++;.|
|00001cc0| 58 20 20 7d 0a 58 20 20 | 65 6c 73 65 0a 58 20 20 |X }.X |else.X |
|00001cd0| 7b 0a 58 20 20 20 20 50 | 20 3d 20 63 61 6c 6c 6f |{.X P| = callo|
|00001ce0| 63 28 6e 69 74 65 6d 73 | 2c 20 73 69 7a 65 29 3b |c(nitems|, size);|
|00001cf0| 0a 58 20 20 7d 0a 58 0a | 58 20 20 72 65 74 75 72 |.X }.X.|X retur|
|00001d00| 6e 20 50 3b 0a 58 7d 0a | 58 0a 58 2f 2a 2a 2a 2a |n P;.X}.|X.X/****|
|00001d10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001d50| 2a 2a 2a 2a 2a 2a 2a 0a | 58 20 50 61 72 61 6c 6c |*******.|X Parall|
|00001d60| 65 6c 46 72 65 65 20 66 | 72 65 65 73 20 61 20 70 |elFree f|rees a p|
|00001d70| 69 65 63 65 20 6f 66 20 | 6d 65 6d 6f 72 79 20 61 |iece of |memory a|
|00001d80| 73 73 6f 63 69 61 74 65 | 64 20 77 69 74 68 20 61 |ssociate|d with a|
|00001d90| 20 50 61 72 61 6c 6c 65 | 6c 43 61 6c 6c 6f 63 2e | Paralle|lCalloc.|
|00001da0| 0a 58 20 50 72 65 20 3a | 20 2a 50 20 69 73 20 70 |.X Pre :| *P is p|
|00001db0| 6f 69 6e 74 65 72 20 72 | 65 74 75 72 6e 20 66 72 |ointer r|eturn fr|
|00001dc0| 6f 6d 20 50 61 72 61 6c | 6c 65 6c 43 61 6c 6c 6f |om Paral|lelCallo|
|00001dd0| 63 28 29 2e 0a 58 20 50 | 6f 73 74 3a 20 4d 65 6d |c()..X P|ost: Mem|
|00001de0| 6f 72 79 20 61 6e 64 20 | 70 6f 73 73 69 62 6c 65 |ory and |possible|
|00001df0| 20 66 69 6c 65 20 61 72 | 65 20 66 72 65 65 64 2e | file ar|e freed.|
|00001e00| 0a 58 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X *****|********|
|00001e10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001e40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0a |********|******/.|
|00001e50| 58 76 6f 69 64 20 5f 50 | 61 72 61 6c 6c 65 6c 46 |Xvoid _P|arallelF|
|00001e60| 72 65 65 28 76 6f 69 64 | 20 2a 50 29 0a 58 7b 0a |ree(void| *P).X{.|
|00001e70| 58 20 20 69 66 20 28 4e | 75 6d 62 65 72 50 72 6f |X if (N|umberPro|
|00001e80| 63 20 3e 20 31 20 26 26 | 20 50 20 21 3d 20 4e 55 |c > 1 &&| P != NU|
|00001e90| 4c 4c 29 0a 58 20 20 7b | 0a 58 20 20 20 20 6c 6f |LL).X {|.X lo|
|00001ea0| 6e 67 20 69 6e 74 20 50 | 4d 41 69 3b 0a 58 20 20 |ng int P|MAi;.X |
|00001eb0| 20 20 69 6e 74 20 4c 61 | 73 74 20 3d 20 54 52 55 | int La|st = TRU|
|00001ec0| 45 3b 0a 58 0a 58 20 20 | 20 20 66 6f 72 20 28 50 |E;.X.X | for (P|
|00001ed0| 4d 41 69 20 3d 20 30 3b | 20 50 4d 41 69 20 3c 20 |MAi = 0;| PMAi < |
|00001ee0| 50 4d 41 43 6e 74 3b 20 | 50 4d 41 69 2b 2b 29 0a |PMACnt; |PMAi++).|
|00001ef0| 58 20 20 20 20 7b 0a 58 | 20 20 20 20 20 20 69 66 |X {.X| if|
|00001f00| 20 28 50 4d 41 5b 50 4d | 41 69 5d 2e 50 20 3d 3d | (PMA[PM|Ai].P ==|
|00001f10| 20 50 29 0a 58 20 20 20 | 20 20 20 7b 0a 58 20 20 | P).X | {.X |
|00001f20| 20 20 20 20 20 20 6d 75 | 6e 6d 61 70 28 28 63 61 | mu|nmap((ca|
|00001f30| 64 64 72 5f 74 29 20 50 | 2c 20 50 4d 41 5b 50 4d |ddr_t) P|, PMA[PM|
|00001f40| 41 69 5d 2e 53 69 7a 65 | 29 3b 0a 58 20 20 20 20 |Ai].Size|);.X |
|00001f50| 20 20 20 20 50 4d 41 5b | 50 4d 41 69 5d 2e 50 20 | PMA[|PMAi].P |
|00001f60| 3d 20 4e 55 4c 4c 3b 0a | 58 20 20 20 20 20 20 7d |= NULL;.|X }|
|00001f70| 0a 58 0a 58 20 20 20 20 | 20 20 4c 61 73 74 20 3d |.X.X | Last =|
|00001f80| 20 4c 61 73 74 20 26 26 | 20 28 50 4d 41 5b 50 4d | Last &&| (PMA[PM|
|00001f90| 41 69 5d 2e 50 20 3d 3d | 20 4e 55 4c 4c 29 3b 0a |Ai].P ==| NULL);.|
|00001fa0| 58 20 20 20 20 7d 0a 58 | 0a 58 20 20 20 20 69 66 |X }.X|.X if|
|00001fb0| 20 28 4c 61 73 74 29 20 | 7b 66 72 65 65 28 50 4d | (Last) |{free(PM|
|00001fc0| 41 29 3b 20 50 4d 41 43 | 6e 74 20 3d 20 30 3b 7d |A); PMAC|nt = 0;}|
|00001fd0| 0a 58 20 20 7d 0a 58 20 | 20 65 6c 73 65 0a 58 20 |.X }.X | else.X |
|00001fe0| 20 20 20 66 72 65 65 28 | 50 29 3b 0a 58 7d 0a 58 | free(|P);.X}.X|
|00001ff0| 0a 58 23 65 6e 64 69 66 | 20 0a 58 0a 58 2f 2a 2a |.X#endif| .X.X/**|
|00002000| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002010| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002030| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002040| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 0a 58 20 45 6e 64 20 |********|*.X End |
|00002050| 6f 66 20 70 61 72 61 6c | 6c 65 6c 2e 63 0a 58 20 |of paral|lel.c.X |
|00002060| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002070| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002080| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000020a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2f 0a 45 4e 44 |********|***/.END|
|000020b0| 5f 4f 46 5f 46 49 4c 45 | 0a 20 20 69 66 20 74 65 |_OF_FILE|. if te|
|000020c0| 73 74 20 36 31 31 38 20 | 2d 6e 65 20 60 77 63 20 |st 6118 |-ne `wc |
|000020d0| 2d 63 20 3c 27 70 61 72 | 61 6c 6c 65 6c 2e 63 27 |-c <'par|allel.c'|
|000020e0| 60 3b 20 74 68 65 6e 0a | 20 20 20 20 65 63 68 6f |`; then.| echo|
|000020f0| 20 73 68 61 72 3a 20 5c | 22 27 70 61 72 61 6c 6c | shar: \|"'parall|
|00002100| 65 6c 2e 63 27 5c 22 20 | 75 6e 70 61 63 6b 65 64 |el.c'\" |unpacked|
|00002110| 20 77 69 74 68 20 77 72 | 6f 6e 67 20 73 69 7a 65 | with wr|ong size|
|00002120| 21 0a 20 20 66 69 0a 20 | 20 23 20 65 6e 64 20 6f |!. fi. | # end o|
|00002130| 66 20 27 70 61 72 61 6c | 6c 65 6c 2e 63 27 0a 66 |f 'paral|lel.c'.f|
|00002140| 69 0a 69 66 20 74 65 73 | 74 20 2d 66 20 27 70 61 |i.if tes|t -f 'pa|
|00002150| 72 61 6c 6c 65 6c 2e 68 | 27 20 2d 61 20 22 24 7b |rallel.h|' -a "${|
|00002160| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00002170| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00002180| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|00002190| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|000021a0| 5c 22 27 70 61 72 61 6c | 6c 65 6c 2e 68 27 5c 22 |\"'paral|lel.h'\"|
|000021b0| 0a 65 6c 73 65 0a 20 20 | 65 63 68 6f 20 73 68 61 |.else. |echo sha|
|000021c0| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|000021d0| 27 70 61 72 61 6c 6c 65 | 6c 2e 68 27 5c 22 20 5c |'paralle|l.h'\" \|
|000021e0| 28 35 33 39 38 20 63 68 | 61 72 61 63 74 65 72 73 |(5398 ch|aracters|
|000021f0| 5c 29 0a 20 20 73 65 64 | 20 22 73 2f 5e 58 2f 2f |\). sed| "s/^X//|
|00002200| 22 20 3e 27 70 61 72 61 | 6c 6c 65 6c 2e 68 27 20 |" >'para|llel.h' |
|00002210| 3c 3c 27 45 4e 44 5f 4f | 46 5f 46 49 4c 45 27 0a |<<'END_O|F_FILE'.|
|00002220| 58 2f 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X/******|********|
|00002230| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002240| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002250| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002260| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 0a 58 20 |********|*****.X |
|00002270| 54 68 65 20 66 6f 6c 6c | 6f 77 69 6e 67 20 69 73 |The foll|owing is|
|00002280| 2e 2e 2e 0a 58 20 20 20 | 20 20 20 43 6f 70 79 72 |....X | Copyr|
|00002290| 69 67 68 74 20 28 43 29 | 20 31 39 39 33 20 62 79 |ight (C)| 1993 by|
|000022a0| 20 4d 61 63 71 75 61 72 | 69 65 20 55 6e 69 76 65 | Macquar|ie Unive|
|000022b0| 72 73 69 74 79 0a 58 20 | 20 20 20 20 20 52 65 6c |rsity.X | Rel|
|000022c0| 65 61 73 65 64 20 77 69 | 74 68 6f 75 74 20 41 4e |eased wi|thout AN|
|000022d0| 59 20 77 61 72 72 61 6e | 74 79 20 74 6f 20 74 68 |Y warran|ty to th|
|000022e0| 65 20 70 75 62 6c 69 63 | 20 64 6f 6d 61 69 6e 2e |e public| domain.|
|000022f0| 0a 58 20 20 20 20 20 20 | 57 72 69 74 74 65 6e 20 |.X |Written |
|00002300| 62 79 20 52 69 63 68 61 | 72 64 20 4c 61 72 6b 69 |by Richa|rd Larki|
|00002310| 6e 2e 20 72 6c 61 72 6b | 69 6e 40 7a 65 6e 2e 65 |n. rlark|in@zen.e|
|00002320| 66 73 2e 6d 71 2e 65 64 | 75 2e 61 75 0a 58 0a 58 |fs.mq.ed|u.au.X.X|
|00002330| 20 20 20 20 20 20 54 68 | 61 6e 6b 73 20 67 6f 20 | Th|anks go |
|00002340| 74 6f 20 4d 61 72 6b 20 | 48 61 68 6e 20 66 6f 72 |to Mark |Hahn for|
|00002350| 20 68 65 6c 70 20 77 69 | 74 68 20 3c 73 79 73 2f | help wi|th <sys/|
|00002360| 6d 6d 61 6e 2e 68 3e 20 | 66 75 6e 63 74 69 6f 6e |mman.h> |function|
|00002370| 73 2e 0a 58 0a 58 20 70 | 61 72 61 6c 6c 65 6c 2e |s..X.X p|arallel.|
|00002380| 68 20 68 65 61 64 65 72 | 20 66 6f 72 20 70 61 72 |h header| for par|
|00002390| 61 6c 6c 65 6c 2e 63 0a | 58 0a 58 20 42 61 73 69 |allel.c.|X.X Basi|
|000023a0| 63 20 69 64 65 61 2e 2e | 2e 0a 58 20 2d 2d 2d 2d |c idea..|..X ----|
|000023b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 0a 58 20 53 6f 6d 65 |--------|-.X Some|
|000023c0| 77 68 65 72 65 20 63 61 | 6c 6c 0a 58 20 50 61 72 |where ca|ll.X Par|
|000023d0| 61 6c 6c 65 6c 50 72 6f | 63 65 73 73 6f 72 73 28 |allelPro|cessors(|
|000023e0| 4e 29 0a 58 20 77 69 74 | 68 20 4e 20 74 68 65 20 |N).X wit|h N the |
|000023f0| 6e 75 6d 62 65 72 20 6f | 66 20 70 72 6f 63 65 73 |number o|f proces|
|00002400| 73 6f 72 73 20 79 6f 75 | 20 68 61 76 65 2e 0a 58 |sors you| have..X|
|00002410| 0a 58 20 46 6f 72 20 61 | 72 72 61 79 73 20 74 68 |.X For a|rrays th|
|00002420| 61 74 20 68 61 76 65 20 | 74 6f 20 62 65 20 67 6c |at have |to be gl|
|00002430| 6f 62 61 6c 6c 79 20 77 | 72 69 74 74 65 6e 20 74 |obally w|ritten t|
|00002440| 6f 20 77 69 74 68 69 6e | 20 70 61 72 61 6c 6c 65 |o within| paralle|
|00002450| 6c 20 6c 6f 6f 70 73 2c | 0a 58 20 75 73 65 20 50 |l loops,|.X use P|
|00002460| 61 72 61 6c 6c 65 6c 43 | 61 6c 6c 6f 63 28 29 2f |arallelC|alloc()/|
|00002470| 50 61 72 61 6c 6c 65 6c | 46 72 65 65 28 29 20 69 |Parallel|Free() i|
|00002480| 6e 73 74 65 61 64 20 6f | 66 20 63 61 6c 6c 6f 63 |nstead o|f calloc|
|00002490| 28 29 2f 66 72 65 65 28 | 29 2e 0a 58 20 41 6c 73 |()/free(|)..X Als|
|000024a0| 6f 20 75 73 65 20 66 6f | 72 20 68 75 67 65 20 28 |o use fo|r huge (|
|000024b0| 6e 6f 6e 20 77 72 69 74 | 74 65 6e 29 20 61 72 72 |non writ|ten) arr|
|000024c0| 61 79 73 20 74 6f 20 73 | 61 76 65 20 6f 6e 20 6d |ays to s|ave on m|
|000024d0| 65 6d 6f 72 79 20 75 73 | 61 67 65 2e 0a 58 0a 58 |emory us|age..X.X|
|000024e0| 20 46 6f 72 20 6c 6f 6f | 70 73 20 74 6f 20 70 61 | For loo|ps to pa|
|000024f0| 72 61 6c 6c 65 6c 69 73 | 65 20 6f 66 20 74 68 65 |rallelis|e of the|
|00002500| 20 66 6f 72 6d 2e 2e 2e | 0a 58 20 7b 4f 6e 6c 79 | form...|.X {Only|
|00002510| 20 6e 6f 6e 72 65 63 75 | 72 72 65 6e 74 20 6c 6f | nonrecu|rrent lo|
|00002520| 6f 70 73 20 63 61 6e 20 | 62 65 20 70 61 72 61 6c |ops can |be paral|
|00002530| 6c 65 6c 69 73 65 64 2e | 7d 0a 58 20 20 20 20 20 |lelised.|}.X |
|00002540| 20 20 20 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 | for (|i = 0; i|
|00002550| 20 3c 20 4d 41 58 49 4d | 55 4d 3b 20 69 2b 2b 29 | < MAXIM|UM; i++)|
|00002560| 20 7b 64 6f 5f 73 6f 6d | 65 74 68 69 6e 67 73 7d | {do_som|ethings}|
|00002570| 3b 0a 58 20 43 68 61 6e | 67 65 20 74 6f 2e 2e 2e |;.X Chan|ge to...|
|00002580| 0a 58 20 20 20 20 20 20 | 20 20 50 61 72 61 6c 6c |.X | Parall|
|00002590| 65 6c 53 70 6c 69 74 28 | 4d 41 58 49 4d 55 4d 2c |elSplit(|MAXIMUM,|
|000025a0| 20 26 6d 69 6e 2c 20 26 | 6d 61 78 29 3b 0a 58 20 | &min, &|max);.X |
|000025b0| 20 20 20 20 20 20 20 66 | 6f 72 20 28 69 20 3d 20 | f|or (i = |
|000025c0| 6d 69 6e 3b 20 69 20 3c | 20 6d 61 78 3b 20 69 2b |min; i <| max; i+|
|000025d0| 2b 29 20 7b 64 6f 5f 73 | 6f 6d 65 74 68 69 6e 67 |+) {do_s|omething|
|000025e0| 73 7d 3b 0a 58 20 20 20 | 20 20 20 20 20 50 61 72 |s};.X | Par|
|000025f0| 61 6c 6c 65 6c 52 65 67 | 72 6f 75 70 28 29 3b 0a |allelReg|roup();.|
|00002600| 58 0a 58 20 4e 4f 54 45 | 53 3a 20 41 6c 6c 20 76 |X.X NOTE|S: All v|
|00002610| 61 72 69 61 62 6c 65 73 | 20 74 68 61 74 20 61 72 |ariables| that ar|
|00002620| 65 20 6e 6f 74 20 50 61 | 72 61 6c 6c 65 6c 6c 65 |e not Pa|rallelle|
|00002630| 64 2c 0a 58 20 20 20 20 | 20 20 20 20 77 69 6c 6c |d,.X | will|
|00002640| 20 62 65 20 6c 6f 63 61 | 6c 20 74 6f 20 65 61 63 | be loca|l to eac|
|00002650| 68 20 70 72 6f 63 65 73 | 73 6f 72 2e 0a 58 0a 58 |h proces|sor..X.X|
|00002660| 20 20 20 20 20 20 20 20 | 4e 65 73 74 65 64 20 70 | |Nested p|
|00002670| 61 72 61 6c 6c 65 6c 69 | 73 69 6e 67 20 69 73 20 |aralleli|sing is |
|00002680| 6e 6f 74 20 73 75 70 70 | 6f 72 74 65 64 2e 0a 58 |not supp|orted..X|
|00002690| 0a 58 20 20 20 20 20 20 | 20 20 50 61 72 61 6c 6c |.X | Parall|
|000026a0| 65 6c 43 61 6c 6c 6f 63 | 28 29 2f 50 61 72 61 6c |elCalloc|()/Paral|
|000026b0| 6c 65 6c 46 72 65 65 28 | 29 20 73 68 6f 75 6c 64 |lelFree(|) should|
|000026c0| 20 6e 6f 74 20 62 65 20 | 75 73 65 64 20 77 69 74 | not be |used wit|
|000026d0| 68 69 6e 0a 58 20 20 20 | 20 20 20 20 20 70 61 72 |hin.X | par|
|000026e0| 61 6c 6c 65 6c 6c 65 64 | 20 73 65 63 74 69 6f 6e |allelled| section|
|000026f0| 73 20 6f 66 20 63 6f 64 | 65 2e 0a 58 0a 58 20 4f |s of cod|e..X.X O|
|00002700| 76 65 72 68 65 61 64 73 | 3a 20 49 66 20 64 6f 5f |verheads|: If do_|
|00002710| 73 6f 6d 65 74 68 69 6e | 67 73 20 74 61 6b 65 73 |somethin|gs takes|
|00002720| 20 74 69 6d 65 20 65 6e | 6f 75 67 68 20 74 6f 20 | time en|ough to |
|00002730| 77 61 72 72 61 6e 74 20 | 62 65 69 6e 67 0a 58 20 |warrant |being.X |
|00002740| 20 20 20 20 20 20 20 20 | 20 20 20 70 61 72 61 6c | | paral|
|00002750| 6c 65 6c 69 73 65 64 2c | 20 74 68 65 20 6f 76 65 |lelised,| the ove|
|00002760| 72 68 65 61 64 73 20 61 | 72 65 20 6e 6f 74 20 77 |rheads a|re not w|
|00002770| 6f 72 74 68 20 6d 65 6e | 74 69 6f 6e 69 6e 67 2e |orth men|tioning.|
|00002780| 0a 58 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X.X | |
|00002790| 55 6e 64 65 72 20 4d 53 | 2d 44 4f 53 20 74 68 65 |Under MS|-DOS the|
|000027a0| 20 6f 76 65 72 68 65 61 | 64 20 69 73 20 32 20 72 | overhea|d is 2 r|
|000027b0| 65 64 75 6e 64 61 6e 74 | 20 73 74 6f 72 65 73 2e |edundant| stores.|
|000027c0| 0a 58 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X.X | |
|000027d0| 41 6e 79 20 73 69 6e 67 | 6c 65 20 70 72 6f 63 65 |Any sing|le proce|
|000027e0| 73 73 6f 72 20 6d 61 63 | 68 69 6e 65 20 77 69 6c |ssor mac|hine wil|
|000027f0| 6c 20 75 73 65 20 6e 6f | 72 6d 61 6c 20 63 61 6c |l use no|rmal cal|
|00002800| 6c 6f 63 27 65 64 0a 58 | 20 20 20 20 20 20 20 20 |loc'ed.X| |
|00002810| 20 20 20 20 6d 65 6d 6f | 72 79 20 61 6e 64 20 64 | memo|ry and d|
|00002820| 6f 20 61 70 70 72 6f 78 | 69 6d 61 74 65 6c 79 20 |o approx|imately |
|00002830| 34 20 73 69 6d 70 6c 65 | 20 63 6f 6e 64 69 74 69 |4 simple| conditi|
|00002840| 6f 6e 61 6c 20 63 61 6c | 63 75 6c 61 74 69 6f 6e |onal cal|culation|
|00002850| 73 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 61 |s.X | a|
|00002860| 6e 64 20 32 20 72 65 64 | 75 6e 64 61 6e 74 20 73 |nd 2 red|undant s|
|00002870| 74 6f 72 65 73 20 70 65 | 72 20 53 70 6c 69 74 2f |tores pe|r Split/|
|00002880| 52 65 67 72 6f 75 70 2e | 0a 58 20 2a 2a 2a 2a 2a |Regroup.|.X *****|
|00002890| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000028d0| 2a 2a 2a 2a 2a 2a 2f 0a | 58 0a 58 23 69 66 6e 64 |******/.|X.X#ifnd|
|000028e0| 65 66 20 5f 5f 50 41 52 | 41 4c 4c 45 4c 5f 48 45 |ef __PAR|ALLEL_HE|
|000028f0| 41 44 45 52 0a 58 23 64 | 65 66 69 6e 65 20 5f 5f |ADER.X#d|efine __|
|00002900| 50 41 52 41 4c 4c 45 4c | 5f 48 45 41 44 45 52 0a |PARALLEL|_HEADER.|
|00002910| 58 0a 58 23 69 66 6e 64 | 65 66 20 4d 53 44 4f 53 |X.X#ifnd|ef MSDOS|
|00002920| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |.X.X#inc|lude <st|
|00002930| 64 64 65 66 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ddef.h>.|X#includ|
|00002940| 65 20 3c 73 74 64 69 6f | 2e 68 3e 0a 58 23 69 6e |e <stdio|.h>.X#in|
|00002950| 63 6c 75 64 65 20 3c 66 | 63 6e 74 6c 2e 68 3e 0a |clude <f|cntl.h>.|
|00002960| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 77 |X#includ|e <sys/w|
|00002970| 61 69 74 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |ait.h>.X|#include|
|00002980| 20 3c 73 79 73 2f 74 79 | 70 65 73 2e 68 3e 0a 58 | <sys/ty|pes.h>.X|
|00002990| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 6d 6d |#include| <sys/mm|
|000029a0| 61 6e 2e 68 3e 0a 58 0a | 58 2f 2a 20 55 6e 74 69 |an.h>.X.|X/* Unti|
|000029b0| 6c 20 49 20 66 69 6e 64 | 20 77 68 65 72 65 20 74 |l I find| where t|
|000029c0| 68 65 79 20 73 68 6f 75 | 6c 64 20 62 65 20 21 21 |hey shou|ld be !!|
|000029d0| 21 21 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 4e |!! */.X#|define N|
|000029e0| 55 4c 4c 20 20 30 0a 58 | 23 64 65 66 69 6e 65 20 |ULL 0.X|#define |
|000029f0| 54 52 55 45 20 20 28 30 | 3d 3d 30 29 0a 58 23 64 |TRUE (0|==0).X#d|
|00002a00| 65 66 69 6e 65 20 46 41 | 4c 53 45 20 28 30 21 3d |efine FA|LSE (0!=|
|00002a10| 30 29 0a 58 23 64 65 66 | 69 6e 65 20 52 65 61 6c |0).X#def|ine Real|
|00002a20| 6c 6f 63 28 50 2c 20 73 | 29 20 20 28 50 20 3d 3d |loc(P, s|) (P ==|
|00002a30| 20 4e 55 4c 4c 20 3f 20 | 6d 61 6c 6c 6f 63 28 28 | NULL ? |malloc((|
|00002a40| 73 29 29 20 3a 20 72 65 | 61 6c 6c 6f 63 28 28 50 |s)) : re|alloc((P|
|00002a50| 29 2c 20 28 73 69 7a 65 | 5f 74 29 20 28 73 29 29 |), (size|_t) (s))|
|00002a60| 29 0a 58 69 6e 74 20 77 | 72 69 74 65 28 69 6e 74 |).Xint w|rite(int|
|00002a70| 20 66 64 2c 20 63 68 61 | 72 20 2a 62 75 66 2c 20 | fd, cha|r *buf, |
|00002a80| 69 6e 74 20 6e 62 79 74 | 65 29 3b 0a 58 69 6e 74 |int nbyt|e);.Xint|
|00002a90| 20 63 6c 6f 73 65 20 28 | 69 6e 74 20 66 64 29 3b | close (|int fd);|
|00002aa0| 0a 58 69 6e 74 20 66 6f | 72 6b 28 76 6f 69 64 29 |.Xint fo|rk(void)|
|00002ab0| 3b 0a 58 69 6e 74 20 6d | 75 6e 6d 61 70 28 63 61 |;.Xint m|unmap(ca|
|00002ac0| 64 64 72 5f 74 20 61 64 | 64 72 2c 20 69 6e 74 20 |ddr_t ad|dr, int |
|00002ad0| 6c 65 6e 29 3b 0a 58 69 | 6e 74 20 6d 61 64 76 69 |len);.Xi|nt madvi|
|00002ae0| 73 65 28 63 61 64 64 72 | 5f 74 20 61 64 64 72 2c |se(caddr|_t addr,|
|00002af0| 20 73 69 7a 65 5f 74 20 | 6c 65 6e 2c 20 69 6e 74 | size_t |len, int|
|00002b00| 20 61 64 76 69 63 65 29 | 3b 0a 58 69 6e 74 20 75 | advice)|;.Xint u|
|00002b10| 6e 6c 69 6e 6b 28 63 68 | 61 72 20 2a 70 61 74 68 |nlink(ch|ar *path|
|00002b20| 29 3b 0a 58 76 6f 69 64 | 20 2a 6d 61 6c 6c 6f 63 |);.Xvoid| *malloc|
|00002b30| 28 73 69 7a 65 5f 74 20 | 53 29 3b 0a 58 76 6f 69 |(size_t |S);.Xvoi|
|00002b40| 64 20 2a 63 61 6c 6c 6f | 63 28 73 69 7a 65 5f 74 |d *callo|c(size_t|
|00002b50| 20 4e 2c 20 73 69 7a 65 | 5f 74 20 53 29 3b 0a 58 | N, size|_t S);.X|
|00002b60| 76 6f 69 64 20 2a 72 65 | 61 6c 6c 6f 63 28 76 6f |void *re|alloc(vo|
|00002b70| 69 64 20 2a 50 2c 20 73 | 69 7a 65 5f 74 20 53 29 |id *P, s|ize_t S)|
|00002b80| 3b 0a 58 0a 58 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |;.X.X/**|********|
|00002b90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ba0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002bb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002bc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002bd0| 2a 0a 58 20 50 61 72 61 | 6c 6c 65 6c 50 72 6f 63 |*.X Para|llelProc|
|00002be0| 65 73 73 6f 72 73 20 74 | 65 6c 6c 20 70 61 72 61 |essors t|ell para|
|00002bf0| 6c 6c 65 6c 20 72 6f 75 | 74 69 6e 65 73 20 68 6f |llel rou|tines ho|
|00002c00| 77 20 6d 61 6e 79 20 70 | 72 6f 63 65 73 73 6f 72 |w many p|rocessor|
|00002c10| 73 20 74 6f 20 61 73 73 | 75 6d 65 2e 0a 58 20 50 |s to ass|ume..X P|
|00002c20| 72 65 20 3a 20 6e 6f 6e | 65 2e 0a 58 20 50 6f 73 |re : non|e..X Pos|
|00002c30| 74 3a 20 49 6e 74 65 72 | 6e 61 6c 20 6b 6e 6f 77 |t: Inter|nal know|
|00002c40| 6c 65 64 67 65 20 6f 66 | 20 6e 75 6d 62 65 72 20 |ledge of| number |
|00002c50| 6f 66 20 70 72 6f 63 65 | 73 73 6f 72 73 20 73 65 |of proce|ssors se|
|00002c60| 74 20 74 6f 20 6d 61 78 | 69 6d 75 6d 20 6f 66 20 |t to max|imum of |
|00002c70| 4e 20 61 6e 64 20 31 2e | 0a 58 20 2a 2a 2a 2a 2a |N and 1.|.X *****|
|00002c80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002c90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ca0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002cb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002cc0| 2a 2a 2a 2a 2a 2a 2f 0a | 58 76 6f 69 64 20 50 61 |******/.|Xvoid Pa|
|00002cd0| 72 61 6c 6c 65 6c 50 72 | 6f 63 65 73 73 6f 72 73 |rallelPr|ocessors|
|00002ce0| 28 6c 6f 6e 67 20 69 6e | 74 20 4e 29 3b 0a 58 0a |(long in|t N);.X.|
|00002cf0| 58 0a 58 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X/****|********|
|00002d00| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002d10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002d20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002d30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0a |********|*******.|
|00002d40| 58 20 50 61 72 61 6c 6c | 65 6c 53 70 6c 69 74 20 |X Parall|elSplit |
|00002d50| 73 70 6c 69 74 20 69 6e | 74 6f 20 75 73 65 66 75 |split in|to usefu|
|00002d60| 6c 20 6e 75 6d 62 65 72 | 20 6f 66 20 70 72 6f 63 |l number| of proc|
|00002d70| 65 73 73 65 73 20 61 6e | 64 20 72 65 74 75 72 6e |esses an|d return|
|00002d80| 0a 58 20 69 6e 74 65 72 | 76 61 6c 20 6f 66 20 72 |.X inter|val of r|
|00002d90| 65 6c 65 76 61 6e 63 65 | 20 74 6f 20 65 61 63 68 |elevance| to each|
|00002da0| 20 70 72 6f 63 65 73 73 | 2e 0a 58 20 43 61 6c 6c | process|..X Call|
|00002db0| 73 20 74 6f 20 50 61 72 | 61 6c 6c 65 6c 53 70 6c |s to Par|allelSpl|
|00002dc0| 69 74 20 63 61 6e 6e 6f | 74 20 62 65 20 6e 65 73 |it canno|t be nes|
|00002dd0| 74 65 64 2e 0a 58 20 50 | 72 65 20 3a 20 4d 69 6e |ted..X P|re : Min|
|00002de0| 2c 20 4d 61 78 20 6e 6f | 74 20 4e 55 4c 4c 2e 20 |, Max no|t NULL. |
|00002df0| 4e 75 6d 62 65 72 50 72 | 6f 63 55 73 65 64 20 3d |NumberPr|ocUsed =|
|00002e00| 3d 20 31 2e 0a 58 20 50 | 6f 73 74 3a 20 4e 75 6d |= 1..X P|ost: Num|
|00002e10| 62 65 72 50 72 6f 63 55 | 73 65 64 20 69 73 20 6e |berProcU|sed is n|
|00002e20| 75 6d 62 65 72 20 6f 66 | 20 61 63 74 69 76 65 20 |umber of| active |
|00002e30| 70 72 6f 63 65 73 73 65 | 73 2e 0a 58 20 20 20 20 |processe|s..X |
|00002e40| 20 20 20 5b 4d 69 6e 2e | 2e 4d 61 78 29 20 77 69 | [Min.|.Max) wi|
|00002e50| 6c 6c 20 62 65 20 69 6e | 74 65 72 76 61 6c 20 6f |ll be in|terval o|
|00002e60| 66 20 52 61 6e 67 65 20 | 74 6f 20 75 73 65 20 66 |f Range |to use f|
|00002e70| 6f 72 20 65 61 63 68 20 | 70 72 6f 63 65 73 73 2e |or each |process.|
|00002e80| 0a 58 20 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X *****|********|
|00002e90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ea0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002eb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002ec0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2f 0a |********|******/.|
|00002ed0| 58 76 6f 69 64 20 50 61 | 72 61 6c 6c 65 6c 53 70 |Xvoid Pa|rallelSp|
|00002ee0| 6c 69 74 28 6c 6f 6e 67 | 20 69 6e 74 20 52 61 6e |lit(long| int Ran|
|00002ef0| 67 65 2c 20 6c 6f 6e 67 | 20 69 6e 74 20 2a 4d 69 |ge, long| int *Mi|
|00002f00| 6e 2c 20 6c 6f 6e 67 20 | 69 6e 74 20 2a 4d 61 78 |n, long |int *Max|
|00002f10| 29 3b 0a 58 0a 58 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |);.X.X.X|/*******|
|00002f20| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f40| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002f60| 2a 2a 2a 2a 0a 58 20 50 | 61 72 61 6c 6c 65 6c 52 |****.X P|arallelR|
|00002f70| 65 67 72 6f 75 70 20 63 | 68 69 6c 64 72 65 6e 20 |egroup c|hildren |
|00002f80| 61 6c 6c 20 72 65 74 75 | 72 6e 20 74 6f 20 74 68 |all retu|rn to th|
|00002f90| 65 69 72 20 70 61 72 65 | 6e 74 20 77 68 6f 20 77 |eir pare|nt who w|
|00002fa0| 61 69 74 73 20 66 6f 72 | 20 74 68 65 6d 2e 0a 58 |aits for| them..X|
|00002fb0| 20 50 72 65 20 3a 20 4e | 75 6d 62 65 72 50 72 6f | Pre : N|umberPro|
|00002fc0| 63 55 73 65 64 20 69 73 | 20 6e 75 6d 62 65 72 20 |cUsed is| number |
|00002fd0| 6f 66 20 61 63 74 69 76 | 65 20 70 72 6f 63 65 73 |of activ|e proces|
|00002fe0| 73 65 73 2e 0a 58 20 50 | 6f 73 74 3a 20 4f 6e 65 |ses..X P|ost: One|
|00002ff0| 20 70 61 72 65 6e 74 20 | 70 72 6f 63 65 73 73 2e | parent |process.|
|00003000| 20 4e 75 6d 62 65 72 50 | 72 6f 63 55 73 65 64 20 | NumberP|rocUsed |
|00003010| 3d 20 31 3b 0a 58 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |= 1;.X *|********|
|00003020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003030| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003040| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003050| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003060| 2a 2a 2f 0a 58 76 6f 69 | 64 20 50 61 72 61 6c 6c |**/.Xvoi|d Parall|
|00003070| 65 6c 52 65 67 72 6f 75 | 70 28 76 6f 69 64 29 3b |elRegrou|p(void);|
|00003080| 0a 58 0a 58 0a 58 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X.X.X/*|********|
|00003090| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000030a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000030b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000030c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000030d0| 2a 2a 0a 58 20 50 61 72 | 61 6c 6c 65 6c 43 61 6c |**.X Par|allelCal|
|000030e0| 6c 6f 63 20 61 6c 6c 6f | 63 61 74 65 64 20 61 20 |loc allo|cated a |
|000030f0| 70 69 65 63 65 20 6f 66 | 20 6d 65 6d 6f 72 79 20 |piece of| memory |
|00003100| 74 6f 20 62 65 20 67 6c | 6f 62 61 6c 6c 79 20 61 |to be gl|obally a|
|00003110| 63 63 65 73 73 69 62 6c | 65 0a 58 20 74 68 72 6f |ccessibl|e.X thro|
|00003120| 75 67 68 6f 75 74 20 61 | 6c 6c 20 70 72 6f 63 65 |ughout a|ll proce|
|00003130| 73 73 6f 72 73 2e 0a 58 | 20 50 72 65 20 3a 20 6e |ssors..X| Pre : n|
|00003140| 6f 6e 65 2e 0a 58 20 50 | 6f 73 74 3a 20 52 65 74 |one..X P|ost: Ret|
|00003150| 75 72 6e 73 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 |urns poi|nter to |
|00003160| 6d 65 6d 6f 72 79 20 6d | 61 70 70 65 64 20 70 61 |memory m|apped pa|
|00003170| 72 61 6c 6c 65 6c 20 61 | 72 72 61 79 20 66 69 6c |rallel a|rray fil|
|00003180| 65 20 6f 72 0a 58 20 20 | 20 20 20 20 20 69 6e 20 |e or.X | in |
|00003190| 63 61 73 65 20 6f 66 20 | 74 72 69 76 69 61 6c 20 |case of |trivial |
|000031a0| 70 72 6f 63 65 73 73 6f | 72 73 20 72 65 74 75 72 |processo|rs retur|
|000031b0| 6e 73 20 6e 6f 72 6d 61 | 6c 20 43 61 6c 6c 6f 63 |ns norma|l Calloc|
|000031c0| 20 72 65 73 75 6c 74 2e | 0a 58 20 20 20 20 20 20 | result.|.X |
|000031d0| 20 4e 75 6c 6c 20 72 65 | 74 75 72 6e 65 64 20 6f | Null re|turned o|
|000031e0| 6e 20 66 61 69 6c 75 72 | 65 2e 0a 58 20 2a 2a 2a |n failur|e..X ***|
|000031f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003200| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003210| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003220| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003230| 2a 2a 2a 2a 2a 2a 2a 2a | 2f 0a 58 76 6f 69 64 20 |********|/.Xvoid |
|00003240| 2a 50 61 72 61 6c 6c 65 | 6c 43 61 6c 6c 6f 63 28 |*Paralle|lCalloc(|
|00003250| 73 69 7a 65 5f 74 20 6e | 69 74 65 6d 73 2c 20 73 |size_t n|items, s|
|00003260| 69 7a 65 5f 74 20 73 69 | 7a 65 29 3b 0a 58 0a 58 |ize_t si|ze);.X.X|
|00003270| 2f 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |/*******|********|
|00003280| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003290| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000032a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000032b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0a 58 20 50 |********|****.X P|
|000032c0| 61 72 61 6c 6c 65 6c 46 | 72 65 65 20 66 72 65 65 |arallelF|ree free|
|000032d0| 73 20 61 20 70 69 65 63 | 65 20 6f 66 20 6d 65 6d |s a piec|e of mem|
|000032e0| 6f 72 79 20 61 73 73 6f | 63 69 61 74 65 64 20 77 |ory asso|ciated w|
|000032f0| 69 74 68 20 61 20 50 61 | 72 61 6c 6c 65 6c 43 61 |ith a Pa|rallelCa|
|00003300| 6c 6c 6f 63 2e 0a 58 20 | 50 72 65 20 3a 20 50 20 |lloc..X |Pre : P |
|00003310| 69 73 20 70 6f 69 6e 74 | 65 72 20 72 65 74 75 72 |is point|er retur|
|00003320| 6e 20 66 72 6f 6d 20 50 | 61 72 61 6c 6c 65 6c 43 |n from P|arallelC|
|00003330| 61 6c 6c 6f 63 28 29 2e | 0a 58 20 50 6f 73 74 3a |alloc().|.X Post:|
|00003340| 20 4d 65 6d 6f 72 79 20 | 61 6e 64 20 70 6f 73 73 | Memory |and poss|
|00003350| 69 62 6c 65 20 66 69 6c | 65 20 61 72 65 20 66 72 |ible fil|e are fr|
|00003360| 65 65 64 2e 0a 58 20 2a | 2a 2a 2a 2a 2a 2a 2a 2a |eed..X *|********|
|00003370| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003380| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003390| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000033a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000033b0| 2a 2a 2f 0a 58 76 6f 69 | 64 20 5f 50 61 72 61 6c |**/.Xvoi|d _Paral|
|000033c0| 6c 65 6c 46 72 65 65 28 | 76 6f 69 64 20 2a 50 29 |lelFree(|void *P)|
|000033d0| 3b 0a 58 23 64 65 66 69 | 6e 65 20 50 61 72 61 6c |;.X#defi|ne Paral|
|000033e0| 6c 65 6c 46 72 65 65 28 | 50 29 20 20 20 20 20 20 |lelFree(|P) |
|000033f0| 20 20 20 20 20 5f 50 61 | 72 61 6c 6c 65 6c 46 72 | _Pa|rallelFr|
|00003400| 65 65 28 28 76 6f 69 64 | 20 2a 29 20 50 29 0a 58 |ee((void| *) P).X|
|00003410| 0a 58 23 65 6c 73 65 0a | 58 0a 58 2f 2a 20 44 75 |.X#else.|X.X/* Du|
|00003420| 6d 6d 69 65 73 20 66 6f | 72 20 4d 53 44 4f 53 20 |mmies fo|r MSDOS |
|00003430| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003440| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003450| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003460| 20 20 20 20 20 20 2a 2f | 0a 58 23 64 65 66 69 6e | */|.X#defin|
|00003470| 65 20 50 61 72 61 6c 6c | 65 6c 50 72 6f 63 65 73 |e Parall|elProces|
|00003480| 73 6f 72 73 28 4e 29 20 | 20 20 20 20 20 20 20 20 |sors(N) | |
|00003490| 20 20 20 20 7b 7d 0a 58 | 23 64 65 66 69 6e 65 20 | {}.X|#define |
|000034a0| 50 61 72 61 6c 6c 65 6c | 53 70 6c 69 74 28 52 61 |Parallel|Split(Ra|
|000034b0| 6e 67 65 2c 20 4d 69 6e | 2c 20 4d 61 78 29 20 20 |nge, Min|, Max) |
|000034c0| 20 20 7b 2a 4d 69 6e 20 | 3d 20 30 3b 20 2a 4d 61 | {*Min |= 0; *Ma|
|000034d0| 78 20 3d 20 52 61 6e 67 | 65 3b 7d 0a 58 23 64 65 |x = Rang|e;}.X#de|
|000034e0| 66 69 6e 65 20 50 61 72 | 61 6c 6c 65 6c 52 65 67 |fine Par|allelReg|
|000034f0| 72 6f 75 70 28 29 20 20 | 20 20 20 20 20 20 20 20 |roup() | |
|00003500| 20 20 20 20 20 20 20 7b | 7d 0a 58 23 64 65 66 69 | {|}.X#defi|
|00003510| 6e 65 20 50 61 72 61 6c | 6c 65 6c 43 61 6c 6c 6f |ne Paral|lelCallo|
|00003520| 63 28 6e 69 74 65 6d 73 | 2c 20 73 69 7a 65 29 20 |c(nitems|, size) |
|00003530| 20 20 20 20 20 63 61 6c | 6c 6f 63 28 6e 69 74 65 | cal|loc(nite|
|00003540| 6d 73 2c 20 73 69 7a 65 | 29 0a 58 23 64 65 66 69 |ms, size|).X#defi|
|00003550| 6e 65 20 50 61 72 61 6c | 6c 65 6c 46 72 65 65 28 |ne Paral|lelFree(|
|00003560| 50 29 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |P) | |
|00003570| 20 20 20 20 20 66 72 65 | 65 28 50 29 0a 58 0a 58 | fre|e(P).X.X|
|00003580| 23 65 6e 64 69 66 20 0a | 58 0a 58 2f 2a 20 42 65 |#endif .|X.X/* Be|
|00003590| 74 74 65 72 20 61 63 63 | 65 73 73 20 74 6f 20 70 |tter acc|ess to p|
|000035a0| 61 72 61 6c 6c 65 6c 20 | 6d 65 6d 6f 72 79 20 61 |arallel |memory a|
|000035b0| 6c 6c 6f 63 61 74 69 6f | 6e 2e 20 20 20 20 20 20 |llocatio|n. |
|000035c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000035d0| 20 20 20 20 20 20 2a 2f | 0a 58 23 64 65 66 69 6e | */|.X#defin|
|000035e0| 65 20 50 61 72 61 6c 6c | 65 6c 54 79 70 65 4d 61 |e Parall|elTypeMa|
|000035f0| 6c 6c 6f 63 28 54 2c 20 | 6e 29 20 20 20 20 20 20 |lloc(T, |n) |
|00003600| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003610| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003620| 20 20 20 20 20 20 5c 0a | 58 20 20 20 20 20 20 20 | \.|X |
|00003630| 20 20 20 28 54 20 2a 29 | 20 28 50 61 72 61 6c 6c | (T *)| (Parall|
|00003640| 65 6c 43 61 6c 6c 6f 63 | 28 28 73 69 7a 65 5f 74 |elCalloc|((size_t|
|00003650| 29 28 6e 29 2a 73 69 7a | 65 6f 66 28 54 29 29 2c |)(n)*siz|eof(T)),|
|00003660| 20 31 29 0a 58 23 64 65 | 66 69 6e 65 20 50 61 72 | 1).X#de|fine Par|
|00003670| 61 6c 6c 65 6c 54 79 70 | 65 43 61 6c 6c 6f 63 28 |allelTyp|eCalloc(|
|00003680| 54 2c 20 6e 29 20 20 20 | 20 20 20 20 20 20 20 20 |T, n) | |
|00003690| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000036a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000036b0| 20 5c 0a 58 20 20 20 20 | 20 20 20 20 20 20 28 54 | \.X | (T|
|000036c0| 20 2a 29 20 28 50 61 72 | 61 6c 6c 65 6c 43 61 6c | *) (Par|allelCal|
|000036d0| 6c 6f 63 28 28 73 69 7a | 65 5f 74 29 28 6e 29 2c |loc((siz|e_t)(n),|
|000036e0| 20 73 69 7a 65 6f 66 28 | 54 29 29 29 0a 58 0a 58 | sizeof(|T))).X.X|
|000036f0| 23 65 6e 64 69 66 20 2f | 2a 20 5f 5f 50 41 52 41 |#endif /|* __PARA|
|00003700| 4c 4c 45 4c 5f 48 45 41 | 44 45 52 20 2a 2f 0a 58 |LLEL_HEA|DER */.X|
|00003710| 0a 58 2f 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X/*****|********|
|00003720| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003730| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003740| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003750| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 0a 58 |********|******.X|
|00003760| 20 45 6e 64 20 6f 66 20 | 70 61 72 61 6c 6c 65 6c | End of |parallel|
|00003770| 2e 68 0a 58 20 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.h.X ***|********|
|00003780| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00003790| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000037a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000037b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000037c0| 2f 0a 45 4e 44 5f 4f 46 | 5f 46 49 4c 45 0a 20 20 |/.END_OF|_FILE. |
|000037d0| 69 66 20 74 65 73 74 20 | 35 33 39 38 20 2d 6e 65 |if test |5398 -ne|
|000037e0| 20 60 77 63 20 2d 63 20 | 3c 27 70 61 72 61 6c 6c | `wc -c |<'parall|
|000037f0| 65 6c 2e 68 27 60 3b 20 | 74 68 65 6e 0a 20 20 20 |el.h'`; |then. |
|00003800| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 5c 22 27 70 | echo sh|ar: \"'p|
|00003810| 61 72 61 6c 6c 65 6c 2e | 68 27 5c 22 20 75 6e 70 |arallel.|h'\" unp|
|00003820| 61 63 6b 65 64 20 77 69 | 74 68 20 77 72 6f 6e 67 |acked wi|th wrong|
|00003830| 20 73 69 7a 65 21 0a 20 | 20 66 69 0a 20 20 23 20 | size!. | fi. # |
|00003840| 65 6e 64 20 6f 66 20 27 | 70 61 72 61 6c 6c 65 6c |end of '|parallel|
|00003850| 2e 68 27 0a 66 69 0a 69 | 66 20 74 65 73 74 20 2d |.h'.fi.i|f test -|
|00003860| 66 20 27 70 74 70 2e 63 | 27 20 2d 61 20 22 24 7b |f 'ptp.c|' -a "${|
|00003870| 31 7d 22 20 21 3d 20 22 | 2d 63 22 20 3b 20 74 68 |1}" != "|-c" ; th|
|00003880| 65 6e 20 0a 20 20 65 63 | 68 6f 20 73 68 61 72 3a |en . ec|ho shar:|
|00003890| 20 57 69 6c 6c 20 6e 6f | 74 20 63 6c 6f 62 62 65 | Will no|t clobbe|
|000038a0| 72 20 65 78 69 73 74 69 | 6e 67 20 66 69 6c 65 20 |r existi|ng file |
|000038b0| 5c 22 27 70 74 70 2e 63 | 27 5c 22 0a 65 6c 73 65 |\"'ptp.c|'\".else|
|000038c0| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 45 78 |. echo |shar: Ex|
|000038d0| 74 72 61 63 74 69 6e 67 | 20 5c 22 27 70 74 70 2e |tracting| \"'ptp.|
|000038e0| 63 27 5c 22 20 5c 28 31 | 33 39 37 20 63 68 61 72 |c'\" \(1|397 char|
|000038f0| 61 63 74 65 72 73 5c 29 | 0a 20 20 73 65 64 20 22 |acters\)|. sed "|
|00003900| 73 2f 5e 58 2f 2f 22 20 | 3e 27 70 74 70 2e 63 27 |s/^X//" |>'ptp.c'|
|00003910| 20 3c 3c 27 45 4e 44 5f | 4f 46 5f 46 49 4c 45 27 | <<'END_|OF_FILE'|
|00003920| 0a 58 2f 2a 0a 58 09 70 | 74 70 2e 63 20 50 61 72 |.X/*.X.p|tp.c Par|
|00003930| 61 6c 6c 65 6c 20 54 65 | 73 74 20 50 72 6f 67 72 |allel Te|st Progr|
|00003940| 61 6d 20 0a 58 09 28 43 | 29 20 31 39 39 33 20 4d |am .X.(C|) 1993 M|
|00003950| 61 63 71 75 61 72 69 65 | 20 55 6e 69 76 65 72 73 |acquarie| Univers|
|00003960| 69 74 79 0a 58 09 52 65 | 6c 65 61 73 65 64 20 77 |ity.X.Re|leased w|
|00003970| 69 74 68 6f 75 74 20 41 | 4e 59 20 77 61 72 72 61 |ithout A|NY warra|
|00003980| 6e 74 79 20 74 6f 20 74 | 68 65 20 70 75 62 6c 69 |nty to t|he publi|
|00003990| 63 20 64 6f 6d 61 69 6e | 2e 0a 58 09 57 72 69 74 |c domain|..X.Writ|
|000039a0| 74 65 6e 20 62 79 20 52 | 69 63 68 61 72 64 20 4c |ten by R|ichard L|
|000039b0| 61 72 6b 69 6e 2e 20 72 | 6c 61 72 6b 69 6e 40 7a |arkin. r|larkin@z|
|000039c0| 65 6e 2e 65 66 73 2e 6d | 71 2e 65 64 75 2e 61 75 |en.efs.m|q.edu.au|
|000039d0| 0a 58 0a 58 09 44 65 6d | 6f 6e 73 74 72 61 74 69 |.X.X.Dem|onstrati|
|000039e0| 6f 6e 20 6f 66 20 70 73 | 65 75 64 6f 28 3f 29 20 |on of ps|eudo(?) |
|000039f0| 70 61 72 61 6c 6c 65 6c | 20 70 72 6f 63 65 73 73 |parallel| process|
|00003a00| 69 6e 67 2e 0a 58 0a 58 | 09 43 61 6c 63 75 6c 61 |ing..X.X|.Calcula|
|00003a10| 74 65 73 20 61 20 74 6f | 74 61 6c 20 75 73 69 6e |tes a to|tal usin|
|00003a20| 67 20 68 6f 77 65 76 65 | 72 20 6d 61 6e 79 20 70 |g howeve|r many p|
|00003a30| 72 6f 63 65 73 73 65 73 | 20 61 72 65 20 72 65 71 |rocesses| are req|
|00003a40| 75 65 73 74 65 64 0a 58 | 09 6f 6e 20 74 68 65 20 |uested.X|.on the |
|00003a50| 63 6f 6d 6d 61 6e 64 20 | 6c 69 6e 65 2e 0a 58 0a |command |line..X.|
|00003a60| 58 09 65 2e 67 0a 58 0a | 58 09 70 74 70 2c 20 70 |X.e.g.X.|X.ptp, p|
|00003a70| 74 70 20 30 09 43 72 61 | 73 68 20 61 6e 64 20 64 |tp 0.Cra|sh and d|
|00003a80| 75 6d 70 20 63 6f 72 65 | 2e 0a 58 09 70 74 70 20 |ump core|..X.ptp |
|00003a90| 31 09 09 55 73 65 20 61 | 20 73 69 6e 67 6c 65 20 |1..Use a| single |
|00003aa0| 70 72 6f 63 65 73 73 2e | 0a 58 09 09 09 44 6f 65 |process.|.X...Doe|
|00003ab0| 73 20 6e 6f 74 20 75 73 | 65 20 6d 61 70 70 65 64 |s not us|e mapped|
|00003ac0| 20 66 69 6c 65 2e 0a 58 | 09 70 74 70 20 32 09 09 | file..X|.ptp 2..|
|00003ad0| 32 20 70 72 6f 63 65 73 | 73 65 73 20 75 73 65 64 |2 proces|ses used|
|00003ae0| 2e 20 54 68 69 73 20 6d | 61 79 20 6d 61 6b 65 20 |. This m|ay make |
|00003af0| 75 73 65 20 6f 66 0a 58 | 09 09 09 32 20 70 72 6f |use of.X|...2 pro|
|00003b00| 63 65 73 73 6f 72 73 20 | 61 73 20 77 65 6c 6c 20 |cessors |as well |
|00003b10| 69 66 20 74 68 65 20 6d | 61 63 68 69 6e 65 20 69 |if the m|achine i|
|00003b20| 73 20 70 61 72 61 6c 6c | 65 6c 2e 0a 58 09 70 74 |s parall|el..X.pt|
|00003b30| 70 20 31 32 38 09 09 57 | 69 73 68 20 49 20 68 61 |p 128..W|ish I ha|
|00003b40| 64 20 74 68 61 74 20 6d | 61 6e 79 20 70 72 6f 63 |d that m|any proc|
|00003b50| 65 73 73 6f 72 73 2e 0a | 58 0a 58 09 54 6f 20 63 |essors..|X.X.To c|
|00003b60| 6f 6d 70 69 6c 65 2e 2e | 2e 0a 58 09 09 09 67 63 |ompile..|..X...gc|
|00003b70| 63 20 2d 6f 20 70 74 70 | 20 70 74 70 2e 63 20 70 |c -o ptp| ptp.c p|
|00003b80| 61 72 61 6c 6c 65 6c 2e | 63 20 2d 44 53 55 4e 20 |arallel.|c -DSUN |
|00003b90| 2d 6c 6d 0a 58 0a 58 09 | 50 6f 72 74 61 62 69 6c |-lm.X.X.|Portabil|
|00003ba0| 69 74 79 2e 2e 2e 0a 58 | 09 57 6f 72 6b 73 20 6f |ity....X|.Works o|
|00003bb0| 6e 20 53 55 4e 4f 53 20 | 62 61 73 65 64 20 53 55 |n SUNOS |based SU|
|00003bc0| 4e 73 20 61 6e 64 20 4d | 53 44 4f 53 20 50 43 73 |Ns and M|SDOS PCs|
|00003bd0| 2c 20 64 6f 6e 27 74 20 | 6b 6e 6f 77 20 61 62 6f |, don't |know abo|
|00003be0| 75 74 20 61 6e 79 20 6f | 74 68 65 72 73 2e 0a 58 |ut any o|thers..X|
|00003bf0| 2a 2f 0a 58 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |*/.X.X#i|nclude "|
|00003c00| 70 61 72 61 6c 6c 65 6c | 2e 68 22 0a 58 0a 58 23 |parallel|.h".X.X#|
|00003c10| 64 65 66 69 6e 65 20 41 | 52 52 41 59 53 49 5a 45 |define A|RRAYSIZE|
|00003c20| 20 20 20 20 20 38 30 30 | 30 30 0a 58 0a 58 76 6f | 800|00.X.Xvo|
|00003c30| 69 64 20 6d 61 69 6e 28 | 69 6e 74 20 61 72 67 63 |id main(|int argc|
|00003c40| 2c 20 63 68 61 72 20 2a | 61 72 67 76 5b 5d 29 0a |, char *|argv[]).|
|00003c50| 58 7b 0a 58 20 20 6c 6f | 6e 67 20 69 6e 74 20 69 |X{.X lo|ng int i|
|00003c60| 2c 20 4d 69 6e 2c 20 4d | 61 78 3b 0a 58 20 20 66 |, Min, M|ax;.X f|
|00003c70| 6c 6f 61 74 20 2a 74 2c | 20 73 3b 0a 58 0a 58 20 |loat *t,| s;.X.X |
|00003c80| 20 50 61 72 61 6c 6c 65 | 6c 50 72 6f 63 65 73 73 | Paralle|lProcess|
|00003c90| 6f 72 73 28 61 74 6f 6c | 28 61 72 67 76 5b 31 5d |ors(atol|(argv[1]|
|00003ca0| 29 29 3b 09 09 09 0a 58 | 0a 58 20 20 74 20 3d 20 |));....X|.X t = |
|00003cb0| 50 61 72 61 6c 6c 65 6c | 54 79 70 65 43 61 6c 6c |Parallel|TypeCall|
|00003cc0| 6f 63 28 66 6c 6f 61 74 | 2c 20 41 52 52 41 59 53 |oc(float|, ARRAYS|
|00003cd0| 49 5a 45 29 3b 09 0a 58 | 0a 58 20 20 50 61 72 61 |IZE);..X|.X Para|
|00003ce0| 6c 6c 65 6c 53 70 6c 69 | 74 28 41 52 52 41 59 53 |llelSpli|t(ARRAYS|
|00003cf0| 49 5a 45 2c 20 26 4d 69 | 6e 2c 20 26 4d 61 78 29 |IZE, &Mi|n, &Max)|
|00003d00| 3b 09 0a 58 20 20 70 75 | 74 73 28 22 50 72 6f 63 |;..X pu|ts("Proc|
|00003d10| 65 73 73 69 6e 67 22 29 | 3b 0a 58 20 20 66 6f 72 |essing")|;.X for|
|00003d20| 20 28 69 20 3d 20 4d 69 | 6e 3b 20 69 20 3c 20 4d | (i = Mi|n; i < M|
|00003d30| 61 78 3b 20 69 2b 2b 29 | 0a 58 20 20 7b 0a 58 20 |ax; i++)|.X {.X |
|00003d40| 20 20 20 2f 2a 20 4e 6f | 6e 73 65 6e 73 65 20 63 | /* No|nsense c|
|00003d50| 61 6c 63 75 6c 61 74 69 | 6f 6e 2e 20 20 20 20 20 |alculati|on. |
|00003d60| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003d70| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00003d80| 20 20 20 20 20 20 20 20 | 20 20 2a 2f 0a 58 20 20 | | */.X |
|00003d90| 20 20 73 20 3d 20 28 66 | 6c 6f 61 74 29 20 69 20 | s = (f|loat) i |
|00003da0| 2f 20 31 30 30 30 30 2e | 30 20 2b 20 31 2e 30 3b |/ 10000.|0 + 1.0;|
|00003db0| 0a 58 20 20 20 20 74 5b | 69 5d 20 3d 20 6c 6f 67 |.X t[|i] = log|
|00003dc0| 28 61 62 73 28 6c 6f 67 | 28 28 64 6f 75 62 6c 65 |(abs(log|((double|
|00003dd0| 29 20 73 29 20 2a 20 6c | 6f 67 28 28 64 6f 75 62 |) s) * l|og((doub|
|00003de0| 6c 65 29 20 73 20 2a 20 | 73 29 20 2b 20 31 2e 30 |le) s * |s) + 1.0|
|00003df0| 29 29 20 2a 20 0a 58 20 | 20 20 20 20 20 20 20 20 |)) * .X | |
|00003e00| 20 20 6c 6f 67 28 61 62 | 73 28 6c 6f 67 28 28 64 | log(ab|s(log((d|
|00003e10| 6f 75 62 6c 65 29 20 73 | 20 2b 20 31 2e 30 29 20 |ouble) s| + 1.0) |
|00003e20| 2a 20 6c 6f 67 28 28 64 | 6f 75 62 6c 65 29 20 73 |* log((d|ouble) s|
|00003e30| 20 2a 20 73 20 2b 20 31 | 2e 30 29 20 2b 20 32 2e | * s + 1|.0) + 2.|
|00003e40| 30 29 29 3b 0a 58 20 20 | 7d 0a 58 20 20 50 61 72 |0));.X |}.X Par|
|00003e50| 61 6c 6c 65 6c 52 65 67 | 72 6f 75 70 28 29 3b 0a |allelReg|roup();.|
|00003e60| 58 0a 58 20 20 66 6f 72 | 20 28 69 20 3d 20 30 2c |X.X for| (i = 0,|
|00003e70| 20 73 20 3d 20 30 2e 30 | 3b 20 69 20 3c 20 41 52 | s = 0.0|; i < AR|
|00003e80| 52 41 59 53 49 5a 45 3b | 20 73 2b 3d 74 5b 69 2b |RAYSIZE;| s+=t[i+|
|00003e90| 2b 5d 29 3b 0a 58 20 20 | 70 72 69 6e 74 66 28 22 |+]);.X |printf("|
|00003ea0| 54 6f 74 61 6c 20 69 73 | 20 25 66 5c 6e 22 2c 20 |Total is| %f\n", |
|00003eb0| 73 29 3b 0a 58 0a 58 20 | 20 50 61 72 61 6c 6c 65 |s);.X.X | Paralle|
|00003ec0| 6c 46 72 65 65 28 74 29 | 3b 0a 58 7d 0a 58 0a 45 |lFree(t)|;.X}.X.E|
|00003ed0| 4e 44 5f 4f 46 5f 46 49 | 4c 45 0a 20 20 69 66 20 |ND_OF_FI|LE. if |
|00003ee0| 74 65 73 74 20 31 33 39 | 37 20 2d 6e 65 20 60 77 |test 139|7 -ne `w|
|00003ef0| 63 20 2d 63 20 3c 27 70 | 74 70 2e 63 27 60 3b 20 |c -c <'p|tp.c'`; |
|00003f00| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|00003f10| 61 72 3a 20 5c 22 27 70 | 74 70 2e 63 27 5c 22 20 |ar: \"'p|tp.c'\" |
|00003f20| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00003f30| 6f 6e 67 20 73 69 7a 65 | 21 0a 20 20 66 69 0a 20 |ong size|!. fi. |
|00003f40| 20 23 20 65 6e 64 20 6f | 66 20 27 70 74 70 2e 63 | # end o|f 'ptp.c|
|00003f50| 27 0a 66 69 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |'.fi.ech|o shar: |
|00003f60| 45 6e 64 20 6f 66 20 61 | 72 63 68 69 76 65 20 31 |End of a|rchive 1|
|00003f70| 20 5c 28 6f 66 20 31 5c | 29 2e 0a 63 70 20 2f 64 | \(of 1\|)..cp /d|
|00003f80| 65 76 2f 6e 75 6c 6c 20 | 61 72 6b 31 69 73 64 6f |ev/null |ark1isdo|
|00003f90| 6e 65 0a 4d 49 53 53 49 | 4e 47 3d 22 22 0a 66 6f |ne.MISSI|NG="".fo|
|00003fa0| 72 20 49 20 69 6e 20 31 | 20 3b 20 64 6f 0a 20 20 |r I in 1| ; do. |
|00003fb0| 20 20 69 66 20 74 65 73 | 74 20 21 20 2d 66 20 61 | if tes|t ! -f a|
|00003fc0| 72 6b 24 7b 49 7d 69 73 | 64 6f 6e 65 20 3b 20 74 |rk${I}is|done ; t|
|00003fd0| 68 65 6e 0a 09 4d 49 53 | 53 49 4e 47 3d 22 24 7b |hen..MIS|SING="${|
|00003fe0| 4d 49 53 53 49 4e 47 7d | 20 24 7b 49 7d 22 0a 20 |MISSING}| ${I}". |
|00003ff0| 20 20 20 66 69 0a 64 6f | 6e 65 0a 69 66 20 74 65 | fi.do|ne.if te|
|00004000| 73 74 20 22 24 7b 4d 49 | 53 53 49 4e 47 7d 22 20 |st "${MI|SSING}" |
|00004010| 3d 20 22 22 20 3b 20 74 | 68 65 6e 0a 20 20 20 20 |= "" ; t|hen. |
|00004020| 65 63 68 6f 20 59 6f 75 | 20 68 61 76 65 20 74 68 |echo You| have th|
|00004030| 65 20 61 72 63 68 69 76 | 65 2e 0a 20 20 20 20 72 |e archiv|e.. r|
|00004040| 6d 20 2d 66 20 61 72 6b | 5b 31 2d 39 5d 69 73 64 |m -f ark|[1-9]isd|
|00004050| 6f 6e 65 0a 65 6c 73 65 | 0a 20 20 20 20 65 63 68 |one.else|. ech|
|00004060| 6f 20 59 6f 75 20 73 74 | 69 6c 6c 20 6d 75 73 74 |o You st|ill must|
|00004070| 20 75 6e 70 61 63 6b 20 | 74 68 65 20 66 6f 6c 6c | unpack |the foll|
|00004080| 6f 77 69 6e 67 20 61 72 | 63 68 69 76 65 73 3a 0a |owing ar|chives:.|
|00004090| 20 20 20 20 65 63 68 6f | 20 22 20 20 20 20 20 20 | echo| " |
|000040a0| 20 20 22 20 24 7b 4d 49 | 53 53 49 4e 47 7d 0a 66 | " ${MI|SSING}.f|
|000040b0| 69 0a 65 78 69 74 20 30 | 0a 65 78 69 74 20 30 20 |i.exit 0|.exit 0 |
|000040c0| 23 20 4a 75 73 74 20 69 | 6e 20 63 61 73 65 2e 2e |# Just i|n case..|
|000040d0| 2e 0a | |.. | |
+--------+-------------------------+-------------------------+--------+--------+