summaryrefslogtreecommitdiffstats
path: root/usr.sbin/pccard
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1995-08-28 10:30:47 +0000
committerphk <phk@FreeBSD.org>1995-08-28 10:30:47 +0000
commitb6eaeb98d3527a61193ea7df44b961db79ac5aad (patch)
tree1b4e524c353a08ddb771ebd875dffb8b50e14990 /usr.sbin/pccard
parent3d1e990fe45331f764c677434a5ee4f563eae713 (diff)
downloadFreeBSD-src-b6eaeb98d3527a61193ea7df44b961db79ac5aad.zip
FreeBSD-src-b6eaeb98d3527a61193ea7df44b961db79ac5aad.tar.gz
A bunch of small bug-fixes, doesn't quite work yet, but I'm getting closer.
At least it doesn't core-dump now.
Diffstat (limited to 'usr.sbin/pccard')
-rw-r--r--usr.sbin/pccard/Makefile.inc2
-rw-r--r--usr.sbin/pccard/pccardd/cardd.c36
-rw-r--r--usr.sbin/pccard/pccardd/util.c4
3 files changed, 14 insertions, 28 deletions
diff --git a/usr.sbin/pccard/Makefile.inc b/usr.sbin/pccard/Makefile.inc
index 8b4c7de..8541d60 100644
--- a/usr.sbin/pccard/Makefile.inc
+++ b/usr.sbin/pccard/Makefile.inc
@@ -1 +1 @@
-CFLAGS+= -Wall -g
+CFLAGS+= -Wall -g -static
diff --git a/usr.sbin/pccard/pccardd/cardd.c b/usr.sbin/pccard/pccardd/cardd.c
index ecebdaa..cee63e5 100644
--- a/usr.sbin/pccard/pccardd/cardd.c
+++ b/usr.sbin/pccard/pccardd/cardd.c
@@ -1,4 +1,4 @@
-#define HERE() printf("<%d>\n",__LINE__)
+#define DEBUG 1
/*
* pcmciad
*/
@@ -15,7 +15,7 @@
#include "cardd.h"
-char *config_file = "/etc/card.conf";
+char *config_file = "/etc/pccard.conf";
struct card_config *assign_driver(struct card *);
int setup_slot(struct slot *);
@@ -186,27 +186,22 @@ printf("opened %s\n",name);
{
unsigned long mem = 0;
-HERE();
if (ioctl(fd, PIOCRWMEM, &mem))
perror("ioctl (PIOCRWMEM)");
+printf("mem=%x\n",mem);
if (mem == 0)
{
-HERE();
mem = alloc_memory(4*1024);
-HERE();
if (mem == 0)
die("Can't allocate memory for controller access");
if (ioctl(fd, PIOCRWMEM, &mem))
perror("ioctl (PIOCRWMEM)");
}
}
+printf("%p %p\n",sp,&sp->next);
sp->next = slots;
slots = sp;
-HERE();
-#if 0
slot_change(sp);
-#endif
-HERE();
}
}
/*
@@ -216,33 +211,26 @@ HERE();
void
slot_change(struct slot *sp)
{
-int state;
+ struct slotstate state;
current_slot = sp;
-HERE();
if (ioctl(sp->fd, PIOCGSTATE, &state))
{
perror("ioctl (PIOCGSTATE)");
return;
}
-HERE();
- if (state == sp->state)
+ printf("%p %p %d %d\n",sp,&sp->state,state.state,sp->state);
+ if (state.state == sp->state)
return;
-HERE();
- sp->state = state;
-HERE();
+ sp->state = state.state;
switch (sp->state)
{
case empty:
case noslot:
-HERE();
card_removed(sp);
-HERE();
break;
case filled:
-HERE();
card_inserted(sp);
-HERE();
break;
}
}
@@ -258,7 +246,6 @@ card_removed(struct slot *sp)
{
struct card *cp;
-HERE();
if (sp->cis)
freecis(sp->cis);
if (sp->config)
@@ -266,13 +253,10 @@ HERE();
sp->config->inuse = 0;
sp->config->driver->inuse = 0;
}
-HERE();
if ((cp = sp->card) != 0)
execute(cp->remove);
-HERE();
sp->cis = 0;
sp->config = 0;
-HERE();
}
/*
* card_inserted - Card has been inserted;
@@ -604,8 +588,8 @@ int rw_flags;
c = sp->config->index;
write(sp->fd, &c, sizeof(c));
#ifdef DEBUG
- printf("Setting config reg at offs 0x%x to 0x%x\n",
- sp->cis->reg_addr, c);
+ printf("Setting config reg at offs 0x%x (=) 0x%x to 0x%x\n",
+ offs, sp->cis->reg_addr, c);
printf("Reset time = %d ms\n", sp->card->reset_time);
#endif
usleep(sp->card->reset_time*1000);
diff --git a/usr.sbin/pccard/pccardd/util.c b/usr.sbin/pccard/pccardd/util.c
index 68379e9..aed0677 100644
--- a/usr.sbin/pccard/pccardd/util.c
+++ b/usr.sbin/pccard/pccardd/util.c
@@ -46,18 +46,20 @@ die(char *msg)
closelog();
exit(1);
}
+
void *
xmalloc(int sz)
{
void *p;
- p = malloc(sz+8);
+ p = malloc(sz);
if (p)
bzero(p, sz);
else
die("malloc failed");
return(p);
}
+
char *
newstr(char *p)
{
OpenPOWER on IntegriCloud