This file contains a description of the files that are comprised in this directory. It has a short description of each file, but it does not get into details of implementation, as this is (or should be!) done in each file. The current supported platform is Linux only. To use the library specification layer, the Linux kernel should be patched with the hrtime library which is available at http://www.cs.wisc.edu/~paradyn/libhrtime bin/ : executables doc/ : documentation example/ : two demo examples. nb/ : knowledge base source files used by library specification layer tcl/ : Tcl scripts used by the h_server build/ : source files hclient.c - the implementation of the API functions of Harmony hclient.h - prototypes of the API functions hconfig.tcl - the tcl script that loads the functions that parse the RSL and take care of the tk interface hdb.h - classes that are supposed to be used by the server to store information about clients and nodes registered with the system. hmesgs.c - the implementation of functions that pack/unpack (serialize/deserialize) messages hmesgs.h - the definition of message classes. hserver.c - the implementation of the Harmony server hserver.h - function prototypes for harmony server and other definitions lsl_config.h - please modify this to the appropriate directory scan.l grammar.y - specify the syntax for the library specification language libcreater.c - the implementation of the library specification language precompiler template.* - template data file used by libcreater Next, a few pointers on how to compile the code and run the example. just do a: $ cd build $ make This will build the harmony server and the libcreater for you $ cd ../bin $ ls hconfig.tcl hserver libcreater To run the server: $ ./hserver To run the example client you have to setup the environment variables: at bash: $ export HARMONY_S_HOST=localhost $ export HARMONY_S_PORT=1977 at csh/tcsh: $ setenv HARMONY_S_HOST localhost $ setenv HARMONY_S_PORT 1977 Of course, "localhost" is put just for demo purposes. You should set that variable to whatever hostname the server is running on. However, the port has to be 1977. Maybe in future versions the port number will be hardcoded in the client code. To build and run the h_server example client: $ cd ../example/h_server $ make $ example Library Specification Layer example: 1. After the installation, change to example/lsl : $ cd example 2. Build $ make 3. This is generate three executables: try : this will apply the LSL to use both link list and array tryll : this will only use link list tryary: this will only use array 4. Sample result - 100000 operations $ try 100000 100000 2.002105 $ tryll 100000 100000 8.137814 $ tryary 100000 100000 1.161414