1 /****************************************************************************
2 ****************************************************************************
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
10 ****************************************************************************
11 ****************************************************************************/
12 #ifndef _LINUX_SUNRPC_XPRT_H
13 #define _LINUX_SUNRPC_XPRT_H
15 #include <linux/uio.h>
16 #include <linux/socket.h>
18 #include <linux/sunrpc/sched.h>
19 #include <linux/sunrpc/xdr.h>
21 #define RPC_MIN_SLOT_TABLE (2U)
22 #define RPC_DEF_SLOT_TABLE (16U)
23 #define RPC_MAX_SLOT_TABLE (128U)
25 #define RPC_CALLHDRSIZE 6
26 #define RPC_REPHDRSIZE 4
28 #define RPC_MIN_RESVPORT (1U)
29 #define RPC_MAX_RESVPORT (65535U)
30 #define RPC_DEF_MIN_RESVPORT (665U)
31 #define RPC_DEF_MAX_RESVPORT (1023U)
34 unsigned long to_initval,
37 unsigned int to_retries;
38 unsigned char to_exponential;
47 struct rpc_xprt * rq_xprt;
48 struct xdr_buf rq_snd_buf;
49 struct xdr_buf rq_rcv_buf;
51 struct rpc_task * rq_task;
57 struct page **rq_enc_pages;
58 void (*rq_release_snd_buf)(struct rpc_rqst *);
59 struct list_head rq_list;
64 struct xdr_buf rq_private_buf;
65 unsigned long rq_majortimeo;
66 unsigned long rq_timeout;
67 unsigned int rq_retries;
71 unsigned long rq_xtime;
74 #define rq_svec rq_snd_buf.head
75 #define rq_slen rq_snd_buf.len
78 void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
79 int (*reserve_xprt)(struct rpc_task *task);
80 void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
81 void (*set_port)(struct rpc_xprt *xprt, unsigned short port);
82 void (*connect)(struct rpc_task *task);
83 void * (*buf_alloc)(struct rpc_task *task, size_t size);
84 void (*buf_free)(struct rpc_task *task);
85 int (*send_request)(struct rpc_task *task);
86 void (*set_retrans_timeout)(struct rpc_task *task);
87 void (*timer)(struct rpc_task *task);
88 void (*release_request)(struct rpc_task *task);
89 void (*close)(struct rpc_xprt *xprt);
90 void (*destroy)(struct rpc_xprt *xprt);
91 void (*print_stats)(struct rpc_xprt *xprt, struct seq_file *seq);
95 struct rpc_xprt_ops * ops;
99 struct rpc_timeout timeout;
100 struct sockaddr_in addr;
110 unsigned int tsh_size;
112 struct rpc_wait_queue sending;
113 struct rpc_wait_queue resend;
114 struct rpc_wait_queue pending;
115 struct rpc_wait_queue backlog;
116 struct list_head free;
117 struct rpc_rqst * slot;
118 unsigned int max_reqs;
120 unsigned char shutdown : 1,
129 unsigned long tcp_copied,
132 unsigned long connect_timeout,
135 struct work_struct connect_worker;
138 struct work_struct task_cleanup;
139 struct timer_list timer;
140 unsigned long last_used,
143 spinlock_t transport_lock;
144 spinlock_t reserve_lock;
145 struct rpc_task * snd_task;
147 struct list_head recv;
150 unsigned long bind_count,
158 unsigned long long req_u,
162 void (*old_data_ready)(struct sock *, int);
163 void (*old_state_change)(struct sock *);
164 void (*old_write_space)(struct sock *);
167 #define XPRT_LAST_FRAG (1 << 0)
168 #define XPRT_COPY_RECM (1 << 1)
169 #define XPRT_COPY_XID (1 << 2)
170 #define XPRT_COPY_DATA (1 << 3)