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
      29712a1c
    • 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
      225fb0b0
  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
      afdc8a91
  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
      4ce804b6
  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
      25889a17
    • 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
      2459d478
    • 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
      2d175a09
    • 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
      dca3609a
    • 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
      dd3d4d3c
  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
      values.
      
      Change-Id: I4fa3e0a6053d810417957ede767d2321288ab040
      b25ac267
    • 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
      6dec5d35
  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
      f2befe06
    • 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
      61d6f2d5
    • 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
      0dff264e
  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
      c5de7c21
    • 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
      90a37188
  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
      89354fd9
  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
      c17c7cad
    • 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
      e83d646f
    • 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
      happen.
      
      There is also a first test case ecc1_event1a.
      
      Change-Id: Ia1039b9affd758ff1b86b0e4df07f67ce73d4439
      08f3316a
    • 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
      83c79eef
  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
      c7c5c808
  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
      cc353a5c
    • 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
      6eb3afdc
  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 {
           PROMISE = SERIALIZED;
        }
      
        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
      2310f145
  19. 09 Jan, 2015 3 commits