#ifndef SVC_RDMA_PCL_H
#define SVC_RDMA_PCL_H
#include <linux/list.h>
struct svc_rdma_segment { … };
struct svc_rdma_chunk { … };
struct svc_rdma_pcl { … };
static inline void pcl_init(struct svc_rdma_pcl *pcl)
{ … }
static inline bool pcl_is_empty(const struct svc_rdma_pcl *pcl)
{ … }
static inline struct svc_rdma_chunk *
pcl_first_chunk(const struct svc_rdma_pcl *pcl)
{ … }
static inline struct svc_rdma_chunk *
pcl_next_chunk(const struct svc_rdma_pcl *pcl, struct svc_rdma_chunk *chunk)
{ … }
#define pcl_for_each_chunk(pos, pcl) …
#define pcl_for_each_segment(pos, chunk) …
static inline unsigned int
pcl_chunk_end_offset(const struct svc_rdma_chunk *chunk)
{ … }
struct svc_rdma_recv_ctxt;
extern void pcl_free(struct svc_rdma_pcl *pcl);
extern bool pcl_alloc_call(struct svc_rdma_recv_ctxt *rctxt, __be32 *p);
extern bool pcl_alloc_read(struct svc_rdma_recv_ctxt *rctxt, __be32 *p);
extern bool pcl_alloc_write(struct svc_rdma_recv_ctxt *rctxt,
struct svc_rdma_pcl *pcl, __be32 *p);
extern int pcl_process_nonpayloads(const struct svc_rdma_pcl *pcl,
const struct xdr_buf *xdr,
int (*actor)(const struct xdr_buf *,
void *),
void *data);
#endif