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

4.115
Last change on this file since a936aa49 was a936aa49, checked in by Sebastian Huber <sebastian.huber@…>, on 06/06/13 at 13:41:00

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
RevLine 
[0c819966]1include $(top_srcdir)/automake/multilib.am
[53fa63e]2include $(top_srcdir)/automake/compile.am
[e1d8abb]3
[4df3f89]4SUBDIRS = cpu
[0c819966]5
6## include
7
8include_rtemsdir = $(includedir)/rtems
9
[a2680da0]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
[0c819966]14
15include_rtems_scoredir = $(includedir)/rtems/score
16
[a2680da0]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
[df00777]32include_rtems_score_HEADERS += include/rtems/score/isrlevel.h
[a2680da0]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
[82db8e56]39include_rtems_score_HEADERS += include/rtems/score/schedulercbs.h
[5472ad41]40include_rtems_score_HEADERS += include/rtems/score/scheduleredf.h
[a2680da0]41include_rtems_score_HEADERS += include/rtems/score/schedulerpriority.h
42include_rtems_score_HEADERS += include/rtems/score/schedulersimple.h
[edde99b]43include_rtems_score_HEADERS += include/rtems/score/smp.h
[3ccce23]44include_rtems_score_HEADERS += include/rtems/score/smplock.h
[a2680da0]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
[4fc370e]49include_rtems_score_HEADERS += include/rtems/score/threaddispatch.h
[a2680da0]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
[3be0c9a]58include_rtems_score_HEADERS += include/rtems/score/userextimpl.h
[a2680da0]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
[9d23df2]63include_rtems_score_HEADERS += include/rtems/score/atomic.h
64include_rtems_score_HEADERS += include/rtems/score/genericcpuatomic.h
[f6db560]65include_rtems_score_HEADERS += include/rtems/score/genericatomicops.h
[42bb344e]66
[88157a7]67if HAS_PTHREADS
[a2680da0]68include_rtems_score_HEADERS += include/rtems/score/corespinlock.h
69include_rtems_score_HEADERS += include/rtems/score/corerwlock.h
[0df035b]70endif
71
[0c819966]72if HAS_MP
[8f83131]73# We only build multiprocessing related files if HAS_MP was defined
[a2680da0]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
[0c819966]78endif
79
[ba7bc099]80if HAS_SMP
81include_rtems_score_HEADERS += include/rtems/score/schedulersimplesmp.h
82endif
83
[0c819966]84## inline
[a2680da0]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
[9d23df2]109include_rtems_score_HEADERS += inline/rtems/score/atomic.inl
[88157a7]110
111if HAS_PTHREADS
[a2680da0]112include_rtems_score_HEADERS += inline/rtems/score/corespinlock.inl
113include_rtems_score_HEADERS += inline/rtems/score/corerwlock.inl
[0df035b]114endif
[8f83131]115
[0c819966]116if HAS_MP
[8f83131]117## We only build multiprocessing related files if HAS_MP was defined
[a2680da0]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
[0c819966]121endif
122
123## src
124
[4df3f89]125AM_CPPFLAGS += -D__RTEMS_INSIDE__
126
127noinst_LIBRARIES = libscore.a
128libscore_a_SOURCES =
129libscore_a_CPPFLAGS = $(AM_CPPFLAGS)
130
[0c819966]131# We only build multiprocessing related files if HAS_MP was defined
[4df3f89]132if HAS_MP
133libscore_a_SOURCES += src/mpci.c src/objectmp.c src/threadmp.c
134endif
[0c819966]135
[42bb344e]136if HAS_SMP
[a936aa49]137libscore_a_SOURCES += src/isrsmp.c
138libscore_a_SOURCES += src/schedulersimplesmp.c
139libscore_a_SOURCES += src/smp.c
[42bb344e]140endif
[06dcaf0]141
[8fd28d83]142## CORE_APIMUTEX_C_FILES
143libscore_a_SOURCES += src/apimutex.c src/apimutexallocate.c \
144    src/apimutexlock.c src/apimutexunlock.c
145
[9c191ee]146## CORE_BARRIER_C_FILES
147libscore_a_SOURCES += src/corebarrier.c src/corebarrierrelease.c \
148    src/corebarrierwait.c
149
[4df3f89]150## CORE_MESSAGE_QUEUE_C_FILES
151libscore_a_SOURCES += src/coremsg.c src/coremsgbroadcast.c \
[8f83131]152    src/coremsgclose.c src/coremsgflush.c src/coremsgflushwait.c \
153    src/coremsginsert.c src/coremsgflushsupp.c src/coremsgseize.c \
154    src/coremsgsubmit.c
[0c819966]155
[4df3f89]156## CORE_MUTEX_C_FILES
157libscore_a_SOURCES += src/coremutex.c src/coremutexflush.c \
[bc2b8df6]158    src/coremutexseize.c src/coremutexsurrender.c \
159    src/coremutexseizeintr.c
[0c819966]160
[11e8bc5]161## CORE_PERCPU_C_FILES
162libscore_a_SOURCES += src/percpu.c
[f1738ed]163libscore_a_SOURCES += src/percpuasm.c
[11e8bc5]164
[9c191ee]165## CORE_RWLOCK_C_FILES
[88157a7]166if HAS_PTHREADS
[9c191ee]167libscore_a_SOURCES += src/corerwlock.c src/corerwlockobtainread.c \
[047d67a]168    src/corerwlockobtainwrite.c src/corerwlockrelease.c src/corerwlocktimeout.c
[88157a7]169endif
[9c191ee]170
[4df3f89]171## CORE_SEMAPHORE_C_FILES
172libscore_a_SOURCES += src/coresem.c src/coresemflush.c src/coresemseize.c \
[0c819966]173    src/coresemsurrender.c
174
[9c191ee]175## CORE_SPINLOCK_C_FILES
[88157a7]176if HAS_PTHREADS
[9c191ee]177libscore_a_SOURCES += src/corespinlock.c src/corespinlockrelease.c \
178    src/corespinlockwait.c
[0df035b]179endif
[9c191ee]180
[4df3f89]181## HEAP_C_FILES
[e746a88]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 \
[28a0887]184    src/heapgetfreeinfo.c src/heapresizeblock.c src/heapiterate.c \
[6ccfe72]185    src/heapgreedy.c src/heapnoextend.c
[0c819966]186
[4df3f89]187## OBJECT_C_FILES
[584ab9e]188libscore_a_SOURCES += src/objectallocate.c src/objectclose.c \
[ce19f1fa]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 \
[ff08b808]192    src/objectshrinkinformation.c src/objectgetnoprotection.c \
[6c06288]193    src/objectidtoname.c src/objectgetnameasstring.c src/objectsetname.c \
[9184270]194    src/objectgetinfo.c src/objectgetinfoid.c src/objectapimaximumclass.c \
[fe1dc22]195    src/objectnamespaceremove.c \
196    src/objectactivecount.c
[0c819966]197
[0faa9dad]198## SCHEDULER_C_FILES
199libscore_a_SOURCES += src/scheduler.c
[a344308]200libscore_a_SOURCES += src/schedulerdefaulttick.c
[1ccb64e1]201libscore_a_SOURCES += src/schedulerdefaultstartidle.c
[0faa9dad]202
203## SCHEDULERPRIORITY_C_FILES
204libscore_a_SOURCES += src/schedulerpriority.c \
[108c4b0]205    src/schedulerpriorityallocate.c \
206    src/schedulerpriorityblock.c \
207    src/schedulerpriorityenqueue.c \
208    src/schedulerpriorityenqueuefirst.c \
209    src/schedulerpriorityextract.c \
210    src/schedulerpriorityfree.c \
[ac9d2ecc]211    src/schedulerpriorityprioritycompare.c \
212    src/schedulerpriorityreleasejob.c \
[108c4b0]213    src/schedulerpriorityschedule.c \
214    src/schedulerpriorityunblock.c \
215    src/schedulerpriorityupdate.c \
216    src/schedulerpriorityyield.c
[0faa9dad]217
[0118ed6]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
[5472ad41]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
[82db8e56]245## SCHEDULERCBS_C_FILES
246libscore_a_SOURCES += src/schedulercbs.c \
[7a9288fe]247    src/schedulercbsallocate.c \
[82db8e56]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
[e746a88]262## PROTECTED_HEAP_C_FILES
[9224a751]263libscore_a_SOURCES += src/pheapallocate.c \
[7246c8e9]264    src/pheapextend.c src/pheapfree.c src/pheapgetsize.c \
265    src/pheapgetblocksize.c src/pheapgetfreeinfo.c src/pheapgetinfo.c \
[a89ae540]266    src/pheapinit.c src/pheapresizeblock.c src/pheapwalk.c src/pheapiterate.c
[e746a88]267
[bd9baa81]268## RBTREE_C_FILES
269libscore_a_SOURCES += src/rbtree.c \
270    src/rbtreeextract.c src/rbtreefind.c src/rbtreefindheader.c \
[0f31ec5d]271    src/rbtreeget.c src/rbtreeinsert.c src/rbtreeiterate.c src/rbtreenext.c
[bd9baa81]272
[4df3f89]273## THREAD_C_FILES
274libscore_a_SOURCES += src/thread.c src/threadchangepriority.c \
[8f83131]275    src/threadclearstate.c src/threadclose.c src/threadcreateidle.c \
[569b3f4]276    src/threaddelayended.c src/threaddispatch.c \
[d7c3883]277    src/threadenabledispatch.c src/threaddisabledispatch.c \
[93f7ea15]278    src/threadget.c src/threadhandler.c src/threadinitialize.c \
[8bef4cc]279    src/threadloadenv.c src/threadready.c src/threadreset.c \
[59eb125]280    src/threadrestart.c src/threadsetpriority.c \
[8bef4cc]281    src/threadsetstate.c src/threadsettransient.c \
[93f7ea15]282    src/threadstackallocate.c src/threadstackfree.c src/threadstart.c \
[3203e09]283    src/threadstartmultitasking.c src/iterateoverthreads.c \
284    src/threadblockingoperationcancel.c
[3a8a999]285   
286if HAS_SMP
287libscore_a_SOURCES += src/threaddispatchdisablelevel.c
288endif
[0c819966]289
[4df3f89]290## THREADQ_C_FILES
291libscore_a_SOURCES += src/threadq.c src/threadqdequeue.c \
[8f83131]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 \
[96d0b64]297    src/threadqfirstpriority.c src/threadqflush.c src/threadqrequeue.c \
[c57f26bd]298    src/threadqprocesstimeout.c src/threadqtimeout.c
[0c819966]299
[fc054ca]300## TIMESPEC_C_FILES
[412dbff6]301libscore_a_SOURCES += src/timespecaddto.c src/timespecfromticks.c \
[3a42e6fd]302    src/timespecisvalid.c src/timespeclessthan.c \
[c3330a8]303    src/timespecsubtract.c src/timespectoticks.c src/timespecdivide.c \
304    src/timespecdividebyinteger.c
[fc054ca]305
[e57cb3c]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 \
[3a42e6fd]310    src/ts64lessthan.c \
[e57cb3c]311    src/ts64set.c src/ts64settozero.c src/ts64subtract.c \
[154721c4]312    src/ts64toticks.c src/ts64totimespec.c src/ts64totimeval.c
[e57cb3c]313
[4df3f89]314## TOD_C_FILES
[812da54]315libscore_a_SOURCES += src/coretod.c src/coretodset.c src/coretodget.c \
[62181b21]316    src/coretodgetuptimetimespec.c src/coretodtickle.c \
[26fb4aa]317    src/coretodmsecstoticks.c src/coretodtickspersec.c src/coretodusectoticks.c
[0c819966]318
[4df3f89]319## WATCHDOG_C_FILES
[812da54]320libscore_a_SOURCES += src/watchdog.c src/watchdogadjust.c \
[109ace3a]321    src/watchdogadjusttochain.c src/watchdoginsert.c src/watchdogremove.c \
[18657d1]322    src/watchdogtickle.c src/watchdogreport.c src/watchdogreportchain.c \
323    src/watchdognanoseconds.c
[0c819966]324
[c3db01d0]325## USEREXT_C_FILES
[b7de5de]326libscore_a_SOURCES += src/userextaddset.c \
[32b2c83]327    src/userext.c src/userextremoveset.c src/userextiterate.c
[c3db01d0]328
[4df3f89]329## STD_C_FILES
[c3db01d0]330libscore_a_SOURCES += src/apiext.c src/chain.c src/chainappend.c \
331    src/chainextract.c src/chainget.c src/chaininsert.c \
[a19ae9ec]332    src/chainappendempty.c src/chainprependempty.c src/chaingetempty.c \
[cbd07e4]333    src/chainnodecount.c \
[141b311]334    src/interr.c src/isr.c src/wkspace.c src/wkstringduplicate.c
[0c819966]335
[4768a274]336EXTRA_DIST = src/Unlimited.txt
[0c819966]337
[dbe8e519]338DISTCLEANFILES = include/rtems/score/cpuopts.h
[8f83131]339
[6265b83]340include $(srcdir)/preinstall.am
[fed6210d]341include $(top_srcdir)/automake/subdirs.am
342include $(top_srcdir)/automake/local.am
Note: See TracBrowser for help on using the repository browser.