interface(extern-c){ externalLibs = library:: pkgconfig("libxml-2.0"). include { externalLibs = ["scripts/virtualization/test1.h"] }. } import raw ("scripts/virtualization/test1.assembly.lp"). import raw ("scripts/cfa/context.lp"). DictSizo = type slave dict_sizo. Sizo = type slave sizo. virt_getPrefix = function:: string { dictSizo = intrinsic query("dict_sizo")::[DictSizo]. sizoId = intrinsic query late("sizo_current"->sizoCurrent:: Sizo):: int; demand(sizo) { loop fold(dictSizo->entry::DictSizo, 0->id):: int { if(entry[0] == sizoCurrent):: int { entry[1] } else { id } } }. buf = "000000000"::string. seq { sprintf(buf, "%d", sizoId) } { buf } } openFile = function(filename::string):: int { buf = "0000000000":: string. prefix = virt_getPrefix():: string. seq {sprintf(buf, "/%s/%s", prefix, filename)} {printf("file opened: %s ", buf)} } main = function:: int; entry { seq { context::attachedSizo(domainA). openFile("test1") } { context::attachedSizo(domainB). openFile("test1") } { 0 } }