[M3devel] FW: chosing SIG_SUSPEND?

Jay jay.krell at cornell.edu
Wed Jan 21 15:48:26 CET 2009


Oh partially nevermind -- user threads doesn't use SIG_SUSPEND.
SIG_SUSPEND will go away and ThreadPThreadC.c will define SIG, which will be used by it and ThreadPThread.i3. No RTConstants.c, no change in Uconstants.c.
 
 
 - Jay


----------------------------------------
> From: jay.krell at cornell.edu
> To: hosking at cs.purdue.edu; m3devel at elegosoft.com
> Date: Wed, 21 Jan 2009 14:37:53 +0000
> Subject: [M3devel] FW: chosing SIG_SUSPEND?
>
>
> [truncated again]
>
>
> I'm almost done with this change..just trying to decide
> to put the constants in a new runtime/common/RTConstants.c
> or the existing unix/common/Uconstants.c.
>
> At first I had them in thread/PTHREAD/ThreadPThreadC.c,
> but that isn't compiled on user-thread only platforms. :(
>
> - Jay
>
> ----------------------------------------
>> From: jay
>> To: hosking
>> CC: m3devel
>> Subject: RE: [M3devel] chosing SIG_SUSPEND?
>> Date: Wed, 21 Jan 2009 13:37:53 +0000
>>
>>
>> Solaris at least currently has SIGRTMAX.
>> I want to switch RTSignalC.c to "something" here.
>> I can preserve compat, like
>>
>> #ifdef __sun
>> SIGUSR2
>> #else..
>>
>> or..?
>>
>> I could do
>> #ifdef SIGUSR2
>> #define SIG_SUSPEND SIGUSR2
>> #elif defined(SIGRTMAX)
>> #define SIG_SUSPEND SIGRTMAX
>> #else
>> #error
>> #endif
>>
>> I'll go with a compatible version for now and you can change it if you want.
>> I'll test on Linux/x86, FreeBSD (AMD64, but hopefully there is gcc -m32),
>> Linux/PPC, Solaris, Cygwin, Darwin/PPC (uh, actually, no, Darwin isn't
>> really relevant, but I'll make sure the result does what is intended.)
>>
>> It looks like SIGRTMAX is a function call on Solaris.
>>
>> This stuff is like broken, right?
>> I mean, there's a small number of signals and there's no arbitration.
>> People just take them over and hope nobody else cares.
>>
>>
>> There's no way to just queue a function call to a thread, in portable/general?
>> Windows has QueueUserAPC or SuspendThread (SuspendThread is dangerous,
>> thread could be doing anything), QueueUserAPC only interrupts at certain times.
>>
>>
>> - Jay
>>
>>
>> ----------------------------------------
>>> From: hosking at cs.purdue.edu
>>> To: jay.krell at cornell.edu
>>> Date: Wed, 21 Jan 2009 03:42:01 +1100
>>> CC: m3devel at elegosoft.com
>>> Subject: Re: [M3devel] chosing SIG_SUSPEND?
>>>
>>> Choose SIGRTMAX first if defined, then SIGUSR2. I don't thing NSIG-1
>>> is reliable, but just works on some systems.
>>>
>>> On 21 Jan 2009, at 01:12, Jay wrote:
>>>
>>>>
>>>> What is the algorithm for chosing SIG_SUSPEND?
>>>>
>>>> Something like:
>>>>
>>>> #include
>>>>
>>>> #ifdef __APPLE__
>>>> /* nothing -- SIG_SUSPEND not used */
>>>> #elif defined(NSIG)
>>>> #define SIG_SUSPEND (NSIG - 1)
>>>> #elif defined(_NSIG)
>>>> #define SIG_SUSPEND (_NSIG - 1)
>>>> #elif defined(SIGRTMAX)
>>>> #define SIG_SUSPEND SIGRTMAX
>>>> #else
>>>> #define SIG_SUSPEND SIGUSR2
>>>> #endif
>>>>
>>>> ?
>>>>
>>>> Whatever it is, I think it should be in RTSignalC.c.
>>>>
>>>> - Jay
>>>


More information about the M3devel mailing list