From d7e3c2a0fc583b6128e41e2fcd6295ece10b89f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 4 Sep 2025 01:37:37 +0300 Subject: [PATCH] mdbx: add internal `ptr2page()`. --- src/cogs.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/cogs.h b/src/cogs.h index 2629bae6..186dbd52 100644 --- a/src/cogs.h +++ b/src/cogs.h @@ -254,6 +254,13 @@ MDBX_NOTHROW_PURE_FUNCTION static inline const page_t *payload2page(const void * return container_of(data, page_t, entries); } +MDBX_NOTHROW_PURE_FUNCTION static inline const page_t *ptr2page(const MDBX_env *env, const void *ptr) { + eASSERT(env, + ptr_dist(ptr, env->dxb_mmap.base) >= 0 && (size_t)ptr_dist(ptr, env->dxb_mmap.base) < env->dxb_mmap.limit); + const uintptr_t mask = env->ps - 1; + return (page_t *)((uintptr_t)ptr & ~mask); +} + MDBX_NOTHROW_PURE_FUNCTION static inline meta_t *page_meta(page_t *mp) { return (meta_t *)page2payload(mp); } MDBX_NOTHROW_PURE_FUNCTION static inline size_t page_numkeys(const page_t *mp) {