1/*
2 * Copyright (c) 2014, 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, Universitaetsstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10/**
11 * \brief interface between bomp thrads
12 */
13interface bomp "Barrelfish OpenMP Interface" {
14
15    /*
16     * ==========================================================================
17     * Messages between Node Masters and Worker Threads
18     * ==========================================================================
19     */
20	
21    /**
22     * \brief initiates the execution of a thread
23     * 
24     * \param fn    Address of the function to call
25     * \param addr  Pointer to the argument 
26     * \param tid	The thread's ID
27     * \param icv   The thread's task control variables
28     */    
29    message execute(uint64 fn, 
30    				uint64 arg, 
31					uint32 tid,
32					uint64 icv);
33    
34    /**
35     * \brief message signalling the termination of a bomp thread
36     * 
37     * \param status The thread's return value
38     */
39    message done(errval status);
40    
41    /*
42     * ==========================================================================
43     * Messages between Domain Master and Node Masters
44     * ==========================================================================
45     */
46    
47    rpc initialize(out errval status,
48    		       out uint32 nthreads);
49    
50    
51    
52    /* 
53     * -------------------------------------------------------------------------
54     * Execution
55     * -------------------------------------------------------------------------
56     */
57    
58    message execute_range(uint64 fn, 
59    					  uint64 addr, 
60						  uint32 from, 
61						  uint32 to,
62						  uint32 nthreads);
63    
64    
65    /*
66     * -------------------------------------------------------------------------
67     * Memory 
68     * -------------------------------------------------------------------------
69     */
70    rpc map(in cap frame,
71            in uint64 addr,
72            out errval status);
73    
74    
75    rpc update(in uint64 addr,
76               in uint64 offset,
77               in uint64 length,
78               out errval status);
79   
80};
81