mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Fixing AIX compilation failires
This commit is contained in:
@@ -144,6 +144,7 @@
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
#undef __GNUG__
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -264,6 +265,16 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef _AIX
|
||||
/*
|
||||
AIX includes inttypes.h from sys/types.h
|
||||
Explicitly request format macros before the first inclusion of inttypes.h
|
||||
*/
|
||||
#define __STDC_FORMAT_MACROS
|
||||
#endif
|
||||
|
||||
|
||||
#if !defined(__WIN__)
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
#define _POSIX_PTHREAD_SEMANTICS /* We want posix threads */
|
||||
@@ -316,6 +327,13 @@ C_MODE_END
|
||||
#define _LONG_LONG 1 /* For AIX string library */
|
||||
#endif
|
||||
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
#undef __GNUG__
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef stdin
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
@@ -341,6 +359,14 @@ C_MODE_END
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
#undef __GNUG__
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_FCNTL_H
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
@@ -1221,4 +1247,11 @@ static inline double rint(double x)
|
||||
#define DEFAULT_TMPDIR P_tmpdir
|
||||
#endif
|
||||
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
#undef __GNUG__
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* my_global_h */
|
||||
|
@@ -9,6 +9,11 @@
|
||||
#ifndef DENA_AUTO_FILE_HPP
|
||||
#define DENA_AUTO_FILE_HPP
|
||||
|
||||
/* Workaround for _LARGE_FILES and _LARGE_FILE_API incompatibility on AIX */
|
||||
#if defined(_AIX) && defined(_LARGE_FILE_API)
|
||||
#undef _LARGE_FILE_API
|
||||
#endif
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
|
@@ -121,6 +121,12 @@ my_connect_async(struct mysql_async_context *b, my_socket fd,
|
||||
IF_WIN(WSAGetLastError() != WSAEWOULDBLOCK, \
|
||||
(errno != EAGAIN && errno != EINTR))
|
||||
|
||||
#ifdef _AIX
|
||||
#ifndef MSG_DONTWAIT
|
||||
#define MSG_DONTWAIT 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
ssize_t
|
||||
my_recv_async(struct mysql_async_context *b, int fd,
|
||||
unsigned char *buf, size_t size, int timeout)
|
||||
|
@@ -8144,7 +8144,7 @@ static int mysql_init_variables(void)
|
||||
my_atomic_rwlock_init(&thread_running_lock);
|
||||
my_atomic_rwlock_init(&thread_count_lock);
|
||||
my_atomic_rwlock_init(&statistics_lock);
|
||||
my_atomic_rwlock_init(slave_executed_entries_lock);
|
||||
my_atomic_rwlock_init(&slave_executed_entries_lock);
|
||||
strmov(server_version, MYSQL_SERVER_VERSION);
|
||||
threads.empty();
|
||||
thread_cache.empty();
|
||||
|
@@ -99,7 +99,8 @@ public:
|
||||
void *data; /* scheduler-specific data structure */
|
||||
};
|
||||
|
||||
#if !defined(EMBEDDED_LIBRARY)
|
||||
#undef HAVE_POOL_OF_THREADS
|
||||
#if !defined(EMBEDDED_LIBRARY) && !defined(_AIX)
|
||||
#define HAVE_POOL_OF_THREADS 1
|
||||
void pool_of_threads_scheduler(scheduler_functions* func,
|
||||
ulong *arg_max_connections,
|
||||
|
@@ -19,6 +19,9 @@
|
||||
#include <sql_class.h>
|
||||
#include <my_pthread.h>
|
||||
#include <scheduler.h>
|
||||
|
||||
#ifdef HAVE_POOL_OF_THREADS
|
||||
|
||||
#include <sql_connect.h>
|
||||
#include <mysqld.h>
|
||||
#include <debug_sync.h>
|
||||
@@ -1678,3 +1681,5 @@ static void print_pool_blocked_message(bool max_threads_reached)
|
||||
msg_written= true;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* HAVE_POOL_OF_THREADS */
|
||||
|
@@ -9,6 +9,12 @@ typedef off_t off64_t;
|
||||
#define O_LARGEFILE 0
|
||||
#endif
|
||||
|
||||
#ifdef _AIX
|
||||
#ifndef O_LARGEFILE
|
||||
#define O_LARGEFILE 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(WIN32)
|
||||
typedef __int64 BIGINT;
|
||||
#else // !WIN32
|
||||
|
@@ -315,11 +315,15 @@ int table_events_waits_common::make_socket_object_columns(volatile PFS_events_wa
|
||||
uint port;
|
||||
char port_str[128];
|
||||
char ip_str[INET6_ADDRSTRLEN+1];
|
||||
uint ip_len= 0;
|
||||
/*
|
||||
"ip_length" was "ip_len" originally.
|
||||
but it conflicted with some macro on AIX. Renamed.
|
||||
*/
|
||||
uint ip_length= 0;
|
||||
port_str[0]= ':';
|
||||
|
||||
/* Get the IP address and port number */
|
||||
ip_len= pfs_get_socket_address(ip_str, sizeof(ip_str), &port,
|
||||
ip_length= pfs_get_socket_address(ip_str, sizeof(ip_str), &port,
|
||||
&safe_socket->m_sock_addr,
|
||||
safe_socket->m_addr_len);
|
||||
|
||||
@@ -327,15 +331,15 @@ int table_events_waits_common::make_socket_object_columns(volatile PFS_events_wa
|
||||
int port_len= int10_to_str(port, (port_str+1), 10) - port_str + 1;
|
||||
|
||||
/* OBJECT NAME */
|
||||
m_row.m_object_name_length= ip_len + port_len;
|
||||
m_row.m_object_name_length= ip_length + port_len;
|
||||
|
||||
if (unlikely((m_row.m_object_name_length == 0) ||
|
||||
(m_row.m_object_name_length > sizeof(m_row.m_object_name))))
|
||||
return 1;
|
||||
|
||||
char *name= m_row.m_object_name;
|
||||
memcpy(name, ip_str, ip_len);
|
||||
memcpy(name + ip_len, port_str, port_len);
|
||||
memcpy(name, ip_str, ip_length);
|
||||
memcpy(name + ip_length, port_str, port_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -198,10 +198,10 @@ necessary only if the memory block containing it is freed. */
|
||||
pfs_mutex_enter_nowait_func((M), __FILE__, __LINE__)
|
||||
|
||||
# define mutex_enter_first(M) \
|
||||
pfs_mutex_enter_func((M), __FILE__, __LINE__, HIGH_PRIO)
|
||||
pfs_mutex_enter_func((M), __FILE__, __LINE__, IB_HIGH_PRIO)
|
||||
|
||||
# define mutex_enter_last(M) \
|
||||
pfs_mutex_enter_func((M), __FILE__, __LINE__, LOW_PRIO)
|
||||
pfs_mutex_enter_func((M), __FILE__, __LINE__, IB_LOW_PRIO)
|
||||
|
||||
# define mutex_exit(M) pfs_mutex_exit_func(M)
|
||||
|
||||
@@ -230,10 +230,10 @@ original non-instrumented functions */
|
||||
mutex_enter_nowait_func((M), __FILE__, __LINE__)
|
||||
|
||||
# define mutex_enter_first(M) \
|
||||
mutex_enter_func((M), __FILE__, __LINE__, HIGH_PRIO)
|
||||
mutex_enter_func((M), __FILE__, __LINE__, IB_HIGH_PRIO)
|
||||
|
||||
# define mutex_enter_last(M) \
|
||||
mutex_enter_func((M), __FILE__, __LINE__, LOW_PRIO)
|
||||
mutex_enter_func((M), __FILE__, __LINE__, IB_LOW_PRIO)
|
||||
|
||||
# define mutex_exit(M) mutex_exit_func(M)
|
||||
|
||||
@@ -325,8 +325,8 @@ directly. Locks a priority mutex for the current thread. If the mutex is
|
||||
reserved the function spins a preset time (controlled by SYNC_SPIN_ROUNDS)
|
||||
waiting for the mutex before suspending the thread. If the thread is suspended,
|
||||
the priority argument value determines the relative order for its wake up. Any
|
||||
HIGH_PRIO waiters will be woken up before any LOW_PRIO waiters. In case of
|
||||
DEFAULT_PRIO, the relative priority will be set according to
|
||||
IB_HIGH_PRIO waiters will be woken up before any IB_LOW_PRIO waiters. In case of
|
||||
IB_DEFAULT_PRIO, the relative priority will be set according to
|
||||
srv_current_thread_priority. */
|
||||
UNIV_INLINE
|
||||
void
|
||||
@@ -336,7 +336,7 @@ mutex_enter_func(
|
||||
const char* file_name, /*!< in: file name where
|
||||
locked */
|
||||
ulint line, /*!< in: line where locked */
|
||||
enum ib_sync_priority priority = DEFAULT_PRIO);
|
||||
enum ib_sync_priority priority = IB_DEFAULT_PRIO);
|
||||
/*!<in: mutex acquisition
|
||||
priority */
|
||||
/********************************************************************//**
|
||||
@@ -453,7 +453,7 @@ pfs_mutex_enter_func(
|
||||
const char* file_name, /*!< in: file name where
|
||||
locked */
|
||||
ulint line, /*!< in: line where locked */
|
||||
enum ib_sync_priority priority = DEFAULT_PRIO);
|
||||
enum ib_sync_priority priority = IB_DEFAULT_PRIO);
|
||||
/*!<in: mutex acquisition
|
||||
priority */
|
||||
/********************************************************************//**
|
||||
|
@@ -278,8 +278,8 @@ directly. Locks a priority mutex for the current thread. If the mutex is
|
||||
reserved the function spins a preset time (controlled by SYNC_SPIN_ROUNDS)
|
||||
waiting for the mutex before suspending the thread. If the thread is suspended,
|
||||
the priority argument value determines the relative order for its wake up. Any
|
||||
HIGH_PRIO waiters will be woken up before any LOW_PRIO waiters. In case of
|
||||
DEFAULT_PRIO, the relative priority will be set according to
|
||||
IB_HIGH_PRIO waiters will be woken up before any IB_LOW_PRIO waiters. In case
|
||||
of IB_DEFAULT_PRIO, the relative priority will be set according to
|
||||
srv_current_thread_priority. */
|
||||
UNIV_INLINE
|
||||
void
|
||||
@@ -309,10 +309,10 @@ mutex_enter_func(
|
||||
return; /* Succeeded! */
|
||||
}
|
||||
|
||||
if (UNIV_LIKELY(priority == DEFAULT_PRIO)) {
|
||||
if (UNIV_LIKELY(priority == IB_DEFAULT_PRIO)) {
|
||||
high_priority = srv_current_thread_priority;
|
||||
} else {
|
||||
high_priority = (priority == HIGH_PRIO);
|
||||
high_priority = (priority == IB_HIGH_PRIO);
|
||||
}
|
||||
mutex_spin_wait(mutex, high_priority, file_name, line);
|
||||
}
|
||||
|
@@ -36,9 +36,9 @@ struct ib_prio_mutex_t;
|
||||
|
||||
/** Priority mutex and rwlatch acquisition priorities */
|
||||
enum ib_sync_priority {
|
||||
DEFAULT_PRIO,
|
||||
LOW_PRIO,
|
||||
HIGH_PRIO
|
||||
IB_DEFAULT_PRIO,
|
||||
IB_LOW_PRIO,
|
||||
IB_HIGH_PRIO
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user