Jump to content

DosCreateSpinLock: Difference between revisions

From EDM2
Created page with "Create a subsystem spinlock. This function is physical DevHlps introduced with OS/2 SMP. ==Syntax== <PRE> DosCreateSpinLock(PHSPINLOCK pHandle) </PRE> ==Parameters== ==Retur..."
 
Line 15: Line 15:
==Example Code==
==Example Code==
<PRE>
<PRE>
// OS/2 adv srv 4 SMP spinlock
extern "C" {
            typedef ULONG HSPINLOCK;
            typedef HSPINLOCK FAR *PHSPINLOCK;
            APIRET APIENTRY DosCreateSpinLock(PHSPINLOCK pHandle);
            APIRET APIENTRY DosAcquireSpinLock(HSPINLOCK Handle);
            APIRET APIENTRY DosReleaseSpinLock(HSPINLOCK Handle);
            APIRET APIENTRY DosFreeSpinLock(HSPINLOCK Handle);
            };


class SpinLock {
        HSPINLOCK sl;
public:
        SpinLock() { DosCreateSpinLock(&sl); }
        ~SpinLock() { DosFreeSpinLock(sl); }
        void Request() {
                DosAcquireSpinLock(sl);
        }
        void Release() {
                DosReleaseSpinLock(sl);
        }
};
</PRE>
</PRE>



Revision as of 19:19, 7 June 2017

Create a subsystem spinlock. This function is physical DevHlps introduced with OS/2 SMP.

Syntax

DosCreateSpinLock(PHSPINLOCK pHandle)

Parameters

Return Code

Errors

Remarks

Example Code

// OS/2 adv srv 4 SMP spinlock
extern "C" {
            typedef ULONG HSPINLOCK;
            typedef HSPINLOCK FAR *PHSPINLOCK;
            APIRET APIENTRY DosCreateSpinLock(PHSPINLOCK pHandle);
            APIRET APIENTRY DosAcquireSpinLock(HSPINLOCK Handle);
            APIRET APIENTRY DosReleaseSpinLock(HSPINLOCK Handle);
            APIRET APIENTRY DosFreeSpinLock(HSPINLOCK Handle);
            };

class SpinLock {
        HSPINLOCK sl;
public:
        SpinLock() { DosCreateSpinLock(&sl); }
        ~SpinLock() { DosFreeSpinLock(sl); }
        void Request() {
                DosAcquireSpinLock(sl);
        }
        void Release() {
                DosReleaseSpinLock(sl);
        }

};

Related Functions

[[Category:]]