
  PROCEDURE [INLINE] nlp$get_exclusive_access
    (VAR access_control: nlt$access_control);

?? PUSH (LISTEXT := ON) ??
?? RIGHT := 110 ??

    VAR
      old_access: nlt$access_control,
      new_access: nlt$access_control,
      actual_access: nlt$access_control,
      cs_status: osc$cs_successful .. osc$cs_variable_locked;

    old_access.value := 0;
    new_access := old_access;
    new_access.exclusive := TRUE;

    osp$begin_subsystem_activity;
    REPEAT
      #COMPARE_SWAP (access_control, old_access, new_access, actual_access, cs_status);
      IF (cs_status = osc$cs_failed) THEN
        osp$end_subsystem_activity;
        syp$cycle;
        osp$begin_subsystem_activity;
      IFEND;
    UNTIL (cs_status = osc$cs_successful);
  PROCEND nlp$get_exclusive_access;

*copyc nlt$access_control
*copyc osp$begin_subsystem_activity
*copyc osp$end_subsystem_activity
*copyc ost$signature_lock
*copyc syp$cycle
?? POP ??

