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>
|
#include <assert.h>
|
||||||
|
|
||||||
/* an assert that works at compile-time. only for constant expression */
|
/* 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)
|
#define compile_time_assert(X) do { } while(0)
|
||||||
#else
|
#else
|
||||||
#define compile_time_assert(X) \
|
#define compile_time_assert(X) \
|
||||||
|
@@ -19,10 +19,10 @@
|
|||||||
#include <my_global.h>
|
#include <my_global.h>
|
||||||
#include <my_sys.h>
|
#include <my_sys.h>
|
||||||
|
|
||||||
C_MODE_START
|
|
||||||
|
|
||||||
#include <lf.h>
|
#include <lf.h>
|
||||||
|
|
||||||
|
C_MODE_START
|
||||||
|
|
||||||
typedef struct st_wt_resource_id WT_RESOURCE_ID;
|
typedef struct st_wt_resource_id WT_RESOURCE_ID;
|
||||||
|
|
||||||
typedef struct st_wt_resource_type {
|
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);
|
const void *(*make_key)(WT_RESOURCE_ID *id, uint *len);
|
||||||
} WT_RESOURCE_TYPE;
|
} WT_RESOURCE_TYPE;
|
||||||
|
|
||||||
|
/* we want to compare this struct with memcmp, make it packed */
|
||||||
|
#pragma pack(push,1)
|
||||||
struct st_wt_resource_id {
|
struct st_wt_resource_id {
|
||||||
WT_RESOURCE_TYPE *type;
|
|
||||||
ulonglong value;
|
ulonglong value;
|
||||||
|
WT_RESOURCE_TYPE *type;
|
||||||
};
|
};
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
#define WT_WAIT_STATS 24
|
#define WT_WAIT_STATS 24
|
||||||
#define WT_CYCLE_STATS 32
|
#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)
|
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));
|
return memcmp(a, b, sizeof(WT_RESOURCE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user