-/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
aid_t ppid_ = -1;
bool daemon_ = false; /* Daemon actors are automatically killed when the last non-daemon leaves */
bool auto_restart_ = false;
+ unsigned stacksize_; // set to default value in constructor
public:
xbt::string name_;
bool is_daemon() { return daemon_; } /** Whether this actor has been daemonized */
bool has_to_auto_restart() { return auto_restart_; }
void set_auto_restart(bool autorestart) { auto_restart_ = autorestart; }
+ void set_stacksize(unsigned stacksize) { stacksize_ = stacksize; }
+ unsigned get_stacksize() { return stacksize_; }
std::unique_ptr<context::Context> context_; /* the context (uctx/raw/thread) that executes the user function */
bool finished_ = false;
bool suspended_ = false;
- activity::ActivityImplPtr waiting_synchro = nullptr; /* the current blocking synchro if any */
- std::list<activity::ActivityImplPtr> comms; /* the current non-blocking communication synchros */
- s_smx_simcall simcall;
+ activity::ActivityImplPtr waiting_synchro_ = nullptr; /* the current blocking synchro if any */
+ std::list<activity::ActivityImplPtr> activities_; /* the current non-blocking synchros */
+ s_smx_simcall simcall_;
/* list of functions executed when the process dies */
std::shared_ptr<std::vector<std::function<void(bool)>>> on_exit =
std::make_shared<std::vector<std::function<void(bool)>>>();
std::function<void()> code_;
- simix::Timer* kill_timer = nullptr;
+ simix::Timer* kill_timer_ = nullptr;
private:
/* Refcounting */
private:
s4u::Actor piface_; // Our interface is part of ourselves
+ void cleanup_from_simix();
void undaemonize();
public:
s4u::Actor* ciface() { return &piface_; }
ActorImplPtr init(const std::string& name, s4u::Host* host);
- ActorImpl* start(const simix::ActorCode& code);
+ ActorImpl* start(const ActorCode& code);
- static ActorImplPtr create(const std::string& name, const simix::ActorCode& code, void* data, s4u::Host* host,
+ static ActorImplPtr create(const std::string& name, const ActorCode& code, void* data, s4u::Host* host,
const std::unordered_map<std::string, std::string>* properties, ActorImpl* parent_actor);
static ActorImplPtr attach(const std::string& name, void* data, s4u::Host* host,
const std::unordered_map<std::string, std::string>* properties);
s4u::Actor* restart();
void suspend();
void resume();
- activity::ActivityImplPtr join(ActorImpl* actor, double timeout);
+ activity::ActivityImplPtr join(const ActorImpl* actor, double timeout);
activity::ActivityImplPtr sleep(double duration);
/** Ask the actor to throw an exception right away */
void throw_exception(std::exception_ptr e);
extern void (*SMPI_switch_data_segment)(simgrid::s4u::ActorPtr actor);
+XBT_PUBLIC smx_actor_t simcall_process_create(const std::string& name, const simgrid::kernel::actor::ActorCode& code,
+ void* data, sg_host_t host,
+ std::unordered_map<std::string, std::string>* properties);
+
#endif