X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/578bed66470a134ca18b1165ec11347fff7eb236..5ce2cc84f1f1154453e9534505c394fbd2b89e05:/src/simix/simcalls.py diff --git a/src/simix/simcalls.py b/src/simix/simcalls.py index a650164384..80fa19774b 100755 --- a/src/simix/simcalls.py +++ b/src/simix/simcalls.py @@ -129,9 +129,10 @@ class Simcall(object): def case(self): res = [] + indent = ' ' args = ["simgrid::simix::unmarshal<%s>(simcall->args[%d])" % (arg.rettype(), i) for i, arg in enumerate(self.args)] - res.append('case SIMCALL_%s:' % (self.name.upper())) + res.append(indent + 'case SIMCALL_%s:' % (self.name.upper())) if self.need_handler: call = "simcall_HANDLER_%s(simcall%s%s)" % (self.name, ", " if len(args) > 0 else "", @@ -139,12 +140,12 @@ class Simcall(object): else: call = "SIMIX_%s(%s)" % (self.name, ', '.join(args)) if self.call_kind == 'Func': - res.append(" simgrid::simix::marshal<%s>(simcall->result, %s);" % (self.res.rettype(), call)) + res.append(indent + " simgrid::simix::marshal<%s>(simcall->result, %s);" % (self.res.rettype(), call)) else: - res.append(" " + call + ";") + res.append(indent + " " + call + ";") if self.call_kind != 'Blck': - res.append(' SIMIX_simcall_answer(simcall);') - res.append(' break;') + res.append(indent + ' SIMIX_simcall_answer(simcall);') + res.append(indent + ' break;') res.append('') return '\n'.join(res) @@ -193,7 +194,8 @@ def parse(fn): continue match = re.match( r'^(\S+)\s+([^\)\(\s]+)\s*\(*(.*)\)\s*(\[\[.*\]\])?\s*;\s*?$', line) - assert match, line + if not match: + raise AssertionError(line) ret, name, args, attrs = match.groups() sargs = [] if not re.match(r"^\s*$", args): @@ -217,7 +219,7 @@ def parse(fn): elif attr == "nohandler": handler = False else: - assert False, "Unknown attribute %s in: %s" % (attr, line) + raise AssertionError("Unknown attribute %s in: %s" % (attr, line)) sim = Simcall(name, handler, Arg('result', ret), sargs, ans) if resdi is None: simcalls.append(sim) @@ -264,8 +266,9 @@ def handle(fd, func, simcalls, guarded_simcalls): for guard, ll in guarded_simcalls.items(): fd.write('\n#if %s\n' % (guard)) fd.write('\n'.join(func(simcall) for simcall in ll)) - fd.write('\n#endif\n') + fd.write('\n#endif') + fd.write('\n') if __name__ == '__main__': simcalls, simcalls_dict = parse('simcalls.in') @@ -285,7 +288,7 @@ if __name__ == '__main__': fd.write('#include "src/simix/popping_private.hpp"') handle(fd, Simcall.accessors, simcalls, simcalls_dict) fd.write( - "\n\n/* The prototype of all simcall handlers, automatically generated for you */\n\n") + "\n/* The prototype of all simcall handlers, automatically generated for you */\n\n") handle(fd, Simcall.handler_prototype, simcalls, simcalls_dict) fd.close() @@ -301,7 +304,6 @@ if __name__ == '__main__': handle(fd, Simcall.enum, simcalls, simcalls_dict) - fd.write('\n') fd.write(' NUM_SIMCALLS\n') fd.write('} e_smx_simcall_t;\n') fd.close() @@ -329,7 +331,7 @@ if __name__ == '__main__': fd.write(' "SIMCALL_NONE",\n') handle(fd, Simcall.string, simcalls, simcalls_dict) - fd.write('\n};\n\n') + fd.write('};\n\n') fd.write('/** @private\n') fd.write( @@ -352,8 +354,9 @@ if __name__ == '__main__': fd.write(' case NUM_SIMCALLS:\n') fd.write(' break;\n') fd.write(' case SIMCALL_NONE:\n') - fd.write(' THROWF(arg_error, 0, "Asked to do the noop syscall on %s@%s", simcall->issuer->get_cname(),\n') - fd.write(' sg_host_get_name(simcall->issuer->get_host()));\n') + fd.write(' throw std::invalid_argument(simgrid::xbt::string_printf("Asked to do the noop syscall on %s@%s",\n') + fd.write(' simcall->issuer->get_cname(),\n') + fd.write(' sg_host_get_name(simcall->issuer->get_host())));\n') fd.write(' default:\n') fd.write(' THROW_IMPOSSIBLE;\n') fd.write(' }\n') @@ -370,9 +373,12 @@ if __name__ == '__main__': fd.write('#include "xbt/ex.h"\n') fd.write('#include \n') fd.write('#include \n') + fd.write('#include \n') fd.write("/** @cond */ // Please Doxygen, don't look at this\n") fd.write(''' +XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix); + template inline static R simcall(e_smx_simcall_t call, T const&... t) { @@ -389,5 +395,5 @@ inline static R simcall(e_smx_simcall_t call, T const&... t) } ''') handle(fd, Simcall.body, simcalls, simcalls_dict) - fd.write(" /** @endcond */\n") + fd.write("/** @endcond */\n") fd.close()