aboutsummaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorMaxime Henrion <mux@FreeBSD.org>2003-03-22 12:18:20 +0000
committerMaxime Henrion <mux@FreeBSD.org>2003-03-22 12:18:20 +0000
commit0a50de79cb11755dab26a5bc3076c0e11404038b (patch)
treebf4321914b31ede56d450445be309e2854f4c107 /sbin
parent66996f7a880ed28409e46380026c29f76dbe2571 (diff)
Notes
Diffstat (limited to 'sbin')
-rw-r--r--sbin/atacontrol/atacontrol.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sbin/atacontrol/atacontrol.c b/sbin/atacontrol/atacontrol.c
index d7b6995eff701..c55e3994d4dc0 100644
--- a/sbin/atacontrol/atacontrol.c
+++ b/sbin/atacontrol/atacontrol.c
@@ -249,7 +249,7 @@ int
main(int argc, char **argv)
{
struct ata_cmd iocmd;
- int fd;
+ int fd, maxunit, unit;
if ((fd = open("/dev/ata", O_RDWR)) < 0)
err(1, "control device not found");
@@ -278,9 +278,12 @@ main(int argc, char **argv)
}
if (!strcmp(argv[1], "list") && argc == 2) {
- int unit = 0;
-
- while (info_print(fd, unit++, 1) != ENXIO);
+ iocmd.cmd = ATAGMAXCHANNEL;
+ if (ioctl(fd, IOCATA, &iocmd) < 0)
+ err(1, "ioctl(ATAGMAXCHANNEL)");
+ maxunit = iocmd.u.maxchan;
+ for (unit = 0; unit < maxunit; unit++)
+ info_print(fd, unit, 1);
}
else if (!strcmp(argv[1], "info") && argc == 3) {
info_print(fd, iocmd.channel, 0);