1. 12 May, 2016 4 commits
  2. 06 May, 2016 2 commits
  3. 04 May, 2016 3 commits
  4. 01 May, 2016 1 commit
  5. 27 Apr, 2016 2 commits
  6. 26 Apr, 2016 1 commit
  7. 25 Apr, 2016 1 commit
  8. 20 Apr, 2016 2 commits
  9. 16 Apr, 2016 1 commit
  10. 15 Apr, 2016 1 commit
    • Charles Jacobsen's avatar
      Add THCDumpAllStacks. · 2600bee1
      Charles Jacobsen authored
      This will not work unless you implement thc_dump_stack_0 and
      thc_link_to_frame_0 for your architecture. Moreover, the implementation
      of thc_dump_stack_0 should continue walking the stack until it
      hits either a null frame or return address. (The usual way is to
      assume stacks are aligned at certain addresses and to stop the walking
      when you reach that alignment. That WILL NOT work here.)
  11. 11 Apr, 2016 1 commit
    • Charles Jacobsen's avatar
      Simple example and abort example working for lazy. · 5f36629f
      Charles Jacobsen authored
      Phew ... Lots of debugging. This is the commit in which I
      discovered AC/THC fails when it uses %rsp offsets instead of
      %rbp offsets. And that we need to be careful with local variables
      inside ASYNCs.
      Anyway, this commit does the following:
          -- You can build for LAZY/EAGER using a configure flag:
             By default, it builds for lazy.
          -- Fix abort example to yield async 0. The print out result
             is quite interesting.
          -- Fix caller to use alloca, just to be paranoid about passing
             the local variable transaction_id. This is probably not
             necessary in this example, but it demonstrates the care
             required to pass locals in async's.
  12. 08 Apr, 2016 5 commits
  13. 07 Apr, 2016 1 commit
  14. 05 Apr, 2016 5 commits
  15. 04 Apr, 2016 6 commits
    • Charles Jacobsen's avatar
    • Charlie Jacobsen's avatar
      Add thc_channel definition, update pieces of interface. · 3e525b06
      Charlie Jacobsen authored
      I realized we need to be doing the state checking in some of
      the other ipc functions (perhaps indirectly, e.g. thc_ipc_call).
      And then it seemed to make more sense to create a
      new data type - a thc channel that wraps a fipc channel with
      extras that we need when doing async stuff. So, we still do
      ref counting, but it's on the thc_channel.
      I no longer free the thc_channel when the ref drops. Leave up
      to the libasync user to decide.
      I updated the interface so that e.g. thc_ipc_recv now takes
      a struct thc_channel instead.
    • Charles Jacobsen's avatar
    • Charles Jacobsen's avatar
      Add reference counting and state to channel group items. · 8e602ced
      Charles Jacobsen authored
      Motivation: thc is cooperative, but there are still cases where
      we can get into trouble. In thc_poll_recv, it's possible that
      the awe we switch to (to receive a response) wants to kill the
      channel that we just polled on. In the original implementation,
      after we scheduled that awe, we would eventually come back into
      thc_poll_recv, go to the top of the loop, and try to receive
      again; but instead, we should just abort (and in fact, we would
      be using memory after it had been freed).
      When a channel group item is created (with thc_channel_group_item_init),
      its state = LIVE, and its ref count is 1. So, the creating awe
      automatically gets a reference. When another awe wants to grab
      a reference, it should call thc_channel_group_item_inc_ref; and
      to release a reference, thc_channel_group_item_dec_ref. dec ref
      will remove the channel group item from its group and free it
      when the ref count reaches 0. To signal to other awe's (thc async
      threads) that a channel is dead, you should call
    • Michael Quigley's avatar
    • Charles Jacobsen's avatar
      Update libfipc (add symbol exports) · 12bdeb4f
      Charles Jacobsen authored
  16. 03 Apr, 2016 2 commits
  17. 02 Apr, 2016 2 commits