2015-01-28 2 views
0

Я читал документацию и комментарии в файлах исходного кода, но не могу определить точную функцию/код, который отвечает за реализацию LRU в последней версии ядра. Я хочу внести в него небольшие изменения, поэтому я и ищу его.Какая часть кода ядра Linux отвечает за реализацию LRU?

Я столкнулся с тем, что ядро ​​поддерживает активные и неактивные списки. Где этот код?

ответ

1

Предполагая, что ядро ​​v3.18, большая часть кода, связанного с LRU, находится в mm/swap.c. Если вы посмотрите на этот файл, есть много функций, которые, вероятно, что вас интересует, например:.

void lru_cache_add_active_or_unevictable(struct page *page, 
             struct vm_area_struct *vma) 

См: http://lxr.free-electrons.com/source/mm/swap.c#L660

Есть другие файлы в mm, которые имеют отношение, а также. Попробуйте просмотреть файлы, связанные с виртуальной памятью Linux (часто сокращенной до «vm»), и файлами с «swap» в имени.

Многие из литературы по материалам LRU Linux устарели, как вы обнаружили. Общие понятия, вероятно, одинаковы, но они переименовали/переместили много вещей.

+0

что о неисправности.c и т.п? что это делает? где я могу найти документацию? Справка по PLS – user1836386

+0

Главное в 'fault.c' - это обработка ошибок, связанных с архитектурой. Например, у него есть функция 'do_page_fault()', которая в конечном итоге вызывает 'handle_mm_fault()', которая находится в 'mm/memory.c'. К сожалению, я не знаю никакой документации (кроме комментариев в исходном коде). Скорее всего, вам просто нужно прочитать исходный код. – mauzel