123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100(* This file is part of Luv, released under the MIT license. See LICENSE.md for
details, or visit https://github.com/aantron/luv/blob/master/LICENSE.md. *)letresident_set_memory()=letsize=Ctypes.(allocatesize_tUnsigned.Size_t.zero)inC.Functions.Resource.resident_set_memorysize|>Error.to_result(Ctypes.(!@)size)letuptime()=lettime=Ctypes.(allocatedouble)0.inC.Functions.Resource.uptimetime|>Error.to_result(Ctypes.(!@)time)letloadavg()=letaverages=Ctypes.(allocate_ndouble)~count:3inC.Functions.Resource.loadavgaverages;letopenCtypesin(!@averages,!@(averages+@1),!@(averages+@2))letfree_memory=C.Functions.Resource.free_memorylettotal_memory=C.Functions.Resource.total_memoryletconstrained_memory()=letresult=C.Functions.Resource.constrained_memory()inifresult=Unsigned.UInt64.zerothenNoneelseSomeresultmodulePriority=C.Types.Resource.Priorityletgetprioritypid=letpriority=Ctypes.(allocateint)0inC.Functions.Resource.getprioritypidpriority|>Error.to_result(Ctypes.(!@)priority)letsetprioritypidpriority=C.Functions.Resource.setprioritypidpriority|>Error.to_result()typetimeval={sec:Signed.Long.t;usec:Signed.Long.t;}typerusage={utime:timeval;stime:timeval;maxrss:Unsigned.uint64;ixrss:Unsigned.uint64;idrss:Unsigned.uint64;isrss:Unsigned.uint64;minflt:Unsigned.uint64;majflt:Unsigned.uint64;nswap:Unsigned.uint64;inblock:Unsigned.uint64;oublock:Unsigned.uint64;msgsnd:Unsigned.uint64;msgrcv:Unsigned.uint64;nsignals:Unsigned.uint64;nvcsw:Unsigned.uint64;nivcsw:Unsigned.uint64;}letload_timevalc_timeval={sec=Ctypes.getfc_timevalC.Types.Resource.Timeval.sec;usec=Ctypes.getfc_timevalC.Types.Resource.Timeval.usec;}letgetrusage()=letc_rusage=Ctypes.makeC.Types.Resource.Rusage.tinC.Functions.Resource.getrusage(Ctypes.addrc_rusage)|>Error.to_result_lazybeginfun()->letmoduleRU=C.Types.Resource.Rusageinletfieldname=Ctypes.getfc_rusagenamein{utime=fieldRU.utime|>load_timeval;stime=fieldRU.stime|>load_timeval;maxrss=fieldRU.maxrss;ixrss=fieldRU.ixrss;idrss=fieldRU.idrss;isrss=fieldRU.isrss;minflt=fieldRU.minflt;majflt=fieldRU.majflt;nswap=fieldRU.nswap;inblock=fieldRU.inblock;oublock=fieldRU.oublock;msgsnd=fieldRU.msgsnd;msgrcv=fieldRU.msgrcv;nsignals=fieldRU.nsignals;nvcsw=fieldRU.nvcsw;nivcsw=fieldRU.nivcsw;}end