Fix compile failures and warnings on Windows from XtraDB "shm buffer pool" patch.
(It is not legal C to do pointer arithmetics on void *).
This commit is contained in:
parent
c507c02808
commit
7ff256d3c2
@ -452,6 +452,8 @@ buf_buddy_relocate(
|
||||
buf_page_t* bpage;
|
||||
const ulint size = BUF_BUDDY_LOW << i;
|
||||
ullint usec = ut_time_us(NULL);
|
||||
ulint space;
|
||||
ulint page_no;
|
||||
|
||||
//ut_ad(buf_pool_mutex_own());
|
||||
ut_ad(mutex_own(&zip_free_mutex));
|
||||
@ -490,9 +492,9 @@ buf_buddy_relocate(
|
||||
pool), so there is nothing wrong about this. The
|
||||
mach_read_from_4() calls here will only trigger bogus
|
||||
Valgrind memcheck warnings in UNIV_DEBUG_VALGRIND builds. */
|
||||
ulint space = mach_read_from_4(
|
||||
space = mach_read_from_4(
|
||||
(const byte*) src + FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID);
|
||||
ulint page_no = mach_read_from_4(
|
||||
page_no = mach_read_from_4(
|
||||
(const byte*) src + FIL_PAGE_OFFSET);
|
||||
/* Suppress Valgrind warnings about conditional jump
|
||||
on uninitialized value. */
|
||||
|
@ -792,7 +792,7 @@ buf_block_reuse(
|
||||
ptrdiff_t frame_offset)
|
||||
{
|
||||
/* block_init */
|
||||
block->frame = ((void*)(block->frame) + frame_offset);
|
||||
block->frame = ((char*)(block->frame) + frame_offset);
|
||||
|
||||
UNIV_MEM_DESC(block->frame, UNIV_PAGE_SIZE, block);
|
||||
|
||||
@ -809,7 +809,7 @@ buf_block_reuse(
|
||||
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
|
||||
|
||||
if (block->page.zip.data)
|
||||
block->page.zip.data = ((void*)(block->page.zip.data) + frame_offset);
|
||||
block->page.zip.data = ((char*)(block->page.zip.data) + frame_offset);
|
||||
|
||||
block->is_hashed = FALSE;
|
||||
|
||||
@ -876,17 +876,17 @@ buf_chunk_init(
|
||||
"InnoDB: You should ensure no change of InnoDB files while using innodb_buffer_pool_shm_key.\n");
|
||||
|
||||
/* FIXME: This is vague id still */
|
||||
binary_id = (ulint) ((void*)mtr_commit - (void*)btr_root_get)
|
||||
+ (ulint) ((void*)os_get_os_version - (void*)buf_calc_page_new_checksum)
|
||||
+ (ulint) ((void*)page_dir_find_owner_slot - (void*)dfield_data_is_binary_equal)
|
||||
+ (ulint) ((void*)que_graph_publish - (void*)dict_casedn_str)
|
||||
+ (ulint) ((void*)read_view_oldest_copy_or_open_new - (void*)fil_space_get_version)
|
||||
+ (ulint) ((void*)rec_get_n_extern_new - (void*)fsp_get_size_low)
|
||||
+ (ulint) ((void*)row_get_trx_id_offset - (void*)ha_create_func)
|
||||
+ (ulint) ((void*)srv_set_io_thread_op_info - (void*)thd_is_replication_slave_thread)
|
||||
+ (ulint) ((void*)mutex_create_func - (void*)ibuf_inside)
|
||||
+ (ulint) ((void*)trx_set_detailed_error - (void*)lock_check_trx_id_sanity)
|
||||
+ (ulint) ((void*)ut_time - (void*)mem_heap_strdup);
|
||||
binary_id = (ulint) ((char*)mtr_commit - (char *)btr_root_get)
|
||||
+ (ulint) ((char *)os_get_os_version - (char *)buf_calc_page_new_checksum)
|
||||
+ (ulint) ((char *)page_dir_find_owner_slot - (char *)dfield_data_is_binary_equal)
|
||||
+ (ulint) ((char *)que_graph_publish - (char *)dict_casedn_str)
|
||||
+ (ulint) ((char *)read_view_oldest_copy_or_open_new - (char *)fil_space_get_version)
|
||||
+ (ulint) ((char *)rec_get_n_extern_new - (char *)fsp_get_size_low)
|
||||
+ (ulint) ((char *)row_get_trx_id_offset - (char *)ha_create_func)
|
||||
+ (ulint) ((char *)srv_set_io_thread_op_info - (char *)thd_is_replication_slave_thread)
|
||||
+ (ulint) ((char *)mutex_create_func - (char *)ibuf_inside)
|
||||
+ (ulint) ((char *)trx_set_detailed_error - (char *)lock_check_trx_id_sanity)
|
||||
+ (ulint) ((char *)ut_time - (char *)mem_heap_strdup);
|
||||
|
||||
chunk->mem = os_shm_alloc(&chunk->mem_size, srv_buffer_pool_shm_key, &is_new);
|
||||
|
||||
@ -902,7 +902,7 @@ buf_chunk_init(
|
||||
|
||||
shm_info = chunk->mem;
|
||||
|
||||
zip_hash_tmp = (hash_table_t*)((void*)chunk->mem + chunk->mem_size - zip_hash_mem_size);
|
||||
zip_hash_tmp = (hash_table_t*)((char *)chunk->mem + chunk->mem_size - zip_hash_mem_size);
|
||||
|
||||
if (is_new) {
|
||||
strncpy(shm_info->head_str, BUF_SHM_INFO_HEAD, 8);
|
||||
@ -959,7 +959,7 @@ buf_chunk_init(
|
||||
ut_a(shm_info->zip_hash_n == zip_hash_n);
|
||||
|
||||
/* check checksum */
|
||||
checksum = ut_fold_binary(chunk->mem + sizeof(buf_shm_info_t),
|
||||
checksum = ut_fold_binary((byte*)chunk->mem + sizeof(buf_shm_info_t),
|
||||
chunk->mem_size - sizeof(buf_shm_info_t));
|
||||
if (shm_info->checksum != checksum) {
|
||||
fprintf(stderr,
|
||||
@ -992,7 +992,7 @@ buf_chunk_init(
|
||||
/* Allocate the block descriptors from
|
||||
the start of the memory block. */
|
||||
if (srv_buffer_pool_shm_key) {
|
||||
chunk->blocks = chunk->mem + sizeof(buf_shm_info_t);
|
||||
chunk->blocks = (buf_block_t*)((char*)chunk->mem + sizeof(buf_shm_info_t));
|
||||
} else {
|
||||
chunk->blocks = chunk->mem;
|
||||
}
|
||||
@ -1028,7 +1028,7 @@ buf_chunk_init(
|
||||
ptrdiff_t phys_offset;
|
||||
ptrdiff_t logi_offset;
|
||||
ptrdiff_t blocks_offset;
|
||||
void* previous_frame_address;
|
||||
byte* previous_frame_address;
|
||||
|
||||
if (chunk->size < shm_info->chunk_backup.size) {
|
||||
fprintf(stderr,
|
||||
@ -1039,10 +1039,10 @@ buf_chunk_init(
|
||||
}
|
||||
|
||||
chunk->size = shm_info->chunk_backup.size;
|
||||
phys_offset = (void*)frame - (void*)((void*)chunk->mem + shm_info->frame_offset);
|
||||
logi_offset = (void*)frame - (void*)chunk->blocks[0].frame;
|
||||
phys_offset = (char*)frame - ((char*)chunk->mem + shm_info->frame_offset);
|
||||
logi_offset = (char *)frame - (char *)chunk->blocks[0].frame;
|
||||
previous_frame_address = chunk->blocks[0].frame;
|
||||
blocks_offset = (void*)chunk->blocks - (void*)shm_info->chunk_backup.blocks;
|
||||
blocks_offset = (char *)chunk->blocks - (char *)shm_info->chunk_backup.blocks;
|
||||
|
||||
if (phys_offset || logi_offset || blocks_offset) {
|
||||
fprintf(stderr,
|
||||
@ -1053,8 +1053,8 @@ buf_chunk_init(
|
||||
"InnoDB: Pysical offset : %ld (%#lx)\n"
|
||||
"InnoDB: Logical offset (frames) : %ld (%#lx)\n"
|
||||
"InnoDB: Logical offset (blocks) : %ld (%#lx)\n",
|
||||
(void*)((void*)chunk->mem + shm_info->frame_offset),
|
||||
(void*)chunk->blocks[0].frame, (void*)frame,
|
||||
(char *)chunk->mem + shm_info->frame_offset,
|
||||
chunk->blocks[0].frame, frame,
|
||||
(ulong) phys_offset, (ulong) phys_offset, (ulong) logi_offset, (ulong) logi_offset,
|
||||
(ulong) blocks_offset, (ulong) blocks_offset);
|
||||
} else {
|
||||
@ -1066,7 +1066,7 @@ buf_chunk_init(
|
||||
fprintf(stderr,
|
||||
"InnoDB: Aligning physical offset...");
|
||||
|
||||
memmove((void*)frame, (void*)((void*)chunk->mem + shm_info->frame_offset),
|
||||
memmove(frame, ((char*)chunk->mem + shm_info->frame_offset),
|
||||
chunk->size * UNIV_PAGE_SIZE);
|
||||
|
||||
fprintf(stderr,
|
||||
@ -1094,8 +1094,8 @@ buf_chunk_init(
|
||||
previous_frame_address, logi_offset, blocks_offset);
|
||||
if (shm_info->buf_pool_backup.LRU_old)
|
||||
shm_info->buf_pool_backup.LRU_old =
|
||||
((void*)(shm_info->buf_pool_backup.LRU_old)
|
||||
+ (((void*)shm_info->buf_pool_backup.LRU_old > previous_frame_address)
|
||||
(buf_page_t*)((char*)(shm_info->buf_pool_backup.LRU_old)
|
||||
+ (((byte*)shm_info->buf_pool_backup.LRU_old > previous_frame_address)
|
||||
? logi_offset : blocks_offset));
|
||||
|
||||
UT_LIST_OFFSET(unzip_LRU, buf_block_t, shm_info->buf_pool_backup.unzip_LRU,
|
||||
@ -1141,7 +1141,7 @@ buf_chunk_init(
|
||||
}
|
||||
|
||||
if (shm_info) {
|
||||
shm_info->frame_offset = (void*)chunk->blocks[0].frame - (void*)chunk->mem;
|
||||
shm_info->frame_offset = (char*)chunk->blocks[0].frame - (char*)chunk->mem;
|
||||
}
|
||||
|
||||
return(chunk);
|
||||
@ -1396,10 +1396,10 @@ buf_pool_init(void)
|
||||
if (srv_buffer_pool_shm_key) {
|
||||
buf_shm_info_t* shm_info;
|
||||
|
||||
ut_a(chunk->blocks == chunk->mem + sizeof(buf_shm_info_t));
|
||||
ut_a((char*)chunk->blocks == (char*)chunk->mem + sizeof(buf_shm_info_t));
|
||||
shm_info = chunk->mem;
|
||||
|
||||
buf_pool->zip_hash = (hash_table_t*)((void*)chunk->mem + shm_info->zip_hash_offset);
|
||||
buf_pool->zip_hash = (hash_table_t*)((char*)chunk->mem + shm_info->zip_hash_offset);
|
||||
|
||||
if(shm_info->is_new) {
|
||||
shm_info->is_new = FALSE; /* initialization was finished */
|
||||
@ -1504,7 +1504,7 @@ buf_pool_free(void)
|
||||
|
||||
chunk = buf_pool->chunks;
|
||||
shm_info = chunk->mem;
|
||||
ut_a(chunk->blocks == chunk->mem + sizeof(buf_shm_info_t));
|
||||
ut_a((char*)chunk->blocks == (char*)chunk->mem + sizeof(buf_shm_info_t));
|
||||
|
||||
/* validation the shared memory segment doesn't have unrecoverable contents. */
|
||||
/* Currently, validation became not needed */
|
||||
@ -1514,7 +1514,7 @@ buf_pool_free(void)
|
||||
memcpy(&(shm_info->chunk_backup), chunk, sizeof(buf_chunk_t));
|
||||
|
||||
if (srv_fast_shutdown < 2) {
|
||||
shm_info->checksum = ut_fold_binary(chunk->mem + sizeof(buf_shm_info_t),
|
||||
shm_info->checksum = ut_fold_binary((byte*)chunk->mem + sizeof(buf_shm_info_t),
|
||||
chunk->mem_size - sizeof(buf_shm_info_t));
|
||||
shm_info->clean = TRUE;
|
||||
}
|
||||
|
@ -161,7 +161,7 @@ hash_create_init(
|
||||
offset = (sizeof(hash_table_t) + 7) / 8;
|
||||
offset *= 8;
|
||||
|
||||
table->array = (hash_cell_t*)(((void*)table) + offset);
|
||||
table->array = (hash_cell_t*)(((char*)table) + offset);
|
||||
table->n_cells = prime;
|
||||
# if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
|
||||
table->adaptive = FALSE;
|
||||
@ -187,7 +187,7 @@ hash_create_reuse(
|
||||
offset = (sizeof(hash_table_t) + 7) / 8;
|
||||
offset *= 8;
|
||||
|
||||
table->array = (hash_cell_t*)(((void*)table) + offset);
|
||||
table->array = (hash_cell_t*)(((char*)table) + offset);
|
||||
ut_ad(table->magic_n == HASH_TABLE_MAGIC_N);
|
||||
}
|
||||
|
||||
|
@ -1305,7 +1305,7 @@ Compute the hash fold value for blocks in buf_pool->zip_hash. */
|
||||
/* the fold should be relative when srv_buffer_pool_shm_key is enabled */
|
||||
#define BUF_POOL_ZIP_FOLD_PTR(ptr) (!srv_buffer_pool_shm_key\
|
||||
?((ulint) (ptr) / UNIV_PAGE_SIZE)\
|
||||
:((ulint) ((void*)ptr - (void*)(buf_pool->chunks->blocks->frame)) / UNIV_PAGE_SIZE))
|
||||
:((ulint) ((char*)ptr - (char*)(buf_pool->chunks->blocks->frame)) / UNIV_PAGE_SIZE))
|
||||
#define BUF_POOL_ZIP_FOLD(b) BUF_POOL_ZIP_FOLD_PTR((b)->frame)
|
||||
#define BUF_POOL_ZIP_FOLD_BPAGE(b) BUF_POOL_ZIP_FOLD((buf_block_t*) (b))
|
||||
/* @} */
|
||||
|
@ -363,14 +363,14 @@ do {\
|
||||
NODE_TYPE* node2222;\
|
||||
\
|
||||
if ((TABLE)->array[i2222].node) \
|
||||
(TABLE)->array[i2222].node \
|
||||
+= (((TABLE)->array[i2222].node > (void*)FADDR)?FOFFSET:BOFFSET);\
|
||||
(TABLE)->array[i2222].node = (void*)((char*)(TABLE)->array[i2222].node \
|
||||
+ (((TABLE)->array[i2222].node > (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
node2222 = HASH_GET_FIRST((TABLE), i2222);\
|
||||
\
|
||||
while (node2222) {\
|
||||
if (node2222->PTR_NAME) \
|
||||
node2222->PTR_NAME = ((void*)node2222->PTR_NAME) \
|
||||
+ ((((void*)node2222->PTR_NAME) > (void*)FADDR)?FOFFSET:BOFFSET);\
|
||||
node2222->PTR_NAME = (void*)((char*)node2222->PTR_NAME \
|
||||
+ ((((void*)node2222->PTR_NAME) > (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
\
|
||||
node2222 = node2222->PTR_NAME;\
|
||||
}\
|
||||
|
@ -269,10 +269,10 @@ do { \
|
||||
TYPE* ut_list_node_313; \
|
||||
\
|
||||
if ((BASE).start) \
|
||||
(BASE).start = ((void*)((BASE).start) \
|
||||
(BASE).start = (void*)((char*)((BASE).start) \
|
||||
+ (((void*)((BASE).start) > (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
if ((BASE).end) \
|
||||
(BASE).end = ((void*)((BASE).end) \
|
||||
(BASE).end = (void*)((char*)((BASE).end) \
|
||||
+ (((void*)((BASE).end) > (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
\
|
||||
ut_list_node_313 = (BASE).start; \
|
||||
@ -280,10 +280,10 @@ do { \
|
||||
for (ut_list_i_313 = (BASE).count; ut_list_i_313--; ) { \
|
||||
ut_a(ut_list_node_313); \
|
||||
if ((ut_list_node_313->NAME).prev) \
|
||||
(ut_list_node_313->NAME).prev = ((void*)((ut_list_node_313->NAME).prev)\
|
||||
(ut_list_node_313->NAME).prev = (void*)((char*)((ut_list_node_313->NAME).prev) \
|
||||
+ (((void*)((ut_list_node_313->NAME).prev) > (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
if ((ut_list_node_313->NAME).next) \
|
||||
(ut_list_node_313->NAME).next = ((void*)((ut_list_node_313->NAME).next)\
|
||||
(ut_list_node_313->NAME).next = (void *)((char*)((ut_list_node_313->NAME).next) \
|
||||
+ (((void*)((ut_list_node_313->NAME).next)> (void*)FADDR)?FOFFSET:BOFFSET));\
|
||||
ut_list_node_313 = (ut_list_node_313->NAME).next; \
|
||||
} \
|
||||
|
@ -243,8 +243,10 @@ os_shm_alloc(
|
||||
ibool* is_new)
|
||||
{
|
||||
void* ptr;
|
||||
#if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
|
||||
ulint size;
|
||||
int shmid;
|
||||
#endif
|
||||
|
||||
*is_new = FALSE;
|
||||
#if defined HAVE_SYS_IPC_H && HAVE_SYS_SHM_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user