Formatting cleanup, dead code removal. Remove N() namespacing macro,

useless. Remove SIGIO handling functions as they're server-only and
    properly belong in libdri.
main
Adam Jackson 2006-02-20 23:09:00 +00:00
parent 0a211db23c
commit 22e41ef083
8 changed files with 138 additions and 228 deletions

15
libdrm/ChangeLog Normal file
View File

@ -0,0 +1,15 @@
2006-02-20 Adam Jackson <ajax@freedesktop.org>
* ChangeLog:
* Makefile.am:
Created.
* TODO:
* xf86drm.c:
* xf86drm.h:
* xf86drmHash.c:
* xf86drmRandom.c:
* xf86drmSL.c:
Formatting cleanup, dead code removal. Remove N() namespacing macro,
useless. Remove SIGIO handling functions as they're server-only and
properly belong in libdri.

View File

@ -27,3 +27,5 @@ libdrm_la_SOURCES = xf86drm.c xf86drmHash.c xf86drmRandom.c xf86drmSL.c
libdrmincludedir = ${includedir} libdrmincludedir = ${includedir}
libdrminclude_HEADERS = xf86drm.h libdrminclude_HEADERS = xf86drm.h
EXTRA_DIST = ChangeLog TODO

View File

@ -7,5 +7,4 @@
- drmMsg, xf86DrvMsgVerb versus vfprintf - drmMsg, xf86DrvMsgVerb versus vfprintf
- drmOpenDevice tries chmod/chown if in server - drmOpenDevice tries chmod/chown if in server
- drmOpen{,ByName} tries to load kernel module if in server - drmOpen{,ByName} tries to load kernel module if in server
- drm*SIGIOHandler only exists in server All but the last two should probably be factored out into libdri.
All but the last three should probably be factored out into libdri.

View File

@ -31,8 +31,6 @@
* DEALINGS IN THE SOFTWARE. * DEALINGS IN THE SOFTWARE.
*/ */
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c,v 1.36 2003/08/24 17:35:35 tsi Exp $ */
#ifdef HAVE_XORG_CONFIG_H #ifdef HAVE_XORG_CONFIG_H
#include <xorg-config.h> #include <xorg-config.h>
#endif #endif
@ -68,13 +66,6 @@
# include "drm.h" # include "drm.h"
#endif #endif
/* No longer needed with CVS kernel modules on alpha
#if defined(__alpha__) && defined(__linux__)
extern unsigned long _bus_base(void);
#define BUS_BASE _bus_base()
#endif
*/
/* Not all systems have MAP_FAILED defined */ /* Not all systems have MAP_FAILED defined */
#ifndef MAP_FAILED #ifndef MAP_FAILED
#define MAP_FAILED ((void *)-1) #define MAP_FAILED ((void *)-1)
@ -102,11 +93,11 @@ extern unsigned long _bus_base(void);
#define DRM_MAX_MINOR 16 #define DRM_MAX_MINOR 16
#endif #endif
/*
* This definition needs to be changed on some systems if dev_t is a structure.
* If there is a header file we can get it from, there would be best.
*/
#ifndef makedev #ifndef makedev
/* This definition needs to be changed on
some systems if dev_t is a structure.
If there is a header file we can get it
from, there would be best. */
#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) #define makedev(x,y) ((dev_t)(((x) << 8) | (y)))
#endif #endif
@ -379,7 +370,7 @@ int drmAvailable(void)
if ((fd = drmOpenMinor(0, 1)) < 0) { if ((fd = drmOpenMinor(0, 1)) < 0) {
#ifdef __linux__ #ifdef __linux__
/* Try proc for backward Linux compatibility */ /* Try proc for backward Linux compatibility */
if (!access("/proc/dri/0", R_OK)) return 1; if (!access("/proc/dri/0", R_OK)) return 1;
#endif #endif
return 0; return 0;
@ -485,9 +476,8 @@ static int drmOpenByName(const char *name)
id = drmGetBusid(fd); id = drmGetBusid(fd);
drmMsg("drmGetBusid returned '%s'\n", id ? id : "NULL"); drmMsg("drmGetBusid returned '%s'\n", id ? id : "NULL");
if (!id || !*id) { if (!id || !*id) {
if (id) { if (id)
drmFreeBusid(id); drmFreeBusid(id);
}
return fd; return fd;
} else { } else {
drmFreeBusid(id); drmFreeBusid(id);
@ -501,7 +491,7 @@ static int drmOpenByName(const char *name)
} }
#ifdef __linux__ #ifdef __linux__
/* Backward-compatibility /proc support */ /* Backward-compatibility /proc support */
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
char proc_name[64], buf[512]; char proc_name[64], buf[512];
char *driver, *pt, *devstring; char *driver, *pt, *devstring;
@ -515,14 +505,14 @@ static int drmOpenByName(const char *name)
buf[retcode-1] = '\0'; buf[retcode-1] = '\0';
for (driver = pt = buf; *pt && *pt != ' '; ++pt) for (driver = pt = buf; *pt && *pt != ' '; ++pt)
; ;
if (*pt) { /* Device is next */ if (*pt) { /* Device is next */
*pt = '\0'; *pt = '\0';
if (!strcmp(driver, name)) { /* Match */ if (!strcmp(driver, name)) { /* Match */
for (devstring = ++pt; *pt && *pt != ' '; ++pt) for (devstring = ++pt; *pt && *pt != ' '; ++pt)
; ;
if (*pt) { /* Found busid */ if (*pt) { /* Found busid */
return drmOpenByBusid(++pt); return drmOpenByBusid(++pt);
} else { /* No busid */ } else { /* No busid */
return drmOpenDevice(strtol(devstring, NULL, 0),i); return drmOpenDevice(strtol(devstring, NULL, 0),i);
} }
} }
@ -571,8 +561,10 @@ int drmOpen(const char *name, const char *busid)
if (fd >= 0) if (fd >= 0)
return fd; return fd;
} }
if (name) if (name)
return drmOpenByName(name); return drmOpenByName(name);
return -1; return -1;
} }
@ -659,7 +651,6 @@ drmVersionPtr drmGetVersion(int fd)
drmVersionPtr retval; drmVersionPtr retval;
drm_version_t *version = drmMalloc(sizeof(*version)); drm_version_t *version = drmMalloc(sizeof(*version));
/* First, get the lengths */
version->name_len = 0; version->name_len = 0;
version->name = NULL; version->name = NULL;
version->date_len = 0; version->date_len = 0;
@ -672,7 +663,6 @@ drmVersionPtr drmGetVersion(int fd)
return NULL; return NULL;
} }
/* Now, allocate space and get the data */
if (version->name_len) if (version->name_len)
version->name = drmMalloc(version->name_len + 1); version->name = drmMalloc(version->name_len + 1);
if (version->date_len) if (version->date_len)
@ -686,15 +676,11 @@ drmVersionPtr drmGetVersion(int fd)
return NULL; return NULL;
} }
/* The results might not be null-terminated /* The results might not be null-terminated strings, so terminate them. */
strings, so terminate them. */
if (version->name_len) version->name[version->name_len] = '\0'; if (version->name_len) version->name[version->name_len] = '\0';
if (version->date_len) version->date[version->date_len] = '\0'; if (version->date_len) version->date[version->date_len] = '\0';
if (version->desc_len) version->desc[version->desc_len] = '\0'; if (version->desc_len) version->desc[version->desc_len] = '\0';
/* Now, copy it all back into the
client-visible data structure... */
retval = drmMalloc(sizeof(*retval)); retval = drmMalloc(sizeof(*retval));
drmCopyVersion(retval, version); drmCopyVersion(retval, version);
drmFreeKernelVersion(version); drmFreeKernelVersion(version);
@ -871,22 +857,12 @@ int drmAuthMagic(int fd, drm_magic_t magic)
* This function is a wrapper around the DRM_IOCTL_ADD_MAP ioctl, passing * This function is a wrapper around the DRM_IOCTL_ADD_MAP ioctl, passing
* the arguments in a drm_map structure. * the arguments in a drm_map structure.
*/ */
int drmAddMap(int fd, int drmAddMap(int fd, drm_handle_t offset, drmSize size, drmMapType type,
drm_handle_t offset, drmMapFlags flags, drm_handle_t *handle)
drmSize size,
drmMapType type,
drmMapFlags flags,
drm_handle_t * handle)
{ {
drm_map_t map; drm_map_t map;
map.offset = offset; map.offset = offset;
/* No longer needed with CVS kernel modules on alpha
#ifdef __alpha__
if (type != DRM_SHM)
map.offset += BUS_BASE;
#endif
*/
map.size = size; map.size = size;
map.handle = 0; map.handle = 0;
map.type = type; map.type = type;
@ -1038,10 +1014,7 @@ int drmClose(int fd)
* \internal * \internal
* This function is a wrapper for mmap(). * This function is a wrapper for mmap().
*/ */
int drmMap(int fd, int drmMap(int fd, drm_handle_t handle, drmSize size, drmAddressPtr address)
drm_handle_t handle,
drmSize size,
drmAddressPtr address)
{ {
static unsigned long pagesize_mask = 0; static unsigned long pagesize_mask = 0;
@ -1067,7 +1040,7 @@ int drmMap(int fd,
* \return zero on success, or a negative value on failure. * \return zero on success, or a negative value on failure.
* *
* \internal * \internal
* This function is a wrapper for unmap(). * This function is a wrapper for munmap().
*/ */
int drmUnmap(drmAddress address, drmSize size) int drmUnmap(drmAddress address, drmSize size)
{ {
@ -1093,8 +1066,7 @@ drmBufInfoPtr drmGetBufInfo(int fd)
drmFree(info.list); drmFree(info.list);
return NULL; return NULL;
} }
/* Now, copy it all back into the
client-visible data structure... */
retval = drmMalloc(sizeof(*retval)); retval = drmMalloc(sizeof(*retval));
retval->count = info.count; retval->count = info.count;
retval->list = drmMalloc(info.count * sizeof(*retval->list)); retval->list = drmMalloc(info.count * sizeof(*retval->list));
@ -1145,8 +1117,7 @@ drmBufMapPtr drmMapBufs(int fd)
drmFree(bufs.list); drmFree(bufs.list);
return NULL; return NULL;
} }
/* Now, copy it all back into the
client-visible data structure... */
retval = drmMalloc(sizeof(*retval)); retval = drmMalloc(sizeof(*retval));
retval->count = bufs.count; retval->count = bufs.count;
retval->list = drmMalloc(bufs.count * sizeof(*retval->list)); retval->list = drmMalloc(bufs.count * sizeof(*retval->list));
@ -1206,7 +1177,6 @@ int drmDMA(int fd, drmDMAReqPtr request)
drm_dma_t dma; drm_dma_t dma;
int ret, i = 0; int ret, i = 0;
/* Copy to hidden structure */
dma.context = request->context; dma.context = request->context;
dma.send_count = request->send_count; dma.send_count = request->send_count;
dma.send_indices = request->send_list; dma.send_indices = request->send_list;
@ -1284,7 +1254,7 @@ int drmUnlock(int fd, drm_context_t context)
return ioctl(fd, DRM_IOCTL_UNLOCK, &lock); return ioctl(fd, DRM_IOCTL_UNLOCK, &lock);
} }
drm_context_t * drmGetReservedContextList(int fd, int *count) drm_context_t *drmGetReservedContextList(int fd, int *count)
{ {
drm_ctx_res_t res; drm_ctx_res_t res;
drm_ctx_t *list; drm_ctx_t *list;
@ -1313,7 +1283,7 @@ drm_context_t * drmGetReservedContextList(int fd, int *count)
return retval; return retval;
} }
void drmFreeReservedContextList(drm_context_t * pt) void drmFreeReservedContextList(drm_context_t *pt)
{ {
drmFree(pt); drmFree(pt);
} }
@ -1336,7 +1306,7 @@ void drmFreeReservedContextList(drm_context_t * pt)
* This function is a wrapper around the DRM_IOCTL_ADD_CTX ioctl, passing the * This function is a wrapper around the DRM_IOCTL_ADD_CTX ioctl, passing the
* argument in a drm_ctx structure. * argument in a drm_ctx structure.
*/ */
int drmCreateContext(int fd, drm_context_t * handle) int drmCreateContext(int fd, drm_context_t *handle)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
@ -1359,14 +1329,12 @@ int drmSetContextFlags(int fd, drm_context_t context, drm_context_tFlags flags)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
/* Context preserving means that no context /*
switched are done between DMA buffers * Context preserving means that no context switches are done between DMA
from one context and the next. This is * buffers from one context and the next. This is suitable for use in the
suitable for use in the X server (which * X server (which promises to maintain hardware context), or in the
promises to maintain hardware context, * client-side library when buffers are swapped on behalf of two threads.
or in the client-side library when */
buffers are swapped on behalf of two
threads. */
ctx.handle = context; ctx.handle = context;
ctx.flags = 0; ctx.flags = 0;
if (flags & DRM_CONTEXT_PRESERVED) ctx.flags |= _DRM_CONTEXT_PRESERVED; if (flags & DRM_CONTEXT_PRESERVED) ctx.flags |= _DRM_CONTEXT_PRESERVED;
@ -1375,7 +1343,8 @@ int drmSetContextFlags(int fd, drm_context_t context, drm_context_tFlags flags)
return 0; return 0;
} }
int drmGetContextFlags(int fd, drm_context_t context, drm_context_tFlagsPtr flags) int drmGetContextFlags(int fd, drm_context_t context,
drm_context_tFlagsPtr flags)
{ {
drm_ctx_t ctx; drm_ctx_t ctx;
@ -1412,7 +1381,7 @@ int drmDestroyContext(int fd, drm_context_t handle)
return 0; return 0;
} }
int drmCreateDrawable(int fd, drm_drawable_t * handle) int drmCreateDrawable(int fd, drm_drawable_t *handle)
{ {
drm_draw_t draw; drm_draw_t draw;
if (ioctl(fd, DRM_IOCTL_ADD_DRAW, &draw)) return -errno; if (ioctl(fd, DRM_IOCTL_ADD_DRAW, &draw)) return -errno;
@ -1941,7 +1910,8 @@ void *drmGetContextTag(int fd, drm_context_t context)
return value; return value;
} }
int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id, drm_handle_t handle) int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id,
drm_handle_t handle)
{ {
drm_ctx_priv_map_t map; drm_ctx_priv_map_t map;
@ -1952,7 +1922,8 @@ int drmAddContextPrivateMapping(int fd, drm_context_t ctx_id, drm_handle_t handl
return 0; return 0;
} }
int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id, drm_handle_t * handle) int drmGetContextPrivateMapping(int fd, drm_context_t ctx_id,
drm_handle_t *handle)
{ {
drm_ctx_priv_map_t map; drm_ctx_priv_map_t map;
@ -2132,7 +2103,7 @@ int drmGetStats(int fd, drmStatsT *stats)
* It issues a read-write ioctl given by * It issues a read-write ioctl given by
* \code DRM_COMMAND_BASE + drmCommandIndex \endcode. * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
*/ */
int drmSetInterfaceVersion(int fd, drmSetVersion *version ) int drmSetInterfaceVersion(int fd, drmSetVersion *version)
{ {
int retcode = 0; int retcode = 0;
drm_set_version_t sv; drm_set_version_t sv;
@ -2194,8 +2165,8 @@ int drmCommandNone(int fd, unsigned long drmCommandIndex)
* It issues a read ioctl given by * It issues a read ioctl given by
* \code DRM_COMMAND_BASE + drmCommandIndex \endcode. * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
*/ */
int drmCommandRead(int fd, unsigned long drmCommandIndex, int drmCommandRead(int fd, unsigned long drmCommandIndex, void *data,
void *data, unsigned long size ) unsigned long size)
{ {
unsigned long request; unsigned long request;
@ -2223,8 +2194,8 @@ int drmCommandRead(int fd, unsigned long drmCommandIndex,
* It issues a write ioctl given by * It issues a write ioctl given by
* \code DRM_COMMAND_BASE + drmCommandIndex \endcode. * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
*/ */
int drmCommandWrite(int fd, unsigned long drmCommandIndex, int drmCommandWrite(int fd, unsigned long drmCommandIndex, void *data,
void *data, unsigned long size ) unsigned long size)
{ {
unsigned long request; unsigned long request;
@ -2252,8 +2223,8 @@ int drmCommandWrite(int fd, unsigned long drmCommandIndex,
* It issues a read-write ioctl given by * It issues a read-write ioctl given by
* \code DRM_COMMAND_BASE + drmCommandIndex \endcode. * \code DRM_COMMAND_BASE + drmCommandIndex \endcode.
*/ */
int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, int drmCommandWriteRead(int fd, unsigned long drmCommandIndex, void *data,
void *data, unsigned long size ) unsigned long size)
{ {
unsigned long request; unsigned long request;
@ -2265,69 +2236,3 @@ int drmCommandWriteRead(int fd, unsigned long drmCommandIndex,
} }
return 0; return 0;
} }
#if defined(XFree86Server)
static void drmSIGIOHandler(int interrupt, void *closure)
{
unsigned long key;
void *value;
ssize_t count;
drm_ctx_t ctx;
typedef void (*_drmCallback)(int, void *, void *);
char buf[256];
drm_context_t old;
drm_context_t new;
void *oldctx;
void *newctx;
char *pt;
drmHashEntry *entry;
if (!drmHashTable) return;
if (drmHashFirst(drmHashTable, &key, &value)) {
entry = value;
do {
#if 0
fprintf(stderr, "Trying %d\n", entry->fd);
#endif
if ((count = read(entry->fd, buf, sizeof(buf))) > 0) {
buf[count] = '\0';
#if 0
fprintf(stderr, "Got %s\n", buf);
#endif
for (pt = buf; *pt != ' '; ++pt); /* Find first space */
++pt;
old = strtol(pt, &pt, 0);
new = strtol(pt, NULL, 0);
oldctx = drmGetContextTag(entry->fd, old);
newctx = drmGetContextTag(entry->fd, new);
#if 0
fprintf(stderr, "%d %d %p %p\n", old, new, oldctx, newctx);
#endif
((_drmCallback)entry->f)(entry->fd, oldctx, newctx);
ctx.handle = new;
ioctl(entry->fd, DRM_IOCTL_NEW_CTX, &ctx);
}
} while (drmHashNext(drmHashTable, &key, &value));
}
}
int drmInstallSIGIOHandler(int fd, void (*f)(int, void *, void *))
{
drmHashEntry *entry;
entry = drmGetEntry(fd);
entry->f = f;
return xf86InstallSIGIOHandler(fd, drmSIGIOHandler, 0);
}
int drmRemoveSIGIOHandler(int fd)
{
drmHashEntry *entry = drmGetEntry(fd);
entry->f = NULL;
return xf86RemoveSIGIOHandler(fd);
}
#endif

View File

@ -546,11 +546,6 @@ extern int drmCreateDrawable(int fd, drm_drawable_t * handle);
extern int drmDestroyDrawable(int fd, drm_drawable_t handle); extern int drmDestroyDrawable(int fd, drm_drawable_t handle);
extern int drmCtlInstHandler(int fd, int irq); extern int drmCtlInstHandler(int fd, int irq);
extern int drmCtlUninstHandler(int fd); extern int drmCtlUninstHandler(int fd);
extern int drmInstallSIGIOHandler(int fd,
void (*f)(int fd,
void *oldctx,
void *newctx));
extern int drmRemoveSIGIOHandler(int fd);
/* General user-level programmer's API: authenticated client and/or X */ /* General user-level programmer's API: authenticated client and/or X */
extern int drmMap(int fd, extern int drmMap(int fd,

View File

@ -91,8 +91,6 @@
# endif # endif
#endif #endif
#define N(x) drm##x
#define HASH_MAGIC 0xdeadbeef #define HASH_MAGIC 0xdeadbeef
#define HASH_DEBUG 0 #define HASH_DEBUG 0
#define HASH_SIZE 512 /* Good for about 100 entries */ #define HASH_SIZE 512 /* Good for about 100 entries */
@ -135,11 +133,11 @@ typedef struct HashTable {
} HashTable, *HashTablePtr; } HashTable, *HashTablePtr;
#if HASH_MAIN #if HASH_MAIN
extern void *N(HashCreate)(void); extern void *drmHashCreate(void);
extern int N(HashDestroy)(void *t); extern int drmHashDestroy(void *t);
extern int N(HashLookup)(void *t, unsigned long key, unsigned long *value); extern int drmHashLookup(void *t, unsigned long key, unsigned long *value);
extern int N(HashInsert)(void *t, unsigned long key, unsigned long value); extern int drmHashInsert(void *t, unsigned long key, unsigned long value);
extern int N(HashDelete)(void *t, unsigned long key); extern int drmHashDelete(void *t, unsigned long key);
#endif #endif
static unsigned long HashHash(unsigned long key) static unsigned long HashHash(unsigned long key)
@ -170,7 +168,7 @@ static unsigned long HashHash(unsigned long key)
return hash; return hash;
} }
void *N(HashCreate)(void) void *drmHashCreate(void)
{ {
HashTablePtr table; HashTablePtr table;
int i; int i;
@ -187,7 +185,7 @@ void *N(HashCreate)(void)
return table; return table;
} }
int N(HashDestroy)(void *t) int drmHashDestroy(void *t)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
HashBucketPtr bucket; HashBucketPtr bucket;
@ -238,7 +236,7 @@ static HashBucketPtr HashFind(HashTablePtr table,
return NULL; return NULL;
} }
int N(HashLookup)(void *t, unsigned long key, void **value) int drmHashLookup(void *t, unsigned long key, void **value)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
HashBucketPtr bucket; HashBucketPtr bucket;
@ -251,7 +249,7 @@ int N(HashLookup)(void *t, unsigned long key, void **value)
return 0; /* Found */ return 0; /* Found */
} }
int N(HashInsert)(void *t, unsigned long key, void *value) int drmHashInsert(void *t, unsigned long key, void *value)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
HashBucketPtr bucket; HashBucketPtr bucket;
@ -273,7 +271,7 @@ int N(HashInsert)(void *t, unsigned long key, void *value)
return 0; /* Added to table */ return 0; /* Added to table */
} }
int N(HashDelete)(void *t, unsigned long key) int drmHashDelete(void *t, unsigned long key)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
unsigned long hash; unsigned long hash;
@ -290,7 +288,7 @@ int N(HashDelete)(void *t, unsigned long key)
return 0; return 0;
} }
int N(HashNext)(void *t, unsigned long *key, void **value) int drmHashNext(void *t, unsigned long *key, void **value)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
@ -306,7 +304,7 @@ int N(HashNext)(void *t, unsigned long *key, void **value)
return 0; return 0;
} }
int N(HashFirst)(void *t, unsigned long *key, void **value) int drmHashFirst(void *t, unsigned long *key, void **value)
{ {
HashTablePtr table = (HashTablePtr)t; HashTablePtr table = (HashTablePtr)t;
@ -314,7 +312,7 @@ int N(HashFirst)(void *t, unsigned long *key, void **value)
table->p0 = 0; table->p0 = 0;
table->p1 = table->buckets[0]; table->p1 = table->buckets[0];
return N(HashNext)(table, key, value); return drmHashNext(table, key, value);
} }
#if HASH_MAIN #if HASH_MAIN
@ -363,7 +361,7 @@ static void check_table(HashTablePtr table,
unsigned long key, unsigned long value) unsigned long key, unsigned long value)
{ {
unsigned long retval = 0; unsigned long retval = 0;
int retcode = N(HashLookup)(table, key, &retval); int retcode = drmHashLookup(table, key, &retval);
switch (retcode) { switch (retcode) {
case -1: case -1:
@ -393,50 +391,50 @@ int main(void)
int i; int i;
printf("\n***** 256 consecutive integers ****\n"); printf("\n***** 256 consecutive integers ****\n");
table = N(HashCreate)(); table = drmHashCreate();
for (i = 0; i < 256; i++) N(HashInsert)(table, i, i); for (i = 0; i < 256; i++) drmHashInsert(table, i, i);
for (i = 0; i < 256; i++) check_table(table, i, i); for (i = 0; i < 256; i++) check_table(table, i, i);
for (i = 256; i >= 0; i--) check_table(table, i, i); for (i = 256; i >= 0; i--) check_table(table, i, i);
compute_dist(table); compute_dist(table);
N(HashDestroy)(table); drmHashDestroy(table);
printf("\n***** 1024 consecutive integers ****\n"); printf("\n***** 1024 consecutive integers ****\n");
table = N(HashCreate)(); table = drmHashCreate();
for (i = 0; i < 1024; i++) N(HashInsert)(table, i, i); for (i = 0; i < 1024; i++) drmHashInsert(table, i, i);
for (i = 0; i < 1024; i++) check_table(table, i, i); for (i = 0; i < 1024; i++) check_table(table, i, i);
for (i = 1024; i >= 0; i--) check_table(table, i, i); for (i = 1024; i >= 0; i--) check_table(table, i, i);
compute_dist(table); compute_dist(table);
N(HashDestroy)(table); drmHashDestroy(table);
printf("\n***** 1024 consecutive page addresses (4k pages) ****\n"); printf("\n***** 1024 consecutive page addresses (4k pages) ****\n");
table = N(HashCreate)(); table = drmHashCreate();
for (i = 0; i < 1024; i++) N(HashInsert)(table, i*4096, i); for (i = 0; i < 1024; i++) drmHashInsert(table, i*4096, i);
for (i = 0; i < 1024; i++) check_table(table, i*4096, i); for (i = 0; i < 1024; i++) check_table(table, i*4096, i);
for (i = 1024; i >= 0; i--) check_table(table, i*4096, i); for (i = 1024; i >= 0; i--) check_table(table, i*4096, i);
compute_dist(table); compute_dist(table);
N(HashDestroy)(table); drmHashDestroy(table);
printf("\n***** 1024 random integers ****\n"); printf("\n***** 1024 random integers ****\n");
table = N(HashCreate)(); table = drmHashCreate();
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 1024; i++) N(HashInsert)(table, random(), i); for (i = 0; i < 1024; i++) drmHashInsert(table, random(), i);
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 1024; i++) check_table(table, random(), i); for (i = 0; i < 1024; i++) check_table(table, random(), i);
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 1024; i++) check_table(table, random(), i); for (i = 0; i < 1024; i++) check_table(table, random(), i);
compute_dist(table); compute_dist(table);
N(HashDestroy)(table); drmHashDestroy(table);
printf("\n***** 5000 random integers ****\n"); printf("\n***** 5000 random integers ****\n");
table = N(HashCreate)(); table = drmHashCreate();
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 5000; i++) N(HashInsert)(table, random(), i); for (i = 0; i < 5000; i++) drmHashInsert(table, random(), i);
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 5000; i++) check_table(table, random(), i); for (i = 0; i < 5000; i++) check_table(table, random(), i);
srandom(0xbeefbeef); srandom(0xbeefbeef);
for (i = 0; i < 5000; i++) check_table(table, random(), i); for (i = 0; i < 5000; i++) check_table(table, random(), i);
compute_dist(table); compute_dist(table);
N(HashDestroy)(table); drmHashDestroy(table);
return 0; return 0;
} }

View File

@ -94,8 +94,6 @@
# endif # endif
#endif #endif
#define N(x) drm##x
#define RANDOM_MAGIC 0xfeedbeef #define RANDOM_MAGIC 0xfeedbeef
#define RANDOM_DEBUG 0 #define RANDOM_DEBUG 0
@ -118,13 +116,13 @@ typedef struct RandomState {
} RandomState; } RandomState;
#if RANDOM_MAIN #if RANDOM_MAIN
extern void *N(RandomCreate)(unsigned long seed); extern void *drmRandomCreate(unsigned long seed);
extern int N(RandomDestroy)(void *state); extern int drmRandomDestroy(void *state);
extern unsigned long N(Random)(void *state); extern unsigned long drmRandom(void *state);
extern double N(RandomDouble)(void *state); extern double drmRandomDouble(void *state);
#endif #endif
void *N(RandomCreate)(unsigned long seed) void *drmRandomCreate(unsigned long seed)
{ {
RandomState *state; RandomState *state;
@ -154,13 +152,13 @@ void *N(RandomCreate)(unsigned long seed)
return state; return state;
} }
int N(RandomDestroy)(void *state) int drmRandomDestroy(void *state)
{ {
RANDOM_FREE(state); RANDOM_FREE(state);
return 0; return 0;
} }
unsigned long N(Random)(void *state) unsigned long drmRandom(void *state)
{ {
RandomState *s = (RandomState *)state; RandomState *s = (RandomState *)state;
long hi; long hi;
@ -174,11 +172,11 @@ unsigned long N(Random)(void *state)
return s->seed; return s->seed;
} }
double N(RandomDouble)(void *state) double drmRandomDouble(void *state)
{ {
RandomState *s = (RandomState *)state; RandomState *s = (RandomState *)state;
return (double)N(Random)(state)/(double)s->m; return (double)drmRandom(state)/(double)s->m;
} }
#if RANDOM_MAIN #if RANDOM_MAIN
@ -188,15 +186,15 @@ static void check_period(long seed)
unsigned long initial; unsigned long initial;
void *state; void *state;
state = N(RandomCreate)(seed); state = drmRandomCreate(seed);
initial = N(Random)(state); initial = drmRandom(state);
++count; ++count;
while (initial != N(Random)(state)) { while (initial != drmRandom(state)) {
if (!++count) break; if (!++count) break;
} }
printf("With seed of %10ld, period = %10lu (0x%08lx)\n", printf("With seed of %10ld, period = %10lu (0x%08lx)\n",
seed, count, count); seed, count, count);
N(RandomDestroy)(state); drmRandomDestroy(state);
} }
int main(void) int main(void)
@ -205,14 +203,14 @@ int main(void)
int i; int i;
unsigned long rand; unsigned long rand;
state = N(RandomCreate)(1); state = drmRandomCreate(1);
for (i = 0; i < 10000; i++) { for (i = 0; i < 10000; i++) {
rand = N(Random)(state); rand = drmRandom(state);
} }
printf("After 10000 iterations: %lu (%lu expected): %s\n", printf("After 10000 iterations: %lu (%lu expected): %s\n",
rand, state->check, rand, state->check,
rand - state->check ? "*INCORRECT*" : "CORRECT"); rand - state->check ? "*INCORRECT*" : "CORRECT");
N(RandomDestroy)(state); drmRandomDestroy(state);
printf("Checking periods...\n"); printf("Checking periods...\n");
check_period(1); check_period(1);

View File

@ -62,8 +62,6 @@
# endif # endif
#endif #endif
#define N(x) drm##x
#define SL_LIST_MAGIC 0xfacade00LU #define SL_LIST_MAGIC 0xfacade00LU
#define SL_ENTRY_MAGIC 0x00fab1edLU #define SL_ENTRY_MAGIC 0x00fab1edLU
#define SL_FREED_MAGIC 0xdecea5edLU #define SL_FREED_MAGIC 0xdecea5edLU
@ -103,15 +101,15 @@ typedef struct SkipList {
} SkipList, *SkipListPtr; } SkipList, *SkipListPtr;
#if SL_MAIN #if SL_MAIN
extern void *N(SLCreate)(void); extern void *drmSLCreate(void);
extern int N(SLDestroy)(void *l); extern int drmSLDestroy(void *l);
extern int N(SLLookup)(void *l, unsigned long key, void **value); extern int drmSLLookup(void *l, unsigned long key, void **value);
extern int N(SLInsert)(void *l, unsigned long key, void *value); extern int drmSLInsert(void *l, unsigned long key, void *value);
extern int N(SLDelete)(void *l, unsigned long key); extern int drmSLDelete(void *l, unsigned long key);
extern int N(SLNext)(void *l, unsigned long *key, void **value); extern int drmSLNext(void *l, unsigned long *key, void **value);
extern int N(SLFirst)(void *l, unsigned long *key, void **value); extern int drmSLFirst(void *l, unsigned long *key, void **value);
extern void N(SLDump)(void *l); extern void drmSLDump(void *l);
extern int N(SLLookupNeighbors)(void *l, unsigned long key, extern int drmSLLookupNeighbors(void *l, unsigned long key,
unsigned long *prev_key, void **prev_value, unsigned long *prev_key, void **prev_value,
unsigned long *next_key, void **next_value); unsigned long *next_key, void **next_value);
#endif #endif
@ -144,7 +142,7 @@ static int SLRandomLevel(void)
return level; return level;
} }
void *N(SLCreate)(void) void *drmSLCreate(void)
{ {
SkipListPtr list; SkipListPtr list;
int i; int i;
@ -161,7 +159,7 @@ void *N(SLCreate)(void)
return list; return list;
} }
int N(SLDestroy)(void *l) int drmSLDestroy(void *l)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr entry; SLEntryPtr entry;
@ -198,7 +196,7 @@ static SLEntryPtr SLLocate(void *l, unsigned long key, SLEntryPtr *update)
return entry->forward[0]; return entry->forward[0];
} }
int N(SLInsert)(void *l, unsigned long key, void *value) int drmSLInsert(void *l, unsigned long key, void *value)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr entry; SLEntryPtr entry;
@ -231,7 +229,7 @@ int N(SLInsert)(void *l, unsigned long key, void *value)
return 0; /* Added to table */ return 0; /* Added to table */
} }
int N(SLDelete)(void *l, unsigned long key) int drmSLDelete(void *l, unsigned long key)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr update[SL_MAX_LEVEL + 1]; SLEntryPtr update[SL_MAX_LEVEL + 1];
@ -258,7 +256,7 @@ int N(SLDelete)(void *l, unsigned long key)
return 0; return 0;
} }
int N(SLLookup)(void *l, unsigned long key, void **value) int drmSLLookup(void *l, unsigned long key, void **value)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr update[SL_MAX_LEVEL + 1]; SLEntryPtr update[SL_MAX_LEVEL + 1];
@ -274,7 +272,7 @@ int N(SLLookup)(void *l, unsigned long key, void **value)
return -1; return -1;
} }
int N(SLLookupNeighbors)(void *l, unsigned long key, int drmSLLookupNeighbors(void *l, unsigned long key,
unsigned long *prev_key, void **prev_value, unsigned long *prev_key, void **prev_value,
unsigned long *next_key, void **next_value) unsigned long *next_key, void **next_value)
{ {
@ -301,7 +299,7 @@ int N(SLLookupNeighbors)(void *l, unsigned long key,
return retcode; return retcode;
} }
int N(SLNext)(void *l, unsigned long *key, void **value) int drmSLNext(void *l, unsigned long *key, void **value)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr entry; SLEntryPtr entry;
@ -320,18 +318,18 @@ int N(SLNext)(void *l, unsigned long *key, void **value)
return 0; return 0;
} }
int N(SLFirst)(void *l, unsigned long *key, void **value) int drmSLFirst(void *l, unsigned long *key, void **value)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */ if (list->magic != SL_LIST_MAGIC) return -1; /* Bad magic */
list->p0 = list->head->forward[0]; list->p0 = list->head->forward[0];
return N(SLNext)(list, key, value); return drmSLNext(list, key, value);
} }
/* Dump internal data structures for debugging. */ /* Dump internal data structures for debugging. */
void N(SLDump)(void *l) void drmSLDump(void *l)
{ {
SkipListPtr list = (SkipListPtr)l; SkipListPtr list = (SkipListPtr)l;
SLEntryPtr entry; SLEntryPtr entry;
@ -371,10 +369,10 @@ static void print(SkipListPtr list)
unsigned long key; unsigned long key;
void *value; void *value;
if (N(SLFirst)(list, &key, &value)) { if (drmSLFirst(list, &key, &value)) {
do { do {
printf("key = %5lu, value = %p\n", key, value); printf("key = %5lu, value = %p\n", key, value);
} while (N(SLNext)(list, &key, &value)); } while (drmSLNext(list, &key, &value));
} }
} }
@ -392,27 +390,27 @@ static double do_time(int size, int iter)
SL_RANDOM_INIT(12345); SL_RANDOM_INIT(12345);
list = N(SLCreate)(); list = drmSLCreate();
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
keys[i] = SL_RANDOM; keys[i] = SL_RANDOM;
N(SLInsert)(list, keys[i], NULL); drmSLInsert(list, keys[i], NULL);
} }
previous = 0; previous = 0;
if (N(SLFirst)(list, &key, &value)) { if (drmSLFirst(list, &key, &value)) {
do { do {
if (key <= previous) { if (key <= previous) {
printf( "%lu !< %lu\n", previous, key); printf( "%lu !< %lu\n", previous, key);
} }
previous = key; previous = key;
} while (N(SLNext)(list, &key, &value)); } while (drmSLNext(list, &key, &value));
} }
gettimeofday(&start, NULL); gettimeofday(&start, NULL);
for (j = 0; j < iter; j++) { for (j = 0; j < iter; j++) {
for (i = 0; i < size; i++) { for (i = 0; i < size; i++) {
if (N(SLLookup)(list, keys[i], &value)) if (drmSLLookup(list, keys[i], &value))
printf("Error %lu %d\n", keys[i], i); printf("Error %lu %d\n", keys[i], i);
} }
} }
@ -423,7 +421,7 @@ static double do_time(int size, int iter)
printf("%0.2f microseconds for list length %d\n", usec, size); printf("%0.2f microseconds for list length %d\n", usec, size);
N(SLDestroy)(list); drmSLDestroy(list);
return usec; return usec;
} }
@ -448,15 +446,15 @@ int main(void)
SkipListPtr list; SkipListPtr list;
double usec, usec2, usec3, usec4; double usec, usec2, usec3, usec4;
list = N(SLCreate)(); list = drmSLCreate();
printf( "list at %p\n", list); printf( "list at %p\n", list);
print(list); print(list);
printf("\n==============================\n\n"); printf("\n==============================\n\n");
N(SLInsert)(list, 123, NULL); drmSLInsert(list, 123, NULL);
N(SLInsert)(list, 213, NULL); drmSLInsert(list, 213, NULL);
N(SLInsert)(list, 50, NULL); drmSLInsert(list, 50, NULL);
print(list); print(list);
printf("\n==============================\n\n"); printf("\n==============================\n\n");
@ -469,12 +467,12 @@ int main(void)
print_neighbors(list, 256); print_neighbors(list, 256);
printf("\n==============================\n\n"); printf("\n==============================\n\n");
N(SLDelete)(list, 50); drmSLDelete(list, 50);
print(list); print(list);
printf("\n==============================\n\n"); printf("\n==============================\n\n");
N(SLDump)(list); drmSLDump(list);
N(SLDestroy)(list); drmSLDestroy(list);
printf("\n==============================\n\n"); printf("\n==============================\n\n");
usec = do_time(100, 10000); usec = do_time(100, 10000);