#define list_for_each(pos, head) \
for
(pos=(head)->next;
prefetch(pos->next),
pos!=(head);
pos = pos->next)
Listing 10. Ro’yxat bo’yicha qadamlarni bajarish uchun qo’llaniladigan
makros
struct list_head* position ;
list_for_each ( position , & mylinkedlist )
{
printk ("surfing the linked list next=%p and
prev=%p\n",
position->next,
position->prev );
}
11-listingda keltirilgan dastur kodi ushbu mavzuda yoritilgan barcha
tushunchalarni birlashtiradi. Bu kodda bog’langan ro’yxatlarni define_list
makrosi yordamida tadbiq qilish keltirilgan. Bu makrosda ikkita kiruvchi
parametr – ro’yxat nomi va element turi qabul qilinadi. Shuningdek, 11-listingda
bizga tanish bo’lgan yangi inline-funktsiyasi e’lon qilingan. Main metodi 5 ta
elementdan iborat bog’langan ro’yxatni yaratish va unda bajariladigan qadamlarni
tavsiyalash uchun berilgan.
Listing 11. Bog’langan ro’yxatni e’lon qilish va qo’llashga misol
Do'stlaringiz bilan baham: |