KIRO is the KITs InfiniBand remote communication library. It provides a simple server and client class that can be used to pass arbitrary information from the server to the client using native InfiniBand communication. It also provides a network transmittable ring-buffer (KIRO-TRB) which can be used as a transmission container for same-sized objects and a (uni directional) self-synchronizing buffer (KIRO-SB) which can be used to automatically keep a local object in sync with a shared remote object.
The library is optimized for speed and ease of use.
Please refer to the INSTALL file of this project.
Example KIRO server usage
#include <kiro-server.h>
...
int memSize = 42;
void *mem = malloc(memSize); //This is the memory we want to provide
KiroServer *server = kiro_server_new ();
const char *address = "192.168.1.1";
const char *port = "60010";
kiro_server_start (server, address, port, mem, memSize);
// The KIRO server is now running
...
kiro_server_stop (server);
kiro_server_free (server);
...
Example KIRO client usage
#include <kiro-client.h>
...
KiroClient *client = kiro_client_new ();
const char *address = "192.168.1.1";
const char *port = "60010";
kiro_client_connect (client, address, port);
//The client is now connected
kiro_client_sync (client);
void *mem = kiro_client_get_memory (client);
kiro_client_free (client);
For TRB usage, check the examples in the test directory
kiro is copyright to the Karlsruhe Institute of Technology and licensed under the LGPL 2.1.