From owner-freebsd-hackers@FreeBSD.ORG Tue May 15 16:10:39 2007 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 72A4216A409 for ; Tue, 15 May 2007 16:10:39 +0000 (UTC) (envelope-from viktor.vasilev@stud.tu-darmstadt.de) Received: from lnx130.hrz.tu-darmstadt.de (lnx130.hrz.tu-darmstadt.de [130.83.174.24]) by mx1.freebsd.org (Postfix) with ESMTP id 0B2D213C447 for ; Tue, 15 May 2007 16:10:36 +0000 (UTC) (envelope-from viktor.vasilev@stud.tu-darmstadt.de) Received: from mailserver3.hrz.tu-darmstadt.de (lnx116.hrz.tu-darmstadt.de [130.83.174.28]) by lnx130.hrz.tu-darmstadt.de (8.13.4/8.12.10) with ESMTP id l4FGAZ6m011992; Tue, 15 May 2007 18:10:35 +0200 Received: from [217.224.120.219] (helo=local.lan.fli4l) by mailserver3.hrz.tu-darmstadt.de with esmtpsa (TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32) (Exim 4.50) id 1Hnzbe-0002Pe-Co; Tue, 15 May 2007 18:10:35 +0200 From: Viktor Vasilev To: freebsd-hackers@freebsd.org, Mohsen Pahlevanzadeh Date: Tue, 15 May 2007 18:10:27 +0200 User-Agent: KMail/1.9.4 References: <4648625A.9060606@pahlevanzadeh.org> <86ejljsffa.fsf@dwp.des.no> In-Reply-To: <86ejljsffa.fsf@dwp.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200705151810.29508.viktor.vasilev@stud.tu-darmstadt.de> Cc: Subject: Re: ioctl X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 May 2007 16:10:39 -0000 On Monday 14 May 2007 15:28 Dag-Erling Sm=C3=B8rgrav wrote: > Mohsen Pahlevanzadeh writes: > > Our FreeBSD is 4.11 because we can't use another version. > > In that case, we can't help you. Maybe he still has a chance. The following works on FreeBSD 4.9 for ATA=20 devices. I could only test it with an ATA CDROM, but here's the output: Model: CD-224E Revision: 1.9A Serial: #include #include #include #include #include #include #include int main(int argc, char **argv) { struct ata_cmd iocmd; struct ata_params ap; int channel, device, fd, i; if(argc !=3D 3) { errx(1, "usage: %s ", argv[0]); } =09 channel =3D atoi(argv[1]); device =3D atoi(argv[2]); =09 if ((fd =3D open("/dev/ata", O_RDONLY)) =3D=3D -1) { err(1, "error opening /dev/ata"); } bzero(&iocmd, sizeof(struct ata_cmd)); iocmd.channel =3D channel; iocmd.device =3D channel; iocmd.cmd =3D ATAGPARM; =09 if (ioctl(fd, IOCATA, &iocmd) =3D=3D -1) { err(1, "error executing ioctl"); } if (iocmd.u.param.type[device]) { ap =3D iocmd.u.param.params[device]; } else { errx(1, "no information for device %d channel %d", device, channel); }=09 =09 printf("Model: "); for(i =3D 0; i < 40 && ap.model[i] !=3D '\0'; i++) printf("%c", ap.model[i]); putchar('\n'); printf("Revision: "); for(i =3D 0; i < 8 && ap.revision[i] !=3D '\0'; i++) printf("%c", ap.revision[i]); putchar('\n'); printf("Serial: "); for(i =3D 0; i < 20 && ap.serial[i] !=3D '\0'; i++) printf("%c", ap.serial[i]); putchar('\n'); =09 return 0; } Cheers, Vik