mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
022cae3655
This patch prepares p9_fcall structure for zero copy. Added fields send the payload buffer information to the transport layer. In addition it adds a 'private' field for the transport layer to store mapped/pinned page information so that it can be freed/unpinned during req_done. This patch also creates trans_common.[ch] to house helper functions. It adds the following helper functions. p9_release_req_pages - Release pages after the transaction. p9_nr_pages - Return number of pages needed to accomodate the payload. payload_gup - Translates user buffer into kernel pages. Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
30 lines
978 B
C
30 lines
978 B
C
/*
|
|
* Copyright IBM Corporation, 2010
|
|
* Author Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of version 2.1 of the GNU Lesser General Public License
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it would be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* struct trans_rpage_info - To store mapped page information in PDU.
|
|
* @rp_alloc:Set if this structure is allocd, not a reuse unused space in pdu.
|
|
* @rp_nr_pages: Number of mapped pages
|
|
* @rp_data: Array of page pointers
|
|
*/
|
|
struct trans_rpage_info {
|
|
u8 rp_alloc;
|
|
int rp_nr_pages;
|
|
struct page *rp_data[0];
|
|
};
|
|
|
|
void p9_release_req_pages(struct trans_rpage_info *);
|
|
int p9_payload_gup(struct p9_req_t *, size_t *, int *, int, u8);
|
|
int p9_nr_pages(struct p9_req_t *);
|