summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormenwen <menwenjun@gmail.com>2022-05-31 15:29:17 +0800
committerGitHub <noreply@github.com>2022-05-31 10:29:17 +0300
commit42fbf064d1448b44a149d55ba859109780725d01 (patch)
treea6cda26a6e404452f9e14c50d2e62ff6eab58940
parent805191c791e1f84618c1f69dacec27ac3fecd1e4 (diff)
downloadredis-42fbf064d1448b44a149d55ba859109780725d01.tar.gz
Add module API RM_MallocUsableSize (#10795)
This allows the module to know the usable size of an allocation it made, rather than the consumed size.
-rw-r--r--src/module.c7
-rw-r--r--src/redismodule.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/src/module.c b/src/module.c
index 84c10cdc9..3e5d06b6e 100644
--- a/src/module.c
+++ b/src/module.c
@@ -9762,6 +9762,12 @@ size_t RM_MallocSize(void* ptr) {
return zmalloc_size(ptr);
}
+/* Similar to RM_MallocSize, the difference is that RM_MallocUsableSize
+ * returns the usable size of memory by the module. */
+size_t RM_MallocUsableSize(void *ptr) {
+ return zmalloc_usable_size(ptr);
+}
+
/* Same as RM_MallocSize, except it works on RedisModuleString pointers.
*/
size_t RM_MallocSizeString(RedisModuleString* str) {
@@ -12566,6 +12572,7 @@ void moduleRegisterCoreAPI(void) {
REGISTER_API(GetBlockedClientReadyKey);
REGISTER_API(GetUsedMemoryRatio);
REGISTER_API(MallocSize);
+ REGISTER_API(MallocUsableSize);
REGISTER_API(MallocSizeString);
REGISTER_API(MallocSizeDict);
REGISTER_API(ScanCursorCreate);
diff --git a/src/redismodule.h b/src/redismodule.h
index 86c0169be..899bb519d 100644
--- a/src/redismodule.h
+++ b/src/redismodule.h
@@ -1161,6 +1161,7 @@ REDISMODULE_API int (*RedisModule_ExitFromChild)(int retcode) REDISMODULE_ATTR;
REDISMODULE_API int (*RedisModule_KillForkChild)(int child_pid) REDISMODULE_ATTR;
REDISMODULE_API float (*RedisModule_GetUsedMemoryRatio)() REDISMODULE_ATTR;
REDISMODULE_API size_t (*RedisModule_MallocSize)(void* ptr) REDISMODULE_ATTR;
+REDISMODULE_API size_t (*RedisModule_MallocUsableSize)(void *ptr) REDISMODULE_ATTR;
REDISMODULE_API size_t (*RedisModule_MallocSizeString)(RedisModuleString* str) REDISMODULE_ATTR;
REDISMODULE_API size_t (*RedisModule_MallocSizeDict)(RedisModuleDict* dict) REDISMODULE_ATTR;
REDISMODULE_API RedisModuleUser * (*RedisModule_CreateModuleUser)(const char *name) REDISMODULE_ATTR;
@@ -1494,6 +1495,7 @@ static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int
REDISMODULE_GET_API(KillForkChild);
REDISMODULE_GET_API(GetUsedMemoryRatio);
REDISMODULE_GET_API(MallocSize);
+ REDISMODULE_GET_API(MallocUsableSize);
REDISMODULE_GET_API(MallocSizeString);
REDISMODULE_GET_API(MallocSizeDict);
REDISMODULE_GET_API(CreateModuleUser);