Interruptlock/Unlock and the spinlock mystery ;-)

I’ve found a lot of threads discussing this topic, but no answer for my question.

I must switch from InterruptEnable/Disable to Interruptlock/Unlock. Because we use a SMP-Sytem and serveral Ressource-Manager have access via InterruptServiceRoutine to one critical section.
Therefore I need a spinlock-variable.

Do I have to declare a spinlock-variable in a shared memory, so that all processes(RM) uses the same spinlock for the same critical section?

Or can I easily use global variables and every process(RM) uses its own spinlock-variable?

  1. Is it right, that interruptlock() locks all interrupts on one CPU (similar to interruptdisable) and only interrupts from other CPUs can still be enabled and must therefore synchronized by a spinlock-variable?
  1. Yes if you want to lock various processes which access the same shared memory

  2. I do not understand the question.

Have you considered using mutex?

to 1) o.k. this means I have to create a spinlock in a shared memory, which can be used by all processes

to 2) In former times InterruptDisble disabled the complete interrupt register of the CPU.
Now I have to use interruptlock(spin).
And I dont know how this function works.
Does this function also disable the register for one Core and additional locks the spin or does this function only locks the spin?

to 1) I called qnx-support:
→ It’s not recommended to put a spin-variable in the shared memory.
In general, a spinlock should be related to data in a critical section and this data should be related to one process. Therefore a process-wide spinlock shouldn’t be necessary.

to 2) Yes, its correct interruptlock() works in 2 steps.
a) disable interrupt register of one core
b) locks spin