Локальные сети персональных компьютеров. Работа с сервером Novell NetWare


Семафоры - часть 3


int SignalSemaphore(long SemaphoreHandle);

Индекс семафора задается параметром функции.

Функция возвращает 0 при успешном завершении или код ошибки:

Код ошибки Значение
0x01 Переполнение семафора, значение семафора стало больше 127
0xFF Неправильное значение индекса семафора

Для работы с семафорами можно использовать функцию C5h прерывания INT21h. В зависимости от содержимого регистра AL эта функция выполняет ту или иную операцию с семафором.

Открытие семафора:

На входе: AH = C5h;
AL = 00h;
DS:DX = Адрес имени семафора;
CL = Начальное значение семафора.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.

Определение состояния семафора:

На входе: AH = C5h;
AL = 01h;
CX,DX = Индекс семафора;
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок;
CX = Значение семафора;
DL = Счетчик использований семафора.

Уменьшение значения семафора:

На входе: AH = C5h;
AL = 02h;
CX,DX = Индекс семафора;
BP = Время ожидания.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.

Увеличение значения семафора:

На входе: AH = C5h;
AL = 03h;
CX,DX = Индекс семафора.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.

Закрытие семафора:

На входе: AH = C5h;
AL = 04h;
CX,DX = Индекс семафора.
На выходе: AL = Код ошибки или 0, если операция завершилась без ошибок.




- Начало -  - Назад -  - Вперед -