HPCToolkit
custom-init-dynamic.c
Go to the documentation of this file.
1
// -*-Mode: C++;-*- // technically C99
2
3
// * BeginRiceCopyright *****************************************************
4
//
5
// $HeadURL$
6
// $Id$
7
//
8
// --------------------------------------------------------------------------
9
// Part of HPCToolkit (hpctoolkit.org)
10
//
11
// Information about sources of support for research and development of
12
// HPCToolkit is at 'hpctoolkit.org' and in 'README.Acknowledgments'.
13
// --------------------------------------------------------------------------
14
//
15
// Copyright ((c)) 2002-2019, Rice University
16
// All rights reserved.
17
//
18
// Redistribution and use in source and binary forms, with or without
19
// modification, are permitted provided that the following conditions are
20
// met:
21
//
22
// * Redistributions of source code must retain the above copyright
23
// notice, this list of conditions and the following disclaimer.
24
//
25
// * Redistributions in binary form must reproduce the above copyright
26
// notice, this list of conditions and the following disclaimer in the
27
// documentation and/or other materials provided with the distribution.
28
//
29
// * Neither the name of Rice University (RICE) nor the names of its
30
// contributors may be used to endorse or promote products derived from
31
// this software without specific prior written permission.
32
//
33
// This software is provided by RICE and contributors "as is" and any
34
// express or implied warranties, including, but not limited to, the
35
// implied warranties of merchantability and fitness for a particular
36
// purpose are disclaimed. In no event shall RICE or contributors be
37
// liable for any direct, indirect, incidental, special, exemplary, or
38
// consequential damages (including, but not limited to, procurement of
39
// substitute goods or services; loss of use, data, or profits; or
40
// business interruption) however caused and on any theory of liability,
41
// whether in contract, strict liability, or tort (including negligence
42
// or otherwise) arising in any way out of the use of this software, even
43
// if advised of the possibility of such damage.
44
//
45
// ******************************************************* EndRiceCopyright *
46
47
//
48
// run a special user initialization function, if the CUSTOM_INIT flag is set
49
//
50
// Dynamic case uses dl functions to open a canonically named shared object file.
51
// extract the "hpcrun_custom_init" function, and call it.
52
//
53
// The canonical name for the shared object is "hpcrun-custom.so". At the moment, this
54
// file must be found in the same directory as the one in which hpcrun is invoked.
55
//
56
//
57
58
// *********************************************
59
// system includes
60
// *********************************************
61
62
#include <stdlib.h>
63
#include <stddef.h>
64
#include <stdbool.h>
65
#include <stdint.h>
66
#include <inttypes.h>
67
#include <dlfcn.h>
68
69
// *********************************************
70
// local includes
71
// *********************************************
72
73
#include "
custom-init.h
"
74
#include <
monitor.h
>
75
#include <
messages/messages.h
>
76
77
// *********************************************
78
// interface functions
79
// *********************************************
80
81
void
82
hpcrun_do_custom_init
(
void
)
83
{
84
if
(
ENABLED
(CUSTOM_INIT)) {
85
void
* custom_fns = monitor_real_dlopen(
"./hpcrun-custom.so"
, RTLD_LAZY);
86
if
(custom_fns) {
87
void (*hpcrun_custom_init)(void) = (
void
(*)(void)) dlsym(custom_fns,
"hpcrun_custom_init"
);
88
if
(hpcrun_custom_init) {
89
TMSG
(CUSTOM_INIT,
"Before call to custom_init"
);
90
hpcrun_custom_init();
91
TMSG
(CUSTOM_INIT,
"Return from custom_init"
);
92
}
93
else
{
94
TMSG
(CUSTOM_INIT,
"could not dynamically load hpcrun_custom_init procedure"
);
95
}
96
monitor_real_dlclose(custom_fns);
97
}
98
else
{
99
TMSG
(CUSTOM_INIT,
"could not open hpcrun-custom.so"
);
100
}
101
}
102
}
custom-init.h
messages.h
hpcrun_do_custom_init
void hpcrun_do_custom_init(void)
Definition:
custom-init-dynamic.c:82
TMSG
#define TMSG(f,...)
Definition:
messages.h:93
monitor.h
ENABLED
#define ENABLED(f)
Definition:
debug-flag.h:76
src
tool
hpcrun
custom-init-dynamic.c
Generated by
1.8.13