Ядро ОС Linux
Руководство системного программиста
Содержание
Введение
Глава 1
1.1 Типографские соглашения
1.2 Необходимые знания для изучения книги
1.3 Наставление читателю
Глава 2
2.2.1 Пример - vgalib
2.2.2 Пример : Преобразование мыши
2.3 Основы драйверов устройств
2.3.1 Область имени (именная область)
2.3.2 Выделение памяти
2.3.3 Символьные и блочные устройства
2.3.4. Прерывание или поочередное опрашивание устройств ?
2.3.5. Механизмы замораживания и активизации
2.3.5.1.Усложненный механизм заморозки
2.3.6. VFS
2.3.6.1. Функция lseek()
2.3.6.2. Функции read() и write()
2.3.6.3 Функция readdir()
2.3.6.4 Функция select()
2.3.6.5 Функция ioctl()
2.3.6.6.Функция mmap()
2.3.6.7. Функции open() и release()
2.3.6.8 Функция init()
2.4 Cимвольные устройства
2.4.1. Инициализация
2.4.2 Прерывания или последовательный вызов ?
2.5 Дpайвеpы для блочных устpойств
2.5.1 Инициализация
2.5.1.1 Файл blk.h
2.5.1.2. Опознание комплектующих PS
2.5.2. Механизм кеширования буфера
2.5.3. Strategy Routine
2.6. Функции поддержки
2.7. Написание драйвера SCSI
2.7.1. Зачем нужны драйверы SCSI
2.7.2. Что такое SCSI ?
2.7.2.1. Термины SCSI
2.7.3. Команды SCSI
2.7.4. С чего начинать ?
2.7.5. Введение: сбор инструментов
2.7.6. Интерфейс SCSI в Linux
2.7.6. Структура Scsi_Host
2.7.7.1. Переменные в структуре Scsi_Host
2.7.7.1.1. name
2.7.7.1.2. can_queue
2.7.7.1.3. this_id
2.7.7.1.4. sg_tablesize
2.7.7.1.5. cmd_per_lun
2.7.7.1.6. present
2.7.7.1.7. unchecked_isa_dma
2.7.7.2. Функции структуры Scsi_Host
2.7.7.2.1. detect()
2.7.7.2.1.1. Запрос IRQ
2.7.7.2.2. Запрос канала DMA
2.7.7.2.3. info()
2.7.7.2.4. queuecommand()
2.7.7.2.5. done()
2.7.7.2.6 command()
2.7.7.2.7 abort()
2.7.7.2.8 reset()
2.7.7.2.9 slave_attach()
2.7.7.2.10 bios_param()
2.7.8 Структура Scsi_Cmnd
2.7.8.1 Зарезервированная область
2.7.8.1.1 Информационные переменные
2.7.8.1.2 Список Разветвления - компановки. (Scatter-gather)
2.7.8.2. Рабочие области
2.7.8.2.1 Указатель scsi_done()
2.7.8.2.2 Указатель host_scribble
2.7.8.2.3 Структура Scsi_Pointer
Глава 3
3.1 Каталоги и файлы /proc
3.2 Стpуктуpа файловой системы /proc
3.3 Пpогpамиpование файловой системы /proc
Глава 4
4.1 Исходный текст
Глава 5
5.1 Что поддеpживет 386 пpоцессоp?
5.2 Как Linux использует пpеpывания и исключения
5.3 Как Linux устанавливает вектора системных вызовов
5.4 Как установить свой собственный системный вызов
Глава 6
6.1 Введение
6.2 Физическая память
6.3 Память пользовательского процесса
6.4 Данные управления памятью в таблице процессов
6.5 Инициализация памяти
6.5.1. Процессы и программа управления памятью
6.6. Выделение освобождение памяти: политика страничной
6.7 Программы контроля корректности использования страниц
6.8. Листание (paging)
6.9 Управление памятью в 80386
6.9.1 Страничная организация (paging) в 386
6.9.2 Сегменты в 80386
6.9.3 Селекторы в 80386
6.9.4 Дескрипторы сегментов
6.9.5 Макросы, используемые при установке дескрипторов
Приложение А
Приложение B
Вперед