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

📄 ftape-rw.h

📁 arm平台上的uclinux系统全部源代码
💻 H
字号:
#ifndef _FTAPE_RW_H#define _FTAPE_RW_H/* * Copyright (C) 1993-1995 Bas Laarhoven. 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: /usr/local/cvsroot/AplioTRIO/linux/drivers/char/ftape/ftape-rw.h,v $ $Author: vadim $ * $Revision: 1.1.1.1 $ $Date: 1999/11/15 13:41:58 $ $State: Exp $ * *      This file contains the definitions for the read and write *      functions for the QIC-117 floppy-tape driver for Linux. * */#include "fdc-io.h"#include "kernel-interface.h"#define GET2( address, offset) *(short*)(address + offset)#define GET4( address, offset) *(long*)(address + offset)#define PUT2( address, offset, value) *(short*)(address + offset) = value#define PUT4( address, offset, value) *(long*)(address + offset) = valueenum runner_status_enum {	idle = 0,	running,	do_abort,	aborting,	logical_eot,	end_of_tape,	buffer_overrun,	buffer_underrun,};typedef struct {	byte *address;	volatile buffer_state_enum status;	volatile byte *ptr;	volatile unsigned bytes;	volatile unsigned segment_id;	/* bitmap for remainder of segment not yet handled.	 * one bit set for each bad sector that must be skipped.	 */	volatile unsigned long bad_sector_map;	/* bitmap with bad data blocks in data buffer.	 * the errors in this map may be retried.	 */	volatile unsigned long soft_error_map;	/* bitmap with bad data blocks in data buffer	 * the errors in this map may not be retried.	 */	volatile unsigned long hard_error_map;	/* retry counter for soft errors.	 */	volatile int retry;	/* sectors to skip on retry ???	 */	volatile unsigned int skip;	/* nr of data blocks in data buffer	 */	volatile unsigned data_offset;	/* offset in segment for first sector to be handled.	 */	volatile unsigned sector_offset;	/* size of cluster of good sectors to be handled.	 */	volatile unsigned sector_count;	/* size of remaining part of segment to be handled.	 */	volatile unsigned remaining;	/* points to next segment (contiguous) to be handled,	 * or is zero if no read-ahead is allowed.	 */	volatile unsigned next_segment;	/* flag being set if deleted data was read.	 */	volatile int deleted;	volatile byte head;	volatile byte cyl;	volatile byte sect;} buffer_struct;typedef struct {	int active;	int error;	int offset;} ftape_fast_start_struct;typedef struct {	int id;	int size;	int free;} ftape_last_segment_struct;typedef struct {	int track;		/* tape head position */	volatile int known;	/* validates bot, segment, sector */	volatile int bot;	/* logical begin of track */	volatile int eot;	/* logical end of track */	volatile int segment;	/* current segment */	volatile int sector;	/* sector offset within current segment */} location_record;typedef enum {	fmt_normal = 2, fmt_1100ft = 3, fmt_wide = 4, fmt_425ft = 5} format_type;/*      ftape-rw.c defined global vars. */extern int tracing;extern byte trace_id;extern buffer_struct buffer[];extern location_record location;extern volatile ftape_fast_start_struct ftape_fast_start;extern byte deblock_buffer[(SECTORS_PER_SEGMENT - 3) * SECTOR_SIZE];extern byte scratch_buffer[(SECTORS_PER_SEGMENT - 3) * SECTOR_SIZE];extern ftape_last_segment_struct ftape_last_segment;extern int header_segment_1;extern int header_segment_2;extern int used_header_segment;extern unsigned int fast_seek_segment_time;extern volatile int tape_running;extern format_type format_code;/*      ftape-rw.c defined global functions. */extern int count_ones(unsigned long mask);extern int valid_segment_no(unsigned segment);extern int setup_new_segment(buffer_struct * buff, unsigned int segment_id,			     int offset);extern int calc_next_cluster(buffer_struct * buff);extern buffer_struct *next_buffer(volatile int *x);extern int ftape_read_id(void);extern void ftape_tape_parameters(byte drive_configuration);extern int wait_segment(buffer_state_enum state);extern int ftape_dumb_stop(void);extern int ftape_start_tape(int segment_id, int offset);/*      fdc-io.c defined global functions. */extern int setup_fdc_and_dma(buffer_struct * buff, byte operation);#endif				/* _FTAPE_RW_H */

⌨️ 快捷键说明

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