1. 14 Jun, 2019 1 commit
  2. 17 Mar, 2017 1 commit
  3. 04 Apr, 2016 1 commit
  4. 22 Mar, 2016 1 commit
  5. 21 Mar, 2016 1 commit
    • Charlie Jacobsen's avatar
      lcd: Add support for clang builds. · b7777461
      Charlie Jacobsen authored
      This is kind of hack-ish for now. clang doesn't support some of the
      compiler flags that are used in a kernel build. I'm providing a
      general "hook" that a libcap builder can use to filter out bad
      kbuild cflags. (A perhaps better long term solution would check that
      the CC supports certain flags, and then do the filtering.)
      b7777461
  6. 18 Mar, 2016 1 commit
  7. 01 Mar, 2016 1 commit
    • Charles Jacobsen's avatar
      Bug in trylock definition for kernel platform. · a0398127
      Charles Jacobsen authored
      Unlike other kernel functions, mutex_trylock returns 1 on sucess
      and 0 on failure. We were negating that, and then negating it
      again in our check in cap.c. We got away with this in the microkernel
      because in the host kernel, the first call returned 1 (for success)
      and then 0 (for error); the double negations mixed things up and
      it still worked. But inside LCDs, since I hack trylock to always
      return 1, it caused the code to go into an infinite loop.
      
      Gonna make this same change and put it in the mainline.
      a0398127
  8. 27 Feb, 2016 1 commit
    • Charles Jacobsen's avatar
      Add padding to cptr_cache. · dccb7e43
      Charles Jacobsen authored
      I want non-isolated code to be able to initialize a cptr_cache
      for isolated code. The problem is, the size of a mutex for
      isolated code is only 8 bytes, versus 16 bytes for non-isolated.
      So, the isolated libcap is compiled so that there is 8 bytes of
      padding after the cptr cache lock. I know, this is really awesome ;)
      dccb7e43
  9. 16 Feb, 2016 3 commits
    • Charles Jacobsen's avatar
      Add CFLAGS to kernel build. · 54c7670a
      Charles Jacobsen authored
      With this, I can pass in include paths, etc. at build time (versus
      configure time).
      54c7670a
    • Charles Jacobsen's avatar
      Fix kernel external build. · e2f207da
      Charles Jacobsen authored
      The kernel build is a bit fragile right now (at least the kernel
      module build is). In order for all kernel build targets to
      work properly (e.g. make clean), the Kbuild file needs to be
      at the "root" of the build tree. For example, the kernel's make
      clean uses a simple "find" piped into xargs rm -f, so it only trickles
      down child directories. (If you build files that are not a child
      of the root Kbuild directory, make clean / find won't touch
      them.) This means that a "make clean" won't actually do a full
      clean up.
      e2f207da
    • Charlie Jacobsen's avatar
      Add include hooks so we can build libcap for isolated env. · bfd4615a
      Charlie Jacobsen authored
      I don't like this, and I'll come up with a better solution
      perhaps in the future. But I need to put in my include hooks
      in the libcap source files.
      bfd4615a
  10. 11 Feb, 2016 2 commits
  11. 19 Jan, 2016 1 commit
    • Charlie Jacobsen's avatar
      Add kernel build fixes. · d6dc6cb7
      Charlie Jacobsen authored
      I got rid of the KERNEL_HEADERS_INSTALL thing. Kind of silly. The
      user is just expected to set their prefix right. We still have to
      do a hook in order to install the kernel-specific stuff. libcap.a
      and libcap.ko (kernel binaries) go in prefix/lib.
      d6dc6cb7
  12. 17 Jan, 2016 7 commits
  13. 16 Jan, 2016 5 commits
    • Charlie Jacobsen's avatar
      private-types: Updates headers and build for private type systems. · b5dc70da
      Charlie Jacobsen authored
      This will not build yet (cap_type_system_t not defined yet).
      
      In LCDs (kernel land), there will be multiple threads sharing
      this library, but they shouldn't share the same set of types. So,
      we need to allow building libcap to preclude this sharing (using
      a global type system).
      
      A global type system is allowed by default, and the same interface
      will still be there if global types are enabled. There are a few
      new functions introduced with this new feature:
      
            cap_init_cspace_with_type_system
            cap_cspace_get_type_system
            cap_register_private_type
      
      These functions will now always be part of the interface. The old
      functions will be available if global types are allowed:
      
            cap_init_cspace - init cspace and attach global type system to it
            cap_register_type - register a global type
      
      I used some autoconf magic to conditionally include these old
      functions in the libcap.h interface.
      
      Implementation not in place yet.
      b5dc70da
    • Charlie Jacobsen's avatar
      Updates ci jenkins config to build user test apps. · d97e0ffd
      Charlie Jacobsen authored
      Tests are not built by default now.
      d97e0ffd
    • Charlie Jacobsen's avatar
      Updates cptr cache defs and build so that cspace config can truly vary. · 40077300
      Charlie Jacobsen authored
      Before, I just had some CPP checks that would stop the build
      if the cspace depth wasn't 4, etc. So it required some manual
      changes. Now it should be fully automated.
      
      There are three awk scripts that generate some C code / do some
      calculations, and the results are plugged into some headers (that
      are now templates and generated by configure). I did it this way
      because the CPP doesn't seem powerful enough to generate variable
      length definitions like this (without some serious CPP hacking).
      Easier to use awk and then AC_SUBST the results in.
      
      If we want to make the code even faster, we could precompute some
      other stuff like this as well.
      
      I tested the user build, and ran multi_thrd_cap with a cspace
      depth of 8, and cnode table size of 8. Looked ok.
      40077300
    • Charlie Jacobsen's avatar
      Adds symbol exports for kernel land. · 8e2fb16b
      Charlie Jacobsen authored
      When we install libcap as a kernel module, in order for other
      kernel code (modules) to link with it, we need to mark public
      functions with EXPORT_SYMBOL.
      8e2fb16b
    • Charlie Jacobsen's avatar
      Adds contributors file, updates install notes, tweaks kernel install. · 6f8ce609
      Charlie Jacobsen authored
      Adds KERNEL_HEADERS_INSTALL param so you can install the headers
      in a place of your choosing. (Otherwise, they're strewn across the
      source and build dirs - nice to coalesce into one spot.)
      6f8ce609
  14. 15 Jan, 2016 10 commits
  15. 14 Jan, 2016 4 commits