summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/9/pc/sdvirtio.c4
-rw-r--r--sys/src/9/port/devsd.c13
-rw-r--r--sys/src/cmd/file.c8
-rw-r--r--sys/src/games/galaxy/galaxy.c19
-rw-r--r--sys/src/games/galaxy/galaxy.h2
5 files changed, 32 insertions, 14 deletions
diff --git a/sys/src/9/pc/sdvirtio.c b/sys/src/9/pc/sdvirtio.c
index 6bb6c1162..ecda11778 100644
--- a/sys/src/9/pc/sdvirtio.c
+++ b/sys/src/9/pc/sdvirtio.c
@@ -579,7 +579,7 @@ vioenable(SDev *sd)
snprint(name, sizeof(name), "%s (%s)", sd->name, sd->ifc->name);
intrenable(vd->pci->intl, viointerrupt, vd, vd->pci->tbdf, name);
outb(vd->port+Status, inb(vd->port+Status) | DriverOk);
- return 0;
+ return 1;
}
static int
@@ -591,7 +591,7 @@ viodisable(SDev *sd)
vd = sd->ctlr;
snprint(name, sizeof(name), "%s (%s)", sd->name, sd->ifc->name);
intrdisable(vd->pci->intl, viointerrupt, vd, vd->pci->tbdf, name);
- return 0;
+ return 1;
}
static SDev*
diff --git a/sys/src/9/port/devsd.c b/sys/src/9/port/devsd.c
index 18684b3d7..5ea1d47b8 100644
--- a/sys/src/9/port/devsd.c
+++ b/sys/src/9/port/devsd.c
@@ -293,30 +293,31 @@ sdgetunit(SDev* sdev, int subno)
qunlock(&sdev->unitlock);
return nil;
}
+
if((unit = malloc(sizeof(SDunit))) == nil){
qunlock(&sdev->unitlock);
return nil;
}
sdev->unitflg[subno] = 1;
-
snprint(buf, sizeof buf, "%s%x", sdev->name, subno);
kstrdup(&unit->name, buf);
kstrdup(&unit->user, eve);
unit->perm = 0555;
unit->subno = subno;
unit->dev = sdev;
-
- if(sdev->enabled == 0 && sdev->ifc->enable)
- sdev->ifc->enable(sdev);
- sdev->enabled = 1;
+
+ if(sdev->enabled == 0)
+ sdev->enabled = sdev->ifc->enable == nil || sdev->ifc->enable(sdev);
/*
* No need to lock anything here as this is only
* called before the unit is made available in the
* sdunit[] array.
*/
- if(unit->dev->ifc->verify(unit) == 0){
+ if(sdev->enabled == 0 || unit->dev->ifc->verify(unit) == 0){
qunlock(&sdev->unitlock);
+ free(unit->name);
+ free(unit->user);
free(unit);
return nil;
}
diff --git a/sys/src/cmd/file.c b/sys/src/cmd/file.c
index 4c7ff421c..b64bb13a4 100644
--- a/sys/src/cmd/file.c
+++ b/sys/src/cmd/file.c
@@ -874,6 +874,14 @@ struct FILE_STRING
"Extended module: ", "XM audio", 17, "audio/xm",
"MThd", "midi audio", 4, "audio/midi",
"MUS\x1a", "mus audio", 4, "audio/mus",
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\x00\x00\x00\xbb\x11\x22\x00\x44\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xaa\x99\x55\x66", "Xilinx bitstream (not byteswappped)", 52, OCTET,
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\xbb\x00\x00\x00\x44\x00\x22\x11\xff\xff\xff\xff\xff\xff\xff\xff"
+ "\x66\x55\x99\xaa", "Xilinx bitstream (byteswappped)", 52, OCTET,
0,0,0,0
};
diff --git a/sys/src/games/galaxy/galaxy.c b/sys/src/games/galaxy/galaxy.c
index 4be0334c6..faa4cf8ef 100644
--- a/sys/src/games/galaxy/galaxy.c
+++ b/sys/src/games/galaxy/galaxy.c
@@ -442,7 +442,7 @@ domenu(void)
G *= z;
break;
case EXIT:
- threadexitsall(nil);
+ quit(nil);
break;
}
drawglxy();
@@ -496,14 +496,14 @@ kbdthread(void*)
for(;;) {
recv(realkc->c, &r);
- if(r == Kdel) {
- threadexitsall(nil);
- }
+ if(r == Kdel)
+ quit(nil);
+
if(kc.c != nil)
send(kc.c, &r);
else switch(r) {
case 'q':
- threadexitsall(nil);
+ quit(nil);
break;
case 's':
stats ^= 1;
@@ -539,9 +539,16 @@ tovector(Point p)
}
void
+quit(char *e)
+{
+ pause(0, 0);
+ threadexitsall(e);
+}
+
+void
usage(void)
{
- fprint(2, "Usage: %s [-t throttle] [-G gravity] [-ε smooth] [-i] [file]\n", argv0);
+ fprint(2, "Usage: %s [-t throttle] [-G gravity] [-ε smooth] [-p extraproc] [-i] [file]\n", argv0);
threadexitsall("usage");
}
diff --git a/sys/src/games/galaxy/galaxy.h b/sys/src/games/galaxy/galaxy.h
index a09ab204c..9d51aa158 100644
--- a/sys/src/games/galaxy/galaxy.h
+++ b/sys/src/games/galaxy/galaxy.h
@@ -49,6 +49,8 @@ enum {
BODY,
};
+void quit(char*);
+
Image *randcol(void);
Point topoint(Vector);
Vector tovector(Point);