keeping a little bit of the change, i'm leaving the element expansion in
there. that's what i was really after the first time anyway.
Index: hotplug.c
===================================================================
RCS file: /home/tedu/cvs/src/sys/dev/hotplug.c,v
retrieving revision 1.10
diff -u -r1.10 hotplug.c
--- hotplug.c 2 Dec 2010 04:12:35 -0000 1.10
+++ hotplug.c 14 Dec 2010 03:59:10 -0000
@@ -26,14 +26,13 @@
#include <sys/fcntl.h>
#include <sys/hotplug.h>
#include <sys/ioctl.h>
-#include <sys/malloc.h>
#include <sys/poll.h>
#include <sys/vnode.h>
#define HOTPLUG_MAXEVENTS 64
static int opened;
-static struct hotplug_event *evqueue;
+static struct hotplug_event evqueue[HOTPLUG_MAXEVENTS];
static int evqueue_head, evqueue_tail, evqueue_count;
static struct selinfo hotplug_sel;
@@ -89,8 +88,6 @@
printf("hotplug: event lost, queue full\n");
return (1);
}
- if (!evqueue)
- return (1);
evqueue[evqueue_head] = *he;
evqueue_head = EVQUEUE_NEXT(evqueue_head);
@@ -122,22 +119,12 @@
int
hotplugopen(dev_t dev, int flag, int mode, struct proc *p)
{
- struct hotplug_event *q;
-
if (minor(dev) != 0)
return (ENXIO);
if ((flag & FWRITE))
return (EPERM);
if (opened)
return (EBUSY);
- if (!evqueue) {
- q = malloc(sizeof(*q) * HOTPLUG_MAXEVENTS, M_DEVBUF, M_WAITOK);
- if (opened) {
- free(q, M_DEVBUF);
- return (EBUSY);
- }
- evqueue = q;
- }
opened = 1;
return (0);
}