| Age | Commit message (Collapse) | Author | 
|---|
|  | * implement.h (PTW32_EPS_CANCEL/PTW32_EPS_EXIT):
	Must be defined for all compilers - used as generic
	exception selectors by ptw32_throw(). | 
|  | * Several: Fix typos from scripted edit session
        yesterday.
        * nonportable.c (pthread_mutexattr_setforcecs_np):
        Moved this function from mutex.c.
        (pthread_getw32threadhandle_np): New function to
        return the win32 thread handle that the POSIX
        thread is using.
        * mutex.c (pthread_mutexattr_setforcecs_np):
        Moved to new file "nonportable.c".
        * pthread.h (PTW32_BUILD): Only redefine __except
        and catch compiler keywords if we aren't building
        the library (ie. PTW32_BUILD is not defined) -
        this is safer than defining and then undefining
        if not building the library.
        * implement.h: Remove __except and catch undefines.
        * Makefile (CFLAGS): Define PTW32_BUILD.
        * GNUmakefile (CFLAGS): Define PTW32_BUILD.
        * All appropriate: Change Pthread_exception* to
        ptw32_exception* to be consistent with internal
        identifier naming.
        * private.c (ptw32_throw): New function to provide
        a generic exception throw for all internal
        exceptions and EH schemes.
        (ptw32_threadStart): pthread_exit() value is now
        returned via the thread structure exitStatus
        element.
        * exit.c (pthread_exit): pthread_exit() value is now
        returned via the thread structure exitStatus
        element.
        * cancel.c (ptw32_cancel_self): Now uses ptw32_throw.
        (pthread_setcancelstate): Ditto.
        (pthread_setcanceltype): Ditto.
        (pthread_testcancel): Ditto.
        (pthread_cancel): Ditto.
        * misc.c (CancelableWait): Ditto.
        * exit.c (pthread_exit): Ditto.
        * All applicable: Change PTW32_ prefix to
        PTW32_ prefix to remove leading underscores
        from private library identifiers. | 
|  |  | 
|  | * create2.c: New; Test that pthread_t contains
        the W32 HANDLE before it calls the thread routine
        proper. | 
|  | * All applicable: Change _pthread_ prefix to
        ptw32_ prefix to remove leading underscores
        from private library identifiers (single
        and double leading underscores are reserved in the
        ANSI C standard for compiler implementations). | 
|  | * tsd.c (pthread_create_key): Initialise temporary
        key before returning it's address to avoid race
        conditions. | 
|  | or snapshot. | 
|  |  | 
|  |  | 
|  | * errno.c: Add _MD precompile condition; thus far
        had no effect when using /MD compile option but I
        thnk it should be there.
        * exit.c: Add __cplusplus to various #if lines;
        was compiling SEH code even when VC++ had
        C++ compile options.
        * private.c: ditto.
        * create.c (pthread_create): Add PT_STDCALL macro to
        function pointer arg in _beginthread().
        * pthread.h: PT_STDCALL really does need to be defined
        in both this and impliment.h; don't set it to __cdecl
        - this macro is only used to extend function pointer
        casting for functions that will be passed as parameters.
        (~PThreadCleanup): add cast and group expression.
        (_errno): Add _MD compile conditional.
        (PtW32NoCatchWarn): Change pragma message.
        * implement.h: Move and change PT_STDCALL define.
        * need_errno.h: Add _MD to compilation conditional.
        * GNUmakefile: Substantial rewrite for new naming
        convention; set for nil optimisation (turn it up
        when we have a working library build; add target
        "fake.a" to build a libpthreadw32.a from the VC++
        built DLL pthreadVCE.dll.
        * pthread.def (LIBRARY): Don't specify in the .def
        file - it is specified on the linker command line
        since we now use the same .def file for variously
        named .dlls.
        * Makefile: Substantial rewrite for new naming
        convention; default nmake target only issues a
        help message; run nmake with specific target
        corresponding to the EH scheme being used.
        * README: Update information; add naming convention
        explanation.
        * ANNOUNCE: Update information.
2000-08-12  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * pthread.h: Add compile-time message when using
        MSC_VER compiler and C++ EH to warn application
        programmers to use PtW32Catch instead of catch(...)
        if they want cancelation and pthread_exit to work.
        * implement.h: Remove #include <semaphore.h>; we
        use our own local semaphore.h.
tests/ChangeLog:
2000-08-13  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * condvar3.c: Minor change to eliminate compiler
        warning.
        * condvar4.c: ditto.
        * condvar5.c: ditto.
        * condvar6.c: ditto.
        * condvar7.c: ditto.
        * condvar8.c: ditto.
        * condvar9.c: ditto.
        * exit1.c: Function needed return statement.
        * cleanup1.c: Remove unnecessary printf arg.
        * cleanup2.c: Fix cast.
        * rwlock6.c: Fix casts.
        * exception1.c (PtW32CatchAll): Had the wrong name;
        fix casts.
        * cancel3.c: Remove unused waitLock variable.
        * GNUmakefile: Change library/dll naming; add new tests;
        general minor changes.
        * Makefile: Change library/dll naming; add targets for
        testing each of the two VC++ EH scheme versions;
        default target now issues help message; compile warnings
        now interpreted as errors to stop the make; add new
        tests; restructure to remove prerequisites needed
        otherwise.
        * README: Updated. | 
|  |  | 
|  | * cleanup.c (pthread_pop_cleanup): Remove _pthread
        prefix from __except and catch keywords; implement.h
        now simply undefines _pthread__except and
        _pthread_catch if defined; VC++ was not textually
        substituting _pthread_catch etc back to catch as
        it was redefined; the reason for using the prefixed
        version was to make it clear that it was not using
        the pthread.h redefined catch keyword.
        * private.c (_pthread_threadStart): Ditto.
        (_pthread_callUserDestroyRoutines): Ditto.
        * implement.h (_pthread__except): Remove #define.
        (_pthread_catch): Remove #define.
        * GNUmakefile (pthread.a): New target to build
        libpthread32.a from pthread.dll using dlltool.
        * buildlib.bat: Duplicate cl commands with args to
        build C++ EH version of pthread.dll; use of .bat
        files is redundant now that nmake compatible
        Makefile is included; used as a kludge only now.
        * Makefile: Localise some macros and fix up the clean:
        target to extend it and work properly.
        * CONTRIBUTORS: Add contributors.
        * ANNOUNCE: Updated.
        * README: Updated.
tests/ChangeLog:
2000-08-10  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * eyal1.c (main): Change implicit cast to explicit
        cast when passing "print_server" function pointer;
        G++ no longer allows implicit func parameter casts.
        * cleanup1.c: Remove unused "waitLock".
        (main): Fix implicit parameter cast.
        * cancel2.c (main): Fix implicit parameter cast.
        * cancel4.c (main): Fix implicit parameter cast.
        * cancel3.c (main): Fix implicit parameter cast.
        * GNUmakefile: Renamed from Makefile; Add missing
        cancel1 and cancel2 test targets.
        * Makefile: Converted for use with MS nmake. | 
|  |  | 
|  | * pthread.h: Remove #warning - VC++ doesn't accept it.
2000-08-05  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* pthread.h (PtW32CatchAll): Add macro. When compiling
	applications using VC++ with C++ EH rather than SEH
	'PtW32CatchAll' must be used in place of any 'catch( ... )'
	if the application wants pthread cancelation or
	pthread_exit() to work.
2000-08-03  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* pthread.h: Add a base class Pthread_exception for
	library internal exceptions and change the "catch"
	re-define macro to use it.
2000-08-02  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* GNUmakefile (CFLAGS): Add -mthreads.
	Add new targets to generate cpp and asm output.
	* sync.c (pthread_join): Remove dead code.
tests:
2000-08-06  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* ccl.bat: Add /nologo to remove extraneous output.
	* exception1.c (exceptionedThread): Init 'dummy';
	put expression into if condition to prevent optimising away;
	remove unused variable.
	* cancel4.c (mythread): Cast return value to avoid warnings.
	* cancel2.c (mythread): Missing #endif.
	* condvar9.c (mythread): Cast return value to avoid warnings.
	* condvar8.c (mythread): Cast return value to avoid warnings.
	* condvar7.c (mythread): Cast return value to avoid warnings.
	* cleanup3.c (mythread): Cast return value to avoid warnings.
	* cleanup2.c (mythread): Cast return value to avoid warnings.
	* cleanup1.c (mythread): Cast return value to avoid warnings.
	* condvar5.c (mythread): Cast return value to avoid warnings.
	* condvar3.c (mythread): Cast return value to avoid warnings.
	* condvar6.c (mythread): Cast return value to avoid warnings.
	* condvar4.c (mythread): Cast return value to avoid warnings.
2000-08-05  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* cancel2.c: Use PtW32CatchAll macro if defined.
	* exception1.c: Use PtW32CatchAll macro if defined.
2000-08-02  Ross Johnson  <rpj@special.ise.canberra.edu.au>
	* tsd1.c: Fix typecasts of &result [g++ is now very fussy].
	* test.h (assert): Return 0's explicitly to allay
	g++ errors.
	* join2.c: Add explicit typecasts.
	* join1.c: Add explicit typecasts.
	* join0.c: Add explicit typecasts.
	* eyal1.c: Add explicit typecasts.
	* count1.c (main): Add type cast to remove g++ parse warning
	[gcc-2.95.2 seems to have tightened up on this].
	* Makefile (GLANG): Use c++ explicitly.
	Remove MSVC sections (was commented out).
	Add target to generate cpp output. | 
|  |  | 
|  | * sched.c (sched_get_priority_max): Handle different WinCE and
        Win32 priority values together.
        (sched_get_priority_min): Ditto.
        - Tristan Savatier <tristan@mpegtv.com>
        * create.c (pthread_create): Force new threads to wait until
        pthread_create has the new thread's handle; we also retain
        a local copy of the handle for internal use until
        pthread_create returns.
        * private.c (_pthread_threadStart): Initialise ei[].
        (_pthread_threadStart): When beginthread is used to start the
        thread, force waiting until the creator thread had the
        thread handle.
        * cancel.c (_pthread_cancel_thread): Include context switch
        code for defined(_X86_) environments in addition to _M_IX86.
        * rwlock.c (pthread_rwlock_destroy): Assignment changed
        to avoid compiler warning.
        * private.c (_pthread_get_exception_services_code): Cast
        NULL return value to avoid compiler warning.
        * cleanup.c (pthread_pop_cleanup): Initialise "cleanup" variable
        to avoid compiler warnings.
        * misc.c (_pthread_new): Change "new" variable to "t" to avoid
        confusion with the C++ keyword of the same name.
        * condvar.c (cond_wait_cleanup): Initialise lastWaiter variable.
        (cond_timedwait): Remove unused local variables. to avoid
        compiler warnings.
        * dll.c (dllMain): Remove 2000-07-21 change - problem
        appears to be in pthread_create().
2000-07-22  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * tsd.c (pthread_key_create): If a destructor was given
        and the pthread_mutex_init failed, then would try to
        reference a NULL pointer (*key); eliminate this section of
        code by using a dynamically initialised mutex
        (PTHREAD_MUTEX_INITIALIZER).
        * tsd.c (pthread_setspecific): Return an error if
        unable to set the value; simplify cryptic conditional.
        * tsd.c (pthread_key_delete): Locking threadsLock relied
        on mutex_lock returning an error if the key has no destructor.
        ThreadsLock is only initialised if the key has a destructor.
        Making this mutex a static could reduce the number of mutexes
        used by an application since it is actually created only at
        first use and it's often destroyed soon after.
2000-07-22  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * FAQ: Added Q5 and Q6.
tests/ChangeLog:
2000-07-25  Ross Johnson  <rpj@special.ise.canberra.edu.au>
        * runtest.bat: modified to work under W98.
        * runall.bat: Add new tests; modified to work under W98.
        It was ok under NT.
        * Makefile: Add new tests.
        * exception1.c: New; Test passing exceptions back to the
        application and retaining library internal exceptions.
        * join0.c: New; Test a single join. | 
|  | * dll.c (dllMain): Remove 2000-07-21 change - problem
        appears to be in pthread_create().
2000-07-21  Ross Johnson  <rpj@setup1.ise.canberra.edu.au>
        * create.c (pthread_create): Set threadH to 0 (zero)
        everywhere. Some assignments were using NULL. Maybe
        it should be NULL everywhere - need to check. (I know
        they are nearly always the same thing - but not by
        definition.)
        * dll.c: Include resource leakage work-around. This is a
        partial FIXME which doesn't stop all leakage. The real
        problem needs to be found and fixed.
        - "David Baggett" <dmb@itasoftware.com>
        * misc.c (pthread_self): Try to catch NULL thread handles
        at the point where they might be generated, even though
        they should always be valid at this point.
        * tsd.c (pthread_setspecific): return an error value if
        pthread_self() returns NULL.
        * sync.c (pthread_join): return an error value if
        pthread_self() returns NULL.
        * signal.c (pthread_sigmask): return an error value if
        pthread_self() returns NULL. | 
|  |  | 
|  |  | 
|  |  | 
|  | * Makefile: Remove inconsistencies in 'cl' args
        - Erik Hensema <erik.hensema@group2000.nl> | 
|  |  | 
|  |  | 
|  | - asynchronous cancellation added
	- attempt to hide internal exceptions from applications
	- kernel32 load/free problem fixed
	- new tests
	- changes only to comments in some tests | 
|  |  | 
|  | (ETIMEDOUT): Change fallback value to that defined by winsock.h. | 
|  | * general: Patched for portability to WinCE. The details are
        described in the file WinCE-PORT. Follow the instructions
        in README.WinCE to make the appropriate changes in config.h.
        - Tristan Savatier <tristan@mpegtv.com> | 
|  |  | 
|  |  | 
|  | 1999-10-30  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * create.c (pthread_create): Explicitly initialise thread state to
        default values.
        * cancel.c (pthread_setcancelstate): Check for NULL 'oldstate'
        for compatibility with Solaris pthreads;
        (pthread_setcanceltype): ditto:
        - Erik Hensema <erik.hensema@group2000.nl>
1999-10-23  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * pthread.h (ctime_r): Fix incorrect argument "_tm"
        - Erik Hensema <erik.hensema@group2000.nl>
tests/ChangeLog:
1999-10-30  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * cancel1.c: New. Test pthread_setcancelstate and
	pthread_setcanceltype functions.
        * eyal1.c (waste_time): Change calculation to avoid FP exception
	on Aplhas
	- Rich Peters <rpeters@micro-magic.com> | 
|  | * pthread.h (_POSIX_THREADS): Only define it if it isn't
        already defined. Projects may need to define this on
        the CC command line under Win32 as it doesn't have unistd.h
        - Aurelio Medina <aureliom@crt.com> | 
|  |  | 
|  | * rwlock.c (pthread_rwlock_destroy): Add cast to remove compile
        warning.
        * condvar.c (pthread_cond_broadcast): Only release semaphores
        if there are waiting threads.
1999-10-15  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * condvar.c (cond_wait_cleanup): New static cleanup handler for
        cond_timedwait;
        (cond_timedwait): pthread_cleanup_push args changed;
        canceling a thread while it's in pthread_cond_wait
        will now decrement the waiters count and cleanup if it's the
        last waiter.
        - Lorin Hochstein <lmh@xiphos.ca> and
          Peter Slacik <Peter.Slacik@tatramed.sk>;
        the last waiter will now reset the CV's wasBroadcast flag
        - Graham Dumpleton <Graham.Dumpleton@ra.pad.otc.telstra.com.au>. | 
|  |  | 
|  |  | 
|  |  | 
|  | * rwlock6.c: New test. | 
|  | * rwlock.c (pthread_rwlock_destroy): Add serialisation.
	(_rwlock_check_need_init): Check for detroyed rwlock.
	* rwlock.c: Check return codes from _rwlock_check_need_init();
	modify comments; serialise access to rwlock objects during
	operations; rename rw_mutex to rw_lock.
	* implement.h: Rename rw_mutex to rw_lock.
        * mutex.c (pthread_mutex_destroy): Add serialisation.
        (_mutex_check_need_init): Check for detroyed mutex.
        * condvar.c (pthread_cond_destroy): Add serialisation.
        (_cond_check_need_init): Check for detroyed condvar.
        * mutex.c: Modify comments.
	* condvar.c: Modify comments. | 
|  |  | 
|  | * rwlock5.c: New test. | 
|  | The following code for POSIX read/write locks was contributed
        by Aurelio Medina.
        * implement.h (pthread_rwlock_t_): Add.
        * pthread.h (pthread_rwlock_t): Add.
        (PTHREAD_RWLOCK_INITIALIZER): Add.
        Add rwlock function prototypes.
        * rwlock.c: New module.
        * pthread.def: Add new rwlock functions.
        * private.c (_pthread_processInitialize): initialise
        _pthread_rwlock_test_init_lock critical section.
        * global.c (_pthread_rwlock_test_init_lock): Add.
        * mutex.c (pthread_mutex_destroy): Don't free mutex memory
        if mutex is PTHREAD_MUTEX_INITIALIZER and has not been
        initialised yet.
tests/ChangeLog
Sep 15 1999  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * rwlock1.c: New test.
        * rwlock2.c: New test.
        * rwlock3.c: New test.
        * rwlock4.c: New test. | 
|  | * mutex.c (pthread_mutex_destroy): Don't free mutex memory
        if mutex is PTHREAD_MUTEX_INITIALIZER and has not been
        initialised yet. | 
|  | * mutex.c (pthread_mutex_destroy): Free mutex memory.
        - Milan Gardian <mg@tatramed.sk> | 
|  | * exit.c (pthread_exit): Fix reference to potentially
        uninitialised pointer.
1999-08-21  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * private.c (_pthread_threadStart): Apply fix of 1999-08-19
        this time to C++ and non-trapped C versions. Ommitted to
        do this the first time through.
tests/ChangeLog:
Aug 22 1999  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * runall.bat (join2): Add test. | 
|  | * private.c (_pthread_threadStart): Return exit status from
        the application thread startup routine.
        - Milan Gardian <mg@tatramed.sk>
1999-08-18  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * exit.c (pthread_exit): Put status into pthread_t->exitStatus
        - John Bossom <john.Bossom@cognos.com>
        * private.c (_pthread_threadStart): Set pthread->exitStatus
        on exit of try{} block.
        - John Bossom <john.Bossom@cognos.com>
        * sync.c (pthread_join): use pthread_exitStatus value if the
        thread exit doesn't return a value (for Mingw32 CRTDLL
        which uses endthread instead of _endthreadex).
        - John Bossom <john.Bossom@cognos.com>
Tue Aug 17 20:17:58 CDT 1999  Mumit Khan  <khan@xraylith.wisc.edu>
        * create.c (pthread_create): Add CRTDLL suppport.
        * exit.c (pthread_exit): Likewise.
        * private.c (_pthread_threadStart): Likewise.
        (_pthread_threadDestroy): Likewise.
        * sync.c (pthread_join): Likewise.
        * tests/join1.c (main): Warn about partial support for CRTDLL.
Tue Aug 17 20:00:08 1999  Mumit Khan  <khan@xraylith.wisc.edu>
        * Makefile.in (LD): Delete entry point.
        * acconfig.h (STDCALL): Delete unused macro.
        * configure.in: Remove test for STDCALL.
        * config.h.in: Regenerate.
        * errno.c (_errno): Fix self type.
        * pthread.h (PT_STDCALL): Move from here to
        * implement.h (PT_STDCALL): here.
        (_pthread_threadStart): Fix prototype.
        * private.c (_pthread_threadStart): Likewise.
1999-08-14  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * exit.c (pthread_exit): Don't call pthread_self() but
        get thread handle directly from TSD for efficiency. | 
|  | * exit.c (pthread_exit): Don't call pthread_self() but
        get thread handle directly for efficiency. | 
|  |  | 
|  | 1999-08-12  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * private.c (_pthread_threadStart): ei[] only declared if _MSC_VER.
tests/ChangeLog:
Wed Aug 12 1999  Ross Johnson  <rpj@ixobrychus.canberra.edu.au>
        * Makefile (LIBS): Add -L. | 
|  |  | 
|  |  |