summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/node-snp.lmt
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkxl/node-snp.lmt')
-rw-r--r--tex/context/base/mkxl/node-snp.lmt69
1 files changed, 69 insertions, 0 deletions
diff --git a/tex/context/base/mkxl/node-snp.lmt b/tex/context/base/mkxl/node-snp.lmt
new file mode 100644
index 000000000..8c0237a5c
--- /dev/null
+++ b/tex/context/base/mkxl/node-snp.lmt
@@ -0,0 +1,69 @@
+if not modules then modules = { } end modules ['node-snp'] = {
+ version = 1.001,
+ comment = "companion to node-ini.mkiv",
+ author = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
+ copyright = "PRAGMA ADE / ConTeXt Development Team",
+ license = "see context related readme files"
+}
+
+if not nodes then
+ nodes = { } -- also loaded in mtx-timing
+end
+
+local snapshots = { }
+nodes.snapshots = snapshots
+
+local status = status
+
+local nodeusage = nodes.pool and nodes.pool.usage
+local nodestock = nodes.pool and nodes.pool.stock
+local clock = os.gettimeofday or os.clock -- should go in environment
+local lasttime = clock()
+local samples = { }
+
+function snapshots.takesample(comment)
+ if nodeusage then
+ local c = clock()
+ samples[#samples+1] = {
+ nodes = nodeusage(),
+ stock = nodestock(),
+ texcallbacks = status.getcallbackstate(),
+ mpcallbacks = mplib.getcallbackstate(),
+ backendcallbacks = backends.getcallbackstate(),
+ luavariables = status.getluastate(),
+ texvariables = status.gettexstate(),
+ comment = comment,
+ variables = {
+ lasttime = c,
+ elapsed = c - lasttime,
+ },
+ memories = {
+ pool = status.getpoolstate(),
+ hash = status.gethashstate(),
+ lookup = status.getlookupstate(),
+ node = status.getnodestate(),
+ token = status.gettokenstate(),
+ buffer = status.getbufferstate(),
+ input = status.getinputstate(),
+ file = status.getfilestate(),
+ nest = status.getneststate(),
+ parameter = status.getparameterstate(),
+ save = status.getsavestate(),
+ expand = status.getexpandstate(),
+ read = status.getreadstate(),
+ font = status.getfontstate(),
+ language = status.getlanguagestate(),
+ mark = status.getmarkstate(),
+ sparse = status.getsparsestate(),
+ },
+ }
+ end
+end
+
+function snapshots.getsamples()
+ return samples -- one return value !
+end
+
+function snapshots.resetsamples()
+ samples = { }
+end