1/* 2 * Copyright (c) 2012, ETH Zurich. 3 * All rights reserved. 4 * 5 * This file is distributed under the terms in the attached LICENSE file. 6 * If you do not find this file, copies can be found by writing to: 7 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group. 8 */ 9 10/** 11 * \brief interface between the XOMP master and workers 12 */ 13interface xomp "Xeon Phi openMP interface" { 14 15 /** 16 * \brief sends a frame capability to the one of the local workers 17 * this cannot be used for remote workers! 18 * 19 * \param [IN] frame frame capabilty 20 * \param [IN] addr virtual address of the requested memory 21 * \param [IN] type type of the memory 22 * \param [OUT] msgerr returns the outcome of the request 23 */ 24 rpc add_memory(in cap frame, 25 in uint64 addr, 26 in uint8 type, 27 out errval msgerr); 28 29 30 /** 31 * \brief asks the worker domain to update its local replicate or to 32 * write its local changes back 33 * 34 * \param [IN] addr physical address of the frame to update 35 * \param [IN] offset offset into the frame 36 * \param [IN] length length of the region to update 37 * \param [IN] direction direction of the memcpy operation 38 * \param [IN] state state pointer 39 * \param [OUT] msg_err outcome of the operation 40 * \param [OUT] state state pointer 41 */ 42 rpc update_memory(in uint64 addr, 43 in uint64 offset, 44 in uint64 length, 45 in uint8 direction, 46 in uint64 state, 47 out errval msg_err, 48 out uint64 out_state); 49 50 /** 51 * \brief notifies the worker domain to obtain memory from the local 52 * gateway 53 * 54 * \param [IN] addr virtual address of the requested memory 55 * \param [IN] type type of the memory 56 * \param [OUT] msgerr returns the outcome of the request 57 */ 58 rpc gw_req_memory(in uint64 addr, 59 in uint8 type, 60 out errval msgerr); 61 62 /** 63 * \brief sends a new task to a worker domain 64 * 65 * \param [IN] fn the function to be called 66 * \param [IN] arg arguments for the functions 67 * \param [IN] tid task id 68 * \param [IN] flags task flags 69 */ 70 message do_work(uint64 fn, 71 uint64 arg, 72 uint64 tid, 73 uint64 flags); 74 75 /** 76 * \brief sends the done notification to the XOMP master domain 77 * 78 * \param [IN] tid task id 79 * \param [IN] msgerr returns the outcome of the task 80 */ 81 message done_notify(uint64 tid, 82 errval msgerr); 83 84 /** 85 * \brief sends the done notification with argument to the XOMP master domain 86 * 87 * \param [IN] tid task id 88 * \param [IN] arg argument 89 * \param [IN] msgerr returns the outcome of the task 90 */ 91 message done_with_arg(uint64 tid, 92 uint64 arg, 93 errval msgerr); 94}; 95