File: intermezzo_psdev.h

package info (click to toggle)
kernel-source-2.4.18 2.4.18-14.3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 144,648 kB
  • ctags: 443,980
  • sloc: ansic: 2,548,117; asm: 142,436; makefile: 8,411; sh: 3,097; perl: 2,561; yacc: 1,177; cpp: 755; tcl: 577; lex: 352; awk: 251; lisp: 218; sed: 72
file content (72 lines) | stat: -rw-r--r-- 2,248 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef __PRESTO_PSDEV_H
#define __PRESTO_PSDEV_H

#ifdef PRESTO_DEVEL
# define PRESTO_FS_NAME "izofs"
# define PRESTO_PSDEV_NAME "/dev/izo"
# define PRESTO_PSDEV_MAJOR 186
#else
# define PRESTO_FS_NAME "InterMezzo"
# define PRESTO_PSDEV_NAME "/dev/intermezzo"
# define PRESTO_PSDEV_MAJOR 185
#endif

#define MAX_PRESTODEV 16

#include <linux/version.h>

#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0))
#define wait_queue_head_t  struct wait_queue *
#define DECLARE_WAITQUEUE(name,task) \
        struct wait_queue name = { task, NULL }
#define init_waitqueue_head(arg) 
#else
#ifndef __initfunc
#define __initfunc(arg) arg
#endif
#endif


/* represents state of a /dev/presto */
/* communication pending & processing queues */
struct upc_comm {
        unsigned int         uc_seq;
        wait_queue_head_t    uc_waitq;     /* Lento wait queue */
        struct list_head    uc_pending;
        struct list_head    uc_processing;
        int                  uc_pid;       /* Lento's pid */
        int                  uc_hard; /* allows signals during upcalls */
        int                  uc_no_filter;
        int                  uc_no_journal;
        int                  uc_no_upcall;
        int                  uc_timeout; /* . sec: signals will dequeue upc */
        long                 uc_errorval; /* for testing I/O failures */
        struct list_head     uc_cache_list;
        int                   uc_minor;
        char *                uc_devname;
};

#define ISLENTO(minor) (current->pid == upc_comms[minor].uc_pid \
                || current->p_pptr->pid == upc_comms[minor].uc_pid)

extern struct upc_comm upc_comms[MAX_PRESTODEV];

/* messages between presto filesystem in kernel and Venus */
#define REQ_READ   1
#define REQ_WRITE  2
#define REQ_ASYNC  4
#define REQ_DEAD   8

struct upc_req {
        struct list_head   rq_chain;
        caddr_t            rq_data;
        u_short            rq_flags;
        u_short            rq_bufsize;
        u_short            rq_rep_size;
        u_short            rq_opcode;  /* copied from data to save lookup */
        int                rq_unique;
        wait_queue_head_t  rq_sleep;   /* process' wait queue */
        unsigned long      rq_posttime;
};

#endif