Giter Club home page Giter Club logo

kitsune-core's Introduction

Kitsune - Dynamic Updating System
=================================

Update
------
Tested with "The OCaml toplevel, version 4.00.1".
Newer versions of Ocaml (ex: 4.02) might cause infinite loops with the code generator due to the version of Cil that we use.


Getting Started
---------------

1. Build the Kitsune runtime and compiler/transformation generator:

(in Kitsune root directory)
make

2. Build tests in the test/* directories.  Most of these tests
manually initiate an update by calling kitsune_signal_update() rather
than having the user manually initiating the update.

3. Manually initiating an update normally works as follows:

Starting the initial version:
  (kitsune root)/bin/driver (version 0).so (args)

To update that process, run:
  (kitsune root)/bin/doupd (vN PID) (version N+1).so

Currently, the runtime prints the pid of the running process to
stdout, which can be used in the call to doupd.  (Note that multiple
calls to doupd may be needed for programs that fork, like vsftpd.)

If Kitsune was built for benchmarking, then a benchmarking result
filename is expected by driver between the shared library and its
arguments. [We plan to streamline this later.]

4. Building and updating redis (as an example):

(build kitsune with threading)

cd examples/redis
make
  - builds versions of redis from 2.0.0 -> 2.0.4

../../bin/driver redis-2.0.0/redis-server.so
  - starts the redis server under kitsune

(in another terminal)
../../bin/doupd PID redis-2.0.1/redis-server.so
  - you can get PID from the original terminal or just use `pidof
    driver` in place of PID in this line (assuming you aren't running
    other things under Kitsune simultaneously)

When a program is updated with Kitsune, it generates a log file that
can be found in /tmp/ekiden/PROG.PID (where PROG is the program name
and PID is its pid).

5. Learning Kitsune: currently the tests/ are the best way to see how
the kitsune tools work.  


Overview of the Kitsune Repository
----------------------------------

src/ 
   - contains the Kitsune runtime source code

tools/ 
   - contains the Kitsune compiler and transformation generator

tools/ocaml-src/ 
   - Kitsune specific code

tools/ocaml-src/cil 
   - Kitsune code linked with cil for compilation

tools/ocaml-src/tools 
   - xfgen-related code

tools/ocaml-src/common 
   - code shared between the compiler and xfgen

bin/ 
   - contains the externally used Kitsune header files and the
     compiled library

tests/ 
   - a variety of tests ensuring correct behavior in the runtime
     library and compilation tools.  These tests provide a good way to
     see how the parts of the system work together, and the compilation
     process for updating.

kitsune-core's People

Contributors

tedks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kitsune-core's Issues

Issues Running Examples

Hi I am interested in playing with Kitsune, but I can't seem to get any of the examples to run.

I tried to make the project with Ubuntu 20.04 LTS (x64) which was configured with GCC 9.3.0. I installed OCAML version 4.00.1 as noted in the README, but was getting build errors. I guessed it was related to not being on an x86 system or maybe GCC changes so I switched to Ubuntu 16.04 LTS 32bit (with gcc 5.4.0) and was able to successfully run make, however when I run the first tutorial example it just loops forever. Here were my build steps (note I had to update the example file paths to match the current project structure...).

VirtualBox VM of Ubuntu 16.04 LTS (32 bit version)

  • sudo apt-get update
  • sudo apt-get install build-essential
  • sudo apt-get install ocaml
  • sudo apt-get install opam
  • opam init --compiler=4.00.1
  • eval $(opam config env)
  • ocaml -version (verify it shows The OCaml toplevel, version 4.00.1)
  • sudo apt-get install git
  • git clone https://github.com/kitsune-dsu/kitsune-core.git
  • cd kitsune-core
  • make (no build errors)
  • cd doc/tutorial/exercises/01/1.0-build
  • Change the Makefile to https://github.com/benjholla/kitsune-core/blob/master/doc/tutorial/exercises/01/1.0-build/Makefile, note the update file paths are to match where the current Makefile organizes files
  • Run make and note that it gets stuck in an infinite loop (what to try next ???). The last output is (wait ~20 mins before ctrl-c killing) was:
../../../../../bin/bin/ktcc -O2 -fomit-frame-pointer -fpic -I../../../../../bin/include -c ex1.c
gcc -D_GNUCC -E -O2 -I../../../../../bin/include -DCIL=1 ex1.c -o /tmp/cil-szURrfPR.i
/home/kitsune/kitsune-core/tools/cil-1.3.7/obj/x86_LINUX/cilly.asm.exe --out /tmp/cil-xrKkXfJg.cil.c --keepunused --typesfile-out ex1.ktt /tmp/cil-szURrfPR.i

Any advice? Alternatively is there another later work on DSU that replaces this work?

xfgen doesn't understand "$oldsym"

When using xfgen to generate transformers from a .xf file, it doesn't actually replace instances of $oldsym to "kitsune_lookup_key_old("...")" as it is described in the journal paper

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.