OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-s390x/] [ccwcache.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 * File...........: linux/include/asm-s390/ccwcache.h
3
 * Author(s)......: Holger Smolinski <Holger.Smolinski@de.ibm.com>
4
 * Bugreports.to..: <Linux390@de.ibm.com>
5
 * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 2000
6
 *
7
 * $Revision: 1.1.1.1 $
8
 *
9
 */
10
#ifndef CCWCACHE_H
11
#define CCWCACHE_H
12
#include <linux/slab.h>
13
#include <asm/irq.h>
14
 
15
#ifndef __KERNEL__
16
#define kmem_cache_t void
17
#endif /* __KERNEL__ */
18
 
19
typedef struct ccw_req_t {
20
        /* eye catcher plus queueing information  */
21
        unsigned int magic;
22
        struct ccw_req_t *next; /* pointer to next ccw_req_t in queue */
23
        struct ccw_req_t *int_next;     /* for internal queueing */
24
        struct ccw_req_t *int_prev;     /* for internal queueing */
25
 
26
        /* Where to execute what... */
27
        void *device;           /* index of the device the req is for */
28
        void *req;              /* pointer to originating request */
29
        ccw1_t *cpaddr;         /* address of channel program */
30
        char status;            /* reflecting the status of this request */
31
        char flags;              /* see below */
32
        short retries;          /* A retry counter to be set when filling */
33
 
34
        /* ... and how */
35
        int options;            /* options for execution */
36
        char lpm;               /* logical path mask                      */
37
        void *data;             /* pointer to data area */
38
        devstat_t *dstat;       /* The device status in case of an error */
39
 
40
        /* these are important for recovering erroneous requests          */
41
        struct ccw_req_t *refers;       /* Does this request refer to another one? */
42
        void *function; /* refers to the originating ERP action */ ;
43
 
44
        unsigned long long expires;     /* expiration period */
45
        /* these are for profiling purposes */
46
        unsigned long long buildclk;    /* TOD-clock of request generation */
47
        unsigned long long startclk;    /* TOD-clock of request start */
48
        unsigned long long stopclk;     /* TOD-clock of request interrupt */
49
        unsigned long long endclk;      /* TOD-clock of request termination */
50
 
51
        /* these are for internal use */
52
        int cplength;           /* length of the channel program in CCWs */
53
        int datasize;           /* amount of additional data in bytes */
54
        void *lowmem_idal;      /* lowmem page for idals (if in use) */
55
        void *lowmem_idal_ptr;  /* ptr to the actual idal word in the idals page */
56
        kmem_cache_t *cache;    /* the cache this data comes from */
57
 
58
} __attribute__ ((aligned(4))) ccw_req_t;
59
 
60
/*
61
 * ccw_req_t -> status can be:
62
 */
63
#define CQR_STATUS_EMPTY    0x00        /* cqr is empty */
64
#define CQR_STATUS_FILLED   0x01        /* cqr is ready to be preocessed */
65
#define CQR_STATUS_QUEUED   0x02        /* cqr is queued to be processed */
66
#define CQR_STATUS_IN_IO    0x03        /* cqr is currently in IO */
67
#define CQR_STATUS_DONE     0x04        /* cqr is completed successfully */
68
#define CQR_STATUS_ERROR    0x05        /* cqr is completed with error */
69
#define CQR_STATUS_FAILED   0x06        /* cqr is finally failed */
70
 
71
#define CQR_FLAGS_CHAINED   0x01        /* cqr is chained by another (last CCW is TIC) */
72
#define CQR_FLAGS_FINALIZED 0x02        
73
#define CQR_FLAGS_LM_CQR    0x04        /* cqr uses page from lowmem_pool */
74
#define CQR_FLAGS_LM_IDAL   0x08        /* IDALs uses page from lowmem_pool */
75
 
76
#ifdef __KERNEL__
77
#define SMALLEST_SLAB (sizeof(struct ccw_req_t) <= 128 ? 128 :\
78
 sizeof(struct ccw_req_t) <= 256 ? 256 : 512 )
79
 
80
/* SMALLEST_SLAB(1),... PAGE_SIZE(CCW_NUMBER_CACHES) */
81
#define CCW_NUMBER_CACHES (sizeof(struct ccw_req_t) <= 128 ? 6 :\
82
 sizeof(struct ccw_req_t) <= 256 ? 5 : 4 )
83
 
84
int ccwcache_init (void);
85
 
86
ccw_req_t *ccw_alloc_request (char *magic, int cplength, int additional_data);
87
void ccw_free_request (ccw_req_t * request);
88
#endif /* __KERNEL__ */
89
#endif                          /* CCWCACHE_H */
90
 
91
 
92
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.