]> rtime.felk.cvut.cz Git - frescor/fosa.git/blob - src_partikle/fosa_threads_and_signals.c
6075b97d281308f6e448e80d750165d433f254e0
[frescor/fosa.git] / src_partikle / fosa_threads_and_signals.c
1 /** fosa_threads_and_signals.h
2  *
3  * < description >
4  * < author >
5  * < date >
6  */
7
8 #include <fosa_threads_and_signals.h>
9
10 /*************************
11  * Thread identification
12  *************************/ 
13 bool fosa_thread_equal(frsh_thread_id_t t1, frsh_thread_id_t t2);
14 frsh_thread_id_t fosa_thread_self();
15  
16 /*************************
17  * Thread creation and termination
18  *************************/ 
19 int fosa_thread_create
20                  (frsh_thread_id_t *tid, const frsh_thread_attr_t *attr, 
21                   frsh_thread_code_t code, void * arg);
22
23
24 /**************************************************
25  * Thread-specific data
26  *  (extended with access from a different thread)
27  **************************************************/ 
28 int fosa_key_create(int *key);
29 int fosa_key_destroy(int key);
30 int fosa_thread_set_specific_data
31                  (int key, frsh_thread_id_t tid, const void * value);
32 int fosa_thread_get_specific_data(int key, frsh_thread_id_t tid, 
33                                    void ** value);
34
35 /**********************
36  * Thread scheduling
37  **********************/
38 int fosa_get_priority_max();
39 int fosa_get_priority_min();
40 int fosa_thread_attr_set_prio(frsh_thread_attr_t *attr, int prio);
41 int fosa_thread_attr_get_prio
42                  (const frsh_thread_attr_t *attr, int *prio);
43 int fosa_thread_set_prio(frsh_thread_id_t tid, int prio);
44 int fosa_thread_get_prio (frsh_thread_id_t tid, int *prio);
45
46
47 /*************
48  * Signals
49  *************/
50 int fosa_set_accepted_signals(frsh_signal_t set[], int size);
51 int fosa_signal_queue
52                 (frsh_signal_t signal, frsh_signal_info_t info,
53                  frsh_thread_id_t receiver);
54  int fosa_signal_wait
55                  (frsh_signal_t set[], int size, frsh_signal_t *signal_received, 
56                   frsh_signal_info_t *info);
57  int fosa_signal_timedwait
58                  (frsh_signal_t set[], int size, frsh_signal_t *signal_received, 
59                   frsh_signal_info_t *info, const struct timespec *timeout);