source: rtems/cpukit/score/Makefile.am @ 300f6a48

5
Last change on this file since 300f6a48 was 300f6a48, checked in by Sebastian Huber <sebastian.huber@…>, on 06/22/16 at 15:09:23

score: Rework thread priority management

Add priority nodes which contribute to the overall thread priority.

The actual priority of a thread is now an aggregation of priority nodes.
The thread priority aggregation for the home scheduler instance of a
thread consists of at least one priority node, which is normally the
real priority of the thread. The locking protocols (e.g. priority
ceiling and priority inheritance), rate-monotonic period objects and the
POSIX sporadic server add, change and remove priority nodes.

A thread changes its priority now immediately, e.g. priority changes are
not deferred until the thread releases its last resource.

Replace the _Thread_Change_priority() function with

  • _Thread_Priority_perform_actions(),
  • _Thread_Priority_add(),
  • _Thread_Priority_remove(),
  • _Thread_Priority_change(), and
  • _Thread_Priority_update().

Update #2412.
Update #2556.

  • Property mode set to 100644
File size: 15.2 KB
Line 
1include $(top_srcdir)/automake/multilib.am
2include $(top_srcdir)/automake/compile.am
3
4SUBDIRS = cpu
5
6## include
7
8include_sysdir = $(includedir)/sys
9
10include_sys_HEADERS =
11include_sys_HEADERS += include/sys/_ffcounter.h
12include_sys_HEADERS += include/sys/timeffc.h
13include_sys_HEADERS += include/sys/timepps.h
14include_sys_HEADERS += include/sys/timetc.h
15include_sys_HEADERS += include/sys/timex.h
16
17include_rtemsdir = $(includedir)/rtems
18
19include_rtems_HEADERS =
20include_rtems_HEADERS += include/rtems/linkersets.h
21include_rtems_HEADERS += include/rtems/sysinit.h
22include_rtems_HEADERS += include/rtems/system.h
23include_rtems_HEADERS += include/rtems/seterr.h
24
25include_rtems_scoredir = $(includedir)/rtems/score
26
27include_rtems_score_HEADERS = include/rtems/score/address.h
28include_rtems_score_HEADERS += include/rtems/score/apimutex.h
29include_rtems_score_HEADERS += include/rtems/score/assert.h
30include_rtems_score_HEADERS += include/rtems/score/atomic.h
31include_rtems_score_HEADERS += include/rtems/score/chain.h
32include_rtems_score_HEADERS += include/rtems/score/chainimpl.h
33include_rtems_score_HEADERS += include/rtems/score/context.h
34include_rtems_score_HEADERS += include/rtems/score/copyrt.h
35include_rtems_score_HEADERS += include/rtems/score/corebarrier.h
36include_rtems_score_HEADERS += include/rtems/score/corebarrierimpl.h
37include_rtems_score_HEADERS += include/rtems/score/coremsg.h
38include_rtems_score_HEADERS += include/rtems/score/coremsgimpl.h
39include_rtems_score_HEADERS += include/rtems/score/coremutex.h
40include_rtems_score_HEADERS += include/rtems/score/coremuteximpl.h
41include_rtems_score_HEADERS += include/rtems/score/coresem.h
42include_rtems_score_HEADERS += include/rtems/score/coresemimpl.h
43include_rtems_score_HEADERS += include/rtems/score/cpuset.h
44include_rtems_score_HEADERS += include/rtems/score/cpusetimpl.h
45include_rtems_score_HEADERS += include/rtems/score/cpustdatomic.h
46include_rtems_score_HEADERS += include/rtems/score/heap.h
47include_rtems_score_HEADERS += include/rtems/score/heapimpl.h
48include_rtems_score_HEADERS += include/rtems/score/protectedheap.h
49include_rtems_score_HEADERS += include/rtems/score/interr.h
50include_rtems_score_HEADERS += include/rtems/score/isr.h
51include_rtems_score_HEADERS += include/rtems/score/isrlevel.h
52include_rtems_score_HEADERS += include/rtems/score/isrlock.h
53include_rtems_score_HEADERS += include/rtems/score/freechain.h
54include_rtems_score_HEADERS += include/rtems/score/mrsp.h
55include_rtems_score_HEADERS += include/rtems/score/mrspimpl.h
56include_rtems_score_HEADERS += include/rtems/score/object.h
57include_rtems_score_HEADERS += include/rtems/score/objectimpl.h
58include_rtems_score_HEADERS += include/rtems/score/onceimpl.h
59include_rtems_score_HEADERS += include/rtems/score/percpu.h
60include_rtems_score_HEADERS += include/rtems/score/priority.h
61include_rtems_score_HEADERS += include/rtems/score/priorityimpl.h
62include_rtems_score_HEADERS += include/rtems/score/prioritybitmap.h
63include_rtems_score_HEADERS += include/rtems/score/prioritybitmapimpl.h
64include_rtems_score_HEADERS += include/rtems/score/profiling.h
65include_rtems_score_HEADERS += include/rtems/score/processormask.h
66include_rtems_score_HEADERS += include/rtems/score/rbtree.h
67include_rtems_score_HEADERS += include/rtems/score/rbtreeimpl.h
68include_rtems_score_HEADERS += include/rtems/score/resource.h
69include_rtems_score_HEADERS += include/rtems/score/resourceimpl.h
70include_rtems_score_HEADERS += include/rtems/score/scheduler.h
71include_rtems_score_HEADERS += include/rtems/score/schedulerimpl.h
72include_rtems_score_HEADERS += include/rtems/score/schedulercbs.h
73include_rtems_score_HEADERS += include/rtems/score/schedulercbsimpl.h
74include_rtems_score_HEADERS += include/rtems/score/scheduleredf.h
75include_rtems_score_HEADERS += include/rtems/score/scheduleredfimpl.h
76include_rtems_score_HEADERS += include/rtems/score/schedulernode.h
77include_rtems_score_HEADERS += include/rtems/score/schedulernodeimpl.h
78include_rtems_score_HEADERS += include/rtems/score/schedulerpriority.h
79include_rtems_score_HEADERS += include/rtems/score/schedulerpriorityimpl.h
80include_rtems_score_HEADERS += include/rtems/score/schedulerprioritysmp.h
81include_rtems_score_HEADERS += include/rtems/score/schedulersimple.h
82include_rtems_score_HEADERS += include/rtems/score/schedulersimpleimpl.h
83include_rtems_score_HEADERS += include/rtems/score/schedulersmp.h
84include_rtems_score_HEADERS += include/rtems/score/schedulersmpimpl.h
85include_rtems_score_HEADERS += include/rtems/score/smp.h
86include_rtems_score_HEADERS += include/rtems/score/smpbarrier.h
87include_rtems_score_HEADERS += include/rtems/score/smplock.h
88include_rtems_score_HEADERS += include/rtems/score/smplockseq.h
89include_rtems_score_HEADERS += include/rtems/score/smpimpl.h
90include_rtems_score_HEADERS += include/rtems/score/stack.h
91include_rtems_score_HEADERS += include/rtems/score/stackimpl.h
92include_rtems_score_HEADERS += include/rtems/score/states.h
93include_rtems_score_HEADERS += include/rtems/score/statesimpl.h
94include_rtems_score_HEADERS += include/rtems/score/status.h
95include_rtems_score_HEADERS += include/rtems/score/sysstate.h
96include_rtems_score_HEADERS += include/rtems/score/thread.h
97include_rtems_score_HEADERS += include/rtems/score/threadimpl.h
98include_rtems_score_HEADERS += include/rtems/score/threaddispatch.h
99include_rtems_score_HEADERS += include/rtems/score/threadq.h
100include_rtems_score_HEADERS += include/rtems/score/threadqimpl.h
101include_rtems_score_HEADERS += include/rtems/score/timespec.h
102include_rtems_score_HEADERS += include/rtems/score/timestamp.h
103include_rtems_score_HEADERS += include/rtems/score/timecounter.h
104include_rtems_score_HEADERS += include/rtems/score/timecounterimpl.h
105include_rtems_score_HEADERS += include/rtems/score/tls.h
106include_rtems_score_HEADERS += include/rtems/score/tod.h
107include_rtems_score_HEADERS += include/rtems/score/todimpl.h
108include_rtems_score_HEADERS += include/rtems/score/userext.h
109include_rtems_score_HEADERS += include/rtems/score/userextimpl.h
110include_rtems_score_HEADERS += include/rtems/score/watchdog.h
111include_rtems_score_HEADERS += include/rtems/score/watchdogimpl.h
112include_rtems_score_HEADERS += include/rtems/score/wkspace.h
113include_rtems_score_HEADERS += include/rtems/score/cpuopts.h
114include_rtems_score_HEADERS += include/rtems/score/basedefs.h
115
116if HAS_PTHREADS
117include_rtems_score_HEADERS += include/rtems/score/corespinlock.h
118include_rtems_score_HEADERS += include/rtems/score/corespinlockimpl.h
119include_rtems_score_HEADERS += include/rtems/score/corerwlock.h
120include_rtems_score_HEADERS += include/rtems/score/corerwlockimpl.h
121endif
122
123if HAS_MP
124# We only build multiprocessing related files if HAS_MP was defined
125include_rtems_score_HEADERS += include/rtems/score/mpci.h
126include_rtems_score_HEADERS += include/rtems/score/mpciimpl.h
127include_rtems_score_HEADERS += include/rtems/score/mppkt.h
128include_rtems_score_HEADERS += include/rtems/score/objectmp.h
129include_rtems_score_HEADERS += include/rtems/score/threadmp.h
130endif
131
132if HAS_SMP
133include_rtems_score_HEADERS += include/rtems/score/schedulerprioritysmpimpl.h
134include_rtems_score_HEADERS += include/rtems/score/schedulerpriorityaffinitysmp.h
135include_rtems_score_HEADERS += include/rtems/score/schedulersimplesmp.h
136include_rtems_score_HEADERS += include/rtems/score/schedulerstrongapa.h
137include_rtems_score_HEADERS += include/rtems/score/smplockmcs.h
138include_rtems_score_HEADERS += include/rtems/score/smplockstats.h
139include_rtems_score_HEADERS += include/rtems/score/smplockticket.h
140endif
141
142## src
143
144noinst_LIBRARIES = libscore.a
145libscore_a_SOURCES =
146libscore_a_CPPFLAGS = $(AM_CPPFLAGS)
147
148# We only build multiprocessing related files if HAS_MP was defined
149if HAS_MP
150libscore_a_SOURCES += src/mpci.c src/objectmp.c src/threadmp.c
151endif
152
153if HAS_SMP
154libscore_a_SOURCES += src/percpustatewait.c
155libscore_a_SOURCES += src/profilingsmplock.c
156libscore_a_SOURCES += src/schedulerchangeroot.c
157libscore_a_SOURCES += src/schedulerpriorityaffinitysmp.c
158libscore_a_SOURCES += src/schedulerprioritysmp.c
159libscore_a_SOURCES += src/schedulersimplesmp.c
160libscore_a_SOURCES += src/schedulerstrongapa.c
161libscore_a_SOURCES += src/schedulersmpdebug.c
162libscore_a_SOURCES += src/smp.c
163libscore_a_SOURCES += src/smplock.c
164libscore_a_SOURCES += src/smpmulticastaction.c
165libscore_a_SOURCES += src/cpuset.c
166libscore_a_SOURCES += src/cpusetprintsupport.c
167libscore_a_SOURCES += src/schedulerdefaultaskforhelp.c
168libscore_a_SOURCES += src/schedulerdefaultgetaffinity.c
169libscore_a_SOURCES += src/schedulerdefaultsetaffinity.c
170libscore_a_SOURCES += src/schedulersmpstartidle.c
171endif
172
173## CORE_APIMUTEX_C_FILES
174libscore_a_SOURCES += src/apimutex.c \
175    src/apimutexlock.c src/apimutexisowner.c src/apimutexunlock.c
176
177## CORE_BARRIER_C_FILES
178libscore_a_SOURCES += src/corebarrier.c src/corebarrierrelease.c \
179    src/corebarrierwait.c
180
181## CORE_MESSAGE_QUEUE_C_FILES
182libscore_a_SOURCES += src/coremsg.c src/coremsgbroadcast.c \
183    src/coremsgclose.c src/coremsgflush.c src/coremsgflushwait.c \
184    src/coremsginsert.c src/coremsgseize.c \
185    src/coremsgsubmit.c
186
187## CORE_MUTEX_C_FILES
188libscore_a_SOURCES += src/coremutexseize.c
189
190## CORE_PERCPU_C_FILES
191libscore_a_SOURCES += src/percpu.c
192libscore_a_SOURCES += src/percpuasm.c
193
194## CORE_RWLOCK_C_FILES
195if HAS_PTHREADS
196libscore_a_SOURCES += src/corerwlock.c src/corerwlockobtainread.c \
197    src/corerwlockobtainwrite.c src/corerwlockrelease.c
198endif
199
200## CORE_SEMAPHORE_C_FILES
201libscore_a_SOURCES += src/coresem.c
202
203## CORE_SPINLOCK_C_FILES
204if HAS_PTHREADS
205libscore_a_SOURCES += src/corespinlockrelease.c \
206    src/corespinlockwait.c
207endif
208
209## HEAP_C_FILES
210libscore_a_SOURCES += src/heap.c src/heapallocate.c src/heapextend.c \
211    src/heapfree.c src/heapsizeofuserarea.c src/heapwalk.c src/heapgetinfo.c \
212    src/heapgetfreeinfo.c src/heapresizeblock.c src/heapiterate.c \
213    src/heapgreedy.c src/heapnoextend.c
214
215## OBJECT_C_FILES
216libscore_a_SOURCES += src/objectallocate.c src/objectclose.c \
217    src/objectextendinformation.c src/objectfree.c \
218    src/objectgetnext.c src/objectinitializeinformation.c \
219    src/objectnametoid.c src/objectnametoidstring.c \
220    src/objectshrinkinformation.c src/objectgetnoprotection.c \
221    src/objectidtoname.c src/objectgetnameasstring.c src/objectsetname.c \
222    src/objectgetinfo.c src/objectgetinfoid.c src/objectapimaximumclass.c \
223    src/objectnamespaceremove.c \
224    src/objectactivecount.c
225libscore_a_SOURCES += src/objectgetlocal.c
226
227## SCHEDULER_C_FILES
228libscore_a_SOURCES += src/log2table.c
229libscore_a_SOURCES += src/scheduler.c
230libscore_a_SOURCES += src/schedulergetaffinity.c
231libscore_a_SOURCES += src/schedulersetaffinity.c
232libscore_a_SOURCES += src/schedulerdefaultmappriority.c
233libscore_a_SOURCES += src/schedulerdefaultnodedestroy.c
234libscore_a_SOURCES += src/schedulerdefaultnodeinit.c
235libscore_a_SOURCES += src/schedulerdefaultreleasejob.c
236libscore_a_SOURCES += src/schedulerdefaultschedule.c
237libscore_a_SOURCES += src/schedulerdefaultstartidle.c
238libscore_a_SOURCES += src/schedulerdefaulttick.c
239
240## SCHEDULERPRIORITY_C_FILES
241libscore_a_SOURCES += src/schedulerpriority.c \
242    src/schedulerpriorityblock.c \
243    src/schedulerprioritychangepriority.c \
244    src/schedulerpriorityschedule.c \
245    src/schedulerpriorityunblock.c \
246    src/schedulerpriorityyield.c
247
248## SCHEDULERSIMPLE_C_FILES
249libscore_a_SOURCES += src/schedulersimple.c \
250    src/schedulersimpleblock.c \
251    src/schedulersimplechangepriority.c \
252    src/schedulersimpleschedule.c \
253    src/schedulersimpleunblock.c \
254    src/schedulersimpleyield.c
255
256## SCHEDULEREDF_C_FILES
257libscore_a_SOURCES += src/scheduleredf.c \
258    src/scheduleredfnodeinit.c \
259    src/scheduleredfblock.c \
260    src/scheduleredfchangepriority.c \
261    src/scheduleredfreleasejob.c \
262    src/scheduleredfschedule.c \
263    src/scheduleredfunblock.c \
264    src/scheduleredfyield.c
265
266## SCHEDULERCBS_C_FILES
267libscore_a_SOURCES += src/schedulercbs.c \
268    src/schedulercbsnodeinit.c \
269    src/schedulercbsattachthread.c \
270    src/schedulercbscleanup.c \
271    src/schedulercbscreateserver.c \
272    src/schedulercbsdestroyserver.c \
273    src/schedulercbsdetachthread.c \
274    src/schedulercbsgetapprovedbudget.c \
275    src/schedulercbsgetexecutiontime.c \
276    src/schedulercbsgetparameters.c \
277    src/schedulercbsgetremainingbudget.c \
278    src/schedulercbsgetserverid.c \
279    src/schedulercbssetparameters.c \
280    src/schedulercbsreleasejob.c \
281    src/schedulercbsunblock.c
282
283## PROTECTED_HEAP_C_FILES
284libscore_a_SOURCES += src/pheapallocate.c \
285    src/pheapextend.c src/pheapfree.c src/pheapgetsize.c \
286    src/pheapgetblocksize.c src/pheapgetfreeinfo.c src/pheapgetinfo.c \
287    src/pheapinit.c src/pheapresizeblock.c src/pheapwalk.c src/pheapiterate.c
288
289## FREECHAIN_C_FILES
290libscore_a_SOURCES += src/freechain.c
291
292## RBTREE_C_FILES
293libscore_a_SOURCES += \
294    src/rbtreeextract.c \
295    src/rbtreeinsert.c src/rbtreeiterate.c src/rbtreenext.c
296libscore_a_SOURCES += src/rbtreereplace.c
297
298## THREAD_C_FILES
299libscore_a_SOURCES += src/thread.c src/threadchangepriority.c \
300    src/threadclearstate.c src/threadcreateidle.c \
301    src/threaddispatch.c \
302    src/threadget.c src/threadhandler.c src/threadinitialize.c \
303    src/threadloadenv.c \
304    src/threadrestart.c \
305    src/threadsetstate.c \
306    src/threadstackallocate.c src/threadstackfree.c src/threadstart.c \
307    src/threadstartmultitasking.c src/iterateoverthreads.c
308libscore_a_SOURCES += src/threadentryadaptoridle.c
309libscore_a_SOURCES += src/threadentryadaptornumeric.c
310libscore_a_SOURCES += src/threadentryadaptorpointer.c
311libscore_a_SOURCES += src/threadgetcputimeused.c
312libscore_a_SOURCES += src/threadglobalconstruction.c
313libscore_a_SOURCES += src/threadtimeout.c
314libscore_a_SOURCES += src/threadwaitgetid.c
315libscore_a_SOURCES += src/threadyield.c
316
317## THREADQ_C_FILES
318libscore_a_SOURCES += src/threadq.c \
319    src/threadqenqueue.c \
320    src/threadqextractwithproxy.c src/threadqfirst.c \
321    src/threadqflush.c
322libscore_a_SOURCES += src/threadqops.c
323
324## TIMESPEC_C_FILES
325libscore_a_SOURCES += src/timespecaddto.c src/timespecfromticks.c \
326    src/timespecisvalid.c src/timespeclessthan.c \
327    src/timespecsubtract.c src/timespectoticks.c src/timespecdivide.c \
328    src/timespecdividebyinteger.c src/timespecgetasnanoseconds.c
329
330## TOD_C_FILES
331libscore_a_SOURCES += src/coretod.c src/coretodset.c \
332    src/coretodtickspersec.c \
333    src/coretodadjust.c
334libscore_a_SOURCES += src/coretodabsolutetimeout.c
335
336## WATCHDOG_C_FILES
337libscore_a_SOURCES += src/watchdoginsert.c
338libscore_a_SOURCES += src/watchdogremove.c
339libscore_a_SOURCES += src/watchdogtick.c
340libscore_a_SOURCES += src/watchdogtickssinceboot.c
341
342## USEREXT_C_FILES
343libscore_a_SOURCES += src/userextaddset.c \
344    src/userext.c src/userextremoveset.c src/userextiterate.c
345
346## STD_C_FILES
347libscore_a_SOURCES += src/chain.c \
348    src/chainnodecount.c \
349    src/debugisthreaddispatchingallowed.c \
350    src/interr.c src/isr.c src/wkspace.c src/wkstringduplicate.c
351libscore_a_SOURCES += src/isrisinprogress.c
352libscore_a_SOURCES += src/condition.c
353libscore_a_SOURCES += src/debugisownerofallocator.c
354libscore_a_SOURCES += src/futex.c
355libscore_a_SOURCES += src/profilingisrentryexit.c
356libscore_a_SOURCES += src/mutex.c
357libscore_a_SOURCES += src/once.c
358libscore_a_SOURCES += src/resourceiterate.c
359libscore_a_SOURCES += src/sched.c
360libscore_a_SOURCES += src/semaphore.c
361libscore_a_SOURCES += src/smpbarrierwait.c
362libscore_a_SOURCES += src/kern_tc.c
363libscore_a_SOURCES += src/libatomic.c
364
365EXTRA_DIST = src/Unlimited.txt
366
367DISTCLEANFILES = include/rtems/score/cpuopts.h
368
369include $(srcdir)/preinstall.am
370include $(top_srcdir)/automake/subdirs.am
371include $(top_srcdir)/automake/local.am
Note: See TracBrowser for help on using the repository browser.