RtnInitializeCriticalLock

RtnInitializeCriticalLock initializes a CriticalLock data structure.

IMPORTANT! It is NOT safe to nest CritcalLocks.

Syntax

VOID RtnInitializeCriticalLock(
    CriticalLock *pLock
);

Parameters

pLock

Pointer to a critical lock data structure

Return Value

None.

Remarks

CriticalLock data structures must be initialized once before RtnEnterCriticalLock and RtnLeaveCriticalLock can be used. Typically in device drivers, all CriticalLock structures are initialized in RtndConfigure.

Since the individual NAL NIC Drivers operate as RTDLLs, the process context at any given time is not determined. Because of this, normal synchronization mechanisms such as critical sections or semaphores are difficult to use. The CriticalLock structure is guaranteed to work across all process and thread boundaries and so can be used to synchronize hardware access within NAL NIC Drivers without having to deal with process local handles (such as those used by RTX64 critical sections and semaphores).

Requirements

Minimum Supported Version

RTX64 2013

NOTE: RTX64 Network Abstraction Layer (NAL) support requires RTX64 4.0 or later

Header

rtnapi.h

Library

To use with the NAL: RTX64Nal.lib

To use with the TCP/IP Stack: RtTcpip.lib