summaryrefslogtreecommitdiffstats
path: root/Master/Real-Time Systems/Praktikum1/Aufgabe1
diff options
context:
space:
mode:
Diffstat (limited to 'Master/Real-Time Systems/Praktikum1/Aufgabe1')
-rw-r--r--Master/Real-Time Systems/Praktikum1/Aufgabe1/.cproject325
-rw-r--r--Master/Real-Time Systems/Praktikum1/Aufgabe1/.project78
-rw-r--r--Master/Real-Time Systems/Praktikum1/Aufgabe1/Makefile49
-rw-r--r--Master/Real-Time Systems/Praktikum1/Aufgabe1/src/main.cpp195
4 files changed, 647 insertions, 0 deletions
diff --git a/Master/Real-Time Systems/Praktikum1/Aufgabe1/.cproject b/Master/Real-Time Systems/Praktikum1/Aufgabe1/.cproject
new file mode 100644
index 0000000..bb5f1ad
--- /dev/null
+++ b/Master/Real-Time Systems/Praktikum1/Aufgabe1/.cproject
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?>
+
+<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="cdt.managedbuild.toolchain.gnu.base.1558666333">
+<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1558666333" moduleId="org.eclipse.cdt.core.settings" name="Default">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<configuration artifactName="Aufgabe1" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1558666333" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
+<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1558666333.1984080204" name="/" resourcePath="">
+<toolChain id="cdt.managedbuild.toolchain.gnu.base.512081926" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base">
+<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.1986976681" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
+<builder id="cdt.managedbuild.target.gnu.builder.base.955044668" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
+<tool id="cdt.managedbuild.tool.gnu.archiver.base.796301174" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1098688671" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1767651157" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.252239008" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
+<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1424581121" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.c.linker.base.207422333" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
+<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.269282950" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
+<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2107672036" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+</inputType>
+</tool>
+<tool id="cdt.managedbuild.tool.gnu.assembler.base.355824222" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
+<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1472786683" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+</tool>
+</toolChain>
+</folderInfo>
+<sourceEntries>
+<entry excluding="src" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
+<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+</sourceEntries>
+</configuration>
+</storageModule>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
+<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
+<buildTargets>
+<target name="all" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>all</buildTarget>
+<stopOnError>true</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+<target name="clean" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
+<buildCommand>make</buildCommand>
+<buildArguments/>
+<buildTarget>clean</buildTarget>
+<stopOnError>true</stopOnError>
+<useDefaultCommand>true</useDefaultCommand>
+<runAllBuilders>true</runAllBuilders>
+</target>
+</buildTargets>
+</storageModule>
+<storageModule moduleId="scannerConfiguration">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1558666333;cdt.managedbuild.toolchain.gnu.base.1558666333.1984080204;cdt.managedbuild.tool.gnu.c.compiler.base.252239008;cdt.managedbuild.tool.gnu.c.compiler.input.1424581121">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1558666333;cdt.managedbuild.toolchain.gnu.base.1558666333.1984080204;cdt.managedbuild.tool.gnu.cpp.compiler.base.1098688671;cdt.managedbuild.tool.gnu.cpp.compiler.input.1767651157">
+<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="makefileGenerator">
+<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/${specs_file}&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'g++ -E -P -v -dD &quot;${plugin_state_location}/specs.cpp&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
+<buildOutputProvider>
+<openAction enabled="true" filePath=""/>
+<parser enabled="true"/>
+</buildOutputProvider>
+<scannerInfoProvider id="specsFile">
+<runAction arguments="-c 'gcc -E -P -v -dD &quot;${plugin_state_location}/specs.c&quot;'" command="sh" useDefault="true"/>
+<parser enabled="true"/>
+</scannerInfoProvider>
+</profile>
+</scannerConfigBuildInfo>
+</storageModule>
+</cconfiguration>
+</storageModule>
+<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+<project id="Aufgabe1.null.1680394135" name="Aufgabe1"/>
+</storageModule>
+</cproject>
diff --git a/Master/Real-Time Systems/Praktikum1/Aufgabe1/.project b/Master/Real-Time Systems/Praktikum1/Aufgabe1/.project
new file mode 100644
index 0000000..2c30c84
--- /dev/null
+++ b/Master/Real-Time Systems/Praktikum1/Aufgabe1/.project
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>RTS_P1_1</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
diff --git a/Master/Real-Time Systems/Praktikum1/Aufgabe1/Makefile b/Master/Real-Time Systems/Praktikum1/Aufgabe1/Makefile
new file mode 100644
index 0000000..e5c163d
--- /dev/null
+++ b/Master/Real-Time Systems/Praktikum1/Aufgabe1/Makefile
@@ -0,0 +1,49 @@
+#
+# Variables
+#
+PROJECT_ROOT = .
+BUILDDIR = $(PROJECT_ROOT)/build
+SOURCEDIR = $(PROJECT_ROOT)/src
+INCLUDEDIRS = $(SOURCEDIR)
+INCLUDES = $(addprefix -I,$(INCLUDEDIRS))
+LIBNAMES = pthread
+LIBS = $(addprefix -l,$(LIBNAMES))
+DEBUGFLAGS = -g
+CFLAGS = -Wall -DDEBUG_MODE -DDEBUG
+CFLAGS += -DLINUX $(DEBUGFLAGS)
+LDFLAGS = $(DEBUGFLAGS)
+CC = g++
+LD = g++
+
+LINK_TARGET = $(BUILDDIR)/regelungsverfahren
+
+SOURCES := $(wildcard $(SOURCEDIR)/*.cpp)
+
+OBJS_TMP := $(foreach srcfile,$(SOURCES),$(srcfile).o)
+OBJS := $(foreach tmp,$(OBJS_TMP),$(patsubst $(SOURCEDIR)/%.cpp.o,$(BUILDDIR)/%.o,$(tmp)))
+
+REBUILDABLES = $(OBJS) $(LINK_TARGET)
+
+.PHONY: clean
+clean :
+ rm -f $(REBUILDABLES)
+ rm -f $(BUILDDIR)/*
+ rmdir $(BUILDDIR)
+ @echo Clean done
+
+all : builddir $(LINK_TARGET)
+ @echo All done
+
+builddir :
+ @echo 'Creating build directory'
+ mkdir -p $(BUILDDIR)
+
+$(LINK_TARGET) : $(OBJS)
+ @echo 'Linking file: $@'
+ $(LD) $(LDFLAGS) $(LIBS) -o $@ $^
+
+$(BUILDDIR)/%.o : $(SOURCEDIR)/%.cpp
+ @echo 'Building file: $<'
+ $(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<
+
+
diff --git a/Master/Real-Time Systems/Praktikum1/Aufgabe1/src/main.cpp b/Master/Real-Time Systems/Praktikum1/Aufgabe1/src/main.cpp
new file mode 100644
index 0000000..65eef37
--- /dev/null
+++ b/Master/Real-Time Systems/Praktikum1/Aufgabe1/src/main.cpp
@@ -0,0 +1,195 @@
+/*
+ * main.cpp
+ *
+ * Created on: 31.10.2010
+ * Author: sven
+ */
+#include <pthread.h>
+#include <semaphore.h>
+#include <time.h>
+#include <sys/time.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+// debug printing
+#ifdef DEBUG_MODE
+#include <stdio.h>
+ #define DEBUG_PRINT(format, args...)\
+ {\
+ static char message[512];\
+ snprintf(message,512,format, ##args);\
+ fprintf(stdout, "[%s: %d] : %s\n", __PRETTY_FUNCTION__,__LINE__, message);\
+ fflush(stdout);\
+ }
+#else
+ #define DEBUG_PRINT(format, args...)
+#endif // DEBUG_MODE
+
+/*
+ * global variables
+ */
+sem_t main_block,timer_block;
+pthread_t timer_thread;
+bool stop_timer_thread = false;
+pthread_mutex_t stop_mutex = PTHREAD_MUTEX_INITIALIZER;
+// 0 sec
+const long TIMER_INTERVAL_SECS = 0;
+// 10 msec
+const long TIMER_INTERVAL_USECS = 10000;
+
+struct sigaction timer_action, quit_action;
+/*
+ * function prototypes
+ */
+void readSensors();
+void initializeClock();
+void initializeMain();
+void WaitForNextCycle();
+void ActuateProcess();
+bool CalculateNewSetValues();
+void Error();
+void* TimerThreadProc(void*);
+void timer_handler(int);
+
+void* TimerThreadProc(void*) {
+ /**
+ * Timer code originally from
+ * http://www.informit.com/articles/article.aspx?p=23618&seqNum=14
+ */
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ bool stop_me = false;
+ struct itimerval timer;
+ /* Install timer_handler as the signal handler for SIGALRM. */
+ timer_action.sa_handler = timer_handler;
+ sigemptyset(&timer_action.sa_mask);
+ timer_action.sa_flags = 0;
+ sigaction(SIGALRM,&timer_action,NULL);
+
+ /* Configure the timer to expire after
+ * TIMER_INTERVAL_SECS + TIMER_INTERVAL_USECS... */
+ timer.it_value.tv_sec = TIMER_INTERVAL_SECS;
+ timer.it_value.tv_usec = TIMER_INTERVAL_USECS;
+ /* ... and every TIMER_INTERVAL_SECS+TIMER_INTERVAL_USECS after that. */
+ timer.it_interval.tv_sec = TIMER_INTERVAL_SECS;
+ timer.it_interval.tv_usec = TIMER_INTERVAL_USECS;
+ /* If the timer code is ITIMER_REAL,
+ * the process is sent a SIGALRM signal after the
+ * specified wall-clock time has elapsed*/
+ setitimer (ITIMER_REAL, &timer, NULL);
+ while(1) {
+ pthread_mutex_lock(&stop_mutex);
+ stop_me = stop_timer_thread;
+ pthread_mutex_unlock(&stop_mutex);
+ if(stop_me) {
+ DEBUG_PRINT("exiting thread Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ pthread_exit(NULL);
+ }
+ DEBUG_PRINT("waiting for timer_handler Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ sem_wait(&timer_block);
+ DEBUG_PRINT("waking up main Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ sem_post(&main_block);
+ }
+ DEBUG_PRINT("should never happen Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ return NULL;
+}
+
+void timer_handler(int signum) {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ static int count = 0;
+ DEBUG_PRINT("timer expired %d times", ++count);
+ sem_post(&timer_block);
+ DEBUG_PRINT("exit");
+}
+
+void quit_handler(int signum) {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ int semval;
+ pthread_mutex_lock(&stop_mutex);
+ stop_timer_thread = true;
+ pthread_mutex_unlock(&stop_mutex);
+ sem_getvalue(&timer_block,&semval);
+ if(semval > 0) {
+ DEBUG_PRINT("waking up timer thread");
+ sem_post(&timer_block);
+ }
+ pthread_join(timer_thread,NULL);
+ DEBUG_PRINT("Joined timer thread");
+ //clean up
+ sem_destroy(&timer_block);
+ sem_destroy(&main_block);
+ pthread_mutex_destroy(&stop_mutex);
+ DEBUG_PRINT("exit");
+ exit(EXIT_SUCCESS);
+}
+
+void WaitForNextCycle() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ sem_wait(&main_block);
+ DEBUG_PRINT("exit");
+}
+
+void readSensors() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ struct timeval tv;
+ struct timezone tz;
+ struct tm *tm;
+ gettimeofday(&tv, &tz);
+ tm=localtime(&tv.tv_sec);
+ printf(" %d:%02d:%02d %lu \n", tm->tm_hour, tm->tm_min,
+ tm->tm_sec, tv.tv_usec);
+ DEBUG_PRINT("exit");
+}
+void Error() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ DEBUG_PRINT("exit");
+}
+bool CalculateNewSetValues() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ DEBUG_PRINT("exit");
+ return true;
+}
+void ActuateProcess() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ DEBUG_PRINT("exit");
+}
+void initializeClock()
+{
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+ pthread_create(&timer_thread,NULL,TimerThreadProc,NULL);
+ DEBUG_PRINT("exit");
+}
+
+void initializeMain() {
+ DEBUG_PRINT("entry Process: %d Thread: %lu",(int)getpid(),pthread_self());
+
+ /* init semaphore as closed */
+ sem_init(&main_block,0,0);
+ sem_init(&timer_block,0,0);
+
+ /* catch all interesting signals */
+ quit_action.sa_handler = quit_handler;
+ sigemptyset(&quit_action.sa_mask);
+ quit_action.sa_flags = 0;
+ sigaction(SIGTERM,&quit_action,NULL);
+ sigaction(SIGQUIT,&quit_action,NULL);
+ sigaction(SIGINT,&quit_action,NULL);
+ sigaction(SIGHUP,&quit_action,NULL);
+ DEBUG_PRINT("exit");
+}
+
+int main(int argc, char* argv[])
+{
+ initializeMain();
+ initializeClock();
+ while(1) {
+ readSensors();
+ if(CalculateNewSetValues())
+ ActuateProcess();
+ else
+ Error();
+ WaitForNextCycle();
+ }
+ return EXIT_SUCCESS;
+}