Skip to content
Snippets Groups Projects
  1. Oct 16, 2013
    • Pekka Enberg's avatar
      x64: Register dump on GP fault · ca52fa23
      Pekka Enberg authored
      
      Dump registers on general protection fault for debugging purposes.  Even
      if you have gdb available, getting to the exception frame is not always
      possible after OSv has crashed.
      
      Example output looks as follows:
      
      registers:
      RIP: 0x0000100000b7e913  RFL: 0x0000000000010202  CS:  0x0000000000000008  SS:  0x0000000000000010
      RAX: 0xffffc000418ed278  RBX: 0xffffc00041b2c050  RCX: 0x0000000000000004  RDX: 0x0000000000000000
      RSI: 0x0000000000000001  RDI: 0x43e0000000000000  RBP: 0x0000200008548d10  R8:  0xffffc000426e3010
      R9:  0x0000000000000004  R10: 0x43e0000000000000  R11: 0xffffc00041b2c050  R12: 0xffffc000418ed1e8
      R13: 0x0000000000000004  R14: 0x43e0000000000000  R15: 0xffffc00041b2c050  RSP: 0x0000200008548aa0
      general protection fault
      
      Signed-off-by: default avatarPekka Enberg <penberg@cloudius-systems.com>
      ca52fa23
  2. Oct 15, 2013
  3. Oct 14, 2013
  4. Oct 13, 2013
  5. Oct 11, 2013
    • Tomasz Grabiec's avatar
      Move mgmt submodule head · 9bb55838
      Tomasz Grabiec authored
      This also requires fixing paths to mgmt jars in build.mk
      and usr.manifest as the version scheme has changed.
      
      git log --format=short 7a4db4e759b..54f4810a7:
      
        commit 54f4810a76fabf955aeea34baefa336abf8b8467
        Author: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
      
            Revert "supporting artifactory publish"
      
        commit 4abf771d146d6cde66f330e6b6ab6ececffb4cdd
        Author: Tomasz Grabiec <tgrabiec@cloudius-systems.com>
      
            mgmt/web: ditch jline-2.7 pulled by jruby-core
      
        commit 3863a3b58b661cd751314966cccb0f6c9835ed4a
        Author: Nadav Har'El <nyh@cloudius-systems.com>
      
            Moved RunJava to io.osv namespace
      
        commit be0717595f45d647062e7a41cc8dd38393c96547
        Author: Ronen Narkis <narkisr@gmail.com>
      
            supporting testing (jruby rake test does not work no matter what)
      
        commit 46e74f6bb886a0c62b06f08559fe2e44efdb8900
        Author: Ronen Narkis <narkisr@gmail.com>
      
            ignoring build
      
        commit 95ff3b70bae877d5d8cf0144853d1a201a0be333
        Author: Ronen Narkis <narkisr@gmail.com>
      
            verfying json existence and giving meaning full error
      
        commit 8b60c4a40aa4bcb7ce08bba600fd9cd6d63e1073
        Author: Ronen Narkis <narkisr@gmail.com>
      
            moving to three digit versioning in order to have a finer grained control on rel
      
        commit ffa7646388cec8d5b138ff4fc28a985c6344824c
        Author: Ronen Narkis <narkisr@gmail.com>
      
            supporting artifactory publish
      
        commit 8855112e2c867b4f855ed28ad9d9982c26bc56a3
        Author: Ronen Narkis <narkisr@gmail.com>
      
            clearing unused repo
      
        commit 3be79eb18b2be7bf1f28aaebd9905ac77945e4e4
        Author: Or Cohen <orc@fewbytes.com>
      
            Migrated ifconfig from previous JS console
      
        commit 287b014cf709e9c46692c59f87b70ebf056114b5
        Author: Or Cohen <orc@fewbytes.com>
      
            Migrated run command from previous CLI
      
        commit 0ffe064d30c1a812d7e853ee568ce45bfc16ed42
        Author: Or Cohen <orc@fewbytes.com>
      
            Added daemonizeIfNeeded helper method for commands
      
        commit 36951a86493c954a2e939648b5060260fac5b539
        Author: Or Cohen <orc@fewbytes.com>
      
            Moved ELFLoader from cloudius.cli to cloudius.util
      9bb55838
  6. Oct 10, 2013
  7. Oct 06, 2013
    • Nadav Har'El's avatar
      Put RunJava.class in a jar, runjava.jar · a8af5dde
      Nadav Har'El authored
      
      We use the RunJava Java class to run Java applications (both java.so
      and the "java" CLI command use it). We used to have RunJava.class
      uncompressed, in the /java directory, but this caused two problems:
      
      1. Or noticed that having a directory (/java) on the classpath causes
         thousands of stat() calls when Java tries to look for all classes
         in this directory. With a jar, its contents are read only once.
      
      2. The "java" CLI command (java.groovy) didn't work because apparently
         Groovy cannot deal with classes being in the top-level package.
      
         So this patch moves RunJava into the io.osv package, and put it into a jar
         /java/runjava.jar.
      
         Note that java.groovy is changed in a separate patch (because it's in
         a different sub-repository....)
      
      Signed-off-by: default avatarNadav Har'El <nyh@cloudius-systems.com>
      a8af5dde
  8. Oct 03, 2013
  9. Oct 01, 2013
  10. Sep 29, 2013
    • Nadav Har'El's avatar
      Add kill() support - sort of · b9ed15c2
      Nadav Har'El authored
      
      This patch adds support for the Linux kill(2) function.
      The next patch will add alarm(2) support, which uses kill(2).
      
      To be honest, we sort-of implement kill(). This implementation is
      compatible with the API, but the semantics are somewhat different:
      While in Linux kill() causes the signal handler to run on one of the
      existing threads, in this implementation, the signal handler is run in a
      *new* thread.
      
      Implementing the exact Linux semantics in OSv would require tracking when
      OSv runs kernel code (i.e., code in the main executable, not a shared
      object) so we can delay running the signal handler until returning to the
      user code. Moreover, we'll need to be able to interrupt sleeping kernel
      code. This is complicated and adds overhead even if signals aren't used
      (and they aren't used in most modern code).
      
      I expect that this code will be "good enough" in many use cases.
      This code will *not* be good in enough in programs that expect one of the
      following:
      
      1. A program that by using Posix Thread's "signal masks" tried to ensure
         that the signal is delivered to one specific thread, and not to an
         arbitrary thread.
      
      2. A program that used kill() or alarm() not intending to run a signal
         handler, but rather intending to interrupt a sleeping system call
         like sleep() or read(). Our kill() does not interrupt sleeping OSv
         function calls, which will continue to sleep on the thread they run
         on.
      
      The support in this patch (and see next patch, for alarm()) is good
      enough for netperf's use of alarm().
      
      P.S. kill() can be used only to send a signal to the current process, the
      only process we have in OSv (you can also use pid=0 and pid=-1 to achieve
      the same results).
      
      This patch also adds a test for kill() and alarm(). The alarm() test
      will fail until the next patch :-)
      
      Signed-off-by: default avatarNadav Har'El <nyh@cloudius-systems.com>
      b9ed15c2
  11. Sep 26, 2013
  12. Sep 20, 2013
    • Nadav Har'El's avatar
      Tests: add trivial sleep test · ade5bc3e
      Nadav Har'El authored
      
      Add a trivial sleep() test, which sleep()s for 2 seconds, and verifies
      that this finishes and has slept for roughly 2 seconds.
      
      I used this for debugging issue #26 - the attempts there ruined timers,
      and in particular this trivial test hangs, as sleep() never returns.
      
      (A note to our future automatic testing implementor: We need to allow
      for the possibility that a test doesn't cleanly fail, but rather hangs,
      and consider this a failure too).
      
      Signed-off-by: default avatarNadav Har'El <nyh@cloudius-systems.com>
      ade5bc3e
  13. Sep 19, 2013
    • Benoît Canet's avatar
      Test: Add a DNS resolver test · 2a1064ce
      Benoît Canet authored
      
      This regression test trigger issue #8
      "Make Java InetAddress.getHostName() work" by exercising the DNS
      resolver on localhost and a dns root server.
      
      The test takes care of specifying NI_NOFQDN to resolve only the
      hostname part of localhost ip.
      
      It appears that the DNS ip is not communicated to the libc by
      core/dhcp.cci: /etc/resolv.conf is not filled.
      
      Test contributed while waiting for an fix idea to implement.
      
      Signed-off-by: default avatarBenoit Canet <benoit@irqsave.net>
      Signed-off-by: default avatarPekka Enberg <penberg@cloudius-systems.com>
      2a1064ce
  14. Sep 12, 2013
    • Nadav Har'El's avatar
      Test: cpu load balancing test · b255c259
      Nadav Har'El authored
      This is a test for the effectiveness of our scheduler's load balancing while
      running several threads on several cpus.
      
      A full description of the test and its expected results is included in
      comments in the beginning of the code. but briefly, the test runs multiple
      concurrent busy-loop threads, and an additional "intermittent" thread (one that
      busy-loops for a short duration, and then sleeps), and expects that all busy
      threads will get their fair share of the CPU, and the intermittent thread
      won't bother them too much.
      
      Testing the current code, this tests demonstrates the following problems
      we have:
      
      1. Two busy-loop threads on 2 cpus are 5%-10% slower than just one.
         This is not kernel overhead (profiling show 100% of the time in the
         test's inner loop), and I see exactly the slowdown when running this
         test on the Linux host, so it might be related to the host's multitasking?
         For now, let's not worry about that.
      
      2. Much more worrying is that the intermittent thread sometimes (in about half
         the tests) causes us to only fully use one CPU, and of course get bad
         performance.
      
      3. In many of the tests involving more than 2 threads (2 threads +
         intermittent, or 4 threads) load balancing wasn't fair and some
         threads got more CPU than the others.
      
      Later I'll send patches to fix issues 2 and 3, which appear to happen because
      the load balancer thread doesn't run as often as it should, because of vruntime
      problems.
      b255c259
  15. Sep 11, 2013
  16. Sep 08, 2013
  17. Sep 06, 2013
  18. Sep 05, 2013
    • Glauber Costa's avatar
      build adaptions for single image · 16b47261
      Glauber Costa authored
      16b47261
    • Glauber Costa's avatar
      use stripped loader for size calculation · b6e0120f
      Glauber Costa authored
      This is the size that goes in our bootloader count32. But since we will be
      copying over the stripped binary anyway, we are probably reading too much data,
      for no reason. That should increase boot time a bit.
      b6e0120f
    • Glauber Costa's avatar
      hpet clock driver · e2991fce
      Glauber Costa authored
      This patch implement the HPET clock driver, that should work as a fallback for
      both Xen and KVM, in case the paravirtual clock is not present. This is
      unfortunately the situation for all HVM guests running on EC2, so support for
      this is paramount. I have tested on KVM forcing the kvmclock to disappear, and
      it seems to work all right.
      e2991fce
  19. Sep 02, 2013
    • Pekka Enberg's avatar
      Filed-backed mmap tests · 22c85933
      Pekka Enberg authored
      Add simple tests for munmap() for file-backed memory maps. This exposes
      a limitation in munmap() not writing out MAP_SHARED mappings.
      22c85933
  20. Aug 29, 2013
  21. Aug 16, 2013
  22. Aug 14, 2013
  23. Aug 13, 2013
    • Glauber Costa's avatar
      enable and compile the blkfront driver · d6800985
      Glauber Costa authored
      The xen block driver needs some extra state not needed for the network drivers.
      Namely, the same way virtio-blk does, we need to tell the block layer which is
      our strategy, read and write functions. For that, we need some extra code that
      I am implementing in xenfront-blk.cc.
      d6800985
    • Glauber Costa's avatar
      bus_dma implementation · be8e3c59
      Glauber Costa authored
      Simple implementation of BSD's bus_dma interface. Since we are constrained by virtual
      environments, we are able to cut out most of the things.
      be8e3c59
    • Glauber Costa's avatar
      compile subr_disk · f849892e
      Glauber Costa authored
      We need to add our headers first, but the rest should be ready to go.
      f849892e
    • Glauber Costa's avatar
      enable osv xenbus and provide the netfront driver · c71d0cdf
      Glauber Costa authored
      With all the infrastructure in place, we can compile all our xenbus code in,
      and enble the netfront driver.
      c71d0cdf
Loading