summaryrefslogtreecommitdiff
path: root/src/lib/ssm/ssm.h.in
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2026-05-01 17:31:27 +0200
committerSander Vrijders <sander@ouroboros.rocks>2026-05-20 08:17:05 +0200
commitaa3901535516d49c7a881c9c06e3582e1a6f1ada (patch)
treec43a881d645060601aa5176a85bd57350fe0cd3f /src/lib/ssm/ssm.h.in
parent3be3360349ee823531d6c3e53b188a7e8af2b761 (diff)
downloadouroboros-aa3901535516d49c7a881c9c06e3582e1a6f1ada.tar.gz
ouroboros-aa3901535516d49c7a881c9c06e3582e1a6f1ada.zip
lib: Fix pool_sharding_test
The test was not correctly taking the correct size class. Moved the select_size_class to the common header so tests can use it. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/lib/ssm/ssm.h.in')
-rw-r--r--src/lib/ssm/ssm.h.in18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/lib/ssm/ssm.h.in b/src/lib/ssm/ssm.h.in
index b9246c8b..4ac9a21b 100644
--- a/src/lib/ssm/ssm.h.in
+++ b/src/lib/ssm/ssm.h.in
@@ -164,6 +164,24 @@ struct _ssm_pool_hdr {
struct _ssm_size_class size_classes[SSM_POOL_MAX_CLASSES];
};
+#define SSM_PK_BUFF_TOTALSPACE (SSM_PK_BUFF_HEADSPACE + SSM_PK_BUFF_TAILSPACE)
+static __inline__ int select_size_class(struct _ssm_pool_hdr * hdr,
+ size_t len)
+{
+ size_t sz;
+ int i;
+
+ sz = sizeof(struct ssm_pk_buff) + SSM_PK_BUFF_TOTALSPACE + len;
+
+ for (i = 0; i < SSM_POOL_MAX_CLASSES; i++) {
+ struct _ssm_size_class * sc = &hdr->size_classes[i];
+ if (sc->object_size > 0 && sz <= sc->object_size)
+ return i;
+ }
+
+ return -1;
+}
+
#ifdef __cplusplus
}
#endif