Skip to content

Commit ebc768f

Browse files
committedMar 31, 2025
wip fragment_size
1 parent 3c23c47 commit ebc768f

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed
 

‎apc_sma.c

+2-1
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ static APC_HOTSPOT size_t sma_deallocate(void* shmaddr, size_t offset)
288288
/* }}} */
289289

290290
/* {{{ APC SMA API */
291-
PHP_APCU_API void apc_sma_init(apc_sma_t* sma, void** data, apc_sma_expunge_f expunge, int32_t num, size_t size, char *mask) {
291+
PHP_APCU_API void apc_sma_init(apc_sma_t* sma, void** data, apc_sma_expunge_f expunge, int32_t num, size_t size, size_t fragment_size, char *mask) {
292292
int32_t i;
293293

294294
if (sma->initialized) {
@@ -298,6 +298,7 @@ PHP_APCU_API void apc_sma_init(apc_sma_t* sma, void** data, apc_sma_expunge_f ex
298298
sma->initialized = 1;
299299
sma->expunge = expunge;
300300
sma->data = data;
301+
sma->fragment_size = fragment_size > 0 ? fragment_size : MINBLOCKSIZE;
301302

302303
#ifdef APC_MMAP
303304
/*

‎apc_sma.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ typedef struct _apc_sma_t {
7575
/* info */
7676
int32_t num; /* number of segments */
7777
size_t size; /* segment size */
78+
size_t fragment_size; /* expected minimum size of allocated fragments */
7879
int32_t last; /* last segment */
7980

8081
/* segments */
@@ -88,7 +89,7 @@ typedef struct _apc_sma_t {
8889
*/
8990
PHP_APCU_API void apc_sma_init(
9091
apc_sma_t* sma, void** data, apc_sma_expunge_f expunge,
91-
int32_t num, size_t size, char *mask);
92+
int32_t num, size_t size, size_t fragment_size, char *mask);
9293

9394
/*
9495
* apc_sma_detach will detach from shared memory and cleanup local allocations.

‎php_apc.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ static PHP_MINIT_FUNCTION(apcu)
247247
/* initialize shared memory allocator */
248248
apc_sma_init(
249249
&apc_sma, (void **) &apc_user_cache, (apc_sma_expunge_f) apc_cache_default_expunge,
250-
APCG(shm_segments), APCG(shm_size), mmap_file_mask);
250+
APCG(shm_segments), APCG(shm_size), ALIGNWORD(sizeof(apc_cache_entry_t)), mmap_file_mask);
251251

252252
REGISTER_LONG_CONSTANT(APC_SERIALIZER_CONSTANT, (zend_long)&_apc_register_serializer, CONST_PERSISTENT | CONST_CS);
253253

0 commit comments

Comments
 (0)