[Info-vax] pthread_kill() replacement for VMS?

David Froble davef at tsoft-inc.com
Thu Jul 27 20:18:07 EDT 2017


Bill Gunshannon wrote:
> On 7/27/2017 9:46 AM, David Froble wrote:
>> John Reagan wrote:
>>> On Thursday, July 27, 2017 at 8:59:52 AM UTC-4, John E. Malmberg wrote:
>>>> Hello all,
>>>>
>>>> One of the gnulib tests is doing a pthread_kill call which does not 
>>>> exist on VMS.
>>>>
>>>> Is there a quick fix to create such a routine?
>>>>
>>>> Regards,
>>>> -John
>>>
>>> Ah, pthread_kill.  The "standard" way to write non-portable code.
>>>
>>> It is mixing both threads and signals together.  Signals are an 
>>> emulation of the CRTL, not really part of the OS.  In some cases, you 
>>> can turn the pthread_kill into pthread_cancel/pthread_testcancel.
>>>
>>> Here's the stock answer from the threads notefile when pthread_kill 
>>> has been asked for over the years (in particular, from others who 
>>> ported the gnulib going as far back as the early 2000s)
>>>
>>> "The foremost is that UNIX signals are emulated on OpenVMS, and that 
>>> emulation
>>> is provided by the C RTL, not by the base OS.  Thus, the C RTL would 
>>> be the
>>> logical host for pthead_kill(), not the threads library.  However, 
>>> the C RTL,
>>> by design, cannot contain any static references to the threads 
>>> library, nor
>>> does it have any ability to effect signal delivery in a thread other 
>>> than the
>>> current one, and so considerable support would have to be provided by 
>>> the
>>> threads library for the C RTL.  (All of this is ignoring the fact 
>>> that the
>>> signal handler vector and signal delivery masks are currently global 
>>> and not
>>> per-thread.)"
>>
>> Another example of software anarchy in place of well thought out 
>> software architecture.
>>
>> Just like the attempt to implement byte range locking in the CRTL, 
>> instead of the logical place, the DLM that exists to provide locking.
>>
>> Yes, in the end, it's all ones and zeros, and just a long string of 
>> instructions being executed.  But, when something is fundamentally an 
>> OS feature, that's where is should be, not fudged in elsewhere.
> 
> Funny you should say this. I used to say it all the time but
> the Ada fanatics still insisted that no matter how warped or
> incompatible it was between compilers multi-tasking should
> remain a part of the language as opposed to a part of the OS. :-)
> 
> bill
> 

Well, I guess that would depend on the multi-tasking being performed, and such. 
  Sure, an OS provides for multiple processes.  However, a single process may 
need to control and coordinate multiple "things".

I truly do not trust fanatics ....



More information about the Info-vax mailing list