X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsim%2Finit.hh;h=40ff9aea03e11f2f7f44aa54dd1d5aa76c1ae6be;hb=abd33d6fd26bb69d3bf53ceb6c2dc8f90d893e34;hp=325fc8e6f49506bca87c936ae9008caf195f3631;hpb=319443d42dbed8d6b07b8a2b7a0e565ff5bd8abf;p=gem5.git diff --git a/src/sim/init.hh b/src/sim/init.hh index 325fc8e6f..40ff9aea0 100644 --- a/src/sim/init.hh +++ b/src/sim/init.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2017 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2008 The Hewlett-Packard Development Company * All rights reserved. * @@ -31,12 +43,11 @@ #ifndef __SIM_INIT_HH__ #define __SIM_INIT_HH__ -#include +#include "pybind11/pybind11.h" -/* - * Data structure describing an embedded python file. - */ #include +#include +#include #include @@ -45,6 +56,9 @@ struct _object; typedef _object PyObject; #endif +/* + * Data structure describing an embedded python file. + */ struct EmbeddedPython { const char *filename; @@ -66,23 +80,37 @@ struct EmbeddedPython static int initAll(); }; -struct EmbeddedSwig +class EmbeddedPyBind { - void (*initFunc)(); + public: + EmbeddedPyBind(const char *_name, + void (*init_func)(pybind11::module &), + const char *_base); - EmbeddedSwig(void (*init_func)()); + EmbeddedPyBind(const char *_name, + void (*init_func)(pybind11::module &)); - static std::list &getList(); +#if PY_MAJOR_VERSION >= 3 + static PyObject *initAll(); +#else static void initAll(); +#endif + + private: + void (*initFunc)(pybind11::module &); + + bool depsReady() const; + void init(pybind11::module &m); + + bool registered; + const std::string name; + const std::string base; + + static std::map &getMap(); }; -void dumpStatsHandler(int sigtype); -void dumprstStatsHandler(int sigtype); -void exitNowHandler(int sigtype); -void abortHandler(int sigtype); -void initSignals(); -int initM5Python(); +void registerNativeModules(); + int m5Main(int argc, char **argv); -PyMODINIT_FUNC initm5(void); #endif // __SIM_INIT_HH__