1. 20 Apr, 2016 1 commit
  2. 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:
      
                  --enable-eager
      
             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.
      5f36629f
  3. 08 Apr, 2016 5 commits
  4. 07 Apr, 2016 1 commit
  5. 05 Apr, 2016 5 commits
  6. 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.
      3e525b06
    • 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
      thc_channel_group_item_mark_dead.
      8e602ced
    • Michael Quigley's avatar
    • Charles Jacobsen's avatar
      Update libfipc (add symbol exports) · 12bdeb4f
      Charles Jacobsen authored
      12bdeb4f
  7. 03 Apr, 2016 2 commits
  8. 02 Apr, 2016 4 commits
  9. 01 Apr, 2016 3 commits
  10. 31 Mar, 2016 1 commit
  11. 30 Mar, 2016 8 commits
  12. 28 Mar, 2016 1 commit
  13. 27 Mar, 2016 1 commit
  14. 26 Mar, 2016 1 commit