/*
* Copyright 2000, International Business Machines Corporation and others.
* All Rights Reserved.
- *
+ *
* This software has been released under the terms of the IBM Public
* License. For details, see the LICENSE file in the top-level source
* directory or online at http://www.openafs.org/dl/license10.html
#include <afsconfig.h>
#include "afs/param.h"
-RCSID
- ("$Header$");
#include "sys/sleep.h"
#include "sys/syspest.h"
#include "sys/lock_def.h"
-/*lock_t osi_fsplock = LOCK_AVAIL;*/
#endif
-afs_lock_t osi_fsplock;
-
+#ifndef AFS_PRIVATE_OSI_ALLOCSPACES
+afs_lock_t osi_fsplock;
+afs_lock_t osi_flplock;
static struct osi_packet {
struct osi_packet *next;
-} *freePacketList = NULL, *freeSmallList;
-afs_lock_t osi_flplock;
+} *freePacketList = NULL, *freeSmallList = NULL;
+
+#endif /* AFS_PRIVATE_OSI_ALLOCSPACES */
static char memZero; /* address of 0 bytes for kmem_alloc */
struct osimem *next;
};
-
+#if !defined(AFS_NBSD_ENV) || defined(AFS_NBSD50_ENV)
void *
afs_osi_Alloc(size_t x)
{
#if !defined(AFS_LINUX20_ENV) && !defined(AFS_FBSD_ENV)
- register struct osimem *tm = NULL;
- register int size;
+ struct osimem *tm = NULL;
+ int size;
#endif
AFS_STATCNT(osi_Alloc);
#endif
}
-#if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
-
-void *
-afs_osi_Alloc_NoSleep(size_t x)
-{
- register struct osimem *tm;
- register int size;
-
- AFS_STATCNT(osi_Alloc);
- /* 0-length allocs may return NULL ptr from AFS_KALLOC, so we special-case
- * things so that NULL returned iff an error occurred */
- if (x == 0)
- return &memZero;
-
- size = x;
- AFS_STATS(afs_stats_cmperf.OutStandingAllocs++);
- AFS_STATS(afs_stats_cmperf.OutStandingMemUsage += x);
- tm = (struct osimem *)AFS_KALLOC_NOSLEEP(size);
- return (void *)tm;
-}
-
-#endif /* SUN || SGI */
-
void
afs_osi_Free(void *x, size_t asize)
{
osi_linux_free(x);
#elif defined(AFS_FBSD_ENV)
osi_fbsd_free(x);
+#elif defined(AFS_OBSD_ENV)
+ osi_obsd_Free(x, asize);
#else
AFS_KFREE((struct osimem *)x, asize);
#endif
afs_osi_Free(x, strlen(x) + 1);
}
+#endif /* !AFS_NBSD_ENV && !defined(AFS_NBSD50_ENV) */
+#ifndef AFS_PRIVATE_OSI_ALLOCSPACES
/* free space allocated by AllocLargeSpace. Also called by mclput when freeing
* a packet allocated by osi_NetReceive. */
AFS_STATCNT(osi_FreeLargeSpace);
afs_stats_cmperf.LargeBlocksActive--;
- MObtainWriteLock(&osi_flplock, 322);
+ ObtainWriteLock(&osi_flplock, 322);
((struct osi_packet *)adata)->next = freePacketList;
freePacketList = adata;
- MReleaseWriteLock(&osi_flplock);
+ ReleaseWriteLock(&osi_flplock);
}
void
AFS_STATCNT(osi_FreeSmallSpace);
afs_stats_cmperf.SmallBlocksActive--;
- MObtainWriteLock(&osi_fsplock, 323);
+ ObtainWriteLock(&osi_fsplock, 323);
((struct osi_packet *)adata)->next = freeSmallList;
freeSmallList = adata;
- MReleaseWriteLock(&osi_fsplock);
+ ReleaseWriteLock(&osi_fsplock);
}
void *
osi_AllocLargeSpace(size_t size)
{
- register struct osi_packet *tp;
+ struct osi_packet *tp;
AFS_ASSERT_GLOCK();
AFS_STATCNT(osi_AllocLargeSpace);
if (size > AFS_LRALLOCSIZ)
- osi_Panic("osi_AllocLargeSpace: size=%d\n", size);
+ osi_Panic("osi_AllocLargeSpace: size=%d\n", (int)size);
afs_stats_cmperf.LargeBlocksActive++;
if (!freePacketList) {
char *p;
#endif
return p;
}
- MObtainWriteLock(&osi_flplock, 324);
+ ObtainWriteLock(&osi_flplock, 324);
tp = freePacketList;
if (tp)
freePacketList = tp->next;
- MReleaseWriteLock(&osi_flplock);
+ ReleaseWriteLock(&osi_flplock);
return (char *)tp;
}
void *
osi_AllocSmallSpace(size_t size)
{
- register struct osi_packet *tp;
+ struct osi_packet *tp;
AFS_STATCNT(osi_AllocSmallSpace);
if (size > AFS_SMALLOCSIZ)
- osi_Panic("osi_AllocSmallS: size=%d\n", size);
+ osi_Panic("osi_AllocSmallS: size=%d\n", (int)size);
if (!freeSmallList) {
afs_stats_cmperf.SmallBlocksAlloced++;
return (char *)tp;
}
afs_stats_cmperf.SmallBlocksActive++;
- MObtainWriteLock(&osi_fsplock, 327);
+ ObtainWriteLock(&osi_fsplock, 327);
tp = freeSmallList;
if (tp)
freeSmallList = tp->next;
- MReleaseWriteLock(&osi_fsplock);
+ ReleaseWriteLock(&osi_fsplock);
return (char *)tp;
}
-
-
+#endif /* AFS_PRIVATE_OSI_ALLOCSPACES */
void
shutdown_osinet(void)
{
AFS_STATCNT(shutdown_osinet);
+#ifndef AFS_PRIVATE_OSI_ALLOCSPACES
if (afs_cold_shutdown) {
struct osi_packet *tp;
LOCK_INIT(&osi_fsplock, "osi_fsplock");
LOCK_INIT(&osi_flplock, "osi_flplock");
}
- if (afs_stats_cmperf.LargeBlocksActive ||
- afs_stats_cmperf.SmallBlocksActive)
+#endif /* AFS_PRIVATE_OSI_ALLOCSPACES */
+ if (afs_stats_cmperf.LargeBlocksActive ||
+ afs_stats_cmperf.SmallBlocksActive)
{
- afs_warn("WARNING: not all blocks freed: large %d small %d\n",
- afs_stats_cmperf.LargeBlocksActive,
+ afs_warn("WARNING: not all blocks freed: large %d small %d\n",
+ afs_stats_cmperf.LargeBlocksActive,
afs_stats_cmperf.SmallBlocksActive);
}
}