IOKernelDebugger
Кусок отладчика ядра.
Это интерфейсы объекта с KDP (протокол отладчика ядра) модуль и отгрузки KDP запрашивает к его цели (провайдер). Цель, определяемая как устройство отладчика, должна реализовать пару функций-обработчиков, которые вызывают, чтобы обработать передачу KDP и получить запросы во время сеанса отладки. Только единственный IOKernelDebugger в системе может быть активным в установленный срок. Активный IOKernelDebugger является тем, которому присоединили объект IOKDP как клиент.
Устройство отладчика обычно является подклассом IOEthernetController. Однако любой IOService может обслужить клиент IOKernelDebugger, реализовать два опрошенных обработчика режима и транспортировать пакеты KDP через канал передачи данных. Однако KDP предполагает, что устройство отладчика является интерфейсом Ethernet, и поэтому это будет всегда отправлять и ожидать получать, кадр Ethernet.
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Не применимый
Objective C
@import Kernel;
Доступность
Доступный в OS X v10.0 и позже.
-
Метод фабрики, выполняющий выделение и инициализацию объекта IOKernelDebugger.
Объявление
C++
static IOKernelDebugger * debugger( IOService *target, IODebuggerTxHandlertxHandler, IODebuggerRxHandlerrxHandler, IODebuggerLinkStatusHandlerlinkStatusHandler, IODebuggerSetModeHandlersetModeHandler);Параметры
targetЦелевой объект, реализующий обработчики отладчика.
txHandlerОбработчик передачи цели. Указатель на функцию 'C'.
rxHandlerЦель получает обработчик. Указатель на функцию 'C'.
linkStatusHandlerОбработчик состояния канала цели. Указатель на функцию 'C'.
setModeHandlerОбработчик режима набора цели. Указатель на функцию 'C'.
Возвращаемое значение
Возвращает экземпляр IOKernelDebugger на успехе, 0 иначе.
-
Освобождает экземпляр IOKernelDebugger.
Объявление
C++
virtual void free(); -
Обрабатывает клиент близко.
Объявление
C++
virtual void handleClose( IOService *forClient, IOOptionBitsoptions);Параметры
forClientКлиент (IOKDP) запрос завершения.
optionsОпции передали завершению () вызов. Не используемый.
Обсуждение
Этот метод вызывает IOService:: близко () для обработки завершения от клиента с арбитражной сохраненной блокировкой.
-
Запросы, есть ли у клиента открытое на этом объекте.
Объявление
C++
virtual bool handleIsOpen( const IOService *forClient) const;Возвращаемое значение
Возвращает true, если у указанного клиента или какого-либо клиента, если ни один (0) не указан, в настоящее время есть открытое на этом объекте.
Обсуждение
Этот метод вызывает IOService:: isOpen () с арбитражной сохраненной блокировкой.
-
Обрабатывает открытый клиент.
Объявление
C++
virtual bool handleOpen( IOService *forClient, IOOptionBitsoptions, void *arg);Параметры
forClientКлиент (IOKDP) запрос открытого.
optionsОпции передали открытому () вызов. Не используемый.
argСемья определила параметр, переданный открытому () вызов. Не используемый.
Возвращаемое значение
Возвращает true на успехе, ложь иначе.
Обсуждение
Этот метод вызывает IOService:: открытый () для обработки открытого от клиента (IOKDP) с арбитражной сохраненной блокировкой.
-
Инициализирует экземпляр IOKernelDebugger.
Объявление
C++
virtual bool init( IOService *target, IODebuggerTxHandlertxHandler, IODebuggerRxHandlerrxHandler, IODebuggerLinkStatusHandlerlinkStatusHandler, IODebuggerSetModeHandlersetModeHandler);Параметры
targetЦелевой объект, реализующий обработчики отладчика.
txHandlerОбработчик передачи цели. Указатель на функцию 'C'.
rxHandlerЦель получает обработчик. Указатель на функцию 'C'.
linkStatusHandlerОбработчик состояния канала цели. Указатель на функцию 'C'.
setModeHandlerОбработчик режима набора цели. Указатель на функцию 'C'.
Возвращаемое значение
Если экземпляр инициализировал успешно, ложь иначе, возвращает true.
-
Состояние канала KDP диспетчеризирует функцию.
Объявление
C++
static UInt32 kdpLinkStatusDispatcher(void);Возвращаемое значение
Возвратите состояние канала.
Обсуждение
Поле запросы состояния канала KDP, затем диспетчеризирует вызов зарегистрированному обработчику соединения.
-
KDP получают функцию отгрузки.
Объявление
C++
static void kdpReceiveDispatcher( void *buffer, UInt32 *length, UInt32timeout);Параметры
bufferKDP получают буфер. Буфер, выделенный KDP, имеет пространство для 1 518 байтов. Получить обработчик не должен переполнять этого буфера.
lengthОбъем данных, полученный и помещенный в буфер. Набор к 0, если кадр не был принят во время интервала опроса.
timeoutКоличество времени для опроса в миллисекундах при ожидании кадра для поступления.
Обсуждение
Поле KDP получает запросы, затем диспетчеризирует вызов зарегистрированному обработчику получателя.
-
KDP устанавливают функцию отгрузки режима.
Объявление
C++
static boolean_t kdpSetModeDispatcher( boolean_tactive);Параметры
activeTRUE при вводе KDP. FALSE при отъезде KDP.
Возвращаемое значение
Возвратите TRUE, если ссылка произошла, и данные могут быть отправлены/получены. Иначе, возвратите FALSE.
Обсуждение
Поле KDP установило запросы режима, затем диспетчеризирует вызов зарегистрированному обработчику режима набора.
-
KDP передают функцию отгрузки.
Объявление
C++
static void kdpTransmitDispatcher( void *buffer, UInt32length);Параметры
bufferБуфер передачи KDP. Этот буфер содержит кадр KDP, который будет отправлен в сети.
lengthЧисло байтов в буфере передачи.
Обсуждение
Поле запросы передачи KDP, затем диспетчеризирует вызов зарегистрированному обработчику передачи.
-
Берет блокировку отладчика условно.
Объявление
C++
static IODebuggerLockState lock( IOService *target);Параметры
targetЦель или провайдер объекта IOKernelDebugger.
Возвращаемое значение
Возвраты kIODebuggerLockTaken, если блокировка была взята, или 0 иначе.
Обсуждение
Этот метод берет блокировку отладчика если объект, данный соответствия цель, зарегистрированная registerHandler ().
-
Обработчик состояния пустой ссылки.
Объявление
C++
static UInt32 nullLinkStatusHandler( IOService *target);Возвращаемое значение
Эта функция будет всегда сообщать о соединении.
Обсуждение
Когда объект IOKernelDebugger сдает свое состояние как активный кусок отладчика, эта функция регистрируется как обработчик состояния канала. Пока другой объект IOKernelDebugger не продвинут, эта функция обработает опрошенные запросы состояния канала от KDP.
-
Нуль получает обработчик.
Объявление
C++
static void nullRxHandler( IOService *target, void *buffer, UInt32 *length, UInt32timeout);Обсуждение
Когда объект IOKernelDebugger сдает свое состояние как активный кусок отладчика, эта функция регистрируется как получить обработчик. Пока другой объект IOKernelDebugger не продвинут, эта функция обработает опрошенный, получают запросы от KDP. Эта функция не делает ничего кроме зарегистрировать предупреждающее сообщение.
-
Обработчик режима пустого множества.
Объявление
C++
static bool nullSetModeHandler( IOService *target, boolactive);Возвращаемое значение
Эта функция будет всегда возвращать true.
Обсуждение
Когда объект IOKernelDebugger сдает свое состояние как активный кусок отладчика, эта функция регистрируется как обработчик режима набора. Пока другой объект IOKernelDebugger не продвинут, эта функция обработает запросы режима набора от KDP.
-
Нулевой обработчик передачи.
Объявление
C++
static void nullTxHandler( IOService *target, void *buffer, UInt32length);Обсуждение
Когда объект IOKernelDebugger сдает свое состояние как активный кусок отладчика, эта функция регистрируется как обработчик передачи. Пока другой объект IOKernelDebugger не продвинут, эта функция обработает опрошенные запросы передачи от KDP. Эта функция не делает ничего полезного.
-
Уведомление дескрипторов, что сетевой контроллер действительно изменял состояние электропитания.
Объявление
C++
virtual IOReturn powerStateDidChangeTo( IOPMPowerFlagsflags, unsigned longstateNumber, IOService *policyMaker);Параметры
flagsОписание возможности контроллера в новом состоянии электропитания.
stateNumberЧисло состояния в массиве состояния, на который переключается контроллер.
policyMakerВлиятельный политик, управляющий состоянием электропитания контроллера.
Возвращаемое значение
Возвращает постоянные 3000000, для указания максимума 3 секунд для подготовки для завершения, и подтверждение, поставленное влиятельному политику.
Обсуждение
Если контроллер стал применимым, то контроллер повторно включен, и обработчики контроллера повторно регистрируются.
-
Уведомление дескрипторов, что сетевой контроллер изменит состояние электропитания.
Объявление
C++
virtual IOReturn powerStateWillChangeTo( IOPMPowerFlagsflags, unsigned longstateNumber, IOService *policyMaker);Параметры
flagsОпишите возможность контроллера в новом состоянии электропитания.
stateNumberЧисло состояния в массиве состояния, на который переключается контроллер.
policyMakerВлиятельный политик, управляющий состоянием электропитания контроллера.
Возвращаемое значение
Возвращает постоянные 3000000, для указания максимума 3 секунд для подготовки для завершения, и подтверждение, поставленное влиятельному политику.
Обсуждение
Если контроллер собирается стать неприменимым, то обработчики контроллера не зарегистрированы, и контроллер отключен.
-
Регистрирует цель и функции-обработчики.
Объявление
C++
static void registerHandler( IOService *target, IODebuggerTxHandler txHandler = 0, IODebuggerRxHandler rxHandler = 0, IODebuggerLinkStatusHandler linkUpHandler = 0, IODebuggerSetModeHandler setModeHandler = 0);Параметры
targetЦелевой объект.
txHandlerФункция-обработчик передачи. Если параметром является нуль, нулевой обработчик регистрируется.
rxHandlerПолучить функция-обработчик. Нулевой обработчик
linkUpHandlerФункция-обработчик соединения. Если параметром является нуль, нулевой обработчик регистрируется.
Обсуждение
Этот метод вызывает handleOpen () и handleClose (), чтобы зарегистрировать или не зарегистрировать цель и ее функции-обработчики.
-
Сигнализируйте ядро для ввода отладчика, когда безопасный.
Объявление
C++
static void signalDebugger(void); -
Выпускает блокировку отладчика.
Объявление
C++
static void unlock( IODebuggerLockStatestate);Обсуждение
Если флаг kIODebuggerLockTaken установлен в параметре, этот метод выпускает блокировку отладчика.
-
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved; -
Зарезервированный для будущего использования. (Только внутреннее использование)
Объявление
C++
ExpansionData * _reserved;
