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

5
Last change on this file since d0c39838 was d0c39838, checked in by Sebastian Huber <sebastian.huber@…>, on 09/22/15 at 14:21:12

Use linker set for system initialization

Make rtems_initialize_data_structures(),
rtems_initialize_before_drivers() and rtems_initialize_device_drivers()
static. Rename rtems_initialize_start_multitasking() to
rtems_initialize_executive() and call the registered system
initialization handlers in this function. Add system initialization API
available via #include <rtems/sysinit.h>. Update the documentation
accordingly.

This is no functional change, only the method to call the existing
initialization routines changes. Instead of direct function calls a
table of function pointers contained in the new RTEMS system
initialization linker set is used. This table looks like this (the
actual addresses depend on the target).

nm *.exe | grep _Linker | sort
0201a2d0 D _Linker_setSysinit_begin
0201a2d0 D _Linker_set
Sysinit_bsp_work_area_initialize
0201a2d4 D _Linker_setSysinit_bsp_start
0201a2d8 D _Linker_set
Sysinit_rtems_initialize_data_structures
0201a2dc D _Linker_setSysinit_bsp_libc_init
0201a2e0 D _Linker_set
Sysinit_rtems_initialize_before_drivers
0201a2e4 D _Linker_setSysinit_bsp_predriver_hook
0201a2e8 D _Linker_set
Sysinit_rtems_initialize_device_drivers
0201a2ec D _Linker_setSysinit_bsp_postdriver_hook
0201a2f0 D _Linker_set
Sysinit_end

Add test sptests/spsysinit01.

Update #2408.

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