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