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

📄 driver.h

📁 Minix3.11的源码。[MINIX 3是一个为高可靠性应用而设计的自由且简洁的类UNIX系统。]
💻 H
字号:
/* Types and constants shared between the generic and device dependent * device driver code. */#define _POSIX_SOURCE      1	/* tell headers to include POSIX stuff */#define _MINIX             1	/* tell headers to include MINIX stuff */#define _SYSTEM		   1	/* get negative error number in <errno.h> *//* The following are so basic, all the *.c files get them automatically. */#include <minix/config.h>	/* MUST be first */#include <ansi.h>		/* MUST be second */#include <minix/type.h>#include <minix/ipc.h>#include <minix/com.h>#include <minix/callnr.h>#include <sys/types.h>#include <minix/const.h>#include <minix/syslib.h>#include <minix/sysutil.h>#include <string.h>#include <limits.h>#include <stddef.h>#include <errno.h>#include <minix/partition.h>#include <minix/u64.h>/* Info about and entry points into the device dependent code. */struct driver {  _PROTOTYPE( char *(*dr_name), (void) );  _PROTOTYPE( int (*dr_open), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_close), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_ioctl), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( struct device *(*dr_prepare), (int device) );  _PROTOTYPE( int (*dr_transfer), (int proc_nr, int opcode, off_t position,					iovec_t *iov, unsigned nr_req) );  _PROTOTYPE( void (*dr_cleanup), (void) );  _PROTOTYPE( void (*dr_geometry), (struct partition *entry) );  _PROTOTYPE( void (*dr_signal), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( void (*dr_alarm), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_cancel), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_select), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_other), (struct driver *dp, message *m_ptr) );  _PROTOTYPE( int (*dr_hw_int), (struct driver *dp, message *m_ptr) );};#if (CHIP == INTEL)/* Number of bytes you can DMA before hitting a 64K boundary: */#define dma_bytes_left(phys)    \   ((unsigned) (sizeof(int) == 2 ? 0 : 0x10000) - (unsigned) ((phys) & 0xFFFF))#endif /* CHIP == INTEL *//* Base and size of a partition in bytes. */struct device {  u64_t dv_base;  u64_t dv_size;};#define NIL_DEV		((struct device *) 0)/* Functions defined by driver.c: */_PROTOTYPE( void driver_task, (struct driver *dr) );_PROTOTYPE( char *no_name, (void) );_PROTOTYPE( int do_nop, (struct driver *dp, message *m_ptr) );_PROTOTYPE( struct device *nop_prepare, (int device) );_PROTOTYPE( void nop_cleanup, (void) );_PROTOTYPE( void nop_task, (void) );_PROTOTYPE( void nop_signal, (struct driver *dp, message *m_ptr) );_PROTOTYPE( void nop_alarm, (struct driver *dp, message *m_ptr) );_PROTOTYPE( int nop_cancel, (struct driver *dp, message *m_ptr) );_PROTOTYPE( int nop_select, (struct driver *dp, message *m_ptr) );_PROTOTYPE( int do_diocntl, (struct driver *dp, message *m_ptr) );/* Parameters for the disk drive. */#define SECTOR_SIZE      512	/* physical sector size in bytes */#define SECTOR_SHIFT       9	/* for division */#define SECTOR_MASK      511	/* and remainder *//* Size of the DMA buffer buffer in bytes. */#define USE_EXTRA_DMA_BUF  0	/* usually not needed */#define DMA_BUF_SIZE	(DMA_SECTORS * SECTOR_SIZE)#if (CHIP == INTEL)extern u8_t *tmp_buf;			/* the DMA buffer */#elseextern u8_t tmp_buf[];			/* the DMA buffer */#endifextern phys_bytes tmp_phys;		/* phys address of DMA buffer */

⌨️ 快捷键说明

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