source: rtems/cpukit/score/Makefile.am @ a936aa49

4.11
Last change on this file since a936aa49 was a936aa49, checked in by Sebastian Huber <sebastian.huber@…>, on Jun 6, 2013 at 1:41:00 PM

scheduler: New simple SMP scheduler implementation

The new Simple SMP Scheduler allocates a processor for the processor
count highest priority ready threads. The thread priority and position
in the ready chain are the only information to determine the scheduling
decision. Threads with an allocated processor are in the scheduled
chain. After initialization the scheduled chain has exactly processor
count nodes. Each processor has exactly one allocated thread after
initialization. All enqueue and extract operations may exchange threads
with the scheduled chain. One thread will be added and another will be
removed. The scheduled and ready chain is ordered according to the
thread priority order. The chain insert operations are O(count of ready
threads), thus this scheduler is unsuitable for most real-time
applications.

The thread preempt mode will be ignored.

  • Property mode set to 100644
File size: 13.7 KB
Line 
1include $(top_srcdir)/automake/multilib.am
2include $(top_srcdir)/automake/compile.am
3
4SUBDIRS = cpu
5
6## include
7
8include_rtemsdir = $(includedir)/rtems
9
10include_rtems_HEADERS = include/rtems/debug.h
11include_rtems_HEADERS += include/rtems/system.h
12include_rtems_HEADERS += include/rtems/seterr.h
13include_rtems_HEADERS += include/rtems/bspsmp.h
14
15include_rtems_scoredir = $(includedir)/rtems/score
16
17include_rtems_score_HEADERS = include/rtems/score/address.h
18include_rtems_score_HEADERS += include/rtems/score/apiext.h
19include_rtems_score_HEADERS += include/rtems/score/apimutex.h
20include_rtems_score_HEADERS += include/rtems/score/bitfield.h
21include_rtems_score_HEADERS += include/rtems/score/chain.h
22include_rtems_score_HEADERS += include/rtems/score/context.h
23include_rtems_score_HEADERS += include/rtems/score/copyrt.h
24include_rtems_score_HEADERS += include/rtems/score/corebarrier.h
25include_rtems_score_HEADERS += include/rtems/score/coremsg.h
26include_rtems_score_HEADERS += include/rtems/score/coremutex.h
27include_rtems_score_HEADERS += include/rtems/score/coresem.h
28include_rtems_score_HEADERS += include/rtems/score/heap.h
29include_rtems_score_HEADERS += include/rtems/score/protectedheap.h
30include_rtems_score_HEADERS += include/rtems/score/interr.h
31include_rtems_score_HEADERS += include/rtems/score/isr.h
32include_rtems_score_HEADERS += include/rtems/score/isrlevel.h
33include_rtems_score_HEADERS += include/rtems/score/object.h
34include_rtems_score_HEADERS += include/rtems/score/percpu.h
35include_rtems_score_HEADERS += include/rtems/score/priority.h
36include_rtems_score_HEADERS += include/rtems/score/prioritybitmap.h
37include_rtems_score_HEADERS += include/rtems/score/rbtree.h
38include_rtems_score_HEADERS += include/rtems/score/scheduler.h
39include_rtems_score_HEADERS += include/rtems/score/schedulercbs.h
40include_rtems_score_HEADERS += include/rtems/score/scheduleredf.h
41include_rtems_score_HEADERS += include/rtems/score/schedulerpriority.h
42include_rtems_score_HEADERS += include/rtems/score/schedulersimple.h
43include_rtems_score_HEADERS += include/rtems/score/smp.h
44include_rtems_score_HEADERS += include/rtems/score/smplock.h
45include_rtems_score_HEADERS += include/rtems/score/stack.h
46include_rtems_score_HEADERS += include/rtems/score/states.h
47include_rtems_score_HEADERS += include/rtems/score/sysstate.h
48include_rtems_score_HEADERS += include/rtems/score/thread.h
49include_rtems_score_HEADERS += include/rtems/score/threaddispatch.h
50include_rtems_score_HEADERS += include/rtems/score/threadq.h
51include_rtems_score_HEADERS += include/rtems/score/threadsync.h
52include_rtems_score_HEADERS += include/rtems/score/timespec.h
53include_rtems_score_HEADERS += include/rtems/score/timestamp.h
54include_rtems_score_HEADERS += include/rtems/score/timestamp64.h
55include_rtems_score_HEADERS += include/rtems/score/tod.h
56include_rtems_score_HEADERS += include/rtems/score/tqdata.h
57include_rtems_score_HEADERS += include/rtems/score/userext.h
58include_rtems_score_HEADERS += include/rtems/score/userextimpl.h
59include_rtems_score_HEADERS += include/rtems/score/watchdog.h
60include_rtems_score_HEADERS += include/rtems/score/wkspace.h
61include_rtems_score_HEADERS += include/rtems/score/cpuopts.h
62include_rtems_score_HEADERS += include/rtems/score/basedefs.h
63include_rtems_score_HEADERS += include/rtems/score/atomic.h
64include_rtems_score_HEADERS += include/rtems/score/genericcpuatomic.h
65include_rtems_score_HEADERS += include/rtems/score/genericatomicops.h
66
67if HAS_PTHREADS
68include_rtems_score_HEADERS += include/rtems/score/corespinlock.h
69include_rtems_score_HEADERS += include/rtems/score/corerwlock.h
70endif
71
72if HAS_MP
73# We only build multiprocessing related files if HAS_MP was defined
74include_rtems_score_HEADERS += include/rtems/score/mpci.h
75include_rtems_score_HEADERS += include/rtems/score/mppkt.h
76include_rtems_score_HEADERS += include/rtems/score/objectmp.h
77include_rtems_score_HEADERS += include/rtems/score/threadmp.h
78endif
79
80if HAS_SMP
81include_rtems_score_HEADERS += include/rtems/score/schedulersimplesmp.h
82endif
83
84## inline
85include_rtems_score_HEADERS += inline/rtems/score/address.inl
86include_rtems_score_HEADERS += inline/rtems/score/chain.inl
87include_rtems_score_HEADERS += inline/rtems/score/corebarrier.inl
88include_rtems_score_HEADERS += inline/rtems/score/coremsg.inl
89include_rtems_score_HEADERS += inline/rtems/score/coremutex.inl
90include_rtems_score_HEADERS += inline/rtems/score/coresem.inl
91include_rtems_score_HEADERS += inline/rtems/score/heap.inl
92include_rtems_score_HEADERS += inline/rtems/score/isr.inl
93include_rtems_score_HEADERS += inline/rtems/score/object.inl
94include_rtems_score_HEADERS += inline/rtems/score/priority.inl
95include_rtems_score_HEADERS += inline/rtems/score/prioritybitmap.inl
96include_rtems_score_HEADERS += inline/rtems/score/rbtree.inl
97include_rtems_score_HEADERS += inline/rtems/score/scheduler.inl
98include_rtems_score_HEADERS += inline/rtems/score/schedulerpriority.inl
99include_rtems_score_HEADERS += inline/rtems/score/schedulersimple.inl
100include_rtems_score_HEADERS += inline/rtems/score/stack.inl
101include_rtems_score_HEADERS += inline/rtems/score/states.inl
102include_rtems_score_HEADERS += inline/rtems/score/sysstate.inl
103include_rtems_score_HEADERS += inline/rtems/score/thread.inl
104include_rtems_score_HEADERS += inline/rtems/score/threadq.inl
105include_rtems_score_HEADERS += inline/rtems/score/tod.inl
106include_rtems_score_HEADERS += inline/rtems/score/tqdata.inl
107include_rtems_score_HEADERS += inline/rtems/score/watchdog.inl
108include_rtems_score_HEADERS += inline/rtems/score/wkspace.inl
109include_rtems_score_HEADERS += inline/rtems/score/atomic.inl
110
111if HAS_PTHREADS
112include_rtems_score_HEADERS += inline/rtems/score/corespinlock.inl
113include_rtems_score_HEADERS += inline/rtems/score/corerwlock.inl
114endif
115
116if HAS_MP
117## We only build multiprocessing related files if HAS_MP was defined
118include_rtems_score_HEADERS += inline/rtems/score/mppkt.inl
119include_rtems_score_HEADERS += inline/rtems/score/objectmp.inl
120include_rtems_score_HEADERS += inline/rtems/score/threadmp.inl
121endif
122
123## src
124
125AM_CPPFLAGS += -D__RTEMS_INSIDE__
126
127noinst_LIBRARIES = libscore.a
128libscore_a_SOURCES =
129libscore_a_CPPFLAGS = $(AM_CPPFLAGS)
130
131# We only build multiprocessing related files if HAS_MP was defined
132if HAS_MP
133libscore_a_SOURCES += src/mpci.c src/objectmp.c src/threadmp.c
134endif
135
136if HAS_SMP
137libscore_a_SOURCES += src/isrsmp.c
138libscore_a_SOURCES += src/schedulersimplesmp.c
139libscore_a_SOURCES += src/smp.c
140endif
141
142## CORE_APIMUTEX_C_FILES
143libscore_a_SOURCES += src/apimutex.c src/apimutexallocate.c \
144    src/apimutexlock.c src/apimutexunlock.c
145
146## CORE_BARRIER_C_FILES
147libscore_a_SOURCES += src/corebarrier.c src/corebarrierrelease.c \
148    src/corebarrierwait.c
149
150## CORE_MESSAGE_QUEUE_C_FILES
151libscore_a_SOURCES += src/coremsg.c src/coremsgbroadcast.c \
152    src/coremsgclose.c src/coremsgflush.c src/coremsgflushwait.c \
153    src/coremsginsert.c src/coremsgflushsupp.c src/coremsgseize.c \
154    src/coremsgsubmit.c
155
156## CORE_MUTEX_C_FILES
157libscore_a_SOURCES += src/coremutex.c src/coremutexflush.c \
158    src/coremutexseize.c src/coremutexsurrender.c \
159    src/coremutexseizeintr.c
160
161## CORE_PERCPU_C_FILES
162libscore_a_SOURCES += src/percpu.c
163libscore_a_SOURCES += src/percpuasm.c
164
165## CORE_RWLOCK_C_FILES
166if HAS_PTHREADS
167libscore_a_SOURCES += src/corerwlock.c src/corerwlockobtainread.c \
168    src/corerwlockobtainwrite.c src/corerwlockrelease.c src/corerwlocktimeout.c
169endif
170
171## CORE_SEMAPHORE_C_FILES
172libscore_a_SOURCES += src/coresem.c src/coresemflush.c src/coresemseize.c \
173    src/coresemsurrender.c
174
175## CORE_SPINLOCK_C_FILES
176if HAS_PTHREADS
177libscore_a_SOURCES += src/corespinlock.c src/corespinlockrelease.c \
178    src/corespinlockwait.c
179endif
180
181## HEAP_C_FILES
182libscore_a_SOURCES += src/heap.c src/heapallocate.c src/heapextend.c \
183    src/heapfree.c src/heapsizeofuserarea.c src/heapwalk.c src/heapgetinfo.c \
184    src/heapgetfreeinfo.c src/heapresizeblock.c src/heapiterate.c \
185    src/heapgreedy.c src/heapnoextend.c
186
187## OBJECT_C_FILES
188libscore_a_SOURCES += src/objectallocate.c src/objectclose.c \
189    src/objectextendinformation.c src/objectfree.c src/objectget.c \
190    src/objectgetisr.c src/objectgetnext.c src/objectinitializeinformation.c \
191    src/objectnametoid.c src/objectnametoidstring.c \
192    src/objectshrinkinformation.c src/objectgetnoprotection.c \
193    src/objectidtoname.c src/objectgetnameasstring.c src/objectsetname.c \
194    src/objectgetinfo.c src/objectgetinfoid.c src/objectapimaximumclass.c \
195    src/objectnamespaceremove.c \
196    src/objectactivecount.c
197
198## SCHEDULER_C_FILES
199libscore_a_SOURCES += src/scheduler.c
200libscore_a_SOURCES += src/schedulerdefaulttick.c
201libscore_a_SOURCES += src/schedulerdefaultstartidle.c
202
203## SCHEDULERPRIORITY_C_FILES
204libscore_a_SOURCES += src/schedulerpriority.c \
205    src/schedulerpriorityallocate.c \
206    src/schedulerpriorityblock.c \
207    src/schedulerpriorityenqueue.c \
208    src/schedulerpriorityenqueuefirst.c \
209    src/schedulerpriorityextract.c \
210    src/schedulerpriorityfree.c \
211    src/schedulerpriorityprioritycompare.c \
212    src/schedulerpriorityreleasejob.c \
213    src/schedulerpriorityschedule.c \
214    src/schedulerpriorityunblock.c \
215    src/schedulerpriorityupdate.c \
216    src/schedulerpriorityyield.c
217
218## SCHEDULERSIMPLE_C_FILES
219libscore_a_SOURCES += src/schedulersimple.c \
220    src/schedulersimpleblock.c \
221    src/schedulersimpleenqueue.c \
222    src/schedulersimpleenqueuefirst.c \
223    src/schedulersimpleextract.c \
224    src/schedulersimplereadyqueueenqueue.c \
225    src/schedulersimplereadyqueueenqueuefirst.c \
226    src/schedulersimpleschedule.c \
227    src/schedulersimpleunblock.c \
228    src/schedulersimpleyield.c
229
230## SCHEDULEREDF_C_FILES
231libscore_a_SOURCES += src/scheduleredf.c \
232    src/scheduleredfallocate.c \
233    src/scheduleredfblock.c \
234    src/scheduleredfenqueue.c \
235    src/scheduleredfenqueuefirst.c \
236    src/scheduleredfextract.c \
237    src/scheduleredffree.c \
238    src/scheduleredfprioritycompare.c \
239    src/scheduleredfreleasejob.c \
240    src/scheduleredfschedule.c \
241    src/scheduleredfunblock.c \
242    src/scheduleredfupdate.c \
243    src/scheduleredfyield.c
244
245## SCHEDULERCBS_C_FILES
246libscore_a_SOURCES += src/schedulercbs.c \
247    src/schedulercbsallocate.c \
248    src/schedulercbsattachthread.c \
249    src/schedulercbscleanup.c \
250    src/schedulercbscreateserver.c \
251    src/schedulercbsdestroyserver.c \
252    src/schedulercbsdetachthread.c \
253    src/schedulercbsgetapprovedbudget.c \
254    src/schedulercbsgetexecutiontime.c \
255    src/schedulercbsgetparameters.c \
256    src/schedulercbsgetremainingbudget.c \
257    src/schedulercbsgetserverid.c \
258    src/schedulercbssetparameters.c \
259    src/schedulercbsreleasejob.c \
260    src/schedulercbsunblock.c
261
262## PROTECTED_HEAP_C_FILES
263libscore_a_SOURCES += src/pheapallocate.c \
264    src/pheapextend.c src/pheapfree.c src/pheapgetsize.c \
265    src/pheapgetblocksize.c src/pheapgetfreeinfo.c src/pheapgetinfo.c \
266    src/pheapinit.c src/pheapresizeblock.c src/pheapwalk.c src/pheapiterate.c
267
268## RBTREE_C_FILES
269libscore_a_SOURCES += src/rbtree.c \
270    src/rbtreeextract.c src/rbtreefind.c src/rbtreefindheader.c \
271    src/rbtreeget.c src/rbtreeinsert.c src/rbtreeiterate.c src/rbtreenext.c
272
273## THREAD_C_FILES
274libscore_a_SOURCES += src/thread.c src/threadchangepriority.c \
275    src/threadclearstate.c src/threadclose.c src/threadcreateidle.c \
276    src/threaddelayended.c src/threaddispatch.c \
277    src/threadenabledispatch.c src/threaddisabledispatch.c \
278    src/threadget.c src/threadhandler.c src/threadinitialize.c \
279    src/threadloadenv.c src/threadready.c src/threadreset.c \
280    src/threadrestart.c src/threadsetpriority.c \
281    src/threadsetstate.c src/threadsettransient.c \
282    src/threadstackallocate.c src/threadstackfree.c src/threadstart.c \
283    src/threadstartmultitasking.c src/iterateoverthreads.c \
284    src/threadblockingoperationcancel.c
285   
286if HAS_SMP
287libscore_a_SOURCES += src/threaddispatchdisablelevel.c
288endif
289
290## THREADQ_C_FILES
291libscore_a_SOURCES += src/threadq.c src/threadqdequeue.c \
292    src/threadqdequeuefifo.c src/threadqdequeuepriority.c \
293    src/threadqenqueue.c src/threadqenqueuefifo.c \
294    src/threadqenqueuepriority.c src/threadqextract.c \
295    src/threadqextractfifo.c src/threadqextractpriority.c \
296    src/threadqextractwithproxy.c src/threadqfirst.c src/threadqfirstfifo.c \
297    src/threadqfirstpriority.c src/threadqflush.c src/threadqrequeue.c \
298    src/threadqprocesstimeout.c src/threadqtimeout.c
299
300## TIMESPEC_C_FILES
301libscore_a_SOURCES += src/timespecaddto.c src/timespecfromticks.c \
302    src/timespecisvalid.c src/timespeclessthan.c \
303    src/timespecsubtract.c src/timespectoticks.c src/timespecdivide.c \
304    src/timespecdividebyinteger.c
305
306## TIMESTAMP_INT64_C_FILES
307libscore_a_SOURCES += src/ts64addto.c src/ts64dividebyinteger.c \
308    src/ts64divide.c src/ts64equalto.c \
309    src/ts64getnanoseconds.c src/ts64getseconds.c \
310    src/ts64lessthan.c \
311    src/ts64set.c src/ts64settozero.c src/ts64subtract.c \
312    src/ts64toticks.c src/ts64totimespec.c src/ts64totimeval.c
313
314## TOD_C_FILES
315libscore_a_SOURCES += src/coretod.c src/coretodset.c src/coretodget.c \
316    src/coretodgetuptimetimespec.c src/coretodtickle.c \
317    src/coretodmsecstoticks.c src/coretodtickspersec.c src/coretodusectoticks.c
318
319## WATCHDOG_C_FILES
320libscore_a_SOURCES += src/watchdog.c src/watchdogadjust.c \
321    src/watchdogadjusttochain.c src/watchdoginsert.c src/watchdogremove.c \
322    src/watchdogtickle.c src/watchdogreport.c src/watchdogreportchain.c \
323    src/watchdognanoseconds.c
324
325## USEREXT_C_FILES
326libscore_a_SOURCES += src/userextaddset.c \
327    src/userext.c src/userextremoveset.c src/userextiterate.c
328
329## STD_C_FILES
330libscore_a_SOURCES += src/apiext.c src/chain.c src/chainappend.c \
331    src/chainextract.c src/chainget.c src/chaininsert.c \
332    src/chainappendempty.c src/chainprependempty.c src/chaingetempty.c \
333    src/chainnodecount.c \
334    src/interr.c src/isr.c src/wkspace.c src/wkstringduplicate.c
335
336EXTRA_DIST = src/Unlimited.txt
337
338DISTCLEANFILES = include/rtems/score/cpuopts.h
339
340include $(srcdir)/preinstall.am
341include $(top_srcdir)/automake/subdirs.am
342include $(top_srcdir)/automake/local.am
Note: See TracBrowser for help on using the repository browser.