2016-03-07 5 views
0

Я попробовал, добавив это внутри функции битый системного вызова:Как найти текущее местоположение программы перерыв

void *addr = sbrk(0); 
printk("current-add-is-%p-\n", addr); 

Но произошла ошибка во время компиляции ядра, что неявная декларация функции sbrk. И я не мог найти, где sbrk определен! Все, что мне нужно, чтобы измерить, что всякий раз, когда какой-либо пользовательский процесс пытается расширить свой адрес прерывания программы, я бы знал его текущий адрес прерывания программы, чтобы я мог измерять, сколько запросов на память запрашивает.

спасибо.

ответ

0

Похоже, вы пытаетесь сделать что-то неправильно.

Существует нет sbrk 'sbrk', есть 'brk'. За исключением этого, он будет называться sys_brk, но у вас нет причин его называть. Поэтому, если вы хотите узнать, как узнать текущий адрес перерыва, прочитайте источники в brk.

Однако, где именно вы положили это, если вам не удалось найти источники БРК?

+0

Не могли бы вы рассказать, что вы подразумеваете под «read brk's sources», поместив это в метод вызова системы brk. Я понимаю, что нет системного вызова sbrk. Но man-страница sbrk говорит, что sbrk (0) даст текущий адрес прерывания программы, поэтому просто попробовал sbrk (0) –

+0

@ArjunBora: на страницах человека описываются функции, доступные для ** пользовательского пространства ** программ. * Kernel space * code работает с * различными * функциями. – Tsyvarev

+0

@ Цыварев Хорошо, так есть ли способ найти текущий адрес прерывания программы из пространства ядра? эквивалент sbrk (0) Спасибо. –

 Смежные вопросы

  • Нет связанных вопросов^_^