Difference between revisions of "SysFn77/ru"

From KolibriOS wiki
Jump to navigation Jump to search
Line 67: Line 67:
  
 
=== Подфункция 10 - read() ===
 
=== Подфункция 10 - read() ===
 +
Чтение из файла в буфер.
 
''Параметры:''
 
''Параметры:''
 
:* eax = 77 - номер функции
 
:* eax = 77 - номер функции
Line 81: Line 82:
  
 
=== Подфункция 11 - write() ===
 
=== Подфункция 11 - write() ===
 +
Запись данных из буфера в файл.
 +
''Параметры:''
 +
:* eax = 77 - номер функции
 +
:* ebx = 11 - номер подфункции
 +
:* ecx = дескриптор файла
 +
:* edx = указатель на буфер, откуда брать данные для записи
 +
:* esi = сколько байт записать
 +
''Возвращаемое значение:''
 +
:* eax = количество записанных байт
 +
 +
'''Константы для регистров:'''
 +
:: eax - SF_FUTEX (77)
 +
:: ebx - ...
  
 
=== Подфункция 12 - dup3() ===
 
=== Подфункция 12 - dup3() ===
 +
:: Функция не реализована на данный момент.
  
 
=== Подфункция 11 - pipe2() ===
 
=== Подфункция 11 - pipe2() ===
 +
TODO
  
 
{{System_functions}}
 
{{System_functions}}
 
[[Category: SysCalls]]
 
[[Category: SysCalls]]

Revision as of 21:54, 29 May 2021

Подфункция 0 - Создать фьютекс

Параметры:

  • eax = 77 - номер функции
  • ebx = 0 - номер подфункции
  • ecx = указатель на контрольное значение фьютекса (dword)

Возвращаемое значение:

  • eax = дескриптор фьютекса, 0 при ошибке

Константы для регистров:

eax - SF_FUTEX (77)
ebx - SSF_CREATE (0)

Подфункция 1 - Удалить фьютекс

Параметры:

  • eax = 77 - номер функции
  • ebx = 1 - номер подфункции
  • ecx = дескриптор фьютекса

Возвращаемое значение:

  • eax = 0 - успешно, -1 при ошибке

Замечания:

  • Ядро автоматически удаляет фьютексы при завершении процесса.

Константы для регистров:

eax - SF_FUTEX (77)
ebx - SSF_DESTROY (1)

Подфункция 2 - Ожидать

Параметры:

  • eax = 77 - номер функции
  • ebx = 2 - номер подфункции
  • ecx = дескриптор фьютекса
  • edx = контрольное значение
  • esi = таймаут в сотых секунды, 0 - ждать бесконечно

Возвращаемое значение:

  • eax = 0 - успешно, -1 - таймаут, -2 - контрольное значение не соответствует

Константы для регистров:

eax - SF_FUTEX (77)
ebx - SSF_WAIT (2)

Подфункция 3 - Разбудить

Параметры:

  • eax = 77 - номер функции
  • ebx = 3 - номер подфункции
  • ecx = дескриптор фьютекса
  • edx = сколько ожидающих будить (максимум)

Возвращаемое значение:

  • eax = количество разбуженых

Константы для регистров:

eax - SF_FUTEX (77)
ebx - SSF_WAKE (3)

Подфункция 4 - Зарезервирована

Подфункция 5 - Зарезервирована

Подфункция 6 - Зарезервирована

Подфункция 7 - Зарезервирована

Подфункция 8 - open()

Функция не реализована на данный момент.

Подфункция 9 - close()

Функция не реализована на данный момент.

Подфункция 10 - read()

Чтение из файла в буфер. Параметры:

  • eax = 77 - номер функции
  • ebx = 10 - номер подфункции
  • ecx = дескриптор файла
  • edx = указатель на буфер, куда читать
  • esi = сколько байт прочитать

Возвращаемое значение:

  • eax = количество прочитанных байт

Константы для регистров:

eax - SF_FUTEX (77)
ebx - ...

Подфункция 11 - write()

Запись данных из буфера в файл. Параметры:

  • eax = 77 - номер функции
  • ebx = 11 - номер подфункции
  • ecx = дескриптор файла
  • edx = указатель на буфер, откуда брать данные для записи
  • esi = сколько байт записать

Возвращаемое значение:

  • eax = количество записанных байт

Константы для регистров:

eax - SF_FUTEX (77)
ebx - ...

Подфункция 12 - dup3()

Функция не реализована на данный момент.

Подфункция 11 - pipe2()

TODO