Skip to content
Snippets Groups Projects
Commit 84e03435 authored by Ludovic Apvrille's avatar Ludovic Apvrille
Browse files

AVATAR: executable code update

parent 4d10319d
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,4 @@
#include "debug.h"
int main(int argc, char *argv[]) {
}
\ No newline at end of file
......@@ -54,17 +54,7 @@ import avatartranslator.*;
public class AVATAR2CPOSIX {
private final static String UNKNOWN = "UNKNOWN";
private final static String BOOLEAN_DATA_HEADER = "(* Boolean return types *)\ndata true/0.\ndata false/0.\n";
private final static String FUNC_DATA_HEADER = "(* Functions data *)\ndata " + UNKNOWN + "/0.\n";
private final static String PK_HEADER = "(* Public key cryptography *)\nfun pk/1.\nfun encrypt/2.\nreduc decrypt(encrypt(x,pk(y)),y) = x.\n";
private final static String SK_HEADER = "(* Symmetric key cryptography *)\nfun sencrypt/2.\nreduc sdecrypt(sencrypt(x,k),k) = x.\n";
private final static String MAC_HEADER = "(* MAC *)\nfun MAC/2.\nreduc verifyMAC(m, k, MAC(m, k)) = true.\n";
private final static String CONCAT_HEADER = "(* CONCAT *)\nfun concat/5.\nreduc get1(concat(m1, m2, m3, m4, m5))= m1.\nreduc get2(concat(m1, m2, m3, m4, m5))= m2.\nreduc get3(concat(m1, m2, m3, m4, m5))= m3.\nreduc get4(concat(m1, m2, m3, m4, m5))= m4.\nreduc get5(concat(m1, m2, m3, m4, m5))= m5.\n";
private final static String MAIN_DEC = "int main(int argc, char *argv[]) {\n";
private final static String CR = "\n";
private AvatarSpecification avspec;
......@@ -95,8 +85,25 @@ public class AVATAR2CPOSIX {
public void generateCPOSIX(boolean _debug) {
mainFile = new MainFile("main");
// Create a main mutex
mainFile.appendToHCode("/* Main mutex */" + CR);
mainFile.appendToBeforeMainCode("/* Main mutex */" + CR);
mainFile.appendToHCode("extern pthread_mutex_t mainMutex;" + CR + CR);
mainFile.appendToBeforeMainCode("pthread_mutex_t mainMutex;" + CR + CR);
// Create a synchronous channel per relation/signal
mainFile.appendToHCode("/* Synchronous channels */" + CR);
mainFile.appendToBeforeMainCode("/* Synchronous channels */" + CR);
for(AvatarRelation ar: avspec.getRelations()) {
if (!ar.isAsynchronous()) {
}
}
//mainFile.appendToHCode("pthread_mutex_t mainMutex;" + CR);
}
}
\ No newline at end of file
......@@ -52,6 +52,9 @@ import myutil.*;
import avatartranslator.*;
public class MainFile {
private final static String H_DEF = "#ifndef MAIN_H\n#define MAIN_H\n";
private final static String H_END_DEF = "#endif\n";
private final static String INCLUDE_HEADER = "#include <stdio.h>\n#include <pthread.h>\n#include <unistd.h>\n#include <stdlib.h>\n";
private final static String LOCAL_INCLUDE_HEADER = "#include \"request.h\"\n#include \"syncchannel.h\"\n#include \"request_manager.h\"\n#include \"debug.h\"";
......@@ -60,23 +63,41 @@ public class MainFile {
private final static String CR = "\n";
private String name;
private String hCode;
private String beforeMainCode;
private String mainCode;
public MainFile(String _name) {
name = _name;
hCode = "";
mainCode = "";
}
public String getName() {
return name;
}
public void appendToHCode(String _code) {
hCode += _code;
}
public void appendToBeforeMainCode(String _code) {
beforeMainCode += _code;
}
public void appendToMainCode(String _code) {
mainCode += _code;
}
public String getHeaderCode() {
return "";
return H_DEF + hCode + H_END_DEF;
}
public String getMainCode() {
String s = INCLUDE_HEADER + "\n" + LOCAL_INCLUDE_HEADER + CR + CR;
s += MAIN_DEC + CR + CR + "}" + CR;
s += beforeMainCode + CR;
s += MAIN_DEC + CR + mainCode + CR + "}" + CR;
return s;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment