/* * 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 */