1. 01 Apr, 2015 3 commits
  2. 19 Mar, 2015 2 commits
  3. 18 Mar, 2015 2 commits
    • Christian Dietrich's avatar
      generator: oil reading and llvmpy reading as passes · 29712a1c
      Christian Dietrich authored
      Reading the OIL file and the llvmpy basic blocks is done in
      passes. Therefore, we can omit them in the future, if wanted.
      Change-Id: Ideef98fc1d9a74af498c522b1509a9d9f2289c92
    • Christian Dietrich's avatar
      generator: big refactoring · 225fb0b0
      Christian Dietrich authored
      Rename all parts in a more logical way. The generator is now divided
      into three main parts:
        - analysis: Generate GCFG and State Transition graph
        - transform: Generate Assertions, CFG Regions, FSMs
        - coder: bring the information collected in the previous steps down to
                 the code.
      Change-Id: I5cfd48f6a8d195c30b16b425eda010d9b0405dcd
  4. 17 Mar, 2015 2 commits
  5. 11 Mar, 2015 1 commit
    • Christian Dietrich's avatar
      FSM: Adapt Semantic to make fsm coder possible · afdc8a91
      Christian Dietrich authored
      In order to use a finite state automata as OS implementation, I had to
      adjust major parts of the interrupt semantic. Also was the
      FiniteStateMachineBuilder flawed, but seems to work now. I could
      successfully encode almost all posix test-cases (including
      bench-coptermock) as state machines.
      Change-Id: Ie5ce6ab4e3f282fa3044026e3ef4f5c8d773b3a3
  6. 06 Mar, 2015 1 commit
    • Christian Dietrich's avatar
      ABB merge: use dominance/postdominance information · 4ce804b6
      Christian Dietrich authored
      In order to cope better with large complex applications, like KESO
      applications, we implement an additional merging strategy: use dominance
      and post-dominance relationship.
      The immediate dominator and an post-dominator form an single-entry
      single-exit region for an ABB. (I tried to implement the linear time
      johnson PLDI'94 algorithm, but failed..) So if this SESE region is
      mergable, we can simply merge it!
      Result on keso_gc_coffebreak:
        SSE states before: 47802
        SSE states after: 30064
      Change-Id: I8c58fcb5d0df4053d9dbf1cc2b055d32663e4207
  7. 05 Mar, 2015 2 commits
  8. 04 Mar, 2015 5 commits
    • Christian Dietrich's avatar
      generator: add option to ignore irq functions · 25889a17
      Christian Dietrich authored
      The disable and enable irq functions are used very fine grained, and
      deep down in the call hierarchy. Therefore, we add an option to ignore
      them as system calls and provide default implementations in os/isr.cc
      Change-Id: Iff77dc09e9f82a65e18599e71b9a3e0db139f0f2
    • Christian Dietrich's avatar
      generator: Extract constant event masks from the code · 2459d478
      Christian Dietrich authored
      KESO uses integer constants as mask references, if the mask is given as
      number in the KCL file. Therefore we have to extract it from the LLVM Bitcode.
      Change-Id: Ib6c8b8ca4a9988982544c98221fa71ba6fac5a16
    • Christian Dietrich's avatar
      os/hooks: added ShutdownHook · 2d175a09
      Christian Dietrich authored
      The ShutdownHook is called on ShutdownOS with the given StatusType.
      Change-Id: I481c9ff87a543158ab50a818671a327e96b2e57a
    • Christian Dietrich's avatar
      arm/i386: added memset/memcpy · dca3609a
      Christian Dietrich authored
      For some reason (probably some kind of -ftree-loop-distribute-patterns),
      clang does emit calls to memset and memcpy. For the embedded platforms,
      we therefore provide implementations.
      Change-Id: Id52cf0f14c7d53beb3611eb97f998dc203b8733f
    • Martin Hoffmann's avatar
      KESO support: Initial KESO support. · dd3d4d3c
      Martin Hoffmann authored
      Currently working: i386, posix, and ARM.
      For ARM, we had to increase the simulator RAM to 16 Mbyte. Until now no
      memory protection support is available.
      Change-Id: I87d26b2dc96a4901bd15723693fd3d5db478a73c
  9. 03 Mar, 2015 2 commits
    • Christian Dietrich's avatar
      os/api: use proper system object identifiers · b25ac267
      Christian Dietrich authored
      Until now pointers pseudo-structs were used to identify system objects
      in the application, when parsing the system call arguments. We achieve
      higher compatibility with foreign projects (KESO), if using integer
      Change-Id: I4fa3e0a6053d810417957ede767d2321288ab040
    • Christian Dietrich's avatar
      hooks: return type must be given in application · 6dec5d35
      Christian Dietrich authored
      The application can no longer write
         PreTaskHook() {}
      but must write
         void PreTaskHook() {}
      This improves compatibility with KESO and other OSEK implementations.
      Change-Id: Ie3a8a1c2ad9cb16b0f4b23e32b1d2b5be22d3880
  10. 25 Feb, 2015 3 commits
    • Christian Dietrich's avatar
      assertions: assertions on the event state · f2befe06
      Christian Dietrich authored
      We can generate system state assertions, if we have enough knowledge
      about their state. These assertions compare the current event mask for a
      task with a precalculated value.
      Change-Id: I11115962429513d59b2ad039bc96207f4177ef43
    • Christian Dietrich's avatar
      generator: redistribute classes on files · 61d6f2d5
      Christian Dietrich authored
      In SystemSemantic.py, not only the SystemSemantic class was placed but
      also the *SystemState classes. These have now their own files.
      Change-Id: I554325962b2d50eb18e867699ad968c64f4fd883
    • Christian Dietrich's avatar
      unencoded/scheduler: reset events on activate · 0dff264e
      Christian Dietrich authored
      The SetReadyFromSuspended was not correctly implemented in case of
      events. Events must be cleared in this function.
      Change-Id: I2a37e74677d7023d9d97d22224922a4859528804
  11. 24 Feb, 2015 2 commits
    • Christian Dietrich's avatar
      Event Support: Bugfix for non-preemptable tasks · c5de7c21
      Christian Dietrich authored
      This was a hard one! When non preemptable tasks do an WaitEvent and
      _block_ they fall back to their original priority. In the unencoded
      dOSEK this was already implemented. But for the encoded dOSEK we had to
      implement a encoded path. It is now done with a little bit of ANBD
      magic. See os/scheduler/tasklist.h.in for the detailed documentation.
      Change-Id: Ie5e894030294503b4afed0364c4340e1dda6e34c
    • Christian Dietrich's avatar
      Event Support: Support Events in ISRs · 90a37188
      Christian Dietrich authored
      With event support in interrupts we're nearly there at the ecc1
      OSEK. One problem stil arises from non-preemptable tasks.
      Change-Id: Ia29b2b61224078bafda8a299a6ddca89f44113f7
  12. 23 Feb, 2015 1 commit
    • Christian Dietrich's avatar
      Event Support: Implementation for Encoded dOSEK · 89354fd9
      Christian Dietrich authored
      The encoded variant uses a more complex scheme that uses 8 byte per
      receivable event for each thread. For the details on the implementation
      see os/scheduler/events-encoded.h.
      Briefly explained, if a subtask waits for an event, we let its priority
      drop below the idle priority.
      Change-Id: Id553ec581f13ef454140ea73b48669f937a11fd8
  13. 20 Feb, 2015 2 commits
  14. 16 Feb, 2015 4 commits
    • Christian Dietrich's avatar
      Event Support: Disable state flow analysis on events · c17c7cad
      Christian Dietrich authored
      If we encouter an application with events, we do not use the
      System-State Flow Analysis.
      Change-Id: I81c30083a95157b64d114a6b8081b11eb43b55d8
    • Christian Dietrich's avatar
      Event Support: more testcases and bugfix · e83d646f
      Christian Dietrich authored
      The clearing of events is not done in the kickoff, but when the task was
      activated. We check this condition now
      Change-Id: I2bd4da7fb2dfbef4841ef7a55404ceeb4dc9d6c4
    • Christian Dietrich's avatar
      Event Support: integrate into Symbolic System Execution · 08f3316a
      Christian Dietrich authored
      We have support for waiting states in the symbolic system
      execution. Probably will the system state flow never get support for
      waiting state, but we already prepared a few bits, if it will ever
      There is also a first test case ecc1_event1a.
      Change-Id: Ia1039b9affd758ff1b86b0e4df07f67ce73d4439
    • Christian Dietrich's avatar
      Event Support: Readout from application · 83c79eef
      Christian Dietrich authored
      We support now events in the application! The user can define events in
      the OIL description. We generate system objects for the event, while we
      already decoupling event names. We generate a system object for
      each (Subtask, Event) tuple.
      The arguments of SetEvent, GetEvent, ClearEvent, WaitEvent are reduced
      to lists of system-object events.
      The middle-end, and back-end do not support events at all. Therefore,
      the test cases will fail.
      Change-Id: I051a81d76ecebd379a2f38f03522797494513729
  15. 27 Jan, 2015 1 commit
    • Christian Dietrich's avatar
      Improved statistics · c7c5c808
      Christian Dietrich authored
      - Do not measure the statistics in the pass run time.
      - Use the ISR count that can fire at one ABB to calculate
        edge-count:oil-static. This allows system annotations to be considered
        in this number.
      - Only count "natural blocks" as abb-count. Natural blocks are existing
        in the application and reachable in the GCFG.
      - In the fully connected graph self loops are allowed
      Change-Id: Icb28b2d7b1b04e9c075e2c756893505d7e60d5dc
  16. 26 Jan, 2015 1 commit
  17. 15 Jan, 2015 2 commits
    • Christian Dietrich's avatar
      generator: refactor syscall instantiation · cc353a5c
      Christian Dietrich authored
      Change-Id: Iabf3cc7de68fbceb67ee3cde8624a2bb7f94c279
    • Christian Dietrich's avatar
      generator: large refactoring · 6eb3afdc
      Christian Dietrich authored
      - SystemGraph: proper accessors for system objects
        .tasks | .subtasks | .alarms | .find() | .get()
      - SystemObject: abstract class for all system objects
        A system object has a configuration and an implementation and
        stores everything we know about a certain entity.
      Change-Id: Ia42d83f8d826aa22eeddf0d06206c197f48fb966
  18. 13 Jan, 2015 1 commit
    • Christian Dietrich's avatar
      RTSC/OIL: Remove all RTSC bits in favour of the OIL description · 2310f145
      Christian Dietrich authored
      Since we have no longer an dependency on RTSC, we fully remove the
      support for XML files written by RTSC. Therefore, the our OIL Parser was
      extended to recognize several no standard constructs:
      - Task Groups (Task in RTSC Nomenclature, OSEK Tasks are SubTasks)
        TASKGROUP taskname {
        TASK subtaskname {
          TASKGROUP = taskname;
      - CheckedObjects
        We can declare data objects that are checked by a concurrently running
        checker core.
        CHECKEDOBJECT name {
            TYPEDEF = mytype;
            HEADER  = "foo/bar/baz.h";
            CHECKFUNCTION = datacheck;
      Change-Id: I6dce83cfa8266cc802d9a83d8432680fb905bc3d
  19. 09 Jan, 2015 3 commits