summary refs log tree commit diff
path: root/src/include-local/s6-ps.h
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2023-02-11 08:13:14 +0000
committerLaurent Bercot <ska@appnovation.com>2023-02-11 08:13:14 +0000
commit2f8984613e17f9e5971ec338240b0bb6d2dd1cc6 (patch)
tree4061a64dc5ee8c415ca249ec1852cfc666e1468b /src/include-local/s6-ps.h
parent3caba3fd8f3825544c065ec62e4298c6edc76b28 (diff)
downloads6-linux-utils-2f8984613e17f9e5971ec338240b0bb6d2dd1cc6.tar.gz
s6-linux-utils-2f8984613e17f9e5971ec338240b0bb6d2dd1cc6.tar.xz
s6-linux-utils-2f8984613e17f9e5971ec338240b0bb6d2dd1cc6.zip
Code refactor; only s6-ps has remaining globals now
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/include-local/s6-ps.h')
-rw-r--r--src/include-local/s6-ps.h159
1 files changed, 159 insertions, 0 deletions
diff --git a/src/include-local/s6-ps.h b/src/include-local/s6-ps.h
new file mode 100644
index 0000000..7c963f1
--- /dev/null
+++ b/src/include-local/s6-ps.h
@@ -0,0 +1,159 @@
+/* ISC license. */
+
+#ifndef S6PS_H
+#define S6PS_H
+
+#include <sys/types.h>
+#include <stdint.h>
+
+#include <skalibs/uint64.h>
+#include <skalibs/stralloc.h>
+#include <skalibs/tai.h>
+#include <skalibs/avltreen.h>
+
+
+typedef struct dius_s dius_t, *dius_t_ref ;
+struct dius_s
+{
+  uint32_t left ;
+  size_t right ;
+} ;
+#define DIUS_ZERO { .left = 0, .right = 0 }
+
+typedef enum pfield_e pfield_t, *pfield_t_ref ;
+enum pfield_e
+{
+  PFIELD_PID,
+  PFIELD_COMM,
+  PFIELD_STATE,
+  PFIELD_PPID,
+  PFIELD_PGRP,
+  PFIELD_SESSION,
+  PFIELD_TTY,
+  PFIELD_TPGID, 
+  PFIELD_UTIME,
+  PFIELD_STIME,
+  PFIELD_CUTIME,
+  PFIELD_CSTIME,
+  PFIELD_PRIO,
+  PFIELD_NICE,
+  PFIELD_THREADS,
+  PFIELD_START,
+  PFIELD_VSIZE,
+  PFIELD_RSS,
+  PFIELD_RSSLIM,
+  PFIELD_CPUNO,
+  PFIELD_RTPRIO,
+  PFIELD_RTPOLICY,
+  PFIELD_USER,
+  PFIELD_GROUP,
+  PFIELD_PMEM,
+  PFIELD_WCHAN,
+  PFIELD_ARGS,
+  PFIELD_ENV,
+  PFIELD_PCPU,
+  PFIELD_TTIME,
+  PFIELD_CTTIME,
+  PFIELD_TSTART,
+  PFIELD_CPCPU,
+  PFIELD_PHAIL
+} ;
+
+extern char const *const *s6ps_opttable ;
+extern char const *const *s6ps_fieldheaders ;
+
+typedef struct pscan_s pscan_t, *pscan_t_ref ;
+struct pscan_s
+{
+  stralloc data ;
+  pid_t pid ;
+  signed int height ;
+  size_t statlen ;
+  size_t commlen ;
+  size_t cmdlen ;
+  size_t envlen ;
+  uid_t uid ;
+  gid_t gid ;
+  pid_t ppid ;
+  unsigned int state ;
+  pid_t pgrp ;
+  pid_t session ;
+  dev_t ttynr ;
+  pid_t tpgid ;
+  uint64_t utime ;
+  uint64_t stime ;
+  uint64_t cutime ;
+  uint64_t cstime ;
+  int prio ;
+  int nice ;
+  uint64_t threads ;
+  uint64_t start ;
+  uint64_t vsize ;
+  uint64_t rss ;
+  uint64_t rsslim ;
+  uint64_t wchan ;
+  uint64_t cpuno ;
+  uint64_t rtprio ;
+  uint64_t policy ;
+} ;
+
+#define PSCAN_ZERO \
+{ \
+  .data = STRALLOC_ZERO, \
+  .pid = 0, \
+  .height = 0, \
+  .statlen = 0, \
+  .commlen = 0, \
+  .cmdlen = 0, \
+  .envlen = 0, \
+  .uid = 0, \
+  .gid = 0, \
+  .ppid = 0, \
+  .state = 0, \
+  .pgrp = 0, \
+  .session = 0, \
+  .ttynr = 0, \
+  .tpgid = -1, \
+  .utime = 0, \
+  .stime = 0, \
+  .cutime = 0, \
+  .cstime = 0, \
+  .prio = 0, \
+  .nice = 0, \
+  .threads = 0, \
+  .start = 0, \
+  .vsize = 0, \
+  .rss = 0, \
+  .rsslim = 0, \
+  .wchan = 0, \
+  .cpuno = 0, \
+  .rtprio = 0, \
+  .policy = 0 \
+}
+
+extern int s6ps_statparse (pscan_t *) ;
+extern void s6ps_otree (pscan_t *, unsigned int, avltreen *, unsigned int *) ;
+
+extern int s6ps_compute_boottime (pscan_t *, unsigned int) ;
+
+typedef int pfieldfmt_func (pscan_t *, size_t *, size_t *) ;
+typedef pfieldfmt_func *pfieldfmt_func_ref ;
+
+extern pfieldfmt_func_ref *s6ps_pfield_fmt ;
+
+extern void *left_dtok (unsigned int, void *) ;
+extern int uint32_cmp (void const *, void const *, void *) ;
+extern int s6ps_pwcache_init (void) ;
+extern void s6ps_pwcache_finish (void) ;
+extern int s6ps_pwcache_lookup (stralloc *, uid_t) ;
+extern int s6ps_grcache_init (void) ;
+extern void s6ps_grcache_finish (void) ;
+extern int s6ps_grcache_lookup (stralloc *, gid_t) ;
+extern int s6ps_ttycache_init (void) ;
+extern void s6ps_ttycache_finish (void) ;
+extern int s6ps_ttycache_lookup (stralloc *, dev_t) ;
+extern int s6ps_wchan_init (char const *) ;
+extern void s6ps_wchan_finish (void) ;
+extern int s6ps_wchan_lookup (stralloc *, uint64_t) ;
+
+#endif