Каковы, и в чем разница, kmain и dmain - основные функции в C? - PullRequest
2 голосов
/ 02 марта 2012

Как видно из названия, что они и в чем разница?

Некоторые примеры:

dmain:

void dmain(void* mbd, unsigned int magic)

kmain:

void kmain( void* mbd, unsigned int magic )

PS Я нашел похожий пост здесь, но он был о wmain:

В чем разница между wmain и main?

Также_tmain:

В чем разница между _tmain () и main () в C ++?

__

Они принимают те же аргументы, ноесть ли разница?И любые ссылки на некоторую информацию, которую я мог бы узнать, приветствуются, Google дал странные результаты ...

Кроме того, есть ли официальные страницы типа "man" в C?

1 Ответ

1 голос
/ 09 марта 2012

Вы, кажется, имеете в виду это руководство на OSDev.org .

Если вы заметите, это не стандартная программа на C с main() как точка входа.Фактически, на странице отображаются две точки входа: одна написана на ассемблере таким образом, чтобы GRUB мог найти и загрузить, и которая настраивает и загружает вторую, kmain(), которая написана на C.авторы используют имя kmain для обозначения «ядра ядра»;предположительно dmain является точкой входа для драйверов и будет означать «основной драйвер».

C проводит различие между «автономными» и «размещенными» реализациями.Хостинг это то, что вы, вероятно, более знакомы с;доступна стандартная библиотека C, и все программы запускаются с функцией main.

Ядра ОС (часто) являются хорошими примерами автономных сред.Например, библиотека C, вероятно, будет недоступна (за исключением некоторых заголовков, таких как stddef.h & stdarg.h; подробности см. В стандарте).Кроме того, точка входа больше не определяется стандартом.Учебник OSDev.org делает особый вывод из этого факта, явно определяя его точку входа с другим именем.

Возможно, вы могли бы запустить учебник, переименовывая kmain в main, но обратите внимание, что этовсе еще void main(void*, unsigned int), не int main(int, char**);фактически такая путаница, вероятно, является одной из причин, по которой авторы решили использовать другое имя.Но это всего лишь соглашение, которое они выбрали, а не что-то стандартизированное.

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