Как я могу лучше понять программный код ядра c - PullRequest
4 голосов
/ 03 июля 2010

Я изучал архитектуру ядра и ее программирование, чтобы получить представление о ядре.Я знаю программирование на С, но структуры и указатели, упомянутые в коде ядра, идут мне на ум.Как ниже

int irq = regs.orig_eax & 0xff;


asmlinkage int handle_IRQ_event(unsigned int irq, struct pt_regs *regs,
                                struct irqaction *action)
{



struct super_operations {
        struct inode *(*alloc_inode) (struct super_block *sb);
        void (*destroy_inode) (struct inode *);
        void (*read_inode) (struct inode *);
        void (*dirty_inode) (struct inode *);
        void (*write_inode) (struct inode *, int);
        void (*put_inode) (struct inode *);
        void (*drop_inode) (struct inode *);
        void (*delete_inode) (struct inode *);
        void (*put_super) (struct super_block *);
        void (*write_super) (struct super_block *);
        int (*sync_fs) (struct super_block *, int);
        void (*write_super_lockfs) (struct super_block *);
        void (*unlockfs) (struct super_block *);
        int (*statfs) (struct super_block *, struct statfs *);
        int (*remount_fs) (struct super_block *, int *, char *);
        void (*clear_inode) (struct inode *);
        void (*umount_begin) (struct super_block *);
        int (*show_options) (struct seq_file *, struct vfsmount *);
};

Как я могу лучше понять код.Любая книга, которая учит указатели, структуры, как в коде ядра

Ответы [ 4 ]

3 голосов
/ 03 июля 2010

Помимо того факта, что это стандартный синтаксис Си, вам придется искать определение структур в коде ядра самостоятельно. Это не сложно, это просто утомительно в начале.

Сказано: Новички в ядре Linux может быть хорошей отправной точкой для вас.

2 голосов
/ 03 июля 2010

Взгляните на книгу Драйверы устройств Linux , написанную Corbet et al. Да, похоже, это не то, о чем вы просили, но, на самом деле, вы не можете написать драйвер устройства, не понимая ядро ​​и не имея возможности написать драйвер устройства, - это то, на что большинство людей должны пойти. Кроме того, имейте в виду, что, хотя это монолитное ядро, оно «модульное». То, что у вас есть в вашем вопросе выше, в основном является частью файловой системы, которую можно понять более или менее самостоятельно - как и другие подсистемы.

Для ядра ядра, которое объединяет все это, посмотрите Книга ядер . Он также имеет ссылки на другие источники. Есть еще одна книга , хотя и очень устаревшая, от Реми Карда о ядре (ядро до 2.2). На сайте amazon.com для этой книги вы можете увидеть похожие названия.

Если вы действительно хотите начать правильно, сделайте это с чем-то маленьким и понятным. Взгляните на MINIX и сопровождающий учебник (Торвальдс, возможно, узнал кое-что об основах ОС из этой самой книги).

1 голос
/ 05 июля 2010

Это C-версия vtable.Это позволяет вам вызывать различные методы в зависимости от используемой файловой системы.Google для vtable.

1 голос
/ 04 июля 2010

Еще одна книга, на которую стоит обратить внимание, - Ядро Linux в двух словах от Грега К-Х, одного из разработчиков ядра ядра. Он доступен как в виде книги (от O'Reilly), так и для бесплатной загрузки от автора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...