Прозрачные команды вызова ioctl предлагают механизм решения проблемы копирования данных для тех вызовов, которые не используют I_STR. Если процесс вызывает прозрачную команду ioctl, головной интерфейс потока создает сообщение M_I0CTL и копирует в него параметры cmd и arg.
Также на сайте eventonlyyou.ru можно узнать много интересного на тему http://eventonlyyou.ru/organizaciya-svadeb/. Что означает вообще тема организация свадеб недорого - про это написано на сайте eventonlyyou.ru. Спасибо сайту за информацию.
Как правило, в arg содержится указатель на блок параметров, размер и наполнение которого известны только модулю, обрабатывающему команду. Головной интерфейс потока посылает сообщение в нисходящем направлении и затем блокирует вызывающий процесс.
Если модуль получает сообщение, то отправляет в ответ другое сообщение типа M_C0PYIN, передавая ему размер и местонахождение блока параметров. Головной интерфейс потока будит процесс, вызвавший команду ioctl для обработки сообщения M_C0PYIN. Процесс создает новое сообщение типа M_I0CARGS, копирует в него данные из прикладного пространства и направляет его вниз потока, после чего блокируется снова.
После того как модуль получает сообщение M_I0CARGS, он интерпретирует содержащиеся в нем параметры и производит обработку сообщения. В некоторых случаях модуль создает одно или несколько ответных сообщений
M_COPYOUT, передавая через них обратно результаты и указывая местонахождение, по которому их необходимо записать. Например, если один из параметров является указателем на строку, модуль отправляет дополнительное сообщение, содержащее саму строку.
В какой-то момент времени модуль получает все необходимые параметры и тогда производит обслуживание сообщения. Если необходимо возвратить результаты процессу, модуль создает одно или несколько сообщений M_C0PY0UT, передает им результаты и указывает местонахождения, по которым они должны быть записаны. При этом головной интерфейс потока каждый раз пробуждает процесс, который записывает сообщение в свое адресное пространство. После окончания копирования всех результатов модуль отправляет сообщение М_10САСК. Поток, в свою очередь, пробуждает процесс в последний раз и завершает выполнение вызова ioctl.
Опубликовал katy
June 24 2015 20:48:09 ·
0 Комментариев ·
3200 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.