mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
win32: compilation failures, maria.test failure
include/my_global.h: enable compile_time_assert for all compilers include/waiting_threads.h: 1. don't #extern "C" system includes, they don't like it. 2. remove any padding from WT_RESOURCE_ID structure - we want to compare it with memcmp mysys/waiting_threads.c: assert that WT_RESOURCE_ID can be compared with memcmp and has no random padding bytes
This commit is contained in:
@@ -478,7 +478,7 @@ C_MODE_END
|
||||
#include <assert.h>
|
||||
|
||||
/* an assert that works at compile-time. only for constant expression */
|
||||
#ifndef __GNUC__
|
||||
#ifdef _some_old_compiler_that_does_not_understand_the_construct_below_
|
||||
#define compile_time_assert(X) do { } while(0)
|
||||
#else
|
||||
#define compile_time_assert(X) \
|
||||
|
@@ -19,10 +19,10 @@
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
|
||||
C_MODE_START
|
||||
|
||||
#include <lf.h>
|
||||
|
||||
C_MODE_START
|
||||
|
||||
typedef struct st_wt_resource_id WT_RESOURCE_ID;
|
||||
|
||||
typedef struct st_wt_resource_type {
|
||||
@@ -30,10 +30,13 @@ typedef struct st_wt_resource_type {
|
||||
const void *(*make_key)(WT_RESOURCE_ID *id, uint *len);
|
||||
} WT_RESOURCE_TYPE;
|
||||
|
||||
/* we want to compare this struct with memcmp, make it packed */
|
||||
#pragma pack(push,1)
|
||||
struct st_wt_resource_id {
|
||||
WT_RESOURCE_TYPE *type;
|
||||
ulonglong value;
|
||||
WT_RESOURCE_TYPE *type;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
#define WT_WAIT_STATS 24
|
||||
#define WT_CYCLE_STATS 32
|
||||
|
@@ -347,6 +347,8 @@ void wt_thd_destroy(WT_THD *thd)
|
||||
*/
|
||||
int wt_resource_id_memcmp(void *a, void *b)
|
||||
{
|
||||
/* assert that the structure is not padded with random bytes */
|
||||
compile_time_assert(sizeof(WT_RESOURCE_ID)==sizeof(ulonglong)+sizeof(void*));
|
||||
return memcmp(a, b, sizeof(WT_RESOURCE_ID));
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user