Commit 24968f1e authored by greg@mysql.com's avatar greg@mysql.com

Changes from Novell for NetWare platform

parent 80a3c64d
...@@ -247,6 +247,11 @@ extern int my_sigwait(const sigset_t *set,int *sig); ...@@ -247,6 +247,11 @@ extern int my_sigwait(const sigset_t *set,int *sig);
#error Requires at least rev 2 of EMX pthreads library. #error Requires at least rev 2 of EMX pthreads library.
#endif #endif
#ifdef __NETWARE__
void my_pthread_exit(void *status);
#define pthread_exit(A) my_pthread_exit(A)
#endif
extern int my_pthread_getprio(pthread_t thread_id); extern int my_pthread_getprio(pthread_t thread_id);
#define pthread_key(T,V) pthread_key_t V #define pthread_key(T,V) pthread_key_t V
......
...@@ -77,6 +77,9 @@ my_string my_path(my_string to, const char *progname, ...@@ -77,6 +77,9 @@ my_string my_path(my_string to, const char *progname,
#define F_OK 0 #define F_OK 0
#define PATH_SEP ';' #define PATH_SEP ';'
#define PROGRAM_EXTENSION ".exe" #define PROGRAM_EXTENSION ".exe"
#elif defined(__NETWARE__)
#define PATH_SEP ';'
#define PROGRAM_EXTENSION ".nlm"
#else #else
#define PATH_SEP ':' #define PATH_SEP ':'
#endif #endif
......
...@@ -90,6 +90,29 @@ void *my_pthread_getspecific_imp(pthread_key_t key) ...@@ -90,6 +90,29 @@ void *my_pthread_getspecific_imp(pthread_key_t key)
} }
#endif #endif
#ifdef __NETWARE__
/*
don't kill the LibC Reaper thread or the main thread
*/
#include <nks/thread.h>
void my_pthread_exit(void *status)
{
#undef pthread_exit
NXThreadId_t tid = NXThreadGetId();
NXContext_t ctx;
char name[PATH_MAX] = "";
NXThreadGetContext(tid, &ctx);
NXContextGetName(ctx, name, PATH_MAX);
// "MYSQLD.NLM's LibC Reaper" or "MYSQLD.NLM's main thread"
// with a debug build of LibC the reaper can have different names
if (!strindex(name, "\'s"))
{
pthread_exit(status);
}
}
#endif
/* Some functions for RTS threads, AIX, Siemens Unix and UnixWare 7 /* Some functions for RTS threads, AIX, Siemens Unix and UnixWare 7
(and DEC OSF/1 3.2 too) */ (and DEC OSF/1 3.2 too) */
......
...@@ -243,7 +243,7 @@ static void mc_free_old_query(MYSQL *mysql) ...@@ -243,7 +243,7 @@ static void mc_free_old_query(MYSQL *mysql)
static int mc_sock_connect(my_socket s, const struct sockaddr *name, static int mc_sock_connect(my_socket s, const struct sockaddr *name,
uint namelen, uint to) uint namelen, uint to)
{ {
#if defined(__WIN__) || defined(OS2) #if defined(__WIN__) || defined(OS2) || defined(__NETWARE__)
return connect(s, (struct sockaddr*) name, namelen); return connect(s, (struct sockaddr*) name, namelen);
#else #else
int flags, res, s_err; int flags, res, s_err;
......
...@@ -797,9 +797,9 @@ static void __cdecl kill_server(int sig_ptr) ...@@ -797,9 +797,9 @@ static void __cdecl kill_server(int sig_ptr)
#ifdef __NETWARE__ #ifdef __NETWARE__
pthread_join(select_thread, NULL); // wait for main thread pthread_join(select_thread, NULL); // wait for main thread
#else
pthread_exit(0); /* purecov: deadcode */
#endif /* __NETWARE__ */ #endif /* __NETWARE__ */
pthread_exit(0); /* purecov: deadcode */
RETURN_FROM_KILL_SERVER; RETURN_FROM_KILL_SERVER;
} }
...@@ -856,13 +856,11 @@ void unireg_end(void) ...@@ -856,13 +856,11 @@ void unireg_end(void)
{ {
clean_up(1); clean_up(1);
my_thread_end(); my_thread_end();
#ifndef __NETWARE__ #if defined(SIGNALS_DONT_BREAK_READ) && !defined(__NETWARE__)
#ifdef SIGNALS_DONT_BREAK_READ
exit(0); exit(0);
#else #else
pthread_exit(0); // Exit is in main thread pthread_exit(0); // Exit is in main thread
#endif #endif
#endif /* __NETWARE__ */
} }
......
...@@ -2355,9 +2355,7 @@ log space"); ...@@ -2355,9 +2355,7 @@ log space");
goto slave_begin; goto slave_begin;
#endif #endif
my_thread_end(); my_thread_end();
#ifndef __NETWARE__
pthread_exit(0); pthread_exit(0);
#endif /* __NETWARE__ */
DBUG_RETURN(0); // Can't return anything here DBUG_RETURN(0); // Can't return anything here
} }
...@@ -2500,9 +2498,7 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \ ...@@ -2500,9 +2498,7 @@ the slave SQL thread with \"SLAVE START\". We stopped at log \
goto slave_begin; goto slave_begin;
#endif #endif
my_thread_end(); // clean-up before broadcasting termination my_thread_end(); // clean-up before broadcasting termination
#ifndef __NETWARE__
pthread_exit(0); pthread_exit(0);
#endif /* __NETWARE__ */
DBUG_RETURN(0); // Can't return anything here DBUG_RETURN(0); // Can't return anything here
} }
......
...@@ -179,7 +179,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, ...@@ -179,7 +179,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
else else
{ {
unpack_filename(name,ex->file_name); unpack_filename(name,ex->file_name);
#if !defined(__WIN__) && !defined(OS2) #if !defined(__WIN__) && !defined(OS2) && ! defined(__NETWARE__)
MY_STAT stat_info; MY_STAT stat_info;
if (!my_stat(name,&stat_info,MYF(MY_WME))) if (!my_stat(name,&stat_info,MYF(MY_WME)))
DBUG_RETURN(-1); DBUG_RETURN(-1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment