about summary refs log tree commit diff
path: root/src/libs6ps/s6ps_cache.c
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2023-02-12 01:36:13 +0000
committerLaurent Bercot <ska@appnovation.com>2023-02-12 01:36:13 +0000
commit4d41f0d5e871b86b8f56339a99cfb1b80fbb420c (patch)
tree0446c51aeb07d8ef817fe3cdc53955dc7fe3a09d /src/libs6ps/s6ps_cache.c
parent2f8984613e17f9e5971ec338240b0bb6d2dd1cc6 (diff)
downloads6-linux-utils-4d41f0d5e871b86b8f56339a99cfb1b80fbb420c.tar.gz
s6-linux-utils-4d41f0d5e871b86b8f56339a99cfb1b80fbb420c.tar.xz
s6-linux-utils-4d41f0d5e871b86b8f56339a99cfb1b80fbb420c.zip
Deglobalize s6-ps
Signed-off-by: Laurent Bercot <ska@appnovation.com>
Diffstat (limited to 'src/libs6ps/s6ps_cache.c')
-rw-r--r--src/libs6ps/s6ps_cache.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/libs6ps/s6ps_cache.c b/src/libs6ps/s6ps_cache.c
new file mode 100644
index 0000000..0ef438a
--- /dev/null
+++ b/src/libs6ps/s6ps_cache.c
@@ -0,0 +1,34 @@
+/* ISC license. */
+
+#include <stdint.h>
+
+#include <skalibs/genalloc.h>
+#include <skalibs/avltree.h>
+
+#include "s6ps.h"
+#include "s6ps-internal.h"
+
+static void *left_dtok (unsigned int d, void *x)
+{
+  return (void *)&genalloc_s(dius_t, (genalloc *)x)[d].left ;
+}
+
+int s6ps_uint32_cmp (void const *a, void const *b, void *x)
+{
+  uint32_t aa = *(uint32_t *)a ;
+  uint32_t bb = *(uint32_t *)b ;
+  (void)x ;
+  return (aa < bb) ? -1 : (aa > bb) ;
+}
+
+int s6ps_cache_init (s6ps_cache_t *cache)
+{
+  avltree_init(&cache->tree, 5, 3, 8, &left_dtok, &s6ps_uint32_cmp, &cache->index) ;
+  return 1 ;
+}
+
+void s6ps_cache_finish (s6ps_cache_t *cache)
+{
+  avltree_free(&cache->tree) ;
+  genalloc_free(dius_t, &cache->index) ;
+}