Esempio n. 1
0
/* Called by modules package when removing the driver 
 */
void cleanup_module(void)
{
	int i;
	char devname[9];

	TRACE_FUN(ft_t_flow);

	if (devfs_unregister_chrdev(QIC117_TAPE_MAJOR, "zft") != 0) {
		TRACE(ft_t_warn, "failed");
	} else {
		TRACE(ft_t_info, "successful");
	}
        for (i = 0; i < 4; i++) {
		sprintf(devname, "qft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i, DEVFS_SPECIAL_CHR, 0));
		sprintf(devname, "nqft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i + 4, DEVFS_SPECIAL_CHR, 0));
		sprintf(devname, "zqft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i + 16, DEVFS_SPECIAL_CHR, 0));
		sprintf(devname, "nzqft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i + 20, DEVFS_SPECIAL_CHR, 0));
		sprintf(devname, "rawqft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i + 32, DEVFS_SPECIAL_CHR, 0));
		sprintf(devname, "nrawqft%i", i);
		devfs_unregister(devfs_find_handle(NULL, devname, QIC117_TAPE_MAJOR, i + 36, DEVFS_SPECIAL_CHR, 0));
	}
	zft_uninit_mem(); /* release remaining memory, if any */
        printk(KERN_INFO "zftape successfully unloaded.\n");
	TRACE_EXIT;
}
Esempio n. 2
0
static int mt_reset(int *dummy)
{        
	TRACE_FUN(ft_t_flow);
	
	(void)ftape_seek_to_bot();
	TRACE_CATCH(ftape_reset_drive(),
		    zft_init_driver(); zft_uninit_mem(); zft_offline = 1);
	/*  fake a re-open of the device. This will set all flage and 
	 *  allocate buffers as appropriate. The new tape condition will
	 *  force the open routine to do anything we need.
	 */
	TRACE_CATCH(_zft_open(-1 /* fake reopen */, 0 /* dummy */),);
	TRACE_EXIT 0;
}
Esempio n. 3
0
/* Called by modules package when removing the driver 
 */
static void zft_exit(void)
{
	int i;
	TRACE_FUN(ft_t_flow);

	if (unregister_chrdev(QIC117_TAPE_MAJOR, "zft") != 0) {
		TRACE(ft_t_warn, "failed");
	} else {
		TRACE(ft_t_info, "successful");
	}
        for (i = 0; i < 4; i++) {
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i));
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 4));
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 16));
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 20));
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 32));
		class_device_destroy(zft_class, MKDEV(QIC117_TAPE_MAJOR, i + 36));
	}
	class_destroy(zft_class);
	zft_uninit_mem(); /* release remaining memory, if any */
        printk(KERN_INFO "zftape successfully unloaded.\n");
	TRACE_EXIT;
}