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);