⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftape-rw.h

📁 linux-2.6.15.6
💻 H
字号:
#ifndef _FTAPE_RW_H#define _FTAPE_RW_H/* * Copyright (C) 1993-1996 Bas Laarhoven, *           (C) 1996-1997 Claus-Justus Heine. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; see the file COPYING.  If not, write to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * $Source: /homes/cvs/ftape-stacked/ftape/lowlevel/ftape-rw.h,v $ * $Revision: 1.2 $ * $Date: 1997/10/05 19:18:25 $ * *      This file contains the definitions for the read and write *      functions for the QIC-117 floppy-tape driver for Linux. * * Claus-Justus Heine (1996/09/20): Add definition of format code 6 * Claus-Justus Heine (1996/10/04): Changed GET/PUT macros to cast to (__u8 *) * */#include "../lowlevel/fdc-io.h"#include "../lowlevel/ftape-init.h"#include "../lowlevel/ftape-bsm.h"#include <asm/unaligned.h>#define GET2(address, offset) get_unaligned((__u16*)((__u8 *)address + offset))#define GET4(address, offset) get_unaligned((__u32*)((__u8 *)address + offset))#define GET8(address, offset) get_unaligned((__u64*)((__u8 *)address + offset))#define PUT2(address, offset , value) put_unaligned((value), (__u16*)((__u8 *)address + offset))#define PUT4(address, offset , value) put_unaligned((value), (__u32*)((__u8 *)address + offset))#define PUT8(address, offset , value) put_unaligned((value), (__u64*)((__u8 *)address + offset))enum runner_status_enum {	idle = 0,	running,	do_abort,	aborting,	logical_eot,	end_of_tape,};typedef enum ft_buffer_queue {	ft_queue_head = 0,	ft_queue_tail = 1} ft_buffer_queue_t;typedef struct {	int track;		/* tape head position */	volatile int segment;	/* current segment */	volatile int sector;	/* sector offset within current segment */	volatile unsigned int bot;	/* logical begin of track */	volatile unsigned int eot;	/* logical end of track */	volatile unsigned int known;	/* validates bot, segment, sector */} location_record;/*      Count nr of 1's in pattern. */static inline int count_ones(unsigned long mask){	int bits;	for (bits = 0; mask != 0; mask >>= 1) {		if (mask & 1) {			++bits;		}	}	return bits;}#define FT_MAX_NR_BUFFERS 16 /* arbitrary value *//*      ftape-rw.c defined global vars. */extern buffer_struct *ft_buffer[FT_MAX_NR_BUFFERS];extern int ft_nr_buffers;extern location_record ft_location;extern volatile int ftape_tape_running;/*      ftape-rw.c defined global functions. */extern int  ftape_setup_new_segment(buffer_struct * buff,				    int segment_id,				    int offset);extern int  ftape_calc_next_cluster(buffer_struct * buff);extern buffer_struct *ftape_next_buffer (ft_buffer_queue_t pos);extern buffer_struct *ftape_get_buffer  (ft_buffer_queue_t pos);extern int            ftape_buffer_id   (ft_buffer_queue_t pos);extern void           ftape_reset_buffer(void);extern void ftape_tape_parameters(__u8 drive_configuration);extern int  ftape_wait_segment(buffer_state_enum state);extern int  ftape_dumb_stop(void);extern int  ftape_start_tape(int segment_id, int offset);extern int  ftape_stop_tape(int *pstatus);extern int  ftape_handle_logical_eot(void);extern buffer_state_enum ftape_set_state(buffer_state_enum new_state);#endif				/* _FTAPE_RW_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -