shithub: riscv

Download patch

ref: c7598b18f34bef66f56f87b28bda81465624e219
parent: 4a75ad5ec8a3a6990901aa5e814ee38964d158f8
author: cinap_lenrek <[email protected]>
date: Fri Oct 9 18:05:32 EDT 2020

kernel: get rid of unused ucallocb

the whole idea of a ucallocb() is bad, as even access to the
metadata header would be in uncached memory. also, it tuns out
that it was never used by anyone.

--- a/sys/src/9/kw/fns.h
+++ b/sys/src/9/kw/fns.h
@@ -110,10 +110,7 @@
 extern void* mmuuncache(void*, usize);
 extern void* ucalloc(usize);
 extern void* ucallocalign(usize size, int align, usize span);
-extern Block* ucallocb(int);
 extern void ucfree(void*);
-extern void ucfreeb(Block*);
-extern Block* uciallocb(int);
 
 /*
  * Things called from port.
--- a/sys/src/9/omap/beagle
+++ b/sys/src/9/omap/beagle
@@ -64,7 +64,6 @@
 	softfpu
 	uarti8250
 	ucalloc
-	ucallocb
 
 port
 	int cpuserver = 1;
--- a/sys/src/9/omap/fns.h
+++ b/sys/src/9/omap/fns.h
@@ -125,10 +125,8 @@
 uintptr mmukunmap(uintptr, uintptr, usize);
 extern void* mmuuncache(void*, usize);
 extern void* ucalloc(usize);
-extern Block* ucallocb(int);
 extern void* ucallocalign(usize size, int align, int span);
 extern void ucfree(void*);
-extern void ucfreeb(Block*);
 
 /*
  * Things called from port.
--- a/sys/src/9/omap/ucallocb.c
+++ /dev/null
@@ -1,144 +1,0 @@
-/*
- * allocate Blocks from uncached memory
- */
-#include	"u.h"
-#include	"../port/lib.h"
-#include	"mem.h"
-#include	"dat.h"
-#include	"fns.h"
-#include	"error.h"
-
-enum
-{
-	Hdrspc		= 64,		/* leave room for high-level headers */
-	Bdead		= 0x51494F42,	/* "QIOB" */
-};
-
-struct
-{
-	Lock;
-	ulong	bytes;
-} ucialloc;
-
-static Block*
-_ucallocb(int size)
-{
-	Block *b;
-	ulong addr;
-
-	if((b = ucalloc(sizeof(Block)+size+Hdrspc)) == nil)
-		return nil;
-
-	b->next = nil;
-	b->list = nil;
-	b->free = 0;
-	b->flag = 0;
-
-	/* align start of data portion by rounding up */
-	addr = (ulong)b;
-	addr = ROUND(addr + sizeof(Block), BLOCKALIGN);
-	b->base = (uchar*)addr;
-
-	/* align end of data portion by rounding down */
-	b->lim = ((uchar*)b) + msize(b);
-	addr = (ulong)(b->lim);
-	addr = addr & ~(BLOCKALIGN-1);
-	b->lim = (uchar*)addr;
-
-	/* leave sluff at beginning for added headers */
-	b->rp = b->lim - ROUND(size, BLOCKALIGN);
-	if(b->rp < b->base)
-		panic("_ucallocb");
-	b->wp = b->rp;
-
-	return b;
-}
-
-Block*
-ucallocb(int size)
-{
-	Block *b;
-
-	/*
-	 * Check in a process and wait until successful.
-	 * Can still error out of here, though.
-	 */
-	if(up == nil)
-		panic("ucallocb without up: %#p", getcallerpc(&size));
-	if((b = _ucallocb(size)) == nil)
-		panic("ucallocb: no memory for %d bytes", size);
-	setmalloctag(b, getcallerpc(&size));
-
-	return b;
-}
-
-Block*
-uciallocb(int size)
-{
-	Block *b;
-	static int m1, m2, mp;
-
-	if(0 && ucialloc.bytes > conf.ialloc){
-		if((m1++%10000)==0){
-			if(mp++ > 1000){
-				active.exiting = 1;
-				exit(0);
-			}
-			iprint("uciallocb: limited %lud/%lud\n",
-				ucialloc.bytes, conf.ialloc);
-		}
-		return nil;
-	}
-
-	if((b = _ucallocb(size)) == nil){
-		if(0 && (m2++%10000)==0){
-			if(mp++ > 1000){
-				active.exiting = 1;
-				exit(0);
-			}
-			iprint("uciallocb: no memory %lud/%lud\n",
-				ucialloc.bytes, conf.ialloc);
-		}
-		return nil;
-	}
-	setmalloctag(b, getcallerpc(&size));
-	b->flag = BINTR;
-
-	ilock(&ucialloc);
-	ucialloc.bytes += b->lim - b->base;
-	iunlock(&ucialloc);
-
-	return b;
-}
-
-void
-ucfreeb(Block *b)
-{
-	void *dead = (void*)Bdead;
-
-	if(b == nil)
-		return;
-
-	/*
-	 * drivers which perform non cache coherent DMA manage their own buffer
-	 * pool of uncached buffers and provide their own free routine.
-	 */
-	if(b->free) {
-		b->free(b);
-		return;
-	}
-	if(b->flag & BINTR) {
-		ilock(&ucialloc);
-		ucialloc.bytes -= b->lim - b->base;
-		iunlock(&ucialloc);
-	}
-
-	/* poison the block in case someone is still holding onto it */
-	b->next = dead;
-	b->rp = dead;
-	b->wp = dead;
-	b->lim = dead;
-	b->base = dead;
-
-	ucfree(b);
-}
--- a/sys/src/9/port/ucallocb.c
+++ /dev/null
@@ -1,130 +1,0 @@
-/*
- * allocate Blocks from uncached memory
- */
-#include	"u.h"
-#include	"../port/lib.h"
-#include	"mem.h"
-#include	"dat.h"
-#include	"fns.h"
-#include	"error.h"
-
-enum
-{
-	Hdrspc		= 64,		/* leave room for high-level headers */
-	Bdead		= 0x51494F42,	/* "QIOB" */
-};
-
-struct
-{
-	Lock;
-	ulong	bytes;
-} ucialloc;
-
-static Block*
-_ucallocb(int size)
-{
-	Block *b;
-	uintptr addr;
-
-	if((b = ucalloc(sizeof(Block)+size+Hdrspc)) == nil)
-		return nil;
-
-	b->next = nil;
-	b->list = nil;
-	b->free = nil;
-	b->flag = 0;
-
-	/* align start of data portion by rounding up */
-	addr = (uintptr)b;
-	addr = ROUND(addr + sizeof(Block), BLOCKALIGN);
-	b->base = (uchar*)addr;
-
-	/* align end of data portion by rounding down */
-	b->lim = (uchar*)b + msize(b);
-	addr = (uintptr)b->lim;
-	addr &= ~(BLOCKALIGN-1);
-	b->lim = (uchar*)addr;
-
-	/* leave sluff at beginning for added headers */
-	b->rp = b->lim - ROUND(size, BLOCKALIGN);
-	if(b->rp < b->base)
-		panic("_ucallocb");
-	b->wp = b->rp;
-
-	return b;
-}
-
-Block*
-ucallocb(int size)
-{
-	Block *b;
-
-	/*
-	 * Check in a process and wait until successful.
-	 * Can still error out of here, though.
-	 */
-	if(up == nil)
-		panic("ucallocb without up: %#p", getcallerpc(&size));
-	if((b = _ucallocb(size)) == nil)
-		panic("ucallocb: no memory for %d bytes", size);
-	setmalloctag(b, getcallerpc(&size));
-
-	return b;
-}
-
-Block*
-uciallocb(int size)
-{
-	Block *b;
-	static int m1, m2, mp;
-
-	if((b = _ucallocb(size)) == nil){
-		if(0 && (m2++%10000)==0){
-			if(mp++ > 1000)
-				panic("uciallocb: out of memory");
-			iprint("uciallocb: no memory %lud/%lud\n",
-				ucialloc.bytes, conf.ialloc);
-		}
-		return nil;
-	}
-	setmalloctag(b, getcallerpc(&size));
-	b->flag = BINTR;
-
-	ilock(&ucialloc);
-	ucialloc.bytes += b->lim - b->base;
-	iunlock(&ucialloc);
-
-	return b;
-}
-
-void
-ucfreeb(Block *b)
-{
-	void *dead = (void*)Bdead;
-
-	if(b == nil)
-		return;
-
-	/*
-	 * drivers which perform non cache coherent DMA manage their own buffer
-	 * pool of uncached buffers and provide their own free routine.
-	 */
-	if(b->free != nil) {
-		b->free(b);
-		return;
-	}
-	if(b->flag & BINTR) {
-		ilock(&ucialloc);
-		ucialloc.bytes -= b->lim - b->base;
-		iunlock(&ucialloc);
-	}
-
-	/* poison the block in case someone is still holding onto it */
-	b->next = dead;
-	b->rp = dead;
-	b->wp = dead;
-	b->lim = dead;
-	b->base = dead;
-
-	ucfree(b);
-}
--- a/sys/src/9/teg2/fns.h
+++ b/sys/src/9/teg2/fns.h
@@ -164,10 +164,8 @@
 uintptr mmukunmap(uintptr, uintptr, usize);
 extern void* mmuuncache(void*, usize);
 extern void* ucalloc(usize);
-extern Block* ucallocb(int);
 extern void* ucallocalign(usize size, int align, int span);
 extern void ucfree(void*);
-extern void ucfreeb(Block*);
 
 /*
  * Things called from port.
--- a/sys/src/9/teg2/ts
+++ b/sys/src/9/teg2/ts
@@ -66,7 +66,6 @@
 #	sdaoe		sdscsi
 	uarti8250
 	ucalloc
-	ucallocb
 # include vfp3 to use hardware fp, otherwise include softfpu
 	vfp3
 #	softfpu