Skip to content
Snippets Groups Projects
  1. May 07, 2013
  2. May 06, 2013
    • Avi Kivity's avatar
      build: add libjpeg.so and libjavajpeg.so · f98e6319
      Avi Kivity authored
      f98e6319
    • Avi Kivity's avatar
      tests: add AF_LOCAL test · 9e448492
      Avi Kivity authored
      9e448492
    • Avi Kivity's avatar
      af_local: implement unix domain sockets · e9e8c012
      Avi Kivity authored
      e9e8c012
    • Avi Kivity's avatar
      condvar: add wait_until · 9efe57e5
      Avi Kivity authored
      Similar to thread's wait_until, but manages the wake up list using the
      condition variable.
      
      Because C++ doesn't like templates within 'extern "C"', those lines were
      moved a bit.
      9efe57e5
    • Avi Kivity's avatar
      condvar: add constructor · f6493c8a
      Avi Kivity authored
      This makes it useful in C++.
      f6493c8a
    • Avi Kivity's avatar
      mkbootfs: hack around absolute symbolic links in source · a38cf361
      Avi Kivity authored
      Absolute symbolic links refer to the host directory structure, while we
      want them to refer to the external/ tree.  Since we have several trees,
      we can't just rebase them, so walk down the tree trying to find a match.
      
      Fragile and ugly, but seems to work.
      a38cf361
    • Nadav Har'El's avatar
      Removed std::atomics from read size of lock-free queue · fff7241a
      Nadav Har'El authored
      As Avi suggested in his review, let's not have the read-size memory
      ordering code in the queue implementation - just in the caller if it
      is needed (and usually, it won't be needed).
      fff7241a
    • Avi Kivity's avatar
      tests: fix tst-lsroute.cpp filename extension · d956b1a6
      Avi Kivity authored
      Change to the standard .cc, so it picks up the correct flags (and builds
      silently).
      d956b1a6
    • Nadav Har'El's avatar
      Fix bug in include/lockfree/queue-mpsc.hh · 78a9b1d2
      Nadav Har'El authored
      Fixed bug in the lock-free queue's push() implementation, which
      was reproduced in the already-committed test.
      
      The implementation was based on an incorrect understanding of the
      C++ compare_exchange operation. Normally, a CAS operation only tries to
      write to the variable we're trying to write too (in this case, the head
      of the pushlist). If the previous ("expected") value has already changed,
      nothing is done. But C++'s compare_exchange, to my complete surprise,
      when the write failed, copies the new (unexpected) value into the
      "expected" variable.
      
      So I had to fix the push() implementation to assume actual behavior of compare_exchange, not my make-believe one.
      
      This commit also includes various other code cleanups.
      78a9b1d2
    • Nadav Har'El's avatar
      Better testing for lockfree/queue-mpsc.hh · 38189cb4
      Nadav Har'El authored
      Add a much better test for the lock-free multi-producer single-consumer
      queue implementation, where a 20 threads push numbers onto the queue,
      and a single consumer reads them and verifies that they all are received
      and in the right order. This test uncovered a bug which will be fixed by
      a later commit.
      
      The test added here patch was written using C++11's concurrency APIs
      (std::thread, std::condition_variable, etc.) instead of osv's own APIs,
      for two reasons:
      
      1. It also helped uncover a bunch of bugs in our pthread and C++11 thread
         support, so this test can double as another pthread test.
      2. It allows running the same test in Linux, to tell if a certain bug is a
         bug in lockfree:queue_mpsc, or in underlying osv scheduler mechanisms.
      38189cb4
    • Nadav Har'El's avatar
      We had a bug where we forgot to zero the .tbss section (the zero part of · e5c98d46
      Nadav Har'El authored
      the TLS), which led to preempt_counter not being intialized to zero and
      therefore preemption not being enabled for new threads.
      
      Such non-preemptable threads can monopolize their CPU and cause other
      threads with the misfortune of being assigned to this CPU to never run.
      
      This patch adds a simple test reproducing this bug. Because we don't have
      an implementation of __tls_get_addr(), we can't "extern" a TLS symbol
      (here sched::preempt_counter) from the test, and so I had to create a
      new sched::get_preempt_counter() function which I can "extern" from the
      test.
      e5c98d46
    • Avi Kivity's avatar
      main: zero thread-local bss section · 60985e55
      Avi Kivity authored
      Somehow this worked by accident, but we need to zero the .tbss section
      or random data will be used to initialize it.
      60985e55
    • Avi Kivity's avatar
      boot: adjust boot loader for loaded payload size dynamically · 53fa5724
      Avi Kivity authored
      Since we're packing the entire file system into the boot image, it has
      overflowed the 128MB limit that was set for it.
      
      Adjust the boot loader during build time to account for the actual loaded size.
      
      Fixes wierd corruption during startup.
      53fa5724
  3. May 02, 2013
Loading