aboutsummaryrefslogtreecommitdiffstats
path: root/native/include/sharedres.h
blob: 7765fd87a7112f2a4740aa3cecab91fd26eabae0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#ifndef SHAREDRES_H
#define SHAREDRES_H

#include "sharedres_types.h"

// spinlocks

BlockingBounds* task_fair_mutex_bounds(const ResourceSharingInfo& info,
				       unsigned int procs_per_cluster,
				       int dedicated_irq = NO_CPU);

BlockingBounds* task_fair_rw_bounds(const ResourceSharingInfo& info,
				    const ResourceSharingInfo& info_mtx,
				    unsigned int procs_per_cluster,
				    int dedicated_irq = NO_CPU);

BlockingBounds* phase_fair_rw_bounds(const ResourceSharingInfo& info,
				     unsigned int procs_per_cluster,
				     int dedicated_irq = NO_CPU);

// s-oblivious protocols

BlockingBounds* global_omlp_bounds(const ResourceSharingInfo& info,
				   unsigned int num_procs);
BlockingBounds* global_fmlp_bounds(const ResourceSharingInfo& info);

BlockingBounds* clustered_omlp_bounds(const ResourceSharingInfo& info,
				      unsigned int procs_per_cluster,
				      int dedicated_irq = NO_CPU);

BlockingBounds* clustered_rw_omlp_bounds(const ResourceSharingInfo& info,
					 unsigned int procs_per_cluster,
					 int dedicated_irq = NO_CPU);

BlockingBounds* clustered_kx_omlp_bounds(const ResourceSharingInfo& info,
					 const ReplicaInfo& replicaInfo,
					 unsigned int procs_per_cluster,
					 int dedicated_irq);

BlockingBounds* part_omlp_bounds(const ResourceSharingInfo& info);


// s-aware protocols

BlockingBounds* part_fmlp_bounds(const ResourceSharingInfo& info,
				 bool preemptive = true);

BlockingBounds* mpcp_bounds(const ResourceSharingInfo& info,
			    bool use_virtual_spinning);

BlockingBounds* dpcp_bounds(const ResourceSharingInfo& info,
			    const ResourceLocality& locality);

// Still missing:
// ==============

// clustered_omlp_kex_bounds
// clustered_omlp_rw_bounds
// spin_rw_wpref_bounds
// spin_rw_rpref_bounds



#endif