[comp.sys.apollo] Using IOCTL to control mag tape

kent@HUMU.NOSC.MIL (Kent K. Kuriyama) (01/31/89)

I am porting a program that manipulates (e.g. rewinds) the mag 
tape unit.  It issues an IOCTL call to do this.  

------------
/*  File:  test.c  */
#include	<stdio.h>
#include	<ctype.h>

#include	<sys/ioctl.h>
#include	<sys/types.h>
#include	<sys/mtio.h>
#include	<sys/file.h>

#define tapefile  "/dev/rmt12"
main(argc, argv)
int	argc;
char	*argv[];
{
    int fd, i;
    struct	mtop	op;
	
	/* open the tape file, this seems to work */
	fd = open(tapefile, O_RDONLY);
	if (fd < 0) {
		perror(tapefile);
		exit(1);
	}

	/* rewind the tape, call to IOCTL fails */
	op.mt_op = MTREW;
	op.mt_count = 1;
	i = ioctl(fd, MTIOCTOP, &op);
	if (i < 0) {
		perror(tapefile);
		exit(1);
	}

	exit(0);
}
------------

% cc test.c
% a.out
/dev/rmt12: Not a typewriter


At run time the IOCTL call fails and I get the above message.  I 
am running Domain IX under SR9.7.1.  Could someone tell me what I 
am doing wrong?

Thanks.

Kent Kuriyama
Naval Ocean Systems Center
Hawaii Laboratory

kent@nosc.mil

krowitz@RICHTER.MIT.EDU (David Krowitz) (01/31/89)

You are not doing anything wrong. SR9.7.x does not fully support
the IOCTL call for magtapes. I've sent in an APR on this a while
back. 

Can anyone who has SR10.0 or SR10.1 up and running check if
IOCTL is now fully implemented?


 -- David Krowitz

krowitz@richter.mit.edu   (18.83.0.109)
krowitz%richter@eddie.mit.edu
krowitz%richter@athena.mit.edu
krowitz%richter.mit.edu@mitvma.bitnet
(in order of decreasing preference)