Перейти к содержанию

Исходный код


Гость

Рекомендуемые сообщения

Разбирался в исходных кодах Linux 2.2.5: не понял следующее:

("Ядро Linux в комментариях")

макрос current и функция GetCurrent в current.h а также

в Entry.S GET_CURRENT

#define GET_CURRENT(reg) \

movl %esp, reg; \

andl $-8192, reg;

Это описывается как получение указателя на текущую структуру task_struct определяющую текущую задачу.

При чем здесь стек и маскировка, что вообще происходит?

Если кто объснит, пишите на kav2@aport.ru

KAV

Ссылка на комментарий
Поделиться на другие сайты

указатели на структуру foo(%ebx) и foo(%esp)

а вызов макроса в строке 174 возвращает указатель на текущую задачу

читай страницы 345-346

Best regerds,

LogRus

Ссылка на комментарий
Поделиться на другие сайты

Я понимаю, что это указатель на структуру task_strukt

масссива структур, поддерживаемых ядром.

По прерыванию уходим на обработчик.

При прерывании на стеке eflags, cs, eip.

Но как через esp получить task_strukt?

Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

get_current используется в режиме ядра соответственно в %esp стек текущего процесса режима ядра

а по %esp & 0xffffe000 ядро хранит task_struct...

так задумано... Wink

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...