blob: 145a26d65c824a2740114185d747f6606e549682 [file] [log] [blame]
The Android Open Source Project1dc9e472009-03-03 19:28:35 -08001/****************************************************************************
2 ****************************************************************************
3 ***
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.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef _LINUX_SUNRPC_XPRT_H
13#define _LINUX_SUNRPC_XPRT_H
Ben Cheng4b29af02012-03-07 16:14:53 -080014
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080015#include <linux/uio.h>
16#include <linux/socket.h>
17#include <linux/in.h>
18#include <linux/sunrpc/sched.h>
19#include <linux/sunrpc/xdr.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080020
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080021#define RPC_MIN_SLOT_TABLE (2U)
22#define RPC_DEF_SLOT_TABLE (16U)
23#define RPC_MAX_SLOT_TABLE (128U)
Ben Cheng4b29af02012-03-07 16:14:53 -080024
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080025#define RPC_CALLHDRSIZE 6
26#define RPC_REPHDRSIZE 4
Ben Cheng4b29af02012-03-07 16:14:53 -080027
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080028#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)
Ben Cheng4b29af02012-03-07 16:14:53 -080032
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080033struct rpc_timeout {
34 unsigned long to_initval,
35 to_maxval,
36 to_increment;
37 unsigned int to_retries;
38 unsigned char to_exponential;
39};
Ben Cheng4b29af02012-03-07 16:14:53 -080040
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080041struct rpc_task;
42struct rpc_xprt;
43struct seq_file;
Ben Cheng4b29af02012-03-07 16:14:53 -080044
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080045struct rpc_rqst {
Ben Cheng4b29af02012-03-07 16:14:53 -080046
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080047 struct rpc_xprt * rq_xprt;
48 struct xdr_buf rq_snd_buf;
49 struct xdr_buf rq_rcv_buf;
Ben Cheng4b29af02012-03-07 16:14:53 -080050
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080051 struct rpc_task * rq_task;
52 __u32 rq_xid;
53 int rq_cong;
54 int rq_received;
55 u32 rq_seqno;
56 int rq_enc_pages_num;
57 struct page **rq_enc_pages;
58 void (*rq_release_snd_buf)(struct rpc_rqst *);
59 struct list_head rq_list;
Ben Cheng4b29af02012-03-07 16:14:53 -080060
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080061 __u32 * rq_buffer;
62 size_t rq_bufsize;
Ben Cheng4b29af02012-03-07 16:14:53 -080063
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080064 struct xdr_buf rq_private_buf;
65 unsigned long rq_majortimeo;
66 unsigned long rq_timeout;
67 unsigned int rq_retries;
Ben Cheng4b29af02012-03-07 16:14:53 -080068
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080069 u32 rq_bytes_sent;
Ben Cheng4b29af02012-03-07 16:14:53 -080070
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080071 unsigned long rq_xtime;
72 int rq_ntrans;
73};
74#define rq_svec rq_snd_buf.head
75#define rq_slen rq_snd_buf.len
Ben Cheng4b29af02012-03-07 16:14:53 -080076
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080077struct rpc_xprt_ops {
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);
92};
Ben Cheng4b29af02012-03-07 16:14:53 -080093
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080094struct rpc_xprt {
95 struct rpc_xprt_ops * ops;
96 struct socket * sock;
97 struct sock * inet;
Ben Cheng4b29af02012-03-07 16:14:53 -080098
The Android Open Source Project1dc9e472009-03-03 19:28:35 -080099 struct rpc_timeout timeout;
100 struct sockaddr_in addr;
101 int prot;
Ben Cheng4b29af02012-03-07 16:14:53 -0800102
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800103 unsigned long cong;
104 unsigned long cwnd;
Ben Cheng4b29af02012-03-07 16:14:53 -0800105
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800106 size_t rcvsize,
107 sndsize;
Ben Cheng4b29af02012-03-07 16:14:53 -0800108
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800109 size_t max_payload;
110 unsigned int tsh_size;
Ben Cheng4b29af02012-03-07 16:14:53 -0800111
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800112 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;
119 unsigned long state;
120 unsigned char shutdown : 1,
121 resvport : 1;
Ben Cheng4b29af02012-03-07 16:14:53 -0800122
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800123 __u32 xid;
Ben Cheng4b29af02012-03-07 16:14:53 -0800124
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800125 u32 tcp_recm,
126 tcp_xid,
127 tcp_reclen,
128 tcp_offset;
129 unsigned long tcp_copied,
130 tcp_flags;
Ben Cheng4b29af02012-03-07 16:14:53 -0800131
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800132 unsigned long connect_timeout,
133 bind_timeout,
134 reestablish_timeout;
135 struct work_struct connect_worker;
136 unsigned short port;
Ben Cheng4b29af02012-03-07 16:14:53 -0800137
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800138 struct work_struct task_cleanup;
139 struct timer_list timer;
140 unsigned long last_used,
141 idle_timeout;
Ben Cheng4b29af02012-03-07 16:14:53 -0800142
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800143 spinlock_t transport_lock;
144 spinlock_t reserve_lock;
145 struct rpc_task * snd_task;
Ben Cheng4b29af02012-03-07 16:14:53 -0800146
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800147 struct list_head recv;
Ben Cheng4b29af02012-03-07 16:14:53 -0800148
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800149 struct {
150 unsigned long bind_count,
151 connect_count,
152 connect_start,
153 connect_time,
154 sends,
155 recvs,
156 bad_xids;
Ben Cheng4b29af02012-03-07 16:14:53 -0800157
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800158 unsigned long long req_u,
159 bklog_u;
160 } stat;
Ben Cheng4b29af02012-03-07 16:14:53 -0800161
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800162 void (*old_data_ready)(struct sock *, int);
163 void (*old_state_change)(struct sock *);
164 void (*old_write_space)(struct sock *);
165};
Ben Cheng4b29af02012-03-07 16:14:53 -0800166
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800167#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)
Ben Cheng4b29af02012-03-07 16:14:53 -0800171
The Android Open Source Project1dc9e472009-03-03 19:28:35 -0800172#endif