ref: d2ad8df9472c65931c649d312bf0ae46e1ceedd8
parent: d97eb114d5dd63f3f0d5b96d8f34a1613761793e
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Nov 9 14:44:38 EST 2016
kernel/qio: implement concatblock() with pullupblock()
--- a/sys/src/9/port/qio.c
+++ b/sys/src/9/port/qio.c
@@ -140,29 +140,19 @@
}
/*
- * copy the string of blocks into
+ * copy the string of blocks into
* a single block and free the string
*/
Block*
concatblock(Block *bp)
{
- Block *nb, *next;
int len;
if(bp->next == nil)
return bp;
-
- nb = allocb(blocklen(bp));
- for(; bp != nil; bp = next) {
- next = bp->next;
- len = BLEN(bp);
- memmove(nb->wp, bp->rp, len);
- nb->wp += len;
- freeb(bp);
- }
- concatblockcnt += BLEN(nb);
- QDEBUG checkb(nb, "concatblock 1");
- return nb;
+ len = blocklen(bp);
+ concatblockcnt += len;
+ return pullupblock(bp, len);
}
/*