12#include "GaudiKernel/IEvtSelector.h"
13#include "GaudiKernel/IConversionSvc.h"
14#include "GaudiKernel/IIoComponentMgr.h"
20 ,
const std::string& name
21 ,
const IInterface* parent)
38 m_cnvSvc = serviceLocator()->service(
"AthenaPoolSharedIOCnvSvc");
41 return StatusCode::SUCCESS;
49 return StatusCode::SUCCESS;
52int SharedWriterTool::makePool(
int ,
int nprocs,
const std::string& topdir)
85 return StatusCode::FAILURE;
91 return StatusCode::FAILURE;
93 return StatusCode::SUCCESS;
101 filenames.push_back(writer_rundir.string()+std::string(
"/AthenaMP.log"));
135 *(
int*)(outwork->data) = 1;
136 outwork->size =
sizeof(int);
153 if(mkdir(writer_rundir.string().c_str(),S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)==-1) {
154 ATH_MSG_ERROR(
"Unable to make writer run directory: " << writer_rundir.string() <<
". " <<
fmterror(errno));
163 ATH_MSG_INFO(
"Logs redirected in the AthenaMP Shared Writer PID=" << getpid());
170 ATH_MSG_INFO(
"Io registry updated in the AthenaMP Shared Writer PID=" << getpid());
173 std::filesystem::path abs_writer_rundir = std::filesystem::absolute(writer_rundir);
181 ATH_MSG_INFO(
"File descriptors re-opened in the AthenaMP Shared Writer PID=" << getpid());
184 SmartIF<IAthenaSharedWriterSvc> sharedWriterSvc(serviceLocator()->service(
"AthenaRootSharedWriterSvc"));
185 if(!sharedWriterSvc) {
186 ATH_MSG_WARNING(
"Error retrieving AthenaRootSharedWriterSvc from SharedWriterTool::bootstrap_func()");
190 SmartIF<IDataShare> cnvSvc(
m_cnvSvc);
191 if (!cnvSvc || !cnvSvc->makeServer(-
m_nprocs - 1 - 1024 *
m_rankId).isSuccess()) {
192 ATH_MSG_ERROR(
"Failed to make the conversion service a share server");
196 ATH_MSG_DEBUG(
"Successfully made the conversion service a share server");
200 if(!
m_ioMgr->io_reinitialize().isSuccess()) {
208 if(chdir(writer_rundir.string().c_str())==-1) {
209 ATH_MSG_ERROR(
"Failed to chdir to " << writer_rundir.string());
214 *(
int*)(outwork->data) = 0;
220 ATH_MSG_INFO(
"Exec function in the AthenaMP Shared Writer PID=" << getpid());
223 SmartIF<IAthenaSharedWriterSvc> sharedWriterSvc(serviceLocator()->service(
"AthenaRootSharedWriterSvc"));
224 if(!sharedWriterSvc) {
242 if(
m_appMgr->finalize().isFailure()) {
243 std::cerr <<
"Unable to finalize AppMgr" << std::endl;
250 *(
int*)(outwork->data) = (all_ok?0:1);
251 outwork->size =
sizeof(int);
265 *(
int*)(outwork->data) = 0;
266 outwork->size =
sizeof(int);
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Base class for all conversion services.
virtual StatusCode disconnectOutput(const std::string &output)
Disconnect output files from the service.
std::map< std::string, SingleWorkerOutputs > AllWorkerOutputs
std::unique_ptr< AllWorkerOutputs > AllWorkerOutputs_ptr
void * xmalloc(size_t size)
Trapping version of malloc.
::StatusCode StatusCode
StatusCode definition for legacy code.
Trapping version of malloc.