📄 ccwcache.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 + -