PgHdr *sort_pagelist(PgHdr *pIn) { PgHdr *a[25], *p; int i; memset (a, 0, sizeof (a)); while( pIn ){ p = pIn; pIn = p->pDirty; p->pDirty = 0; for(i=0; i<25 -1; i++){ if( a[i]==0 ){ a[i] = p; break; }else{ p = merge_pagelist(a[i], p); a[i] = 0; } } if( i==25 -1 ){ a[i] = merge_pagelist(a[i], p); } } p = a[0]; for(i=1; i<25; i++){ p = merge_pagelist (p, a[i]); } return p; }
PgHdr * __attribute__((noinline)) sort_pagelist(PgHdr *pIn) { PgHdr *a[25], *p; int i; __builtin_memset (a, 0, sizeof (a)); while( pIn ){ p = pIn; pIn = p->x.pDirty; p->x.pDirty = 0; for(i=0; i<25 -1; i++){ if( a[i]==0 ){ a[i] = p; break; }else{ p = merge_pagelist(a[i], p); a[i] = 0; a[i] = 0; } } if( i==25 -1 ){ a[i] = merge_pagelist(a[i], p); } } p = a[0]; for(i=1; i<25; i++){ p = merge_pagelist (p, a[i]); } return p; }