GPUart  1.01
Prototype of GPUart, an application-based limited preemptive GPU scheduler for embedded real-time systems
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
GPUart.h
Go to the documentation of this file.
1 //Copyright (c) 2017-2018 Christoph A. Hartmann, Ulrich Margull and Technische Hochschule Ingolstadt (THI)
2 //
3 //Permission is hereby granted, free of charge, to any person obtaining a copy of this
4 //software and associated documentation files (the "Software"), to deal in the Software
5 //without restriction, including without limitation the rights to use, copy, modify,
6 //merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
7 //permit persons to whom the Software is furnished to do so, subject to the following
8 //conditions:
9 //
10 //The above copyright notice and this permission notice shall be included in all copies
11 //or substantial portions of the Software.
12 //
13 //THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14 //INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
15 //PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
16 //HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
17 //OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
18 //SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 
20 /*
21 * File: GPUart.h
22 * Created by: Christoph Hartmann
23 * Institute: Technische Hochschule Ingolstadt
24 * Date: 03.04.2017 */
25 /********************************************************
26 * ___ ___ ___ ___ 3 ___ *
27 * | | | | | |\ /| | | | | | *
28 * |___ | | |___| | \/ | | | |___ | | *
29 * | | | |\ | | | | | | | *
30 * | |___| | \ | | |___| ___| | |___ *
31 * *
32 *********************************************************/
33 
46 #ifndef GPUART_H
47 #define GPUART_H
48 
49 
50 /************************************************************************************************/
51 /* Function declaration */
52 /************************************************************************************************/
53 
54 /* @brief Initialize all layers of GPUart.
55  *
56  * This function calls the init-functions of the Implementation, Scheduling, and Abstraction layers
57  * to initialize GPUart related context.
58  * Call this function before GPUart_start().
59  *
60  * @param void
61  * @return void
62  */
63 void GPUart_init(void);
64 
65 
66 /* @brief Enable kernel execution on the GPU.
67  *
68  * This function calls the Implementation layer to launch the persistent GPU thread,
69  * which is used to reduce kernel launch latencies.
70  * Call this function after GPUart_init().
71  *
72  * @param void
73  * @return void
74  */
75 void GPUart_start(void);
76 
77 
78 /* @brief Disable kernel execution on the GPU.
79  *
80  * This function calls the Implementation layer to terminate the persistent GPU thread.
81  * Call this function before GPUart_destroy().
82  *
83  * @param void
84  * @return void
85  */
86 void GPUart_stop(void);
87 
88 
89 /* @brief Destroy all GPUart related context.
90  *
91  * This function calls the destroy-functions of the Implementation, Scheduling, and Abstraction layers
92  * to destroy GPUart related context.
93  * Call this function after GPUart_stop().
94  *
95  * @param void
96  * @return void
97  */
98 void GPUart_destroy(void);
99 
100 
101 /* @brief Trigger the scheduler of GPUart to process the scheduling decision.
102  *
103  * Trigger the scheduler of GPUart to process the scheduling decision
104  * (The prototype of GPUart schedules by polling).
105  *
106  * @param void
107  * @return void
108  */
109 void GPUart_schedule(void);
110 
111 
112 #endif
void GPUart_stop(void)
Disable kernel execution on the GPU.
Definition: GPUart.cpp:101
void GPUart_start(void)
Enable kernel execution on the GPU.
Definition: GPUart.cpp:87
void GPUart_schedule(void)
Trigger the scheduler of GPUart to process the scheduling decision.
Definition: GPUart.cpp:130
void GPUart_init(void)
Initialize all layers of GPUart.
Definition: GPUart.cpp:70
void GPUart_destroy(void)
Destroy all GPUart related context.
Definition: GPUart.cpp:115