Fix some style(9) and formatting problems. tabsize 4 formatting doesn't
look too great with 'more' etc. Approved by: dyson (with a minor grumble :-)
This commit is contained in:
parent
d95fc683ed
commit
af866d9a23
135
sys/vm/vm_zone.c
135
sys/vm/vm_zone.c
@ -18,7 +18,7 @@
|
||||
* 5. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: vm_zone.c,v 1.6 1997/09/01 03:17:32 bde Exp $
|
||||
* $Id: vm_zone.c,v 1.7 1997/09/21 04:24:26 dyson Exp $
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
@ -65,7 +65,7 @@ int sysctl_vm_zone SYSCTL_HANDLER_ARGS;
|
||||
* name name of zone.
|
||||
* size size of zone entries.
|
||||
* nentries number of zone entries allocated (only ZONE_INTERRUPT.)
|
||||
* flags ZONE_INTERRUPT -- items can be allocated at interrupt time.
|
||||
* flags ZONE_INTERRUPT -- items can be allocated at interrupt time.
|
||||
* zalloc number of pages allocated when memory is needed.
|
||||
*
|
||||
* Note that when using ZONE_INTERRUPT, the size of the zone is limited
|
||||
@ -75,7 +75,8 @@ int sysctl_vm_zone SYSCTL_HANDLER_ARGS;
|
||||
*/
|
||||
int
|
||||
zinitna(vm_zone_t z, vm_object_t obj, char *name, int size,
|
||||
int nentries, int flags, int zalloc) {
|
||||
int nentries, int flags, int zalloc)
|
||||
{
|
||||
int totsize;
|
||||
|
||||
if ((z->zflags & ZONE_BOOT) == 0) {
|
||||
@ -107,9 +108,8 @@ zinitna(vm_zone_t z, vm_object_t obj, char *name, int size,
|
||||
totsize = round_page(z->zsize * nentries);
|
||||
|
||||
z->zkva = kmem_alloc_pageable(kernel_map, totsize);
|
||||
if (z->zkva == 0) {
|
||||
if (z->zkva == 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
z->zpagemax = totsize / PAGE_SIZE;
|
||||
if (obj == NULL) {
|
||||
@ -126,7 +126,7 @@ zinitna(vm_zone_t z, vm_object_t obj, char *name, int size,
|
||||
}
|
||||
|
||||
|
||||
if ( z->zsize > PAGE_SIZE)
|
||||
if (z->zsize > PAGE_SIZE)
|
||||
z->zfreemin = 1;
|
||||
else
|
||||
z->zfreemin = PAGE_SIZE / z->zsize;
|
||||
@ -148,8 +148,10 @@ zinitna(vm_zone_t z, vm_object_t obj, char *name, int size,
|
||||
* initialization call.
|
||||
*/
|
||||
vm_zone_t
|
||||
zinit(char *name, int size, int nentries, int flags, int zalloc) {
|
||||
zinit(char *name, int size, int nentries, int flags, int zalloc)
|
||||
{
|
||||
vm_zone_t z;
|
||||
|
||||
z = (vm_zone_t) malloc(sizeof (struct vm_zone), M_ZONE, M_NOWAIT);
|
||||
if (z == NULL)
|
||||
return NULL;
|
||||
@ -168,8 +170,8 @@ zinit(char *name, int size, int nentries, int flags, int zalloc) {
|
||||
* only be called before full VM startup.
|
||||
*/
|
||||
void
|
||||
zbootinit(vm_zone_t z, char *name, int size, void *item, int nitems) {
|
||||
|
||||
zbootinit(vm_zone_t z, char *name, int size, void *item, int nitems)
|
||||
{
|
||||
int i;
|
||||
|
||||
z->zname = name;
|
||||
@ -209,15 +211,18 @@ zbootinit(vm_zone_t z, char *name, int size, void *item, int nitems) {
|
||||
* Zone critical region locks.
|
||||
*/
|
||||
static inline int
|
||||
zlock(vm_zone_t z) {
|
||||
zlock(vm_zone_t z)
|
||||
{
|
||||
int s;
|
||||
|
||||
s = splhigh();
|
||||
simple_lock(&z->zlock);
|
||||
return s;
|
||||
}
|
||||
|
||||
static inline void
|
||||
zunlock(vm_zone_t z, int s) {
|
||||
zunlock(vm_zone_t z, int s)
|
||||
{
|
||||
simple_unlock(&z->zlock);
|
||||
splx(s);
|
||||
}
|
||||
@ -243,9 +248,11 @@ zunlock(vm_zone_t z, int s) {
|
||||
* and are not interrupt safe, but are fast.
|
||||
*/
|
||||
void *
|
||||
zalloci(vm_zone_t z) {
|
||||
zalloci(vm_zone_t z)
|
||||
{
|
||||
int s;
|
||||
void *item;
|
||||
|
||||
s = zlock(z);
|
||||
item = _zalloc(z);
|
||||
zunlock(z, s);
|
||||
@ -253,8 +260,10 @@ zalloci(vm_zone_t z) {
|
||||
}
|
||||
|
||||
void
|
||||
zfreei(vm_zone_t z, void *item) {
|
||||
zfreei(vm_zone_t z, void *item)
|
||||
{
|
||||
int s;
|
||||
|
||||
s = zlock(z);
|
||||
_zfree(z, item);
|
||||
zunlock(z, s);
|
||||
@ -265,7 +274,8 @@ zfreei(vm_zone_t z, void *item) {
|
||||
* Internal zone routine. Not to be called from external (non vm_zone) code.
|
||||
*/
|
||||
void *
|
||||
_zget(vm_zone_t z) {
|
||||
_zget(vm_zone_t z)
|
||||
{
|
||||
int i;
|
||||
vm_page_t m;
|
||||
int nitems, nbytes;
|
||||
@ -276,14 +286,16 @@ _zget(vm_zone_t z) {
|
||||
|
||||
if (z->zflags & ZONE_INTERRUPT) {
|
||||
item = (char *) z->zkva + z->zpagecount * PAGE_SIZE;
|
||||
for( i = 0; ((i < z->zalloc) && (z->zpagecount < z->zpagemax)); i++) {
|
||||
for (i = 0; ((i < z->zalloc) && (z->zpagecount < z->zpagemax));
|
||||
i++) {
|
||||
|
||||
m = vm_page_alloc( z->zobj, z->zpagecount, z->zallocflag);
|
||||
if (m == NULL) {
|
||||
m = vm_page_alloc(z->zobj, z->zpagecount,
|
||||
z->zallocflag);
|
||||
if (m == NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
pmap_kenter(z->zkva + z->zpagecount * PAGE_SIZE, VM_PAGE_TO_PHYS(m));
|
||||
pmap_kenter(z->zkva + z->zpagecount * PAGE_SIZE,
|
||||
VM_PAGE_TO_PHYS(m));
|
||||
z->zpagecount++;
|
||||
}
|
||||
nitems = (i * PAGE_SIZE) / z->zsize;
|
||||
@ -297,14 +309,16 @@ _zget(vm_zone_t z) {
|
||||
#if 0
|
||||
if (z->zname)
|
||||
printf("zalloc: %s, %d (0x%x --> 0x%x)\n",
|
||||
z->zname, z->zalloc, item, (char *)item + nbytes);
|
||||
z->zname, z->zalloc, item,
|
||||
(char *)item + nbytes);
|
||||
else
|
||||
printf("zalloc: XXX(%d), %d (0x%x --> 0x%x)\n",
|
||||
z->zsize, z->zalloc, item, (char *)item + nbytes);
|
||||
z->zsize, z->zalloc, item,
|
||||
(char *)item + nbytes);
|
||||
|
||||
for(i=0;i<nbytes;i+=PAGE_SIZE) {
|
||||
printf("(%x, %x)", (char *) item + i, pmap_kextract( (char *) item + i));
|
||||
}
|
||||
for (i = 0; i < nbytes; i += PAGE_SIZE)
|
||||
printf("(%x, %x)", (char *) item + i,
|
||||
pmap_kextract((char *) item + i));
|
||||
printf("\n");
|
||||
#endif
|
||||
nitems = nbytes / z->zsize;
|
||||
@ -350,62 +364,63 @@ sysctl_vm_zone SYSCTL_HANDLER_ARGS
|
||||
char tmpname[14];
|
||||
|
||||
for (curzone = zlist; curzone; curzone = nextzone) {
|
||||
int i;
|
||||
int len;
|
||||
int offset;
|
||||
nextzone = curzone->znext;
|
||||
len = strlen(curzone->zname);
|
||||
if (len >= (sizeof(tmpname) - 1))
|
||||
len = (sizeof(tmpname) - 1);
|
||||
for(i = 0; i < sizeof(tmpname) - 1; i++)
|
||||
tmpname[i] = ' ';
|
||||
tmpname[i] = 0;
|
||||
memcpy(tmpname, curzone->zname, len);
|
||||
tmpname[len] = ':';
|
||||
offset = 0;
|
||||
if (curzone == zlist) {
|
||||
offset = 1;
|
||||
tmpbuf[0] = '\n';
|
||||
}
|
||||
|
||||
sprintf(tmpbuf + offset,
|
||||
"%s limit=%8.8u, used=%6.6u, free=%6.6u, requests=%8.8u\n",
|
||||
tmpname, curzone->zmax,
|
||||
(curzone->ztotal - curzone->zfreecnt),
|
||||
curzone->zfreecnt, curzone->znalloc);
|
||||
int i;
|
||||
int len;
|
||||
int offset;
|
||||
|
||||
len = strlen((char *)tmpbuf);
|
||||
if (nextzone == NULL) {
|
||||
tmpbuf[len - 1] = 0;
|
||||
}
|
||||
nextzone = curzone->znext;
|
||||
len = strlen(curzone->zname);
|
||||
if (len >= (sizeof(tmpname) - 1))
|
||||
len = (sizeof(tmpname) - 1);
|
||||
for(i = 0; i < sizeof(tmpname) - 1; i++)
|
||||
tmpname[i] = ' ';
|
||||
tmpname[i] = 0;
|
||||
memcpy(tmpname, curzone->zname, len);
|
||||
tmpname[len] = ':';
|
||||
offset = 0;
|
||||
if (curzone == zlist) {
|
||||
offset = 1;
|
||||
tmpbuf[0] = '\n';
|
||||
}
|
||||
|
||||
error = SYSCTL_OUT(req, tmpbuf, len);
|
||||
sprintf(tmpbuf + offset,
|
||||
"%s limit=%8.8u, used=%6.6u, free=%6.6u, requests=%8.8u\n",
|
||||
tmpname, curzone->zmax,
|
||||
(curzone->ztotal - curzone->zfreecnt),
|
||||
curzone->zfreecnt, curzone->znalloc);
|
||||
|
||||
if (error)
|
||||
return (error);
|
||||
len = strlen((char *)tmpbuf);
|
||||
if (nextzone == NULL)
|
||||
tmpbuf[len - 1] = 0;
|
||||
|
||||
error = SYSCTL_OUT(req, tmpbuf, len);
|
||||
|
||||
if (error)
|
||||
return (error);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
#if defined(DIAGNOSTIC)
|
||||
void
|
||||
zerror(int error) {
|
||||
zerror(int error)
|
||||
{
|
||||
char *msg;
|
||||
|
||||
switch (error) {
|
||||
case ZONE_ERROR_INVALID:
|
||||
case ZONE_ERROR_INVALID:
|
||||
msg = "zone: invalid zone";
|
||||
break;
|
||||
case ZONE_ERROR_NOTFREE:
|
||||
case ZONE_ERROR_NOTFREE:
|
||||
msg = "zone: entry not free";
|
||||
break;
|
||||
case ZONE_ERROR_ALREADYFREE:
|
||||
case ZONE_ERROR_ALREADYFREE:
|
||||
msg = "zone: freeing free entry";
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
msg = "zone: invalid error";
|
||||
break;
|
||||
}
|
||||
|
||||
panic(msg);
|
||||
}
|
||||
#endif
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 John S. Dyson
|
||||
* All rights reserved.
|
||||
@ -19,51 +18,52 @@
|
||||
* 5. Modifications may be freely made to this file if the above conditions
|
||||
* are met.
|
||||
*
|
||||
* $Id: vm_zone.h,v 1.5 1997/08/10 00:12:13 dyson Exp $
|
||||
* $Id: vm_zone.h,v 1.6 1997/09/21 04:24:27 dyson Exp $
|
||||
*/
|
||||
|
||||
#if !defined(_SYS_ZONE_H)
|
||||
|
||||
#define _SYS_ZONE_H
|
||||
|
||||
#define ZONE_INTERRUPT 1 /* Use this if you need to allocate at int time */
|
||||
#define ZONE_BOOT 16 /* This is an internal flag used by zbootinit */
|
||||
#define ZONE_INTERRUPT 1 /* Use this if you need to allocate at int time */
|
||||
#define ZONE_BOOT 16 /* This is an internal flag used by zbootinit */
|
||||
|
||||
#include <machine/param.h>
|
||||
#include <sys/lock.h>
|
||||
|
||||
|
||||
typedef struct vm_zone {
|
||||
struct simplelock zlock; /* lock for data structure */
|
||||
void *zitems; /* linked list of items */
|
||||
int zfreecnt; /* free entries */
|
||||
int zfreemin; /* minimum number of free entries */
|
||||
int znalloc; /* number of allocations */
|
||||
vm_offset_t zkva; /* Base kva of zone */
|
||||
int zpagecount; /* Total # of allocated pages */
|
||||
int zpagemax; /* Max address space */
|
||||
int zmax; /* Max number of entries allocated */
|
||||
int ztotal; /* Total entries allocated now */
|
||||
int zsize; /* size of each entry */
|
||||
int zalloc; /* hint for # of pages to alloc */
|
||||
int zflags; /* flags for zone */
|
||||
int zallocflag; /* flag for allocation */
|
||||
struct vm_object *zobj; /* object to hold zone */
|
||||
char *zname; /* name for diags */
|
||||
struct vm_zone *znext; /* list of zones for sysctl */
|
||||
struct simplelock zlock; /* lock for data structure */
|
||||
void *zitems; /* linked list of items */
|
||||
int zfreecnt; /* free entries */
|
||||
int zfreemin; /* minimum number of free entries */
|
||||
int znalloc; /* number of allocations */
|
||||
vm_offset_t zkva; /* Base kva of zone */
|
||||
int zpagecount; /* Total # of allocated pages */
|
||||
int zpagemax; /* Max address space */
|
||||
int zmax; /* Max number of entries allocated */
|
||||
int ztotal; /* Total entries allocated now */
|
||||
int zsize; /* size of each entry */
|
||||
int zalloc; /* hint for # of pages to alloc */
|
||||
int zflags; /* flags for zone */
|
||||
int zallocflag; /* flag for allocation */
|
||||
struct vm_object *zobj; /* object to hold zone */
|
||||
char *zname; /* name for diags */
|
||||
struct vm_zone *znext; /* list of zones for sysctl */
|
||||
} *vm_zone_t;
|
||||
|
||||
|
||||
void zerror __P((int)) __dead2;
|
||||
vm_zone_t zinit __P((char *name, int size, int nentries, int flags, int zalloc));
|
||||
int zinitna __P((vm_zone_t z, struct vm_object *obj, char *name, int size,
|
||||
int nentries, int flags, int zalloc));
|
||||
static void * zalloc __P((vm_zone_t z));
|
||||
static void zfree __P((vm_zone_t z, void *item));
|
||||
void * zalloci __P((vm_zone_t z));
|
||||
void zfreei __P((vm_zone_t z, void *item));
|
||||
void zbootinit __P((vm_zone_t z, char *name, int size, void *item, int nitems));
|
||||
void * _zget __P((vm_zone_t z));
|
||||
void zerror __P((int)) __dead2;
|
||||
vm_zone_t zinit __P((char *name, int size, int nentries, int flags,
|
||||
int zalloc));
|
||||
int zinitna __P((vm_zone_t z, struct vm_object *obj, char *name,
|
||||
int size, int nentries, int flags, int zalloc));
|
||||
static void * zalloc __P((vm_zone_t z));
|
||||
static void zfree __P((vm_zone_t z, void *item));
|
||||
void * zalloci __P((vm_zone_t z));
|
||||
void zfreei __P((vm_zone_t z, void *item));
|
||||
void zbootinit __P((vm_zone_t z, char *name, int size, void *item,
|
||||
int nitems));
|
||||
void * _zget __P((vm_zone_t z));
|
||||
|
||||
#define ZONE_ERROR_INVALID 0
|
||||
#define ZONE_ERROR_NOTFREE 1
|
||||
@ -79,7 +79,8 @@ void * _zget __P((vm_zone_t z));
|
||||
* Frees an item back to a specified zone.
|
||||
*/
|
||||
static __inline__ void *
|
||||
_zalloc(vm_zone_t z) {
|
||||
_zalloc(vm_zone_t z)
|
||||
{
|
||||
void *item;
|
||||
|
||||
#if defined(DIAGNOSTIC)
|
||||
@ -87,10 +88,9 @@ _zalloc(vm_zone_t z) {
|
||||
zerror(ZONE_ERROR_INVALID);
|
||||
#endif
|
||||
|
||||
if (z->zfreecnt <= z->zfreemin) {
|
||||
if (z->zfreecnt <= z->zfreemin)
|
||||
return _zget(z);
|
||||
}
|
||||
|
||||
|
||||
item = z->zitems;
|
||||
z->zitems = ((void **) item)[0];
|
||||
#if defined(DIAGNOSTIC)
|
||||
@ -98,17 +98,18 @@ _zalloc(vm_zone_t z) {
|
||||
zerror(ZONE_ERROR_NOTFREE);
|
||||
((void **) item)[1] = 0;
|
||||
#endif
|
||||
|
||||
|
||||
z->zfreecnt--;
|
||||
z->znalloc++;
|
||||
return item;
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
_zfree(vm_zone_t z, void *item) {
|
||||
_zfree(vm_zone_t z, void *item)
|
||||
{
|
||||
((void **) item)[0] = z->zitems;
|
||||
#if defined(DIAGNOSTIC)
|
||||
if ((( void **) item)[1] == (void *) ZENTRY_FREE)
|
||||
if (((void **) item)[1] == (void *) ZENTRY_FREE)
|
||||
zerror(ZONE_ERROR_ALREADYFREE);
|
||||
((void **) item)[1] = (void *) ZENTRY_FREE;
|
||||
#endif
|
||||
@ -117,7 +118,8 @@ _zfree(vm_zone_t z, void *item) {
|
||||
}
|
||||
|
||||
static __inline__ void *
|
||||
zalloc(vm_zone_t z) {
|
||||
zalloc(vm_zone_t z)
|
||||
{
|
||||
#if defined(SMP)
|
||||
return zalloci(z);
|
||||
#else
|
||||
@ -126,7 +128,8 @@ zalloc(vm_zone_t z) {
|
||||
}
|
||||
|
||||
static __inline__ void
|
||||
zfree(vm_zone_t z, void *item) {
|
||||
zfree(vm_zone_t z, void *item)
|
||||
{
|
||||
#if defined(SMP)
|
||||
zfreei(z, item);
|
||||
#else
|
||||
|
Loading…
x
Reference in New Issue
Block a user