The goal here is to replace the head of a existing list pointed to by 'list' with a new head pointed to by 'nlist'. First there is a memcpy that copies the contents of list to nlist then this macro is called. The macro makes sure that if the old head was empty then INIT_LIST_HEAD the 'nlist', if not then make sure that the nodes before and after the head now correclty point to nlist instead of list.
regards shobhit > ---------- Forwarded message ---------- > From: Christoph Hellwig <[EMAIL PROTECTED]> > Date: Wed, 30 Mar 2005 12:14:39 +0100 > Subject: Re: [PATCH] Pageset Localization V2 > To: Christoph Lameter <[EMAIL PROTECTED]> > Cc: Manfred Spraul <[EMAIL PROTECTED]>, Andrew Morton > <[EMAIL PROTECTED]>, linux-kernel@vger.kernel.org, > linux-ia64@vger.kernel.org, [EMAIL PROTECTED], [EMAIL PROTECTED] > > > > +#define MAKE_LIST(list, nlist) \ > > + do { \ > > + if(list_empty(&list)) \ > > + INIT_LIST_HEAD(nlist); \ > > + else { nlist->next->prev = nlist; \ > > + nlist->prev->next = nlist; \ > > + } \ > > + }while(0) > > This is horrible. Where are the nlist pointers supposed to point to? > What's so magic you need the INIT_LIST_HEAD only conditionally? > > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to [EMAIL PROTECTED] > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/