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

📄 ccwcache.h

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 H
字号:
/*    * File...........: linux/include/asm-s390/ccwcache.h   * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>   * Bugreports.to..: <Linux390@de.ibm.com>   * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000 */#ifndef CCWCACHE_H#define CCWCACHE_H#include <linux/slab.h>#include <asm/irq.h>#ifndef __KERNEL__#define kmem_cache_t void#endif /* __KERNEL__ */typedef struct ccw_req_t {	/* eye catcher plus queueing information  */	unsigned int magic;		struct ccw_req_t *next;	/* pointer to next ccw_req_t in queue */	struct ccw_req_t *int_next;	/* for internal queueing */	struct ccw_req_t *int_prev;	/* for internal queueing */	/* Where to execute what... */	void *device;		/* index of the device the req is for */	void *req;		/* pointer to originating request */	ccw1_t *cpaddr;		/* address of channel program */	char status;	        /* reflecting the status of this request */	char flags;              /* see below */	short retries;		/* A retry counter to be set when filling */	/* ... and how */	int options;		/* options for execution */	char lpm;               /* logical path mask                      */	void *data;		/* pointer to data area */	devstat_t *dstat;	/* The device status in case of an error */	/* these are important for recovering erroneous requests          */	struct ccw_req_t *refers;	/* Does this request refer to another one? */	void *function; /* refers to the originating ERP action */ ;	unsigned long long expires;	/* expiratioj period */	/* these are for profiling purposes */	unsigned long long buildclk;	/* TOD-clock of request generation */	unsigned long long startclk;	/* TOD-clock of request start */	unsigned long long stopclk;	/* TOD-clock of request interrupt */	unsigned long long endclk;	/* TOD-clock of request termination */	/* these are for internal use */	int cplength;		/* length of the channel program in CCWs */	int datasize;		/* amount of additional data in bytes */	kmem_cache_t *cache;	/* the cache this data comes from */} __attribute__ ((aligned(4))) ccw_req_t;/*  * ccw_req_t -> status can be: */#define CQR_STATUS_EMPTY    0x00	/* request is empty */#define CQR_STATUS_FILLED   0x01	/* request is ready to be preocessed */#define CQR_STATUS_QUEUED   0x02	/* request is queued to be processed */#define CQR_STATUS_IN_IO    0x03	/* request is currently in IO */#define CQR_STATUS_DONE     0x04	/* request is completed successfully */#define CQR_STATUS_ERROR    0x05	/* request is completed with error */#define CQR_STATUS_FAILED   0x06	/* request is finally failed */#define CQR_STATUS_PENDING  0x07        /* request is waiting for interrupt - ERP only */ #define CQR_FLAGS_CHAINED  0x01	/* request is chained by another (last CCW is TIC) */#ifdef __KERNEL__#define SMALLEST_SLAB (sizeof(struct ccw_req_t) <= 128 ? 128 :\ sizeof(struct ccw_req_t) <= 256 ? 256 : 512 )/* SMALLEST_SLAB(1),... PAGE_SIZE(CCW_NUMBER_CACHES) */#define CCW_NUMBER_CACHES (sizeof(struct ccw_req_t) <= 128 ? 6 :\ sizeof(struct ccw_req_t) <= 256 ? 5 : 4 )int ccwcache_init (void);ccw_req_t *ccw_alloc_request (char *magic, int cplength, int additional_data);void ccw_free_request (ccw_req_t * request);#endif /* __KERNEL__ */#endif				/* CCWCACHE_H */

⌨️ 快捷键说明

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