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

📄 adapter.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 H
字号:
/* * * Copyright (C) Eicon Technology Corporation, 2000. * * This source file is supplied for the exclusive use with Eicon * Technology Corporation's range of DIVA Server Adapters. * * Eicon File Revision :    1.7   * * 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 OF ANY KIND WHATSOEVER INCLUDING ANY  * 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; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *//* Main internal include file for Diva Server driver */#if !defined(ADAPTER_H)#define ADAPTER_H#include "sys.h"#include "idi.h"#include "divas.h"#undef ID_MASK#include "pc.h"#define XMOREC 0x1f#define XMOREF 0x20#define XBUSY  0x40#define RMORE  0x80        /* structure for all information we have to keep on a per   */        /* adapater basis                                           */typedef struct adapter_s ADAPTER;struct adapter_s {  void * io;  byte IdTable[256];  byte ReadyInt;  byte (* ram_in)(ADAPTER * a, void * adr);  word (* ram_inw)(ADAPTER * a, void * adr);  void (* ram_in_buffer)(ADAPTER * a, void * adr, void * P, word length);  void (* ram_look_ahead)(ADAPTER * a, PBUFFER * RBuffer, ENTITY * e);  void (* ram_out)(ADAPTER * a, void * adr, byte data);  void (* ram_outw)(ADAPTER * a, void * adr, word data);  void (* ram_out_buffer)(ADAPTER * a, void * adr, void * P, word length);  void (* ram_inc)(ADAPTER * a, void * adr);};typedef struct card card_t;typedef int	card_load_fn_t(card_t *card, dia_load_t *load);typedef int	card_config_fn_t(card_t *card, dia_config_t *config);typedef int	card_start_fn_t(card_t *card, byte *channels);typedef	int	card_reset_fn_t(card_t *card);typedef int card_mem_get_fn_t(card_t *card, mem_block_t *mem_block);#define	MAX_PENTITIES	256		/* Number of entities primary adapter */#define MAX_ENTITIES	16		/* Number of entities standard adapter */typedef struct e_info_s E_INFO;struct e_info_s{	ENTITY		*e;				/* entity pointer */	byte		next;			/* chaining index */	word		assign_ref;		/* assign reference */};/* DIVA card info (details hidden from user) */typedef struct	ux_diva_card_s ux_diva_card_t;/* card info */struct card{	ADAPTER				a;				/* per-adapter information */	dia_card_t			cfg;			/* card configuration */	int 				state;			/* State of the adapter */	dword 				serial_no;		/* serial number */	int 				test_int_pend;	/* set for interrupt testing */	ux_diva_card_t		*hw;			/* O/S-specific handle */	card_reset_fn_t		*card_reset;	/* call this to reset card */	card_load_fn_t		*card_load;		/* call this to load card */	card_config_fn_t	*card_config;	/* call this to config card */	card_start_fn_t		*card_start;	/* call this to start card */	card_mem_get_fn_t	*card_mem_get;	/* call this to get card memory */	E_INFO				*e_tbl;			/* table of ENTITY pointers */	byte				e_head;			/* list of active ENTITIES */	byte				e_tail;			/* list of active ENTITIES */	int					e_count;		/* # of active ENTITIES */	int					e_max;			/* total # of ENTITIES */	byte				assign;			/* assign queue entry */	PBUFFER				RBuffer;		/* Copy of receive lookahead buffer */	int					log_types;		/* bit-mask of active logs */	word				xlog_offset;	/* offset to XLOG buffer on card */	void		(*out)(ADAPTER *a);	byte		(*dpc)(ADAPTER * a);	byte		(*test_int)(ADAPTER * a);	void		(*clear_int)(ADAPTER * a);	void		(*reset_int)(card_t *c);	int  		is_live;	int		(*card_isr)(card_t *card);	int 		int_pend;		/* interrupt pending */	long		interrupt_reentered;	long 		dpc_reentered;	int 		set_xlog_request;} ;/* card information */#define	MAX_CARDS	20		/* max number of cards on a system */externcard_t			DivasCards[];externint				DivasCardNext;externdia_config_t	DivasCardConfigs[];externbyte 			DivasFlavourConfig[];/*------------------------------------------------------------------*//* public functions of IDI common code                              *//*------------------------------------------------------------------*/void DivasOut(ADAPTER * a);byte DivasDpc(ADAPTER * a);byte DivasTestInt(ADAPTER * a);void DivasClearInt(ADAPTER * a);/*------------------------------------------------------------------*//* public functions of configuration platform-specific code         *//*------------------------------------------------------------------*/int DivasConfigGet(dia_card_t *card);/*------------------------------------------------------------------*//* public functions of LOG related code                             *//*------------------------------------------------------------------*/void	DivasXlogReq(int card_num);int		DivasXlogRetrieve(card_t *card);void	DivasLog(dia_log_t *log);void	DivasLogIdi(card_t *card, ENTITY *e, int request);/*------------------------------------------------------------------*//* public functions to initialise cards for each type supported     *//*------------------------------------------------------------------*/int		DivasPriInit(card_t *card, dia_card_t *cfg);int		DivasBriInit(card_t *card, dia_card_t *cfg);int		Divas4BriInit(card_t *card, dia_card_t *cfg);void 	DivasBriPatch(card_t *card);/*------------------------------------------------------------------*//* public functions of log common code                              *//*------------------------------------------------------------------*/extern	char	*DivasLogFifoRead(void);extern	void	DivasLogFifoWrite(char *entry, int length);extern	int		DivasLogFifoEmpty(void);extern	int		DivasLogFifoFull(void);extern	void    DivasLogAdd(void *buffer, int length);/*------------------------------------------------------------------*//* public functions of misc. platform-specific code         		*//*------------------------------------------------------------------*/int		DivasDpcSchedule(void);void		DivasDoDpc(void *);void		DivasDoRequestDpc(void *pData);int		DivasScheduleRequestDpc(void);/* table of IDI request functions */externIDI_CALL	DivasIdiRequest[];/* * intialisation entry point */int		DivasInit(void);/* * Get information on the number and type of cards present */externint 	DivasCardsDiscover(void);/* * initialise a new card */int		DivasCardNew(dia_card_t *card);/* * configure specified card */int		DivasCardConfig(dia_config_t *config);/* * load specified binary code onto card */int		DivasCardLoad(dia_load_t *load);/* * start specified card running */int		DivasCardStart(int card_id);/* * ISR for card * Returns 0 if specified card was interrupting */int		DivasIsr(void *arg);/* * Get number of active cards */int		DivasGetNum(void);/* * Get list of active cards */int		DivasGetList(dia_card_list_t *card_list);/* definitions common to several card types */#define DIVAS_SHARED_OFFSET     (0x1000)#endif /* ADAPTER_H */

⌨️ 快捷键说明

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