58 lines
1.8 KiB
C
58 lines
1.8 KiB
C
/*
|
|
* Intel MIC Platform Software Stack (MPSS)
|
|
*
|
|
* Copyright(c) 2015 Intel Corporation.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License, version 2, as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* Intel SCIF driver.
|
|
*
|
|
*/
|
|
#ifndef SCIF_RMA_LIST_H
|
|
#define SCIF_RMA_LIST_H
|
|
|
|
/*
|
|
* struct scif_rma_req - Self Registration list RMA Request query
|
|
*
|
|
* @out_window - Returns the window if found
|
|
* @offset: Starting offset
|
|
* @nr_bytes: number of bytes
|
|
* @prot: protection requested i.e. read or write or both
|
|
* @type: Specify single, partial or multiple windows
|
|
* @head: Head of list on which to search
|
|
* @va_for_temp: VA for searching temporary cached windows
|
|
*/
|
|
struct scif_rma_req {
|
|
struct scif_window **out_window;
|
|
union {
|
|
s64 offset;
|
|
unsigned long va_for_temp;
|
|
};
|
|
size_t nr_bytes;
|
|
int prot;
|
|
enum scif_window_type type;
|
|
struct list_head *head;
|
|
};
|
|
|
|
/* Insert */
|
|
void scif_insert_window(struct scif_window *window, struct list_head *head);
|
|
void scif_insert_tcw(struct scif_window *window,
|
|
struct list_head *head);
|
|
/* Query */
|
|
int scif_query_window(struct scif_rma_req *request);
|
|
int scif_query_tcw(struct scif_endpt *ep, struct scif_rma_req *request);
|
|
/* Called from close to unregister all self windows */
|
|
int scif_unregister_all_windows(scif_epd_t epd);
|
|
void scif_unmap_all_windows(scif_epd_t epd);
|
|
/* Traverse list and unregister */
|
|
int scif_rma_list_unregister(struct scif_window *window, s64 offset,
|
|
int nr_pages);
|
|
#endif /* SCIF_RMA_LIST_H */
|