Я хотел бы иметь возможность «захватить» прерывание hrtimer с помощью модуля ядра Linux и воспроизвести прерывание в более поздний период времени. Есть мысли о том, как это сделать?
Пример использования: программа, которая вызывает sleep (1). Мой модуль захватит прерывание hrtimer, когда оно сработает через 1 секунду, дождется времени «x», а затем повторно запустит прерывание, разбудив процесс.
Примечание: я не хочу перехватывать системный вызов сна.
Благодарность!
1 ответ
Честно говоря, написание модуля ядра Linux только для изменения поведения sleep()
для одного приложения звучит излишне.
В большинстве случаев у вас должна быть возможность использовать предварительно загружаемый общий объект для перехвата / переопределения семейства функций sleep()
с помощью ваши собственные реализации. Приложение вызовет вашу реализацию, и ваш код может затем вызвать функцию real с измененным списком параметров.
Этот метод намного проще и менее навязчив, чем все, что связано с программированием ядра, хотя он не будет работать, если ваше приложение статически связано или если оно использует прямые системные вызовы вместо библиотечных функций.
Похожие вопросы
Связанные вопросы
Новые вопросы
c
C - это язык программирования общего назначения, используемый для системного программирования (ОС и встраиваемых), библиотек, игр и кроссплатформенности. Этот тег следует использовать с общими вопросами, касающимися языка C, как это определено в стандарте ISO 9899 (последняя версия 9899: 2018, если не указано иное, а также для запросов, специфичных для версии, с c89, c99, c11 и т. Д.). C отличается от C ++ и не должен сочетаться с тэгом C ++ без разумной причины.
sleep()
с помощью библиотеки LD_PRELOAD?