DIRECTORY IO, MakeDo, MakeDoBasics, MakeDoPorting, Rope, SystemNames USING [UserCedarDir], UserProfile; MakeDoCedarImpl: CEDAR MONITOR IMPORTS IO, SystemNames, UserProfile EXPORTS MakeDo, MakeDoPorting, MakeDoBasics ~ BEGIN OPEN MakeDo; ROPE: TYPE ~ Rope.ROPE; NYI: ERROR; MaxProcessAllocationDefault: INT ~ 2; -- small because of limit on number of open files!! -- existsFSWatch: PUBLIC BOOL ¬ FALSE; defaultReporter: PUBLIC ROPE ¬ "files"; logPath: PUBLIC ROPE ¬ SystemNames.UserCedarDir[NIL]; verifyAttachments: PUBLIC BOOL ¬ FALSE; StartFSWatchers: PUBLIC PROC = { ERROR NYI; }; JobResources: TYPE ~ MakeDoBasics.JobResources; processUse: INTEGER ¬ 0; maxProcessUse: INTEGER ¬ 0; processAllocation: INTEGER ¬ 0; ForkParms: TYPE ~ REF ForkParmsRep; ForkParmsRep: PUBLIC TYPE ~ RECORD [ pa: INT ]; ShouldFork: PUBLIC PROC RETURNS [fork: BOOL, valid: BOOL ¬ FALSE, resources: JobResources ¬ NIL] ~ { IF processAllocation = 0 THEN { fork ¬ FALSE; valid ¬ TRUE; RETURN; }; IF processUse { processAllocation ¬ fp.pa; } ENDCASE => ERROR; RETURN}; ForkParmsFromStream: PUBLIC PROC [in: IO.STREAM] RETURNS [parms: ForkParms] ~ { pa: NAT ~ in.GetInt[]; RETURN [NEW [ForkParmsRep ¬ [pa: pa]]]; }; ForkParmsFromProfile: PUBLIC PROC RETURNS [ForkParms] ~ { pa: INT ~ UserProfile.Number["MakeDo.AuxilliaryProcessAllocation", MaxProcessAllocationDefault]; RETURN [NEW [ForkParmsRep ¬ [pa: pa]]]; }; END. ˜ MakeDoCedarImpl.mesa Copyright Σ 1988, 1991 by Xerox Corporation. All rights reserved. Eduardo Pelegri-Llopart, March 17, 1989 9:57:18 am PST Implementation of (P)Cedar-dependent actions Willie-s, September 27, 1991 2:03 pm PDT File Manipulation logPath: PUBLIC ROPE _ "/usr/tmp/"; Process Execution And Forking Estimation No real information associated in PCedar (yet) processAllocation is a hard limit on the number of processes Fork Enquires (need not be protected, only one going at a time?) Fork Parameter Manipulation -- INNER -- already protected by MakeDoBasicImpl.GetForkParms[] -- INNER -- already protected by MakeDoBasicImpl.GetForkParms[] ΚΩ•NewlineDelimiter –(cedarcode) style™šœ™Icodešœ Οeœ7™BK™6K™K™,K™(K™—šΟk ˜ K˜K˜K˜ K˜K˜Kšœ žœ˜!Kšœ ˜ K˜—KšΠlnœžœž˜Kšžœžœ˜$Kšžœ$˜+šœžœžœ˜K˜Kšžœžœžœ˜Kšžœž˜ K˜KšΟnœžœΟc6˜]K˜head™Kšœžœžœžœ˜#Kšœžœžœ ˜'Kšœ žœžœžœ˜5Kšœ žœžœ™#Kšœžœžœžœ˜'K˜š œž œ˜ Kšžœžœ˜ K˜—K˜—™(šœžœ˜/K™.—K˜Kšœ žœ˜Kšœžœ˜K˜šœžœ˜Kšœ<™<—Kšœ žœžœ˜#šœž œžœ˜$Kšœž˜Kšœ˜—K˜K™@K™š  œžœžœžœžœ žœžœžœ˜dšžœžœ˜Kšœžœ˜ Kšœžœ˜ Kšžœ˜Kšœ˜—šžœžœ˜&Kšœžœ˜ Kšœžœ˜ Kšœ˜Kšœžœ˜/Kšœ˜—K˜——˜š  œžœžœ˜/Kšœ˜K˜—K˜K™K™š œžœžœžœ˜AK™?Kšœžœ˜Kšœ˜Kšžœžœ˜'Kšœ˜—K˜š œžœžœ˜9K™?šžœ ž ˜šœžœ˜Kšœ˜K˜—Kšžœžœ˜—Kšžœ˜—K˜š  œžœžœžœžœžœ˜OKšœžœ˜Kšžœžœ˜'K˜K˜—š œžœžœžœ˜9Kšœžœ< œ˜`Kšžœžœ˜'K˜——K˜K˜—Kšžœ˜K˜—…—R Γ