Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 65039
Модуль Forms 64832
Пример работы с... 63219
ТЕХНОЛОГИИ ДОСТ... 61544
Имитационное мо... 57380
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,081
новичок: Abdukarimov A
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий на вычислительном центре на GP...
Поиск пути в графе заданном списками инцедентности на Turbo Pascal
Моделирование регулировочного участка цеха на GPSS + Пояснительная записка

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Поля структур
Некоторые поля структур являются масками флагов. Драйверам не разрешено передавать таким полям значения напрямую, а только лишь устанавливать или сбрасывать соответствующие флаги. Это правило появилось из-за того, что в определенных реализациях
могут оказаться флаги, не предусмотренные спецификацией.



Также вам может показаться, что такая тема как http://linentime.ru/catalog/prikolnoe-postelnoe-bele никак не связана и даже не тематична. Хотя, может быть и связана. В любом случае все-таки зайдите на сайт linentime.ru. Тема прикольное постельное белье интернет магазин там представлена весьма широко. На том сайте можно узнать много интересного на тему прикольное постельное белье интернет магазин. Что означает вообще тема прикольное постельное белье интернет магазин, где найти прикольное постельное белье интернет магазин - про это написано на сайте linentime.ru. Это очень важная для многих людей тема - прикольное постельное белье интернет магазин. Спасибо сайту linentime.ru за информацию на тему прикольное постельное белье интернет магазин.

♦ Структуры данных, недоступные для приложений, не включены в раздел 4, однако могут упоминаться при описании использующих их процедур. Драйверам запрещено обращаться к какой-либо части таких структур. Они могут использовать их исключительно по ссылкам, передавая указатели на эти структуры соответствующим процедурам ядра.
♦ Для чтения или изменения структур данных, описанных в разделе 4, драйверы должны по мере возможности использовать только функции раздела 3. Такой подход позволяет защитить драйвер от потери совместимости при внесении изменений в структуры данных.



♦ Драйвер должен содержать файл ddi.h, размещаемый после всех системных включаемых файлов, но до специфических для драйвера включаемых файлов. Причиной появления данного требования является реализация большого числа функций спецификации в виде макроопределений. Файл ddi.h переопределяет такие макросы, заставляя драйверы использовать не их, а вызовы функций, формирующие соответствующие процедуры. Это позволяет упростить задачу переноса драйвера на другие версии системы. Включение специфических для драйвера файлов после ddi.h гарантирует, что он будет использовать только интерфейс DDI/DKI.



♦ Все закрытые процедуры и внутренние переменные должны иметь тип static.
16.7.2. Функции раздела 3
В разделе 3 спецификации DDI/DKI описаны функции ядра, используемые драйверами устройств. Процедуры могут быть разделены на несколько функциональных групп.
♦ Синхронизация и таймер. Процедуры sleep() и wakeup() описаны в разделе 2.5.1. Функция delay() блокирует процесс на указанное количество времени. Процедуры timeout() и untimeout() позволяют производить планирование процессов


♦ Управление памятью. Процедуры kmem_alloc() и kmem_free() отвечают за выделение памяти ядром. Процедуры rminit(), rmaUoc() и rmfree() управляют картами ресурсов. Работа этих функций описана в главе 121. Функции physmap() и physmapfree() применяются для отображения физических адресов в виртуальные.
Спецификация DDI/DKI 769
Управление буфером. Процедура getblk() размещает буфер, функция brelse() используется для его освобождения. Драйвер вызывает biowait() для ожидания завершения ввода-вывода. Для пробуждения процесса и освобождения буфера обработчик прерываний вызывает biodone().
Операции с номерами устройств. Функции getmajor() и getminor() выделяют внешний старший и младший номера из dev_t. Функции itoemajor() и etoiminor() применяются для преобразования внутреннего номера во внешний и обратно.
Прямой доступ к памяти. Набор аппаратно-зависимых функций, поддерживающих DMA. Спецификация содержит описания функций для IBM РС-АТ-совместимых архитектур.
Обмен данными. Функция uiomove() копирует данные между адресным пространством ядра и пространством прикладного процесса, либо между двумя участками внутри пространства ядра. Эта функция поддерживает ввод-вывод методом сборки-рассоединения (scatter-gather I/O). Например, функция может собирать данные из нескольких прикладных буферов в единый буфер ядра

Для описания параметров передачи функция использует структуру uio. Процедуры copyin() и copyout() применяются при обмене данными между буфером драйвера и прикладным буфером. Такие аппаратно-зависимые процедуры, как inb() и outb(), перемещают данные из пространства ввода-вывода и обратно на архитектурах, не поддерживающих отображаемый ввод- вывод (например, в Intel х86).


♦ Опрос устройств. Процедуры опроса устройств включают в себя phalloc() и phfree(), используемые для выделения структур poLLhead, и pollwakeup() для пробуждения опрашивающих процессов.
♦ STREAMS. Набор процедур поддержки драйверов устройств STREAMS. О них подробнее читайте в главе 17.
♦ Сервисные процедуры. В интерфейсе DDI/DKI поддерживается набор функций работы со строками, таких как strcopy() и strlen(), манипулирования байтами, таких как bcopy(), bcmp() и bzero(), функции обработки ошибок, такие как ASSERT() и cmn_err(), а также другие полезные функции, например тах() и min().
Опубликовал katy June 24 2015 19:46:29 · 0 Комментариев · 2177 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Report
Page Promoter 7.7...
Run
Разработка интерн...
Turbo Pascal for ...
Заставка. Изображ...
Добавление к ссы...
Blobs [Исходник н...
Дешифратор содерж...
CoolDev TipsSyste...
PHP: обучение на ...
oTextrackBar
Tank [Исходник на...
Голосование для ...
C++ : библиотека ...
Delphi 2005 для .NET
Работа с картотеками
Animation (Пример...
Х. М. Дейтел, П. ...
Пример создания W...

Топ загрузок
Приложение Клие... 100464
Delphi 7 Enterp... 86602
Converter AMR<-... 20077
GPSS World Stud... 12630
Borland C++Buil... 11751
Borland Delphi ... 8555
Turbo Pascal fo... 7037
Visual Studio 2... 4998
Калькулятор [Ис... 4759
FreeSMS v1.3.1 3541
Случайные статьи
Объекты Range и Cells
Циклический сдвиг...
Утверждения в сред...
Инвариант цикла ск...
Кодирование
Лечение зубов
Как обнаружить пер...
Файловая система /...
Отдых после трудно...
Сколько еще будет ...
/С отображает толь...
Akismet и All -in ...
Выполнение LWP пос...
Объекты, свойства ...
Дорвеи и поисковые...
Рехеширование – сл...
tld. Самымпростым ...
Закрытие документа...
Связывание — это с...
Библиотека Matrix
asserta(X), assert...
Терминалогия принц...
Неупорядоченные сп...
Виртуальная телефо...
Создание потоков с...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?