Hi Corinna,
On 10/22/2024 7:45 AM, Corinna Vinschen wrote:
Hi Mark,
Thanks for looking into this.
On Sep 19 02:13, Mark Geisert wrote:
Change the first parameter of pthread_sigqueue() to be a thread id rather
than a thread pointer. The change is to match the Linux implementation of
this function.
The user-visible function prototype is changed. Simple list iteration is
added to the threadlist code. A lookup-by-id function is added to class
pthread. The pthread_sigqueue() function is modified to work with a
passed-in thread id rather than an indirect thread pointer as before.
(It was "pthread_t *thread", i.e., class pthread **.) The release note
for Cygwin 3.6.0 is updated.
Even if the old prototype was wrong, we probably have to keep it for
backward compatibility. As unlikely as it seems, but there may be
binaries out there actually using the old prototype.
We can discuss this probability, but assuming we want to keep backward
compat at all cost, we would have to
No need to discuss. I'm happy keeping backward compatibility.
- create a new function like pthread_sigqueue_with_correct_prototype (heh)
- Add this function to cygwin.din as exported symbol
- Add a matching entry to NEW_FUNCTIONS in Makefile.am, e.g.,
pthread_sigqueue=pthread_sigqueue_with_correct_prototype,
- Implement either pthread_sigqueue_with_correct_prototype calling
pthread_sigqueue or vice versa, whatever makese more sense.
I appreciate your redirecting me towards an acceptable solution. I've
re-implemented the fix as you've indicated but there's one thing I
cannot figure out. (BTW I implemented a new pthread_sigqueue_portable()
calling existing pthread_sigqueue().)
In cygwin/include/pthread.h, should both function names appear or just
pthread_sigqueue? If the latter, which version of prototype? It seems
problematic: We want the include file to have the new, portable,
prototype for pthread_sigqueue() don't we? Doesn't that require that the
original pthread_sigqueue() be renamed to something else and have it
call the new pthread_sigqueue()? Maybe that changes one or more of the
steps you wrote above?
Thanks & Regards,
..mark