1 extern void abort (void);
3 typedef struct PgHdr PgHdr
;
4 typedef unsigned char u8
;
9 PgHdr
*pNextHash
, *pPrevHash
;
10 PgHdr
*pNextFree
, *pPrevFree
;
14 PgHdr
*pDirty
, *pPrevDirty
;
20 static inline PgHdr
*merge_pagelist(PgHdr
*pA
, PgHdr
*pB
)
24 xx
= &result
.x
.pDirty
;
27 if( pA
->x
.pgno
<pB
->x
.pgno
){
45 return result
.x
.pDirty
;
48 PgHdr
* __attribute__((noinline
)) sort_pagelist(PgHdr
*pIn
)
52 __builtin_memset (a
, 0, sizeof (a
));
57 for(i
=0; i
<25 -1; i
++){
62 p
= merge_pagelist(a
[i
], p
);
68 a
[i
] = merge_pagelist(a
[i
], p
);
73 p
= merge_pagelist (p
, a
[i
]);
83 a
[0].x
.pDirty
= &a
[1];
85 a
[1].x
.pDirty
= &a
[2];
87 a
[2].x
.pDirty
= &a
[3];
90 p
= sort_pagelist (&a
[0]);