| Index: source/test/intltest/simplethread.cpp
|
| diff --git a/source/test/intltest/simplethread.cpp b/source/test/intltest/simplethread.cpp
|
| deleted file mode 100644
|
| index 9eac088594423eb660b4bfc2e0a6bced61adfbf6..0000000000000000000000000000000000000000
|
| --- a/source/test/intltest/simplethread.cpp
|
| +++ /dev/null
|
| @@ -1,284 +0,0 @@
|
| -/********************************************************************
|
| - * COPYRIGHT:
|
| - * Copyright (c) 1999-2015, International Business Machines Corporation and
|
| - * others. All Rights Reserved.
|
| - ********************************************************************/
|
| -
|
| -#if defined(hpux)
|
| -# ifndef _INCLUDE_POSIX_SOURCE
|
| -# define _INCLUDE_POSIX_SOURCE
|
| -# endif
|
| -#endif
|
| -
|
| -/* Define __EXTENSIONS__ for Solaris and old friends in strict mode. */
|
| -#ifndef __EXTENSIONS__
|
| -#define __EXTENSIONS__
|
| -#endif
|
| -
|
| -// Defines _XOPEN_SOURCE for access to POSIX functions.
|
| -// Must be before any other #includes.
|
| -#include "uposixdefs.h"
|
| -
|
| -#include "simplethread.h"
|
| -
|
| -#include "unicode/utypes.h"
|
| -#include "unicode/ustring.h"
|
| -#include "umutex.h"
|
| -#include "cmemory.h"
|
| -#include "cstring.h"
|
| -#include "uparse.h"
|
| -#include "unicode/resbund.h"
|
| -#include "unicode/udata.h"
|
| -#include "unicode/uloc.h"
|
| -#include "unicode/locid.h"
|
| -#include "putilimp.h"
|
| -#include "intltest.h"
|
| -
|
| -#include <stdio.h>
|
| -#include <string.h>
|
| -#include <ctype.h> // tolower, toupper
|
| -
|
| -#if U_PLATFORM_USES_ONLY_WIN32_API
|
| - /* Prefer native Windows APIs even if POSIX is implemented (i.e., on Cygwin). */
|
| -# undef POSIX
|
| -#elif U_PLATFORM_IMPLEMENTS_POSIX
|
| -# define POSIX
|
| -#else
|
| -# undef POSIX
|
| -#endif
|
| -
|
| -/* Needed by z/OS to get usleep */
|
| -#if U_PLATFORM == U_PF_OS390
|
| -#define __DOT1 1
|
| -#ifndef __UU
|
| -# define __UU
|
| -#endif
|
| -#ifndef _XPG4_2
|
| -# define _XPG4_2
|
| -#endif
|
| -#include <unistd.h>
|
| -#endif
|
| -
|
| -#if defined(POSIX)
|
| -#define HAVE_IMP
|
| -
|
| -#include <pthread.h>
|
| -
|
| -#if U_PLATFORM == U_PF_OS390
|
| -#include <sys/types.h>
|
| -#endif
|
| -
|
| -#if U_PLATFORM != U_PF_OS390
|
| -#include <signal.h>
|
| -#endif
|
| -
|
| -/* Define _XPG4_2 for Solaris and friends. */
|
| -#ifndef _XPG4_2
|
| -#define _XPG4_2
|
| -#endif
|
| -
|
| -/* Define __USE_XOPEN_EXTENDED for Linux and glibc. */
|
| -#ifndef __USE_XOPEN_EXTENDED
|
| -#define __USE_XOPEN_EXTENDED
|
| -#endif
|
| -
|
| -/* Define _INCLUDE_XOPEN_SOURCE_EXTENDED for HP/UX (11?). */
|
| -#ifndef _INCLUDE_XOPEN_SOURCE_EXTENDED
|
| -#define _INCLUDE_XOPEN_SOURCE_EXTENDED
|
| -#endif
|
| -
|
| -#include <unistd.h>
|
| -
|
| -#endif
|
| -/* HPUX */
|
| -#ifdef sleep
|
| -#undef sleep
|
| -#endif
|
| -
|
| -
|
| -#include "unicode/putil.h"
|
| -
|
| -/* for mthreadtest*/
|
| -#include "unicode/numfmt.h"
|
| -#include "unicode/choicfmt.h"
|
| -#include "unicode/msgfmt.h"
|
| -#include "unicode/locid.h"
|
| -#include "unicode/ucol.h"
|
| -#include "unicode/calendar.h"
|
| -#include "ucaconf.h"
|
| -
|
| -#if U_PLATFORM_USES_ONLY_WIN32_API
|
| -#define HAVE_IMP
|
| -
|
| -# define VC_EXTRALEAN
|
| -# define WIN32_LEAN_AND_MEAN
|
| -# define NOUSER
|
| -# define NOSERVICE
|
| -# define NOIME
|
| -# define NOMCX
|
| -#include <windows.h>
|
| -#include <process.h>
|
| -
|
| -//-----------------------------------------------------------------------------------
|
| -//
|
| -// class SimpleThread Windows Implementation
|
| -//
|
| -//-----------------------------------------------------------------------------------
|
| -struct Win32ThreadImplementation
|
| -{
|
| - HANDLE fHandle;
|
| - unsigned int fThreadID;
|
| -};
|
| -
|
| -
|
| -extern "C" unsigned int __stdcall SimpleThreadProc(void *arg)
|
| -{
|
| - ((SimpleThread*)arg)->run();
|
| - return 0;
|
| -}
|
| -
|
| -SimpleThread::SimpleThread()
|
| -:fImplementation(0)
|
| -{
|
| - Win32ThreadImplementation *imp = new Win32ThreadImplementation;
|
| - imp->fHandle = 0;
|
| - fImplementation = imp;
|
| -}
|
| -
|
| -SimpleThread::~SimpleThread()
|
| -{
|
| - // Destructor. Because we start the thread running with _beginthreadex(),
|
| - // we own the Windows HANDLE for the thread and must
|
| - // close it here.
|
| - Win32ThreadImplementation *imp = (Win32ThreadImplementation*)fImplementation;
|
| - if (imp != 0) {
|
| - if (imp->fHandle != 0) {
|
| - CloseHandle(imp->fHandle);
|
| - imp->fHandle = 0;
|
| - }
|
| - }
|
| - delete (Win32ThreadImplementation*)fImplementation;
|
| -}
|
| -
|
| -int32_t SimpleThread::start()
|
| -{
|
| - Win32ThreadImplementation *imp = (Win32ThreadImplementation*)fImplementation;
|
| - if(imp->fHandle != NULL) {
|
| - // The thread appears to have already been started.
|
| - // This is probably an error on the part of our caller.
|
| - return -1;
|
| - }
|
| -
|
| - imp->fHandle = (HANDLE) _beginthreadex(
|
| - NULL, // Security
|
| - 0x20000, // Stack Size
|
| - SimpleThreadProc, // Function to Run
|
| - (void *)this, // Arg List
|
| - 0, // initflag. Start running, not suspended
|
| - &imp->fThreadID // thraddr
|
| - );
|
| -
|
| - if (imp->fHandle == 0) {
|
| - // An error occured
|
| - int err = errno;
|
| - if (err == 0) {
|
| - err = -1;
|
| - }
|
| - return err;
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -
|
| -void SimpleThread::join() {
|
| - Win32ThreadImplementation *imp = (Win32ThreadImplementation*)fImplementation;
|
| - if (imp->fHandle == 0) {
|
| - // No handle, thread must not be running.
|
| - return;
|
| - }
|
| - WaitForSingleObject(imp->fHandle, INFINITE);
|
| -}
|
| -
|
| -#endif
|
| -
|
| -
|
| -//-----------------------------------------------------------------------------------
|
| -//
|
| -// class SimpleThread POSIX implementation
|
| -//
|
| -//-----------------------------------------------------------------------------------
|
| -#if defined(POSIX)
|
| -#define HAVE_IMP
|
| -
|
| -struct PosixThreadImplementation
|
| -{
|
| - pthread_t fThread;
|
| -};
|
| -
|
| -extern "C" void* SimpleThreadProc(void *arg)
|
| -{
|
| - // This is the code that is run in the new separate thread.
|
| - SimpleThread *This = (SimpleThread *)arg;
|
| - This->run();
|
| - return 0;
|
| -}
|
| -
|
| -SimpleThread::SimpleThread()
|
| -{
|
| - PosixThreadImplementation *imp = new PosixThreadImplementation;
|
| - fImplementation = imp;
|
| -}
|
| -
|
| -SimpleThread::~SimpleThread()
|
| -{
|
| - PosixThreadImplementation *imp = (PosixThreadImplementation*)fImplementation;
|
| - delete imp;
|
| - fImplementation = (void *)0xdeadbeef;
|
| -}
|
| -
|
| -int32_t SimpleThread::start()
|
| -{
|
| - int32_t rc;
|
| - static pthread_attr_t attr;
|
| - static UBool attrIsInitialized = FALSE;
|
| -
|
| - PosixThreadImplementation *imp = (PosixThreadImplementation*)fImplementation;
|
| -
|
| - if (attrIsInitialized == FALSE) {
|
| - rc = pthread_attr_init(&attr);
|
| -#if U_PLATFORM == U_PF_OS390
|
| - {
|
| - int detachstate = 0; // jdc30: detach state of zero causes
|
| - //threads created with this attr to be in
|
| - //an undetached state. An undetached
|
| - //thread will keep its resources after
|
| - //termination.
|
| - pthread_attr_setdetachstate(&attr, &detachstate);
|
| - }
|
| -#else
|
| - // pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
| - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
| -#endif
|
| - attrIsInitialized = TRUE;
|
| - }
|
| - rc = pthread_create(&(imp->fThread), &attr, &SimpleThreadProc, (void*)this);
|
| -
|
| - if (rc != 0) {
|
| - // some kind of error occured, the thread did not start.
|
| - }
|
| -
|
| - return rc;
|
| -}
|
| -
|
| -void SimpleThread::join() {
|
| - PosixThreadImplementation *imp = (PosixThreadImplementation*)fImplementation;
|
| - pthread_join(imp->fThread, NULL);
|
| -}
|
| -
|
| -#endif
|
| -// end POSIX
|
| -
|
| -
|
| -#ifndef HAVE_IMP
|
| -#error No implementation for threads! Cannot test.
|
| -#endif
|
|
|