diff --git a/kernel/trunk/docs/sysfuncr.txt b/kernel/trunk/docs/sysfuncr.txt index b7d8e8dfaf..c28e750130 100644 --- a/kernel/trunk/docs/sysfuncr.txt +++ b/kernel/trunk/docs/sysfuncr.txt @@ -1901,52 +1901,6 @@ dd 1675 * Функции работы с событиями учитывают маску на момент вызова функции, а не на момент поступления сообщения. -====================================================================== -================= Функция 41 - узнать владельца IRQ. ================= -====================================================================== -Параметры: - * eax = 41 - номер функции - * ebx = номер IRQ, 0..15 -Возвращаемое значение: - * eax = PID владельца - * eax = 0, если владельца нет - * eax = -1 для некорректного ebx - -====================================================================== -========= Функция 42 - работа с данными, полученными по IRQ. ========= -====================================================================== -При возникновении IRQ система может считывать данные из указанных -ранее функцией 44 портов и записывать эти данные в буфер. - --------------------- Подфункция 0 - чтение данных -------------------- -Параметры: - * eax = 42 - номер функции - * bl = номер IRQ, 0..15 - * bh = 0 - номер подфункции - * остальная часть регистра ebx должна быть обнулена - * ecx = указатель на буфер размером не менее 4000 байт -Возвращаемое значение: (ситуацию можно различить по значению eax) - * если поток не является владельцем IRQ - (или номер IRQ задан неверно): eax = -1 - * если данных нет: eax = 0 - * если всё в порядке и данные были: - eax = размер данных, прочитанных из буфера (в байтах) - ------------- Подфункция 1 - узнать размер данных в буфере ------------ -Параметры: - * eax = 42 - номер функции - * bl = номер IRQ, 0..15 - * bh = 1 - номер подфункции - * остальная часть регистра ebx должна быть обнулена -Возвращаемое значение: - * если поток не является владельцем IRQ - (или номер IRQ задан неверно): eax = -1 - * иначе eax = размер данных в буфере -Замечания: - * Предварительно поток должен зарезервировать для себя указанный IRQ - функцией 45. - * Размер буфера для данных - 4000 байт, при переполнении - "свежие" данные перестают записываться в буфер. ====================================================================== =================== Функция 43 - ввод/вывод в порт. ================== @@ -1977,48 +1931,6 @@ dd 1675 быстрее и несколько короче и проще. Из незарезервированных портов читать всё равно нельзя. -====================================================================== -======== Функция 44 - определить действия при поступлении IRQ. ======= -====================================================================== -При возникновении IRQ система может считывать данные из указанных этой -функцией портов и записывать эти данные в буфер, откуда их можно -прочитать функцией 42. -Параметры: - * eax = 44 - номер функции - * ebx = указатель на массив структур, описывающих по одному порту: - * +0: word: 0 означает конец массива, иначе номер порта - * +2: byte: зарезервировано (игнорируется) - * +3: byte: 1=считывать байт из этого порта, 2=считывать слово - * ecx = номер IRQ, 0..15 -Возвращаемое значение: - * eax = 0 - успешно - * eax = 1 - поток не является владельцем указанного IRQ -Замечания: - * Предварительно поток должен зарезервировать за собой - указываемый IRQ функцией 45. - * Принимаются во внимание только первые 16 портов. - * Текущая реализация рассматривает неправильное значение поля +3 - как сигнал прекращения обработки IRQ. - -====================================================================== -============ Функция 45 - зарезервировать/освободить IRQ. ============ -====================================================================== -Параметры: - * eax = 45 - номер функции - * ebx = 0 - зарезервировать, 1 = освободить - * ecx = номер IRQ, 0..15 -Возвращаемое значение: - * eax = 0 - успешно - * eax = 1 - ошибка (неверный номер IRQ или - попытка зарезервировать несвободный IRQ или освободить IRQ, не - зарезервированный текущим потоком) -Замечания: - * Резервирование IRQ нужно для работы функций 42 и 44. - * Только один поток может зарезервировать конкретный IRQ. - * IRQ, обрабатываемые системой самостоятельно, резервируются - системой (потоком 1) при загрузке. - * При завершении потока автоматически освобождаются - все зарезервированные им IRQ. ====================================================================== = Функция 46 - зарезервировать/освободить группу портов ввода/вывода. diff --git a/kernel/trunk/docs/sysfuncs.txt b/kernel/trunk/docs/sysfuncs.txt index 8112493e2f..93165f1f3c 100644 --- a/kernel/trunk/docs/sysfuncs.txt +++ b/kernel/trunk/docs/sysfuncs.txt @@ -1877,53 +1877,6 @@ Remarks: * Event functions take into account the mask on moment of function call, not on moment of event arrival. -====================================================================== -==================== Function 41 - get IRQ owner. ==================== -====================================================================== -Parameters: - * eax = 41 - function number - * ebx = IRQ number, 0..15 -Returned value: - * eax = owner PID - * eax = 0, if there is no owner - * eax = -1 for incorrect ebx - -====================================================================== -================== Function 42 - work with IRQ data. ================= -====================================================================== -When an IRQ occurs, the system reads data from ports indicated -earlier by function 44 and writes this data to -internal buffer. This function reads out data from that buffer. - ---------------------- Subfunction 0 - read data ---------------------- -Parameters: - * eax = 42 - function number - * bl = IRQ number, 0..15 - * bh = 0 - subfunction number - * rest of ebx must be zeroed - * ecx = pointer to a buffer with size not less than 4000 bytes -Returned value: (use value of eax to distinguish) - * if the thread is not IRQ owner - (or IRQ number is incorrect): eax = -1 - * if there is no data: eax = 0 - * if all is ok: - eax = size of data read (in bytes) - -------------- Subfunction 1 - get size of data in buffer ------------- -Parameters: - * eax = 42 - function number - * bl = IRQ number, 0..15 - * bh = 0 - subfunction number - * rest of ebx must be zeroed -Returned value: - * if the thread is not IRQ owner - (or IRQ number is incorrect): eax = -1 - * otherwise eax = size of data in buffer -Remarks: - * Previously the thread must reserve indicated IRQ for itself - by function 45. - * The size of data buffer is 4000 bytes, on overflow - "fresh" data cease to be written in the buffer. ====================================================================== ================ Function 43 - input/output to a port. =============== @@ -1953,48 +1906,6 @@ Remarks: processor instructions in/out - this is much faster and a bit shorter and easier. -====================================================================== -=========== Function 44 - define operations at IRQ arrival. ========== -====================================================================== -At IRQ arrival the system can read the data from ports defined -by this function and write these data to internal buffer, whence -they can be read by ЇєэъЎшхщ 42. -Parameters: - * eax = 44 - function number - * ebx = pointer to the array of structures each describing one port: - * +0: word: 0 means end of array, otherwise port number - * +2: byte: reserved (ignored) - * +3: byte: 1=read byte from this port, 2=read word - * ecx = IRQ number, 0..15 -Returned value: - * eax = 0 - success - * eax = 1 - the thread is not owner of selected IRQ -Remarks: - * Previously the thread must reserve for itself selected IRQ - by function 45. - * First 16 ports are considered only. - * The current implementation considers incorrect value of field +3 - as a signal to terminate IRQ processing. - -====================================================================== -=================== Function 45 - reserve/free IRQ. ================== -====================================================================== -Parameters: - * eax = 45 - function number - * ebx = 0 - reserve, 1 = free - * ecx = IRQ number, 0..15 -Returned value: - * eax = 0 - success - * eax = 1 - error (invalid IRQ number - or attempt to reserve not free IRQ - or to free IRQ, not reserved by this thread) -Remarks: - * IRQ reservation is required for functions 42 and 44. - * Only one thread can reserve the specific IRQ. - * IRQs, handled by the system itself, are reserved by the system - (thread 1) at booting. - * When a thread terminates, all reserved by it IRQs - are freed automatically. ====================================================================== ====== Function 46 - reserve/free a group of input/output ports. =====