1 #ifndef DISTLIB_H 2 #define DISTLIB_H 3 4 #include "config.h" 5 #define DISTLIB_TYPE_CALC_INT 1 6 #define DISTLIB_TYPE_CALC_FLOAT 2 7 #define DISTLIB_TYPE_EXEC 3 8 #define DISTLIB_TYPE_MEM 4 9 10 #define DISTLIB_COST_MEMSET 5 11 12 #define DISTLIB_NUM_HOSTS 2 13 14 15 int distlib_calc_int (int v1, int v2, unsigned char op, int n, int cost); 16 int distlib_calc_float (float v1, float v2, unsigned char op, int n, int cost); 17 int distlib_exec (char path[127], char args[128][127], int cost); 18 int distlib_memset (char *name, char *value, int size); 19 int distlib_sendmessage (int desthost, void *message, int size, unsigned char typeid, int taskid, unsigned char cost); 20 int distlib_decode (unsigned char *data, int size); 21 int distlib_create_job (int cost, int taskid); 22 void distlib_init (int dest); 23 24 struct distlib_msg_hdr { 25 char size[4]; 26 int taskid; 27 char typeid; 28 char cost; 29 }; 30 31 extern char *distlib_hosts[DISTLIB_NUM_HOSTS]; 32 33 34 // For now we use INT and hope everyone has the same size INT. 35 // Things could get weird on heterogenous networks 36 struct distlib_calc_msg1 { 37 int v1; 38 int v2; 39 char op; 40 }; 41 42 struct distlib_calc_msg2 { 43 float v1; 44 float v2; 45 char op; 46 }; 47 48 struct distlib_exec_msg { 49 char path[127]; 50 char args[128][127]; 51 }; 52 53 struct distlib_mem { 54 char name[64]; 55 int size; 56 char *value; 57 }; 58 59 struct distlib_msg_reply { 60 int size; 61 char *value; 62 }; 63 64 struct distlib_hostinfo { 65 int load; 66 int max_load; 67 }; 68 69 70 extern struct distlib_hostinfo distlib_hostinfo_data[DISTLIB_NUM_HOSTS]; 71 72 #endif /* DISTLIB_H */ |