[Commits] Rev 2907: Fix compile failures and warnings on Windows from XtraDB "shm buffer pool" patch. in http://bazaar.launchpad.net/~maria-captains/maria/5.1

knielsen at knielsen-hq.org knielsen at knielsen-hq.org
Mon Sep 6 14:42:12 EEST 2010


At http://bazaar.launchpad.net/~maria-captains/maria/5.1

------------------------------------------------------------
revno: 2907
revision-id: knielsen at knielsen-hq.org-20100906114212-hmq0pu5qfkd3879z
parent: monty at askmonty.org-20100905233119-4kdlp1kqd0doysxa
committer: knielsen at knielsen-hq.org
branch nick: work-5.1-release
timestamp: Mon 2010-09-06 13:42:12 +0200
message:
  Fix compile failures and warnings on Windows from XtraDB "shm buffer pool" patch.
  (It is not legal C to do pointer arithmetics on void *).
=== modified file 'storage/xtradb/buf/buf0buddy.c'
--- a/storage/xtradb/buf/buf0buddy.c	2010-09-03 17:42:54 +0000
+++ b/storage/xtradb/buf/buf0buddy.c	2010-09-06 11:42:12 +0000
@@ -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. */

=== modified file 'storage/xtradb/buf/buf0buf.c'
--- a/storage/xtradb/buf/buf0buf.c	2010-09-05 10:52:33 +0000
+++ b/storage/xtradb/buf/buf0buf.c	2010-09-06 11:42:12 +0000
@@ -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;
                 }

=== modified file 'storage/xtradb/ha/hash0hash.c'
--- a/storage/xtradb/ha/hash0hash.c	2010-09-03 15:41:57 +0000
+++ b/storage/xtradb/ha/hash0hash.c	2010-09-06 11:42:12 +0000
@@ -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);
 }
 

=== modified file 'storage/xtradb/include/buf0buf.h'
--- a/storage/xtradb/include/buf0buf.h	2010-09-03 15:41:57 +0000
+++ b/storage/xtradb/include/buf0buf.h	2010-09-06 11:42:12 +0000
@@ -1305,7 +1305,7 @@ Compute the hash fold value for blocks i
 /* 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))
 /* @} */

=== modified file 'storage/xtradb/include/hash0hash.h'
--- a/storage/xtradb/include/hash0hash.h	2010-09-03 15:41:57 +0000
+++ b/storage/xtradb/include/hash0hash.h	2010-09-06 11:42:12 +0000
@@ -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;\
                 }\

=== modified file 'storage/xtradb/include/ut0lst.h'
--- a/storage/xtradb/include/ut0lst.h	2010-09-03 17:42:54 +0000
+++ b/storage/xtradb/include/ut0lst.h	2010-09-06 11:42:12 +0000
@@ -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;       \
         }                                                               \

=== modified file 'storage/xtradb/os/os0proc.c'
--- a/storage/xtradb/os/os0proc.c	2010-09-03 15:41:57 +0000
+++ b/storage/xtradb/os/os0proc.c	2010-09-06 11:42:12 +0000
@@ -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



More information about the commits mailing list