h&S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) 2022 Tim EmiolaBSD3Tim Emiola  Safe-Inferredmem-infoTrue for the null charmem-infoTrue for the null char or any space#(c) 2022 Tim EmiolaBSD3Tim Emiola  Safe-Inferredmem-infoRepresents the user-specified choices extracted from the command line mem-info"Parses the command line arguments. mem-info7Specifies a command line that when parsed will provide    (c) 2022 Tim EmiolaBSD3Tim Emiola  Safe-Inferred"'  mem-info.Describes inaccuracies in the swap measurementmem-info not availablemem-info3accurate only considering each process in isolationmem-info-Describes inaccuracies in the RAM calculationmem-infono shared mem is reportedmem-infosome shared mem not reportedmem-info3accurate only considering each process in isolationmem-info;Gathers the inputs needed to generate a memory usage reportmem-infoRepresents a version of Linux kernelmem-infoOn linux kernels before smaps became available, there was no reliable way to determine how much of a processes memory was shared !http://lkml.org/lkml/2005/7/6/250mem-infoDetermines the version of the Linux kernel on the current system. mem-infoParses Text into a !mem-infoProvide Text that explains the "mem-infoProvide Text that explains the  #mem-infoExamine the target system for s and  s , and update bud reflect the findings.$mem-info Construct a  ReportBud from some  ProcessIDs>Generates values for the other fields by inspecting the systemThe result is Nothing only when the  KernelVersion cannot be determined  !"#$$ #!" (c) 2022 Tim EmiolaBSD3Tim Emiola  Safe-Inferred"';?mem-info6Represents per-process data read from /proc//smap-mem-info2Represents the memory metrics for a single process4mem-info1Represents the measured memory usage of a program6mem-infothe total shared memory in use7mem-infothe total private memory in use8mem-info.the number of processes running as the program9mem-infothe total swap memory in use:mem-infoRepresents the information about a process obtained from /proc//exe<mem-info2the path that the link /proc//exe resolves to=mem-info-a sanitized form of eiTarget; it removes the  (deleted) suffix>mem-infodoes eiTarget end with  (deleted)??mem-infoIndicates why F failedBmem-info9Represents the information about a process obtained from proc pid/statusFmem-info0Parses the content of /proc//status into a BGmem-info,Parses the target of /proc//exe into a :Hmem-infoCombine --, grouping them by the effective program nameImem-infoParse -' from the contents of /proc//statmJmem-infoParse -& from the contents of /proc//smap-.01/23456798:;<>=?@ABCDEFGHIJ456798H-.01/23JI:;<>=GFBCDE?@A(c) 2022 Tim EmiolaBSD3Tim Emiola  Safe-Inferred"c]mem-infoIdentifies a type as a label to use to index programs in the report outputThe label is also used to group related processes under a single program_mem-infoGenerates the text of a row displaying the metrics for a single command in the memory report`mem-infoGenerates the text showing the overall memory in the memory reportamem-info=Generates the text of the printed header of the memory report]^_`a]^a`_(c) 2023 Tim EmiolaBSD3Tim Emiola  Safe-Inferred "'imem-info(Functions that generate the report indexjmem-infoRepresents reasons a specified pid may not have memory records.qmem-info??@ABCDEFFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mem-info-0.1.0.0-inplaceSystem.MemInfoSystem.MemInfo.ChoicesSystem.MemInfo.SysInfoSystem.MemInfo.ProcSystem.MemInfo.PrintSystem.MemInfo.PreludebaseSystem.Posix.Types ProcessIDChoiceschoiceSplitArgschoiceOnlyTotal choiceByPidchoiceShowSwapchoiceWatchSecschoicePidsToShow getChoicescmdInfo $fEqChoices $fShowChoicesSwapFlawNoSwapExactForIsolatedSwapRamFlaw NoSharedMem SomeSharedMemExactForIsolatedMem ReportBudrbPidsrbKernelrbHasPss rbHasSwapPss rbHasSmaps rbRamFlaws rbSwapFlaws KernelVersion fickleSharingreadKernelVersionparseKernelVersion fmtRamFlaws fmtSwapFlaws checkForFlaws mkReportBud $fEqReportBud$fShowReportBud $fEqSwapFlaw$fShowSwapFlaw $fOrdSwapFlaw $fEqRamFlaw $fShowRamFlaw $fOrdRamFlaw ProcUsage puPrivatepuShared puSharedHugepuSwappuMemIdMemUsagemuShared muPrivatemuCountmuSwapExeInfoeiTarget eiOriginal eiDeleted BadStatusNoCmdNoParent StatusInfosiNamesiParentparseStatusInfo parseExeInfoamassparseFromStatm parseFromSmap$fValidityStatusInfo$fValidityExeInfo $fEqSmapStats$fShowSmapStats $fEqProcUsage$fShowProcUsage $fEqSubTotal$fShowSubTotal $fEqMemUsage$fShowMemUsage $fEqExeInfo $fShowExeInfo$fGenericExeInfo $fEqBadStatus$fShowBadStatus$fEqStatusInfo$fShowStatusInfo$fGenericStatusInfo AsCmdName asCmdName fmtMemUsage fmtOverall fmtAsHeader$fAsCmdName(,)$fAsCmdNameText $fEqPower $fShowPower $fOrdPower $fEnumPower$fBoundedPowerIndexerLostPid NoExeFile NoStatusCmdNoStatusParent NoCmdLineBadStatmNoProcNotRunPidLost MissingPids NeedsRoot OddKernel NoRecords ProcNamerProcName printProcs printUsage' printUsageunfoldMemUsageAfterunfoldMemUsageAfter'unfoldMemUsage readForOnePid readMemUsage readMemUsage' nameAsFullCmdnameFromExeOnlynameForwithPiddropId $fEqNotRun $fShowNotRun $fEqLostPid $fShowLostPidisNull isNullOrSpace Data.Foldablefoldl' ghc-bignumGHC.Num.NaturalNaturalGHC.BaseNonEmpty:|Data.List.NonEmptynonEmpty Control.MonadunlessfilterMGHC.IO.StdHandlesstderr GHC.Conc.IO threadDelaySystem.IO.ErrorisPermissionErrorisDoesNotExistErrorControl.Exception.BasehandleCPidGHC.IOthrowIOfoldlM Text.Read readMaybe readEither GHC.UnicodeisSpace Data.MaybemapMaybeisJustwhen)containers-0.6.5.1-LoBk5T9QwNLBqnqOQVtDChData.Map.InternalMapData.Set.InternalSet'filepath-1.4.2.2-6p9i7UVgwNkJSAd7RCsAeCSystem.FilePath.Posix takeBaseName#text-1.2.5.0-Ii1ClGOyJQ8AmHgulTPR3fData.Text.InternalText'hashable-1.4.2.0-G5YqpHaPortEETf17Yn1GbData.Hashable.ClasshashData.Text.Encoding decodeUtf8'directory-1.3.6.2-Ku5puZ0QEwLre8D8zuZoMSystem.Directory doesFileExistgetSymbolicLinkTarget listDirectory readUtf8Text SmapStats pidExeExists