|
@@ -30,37 +30,6 @@
|
|
|
#include <sched.h>
|
|
|
#include <sys/mman.h>
|
|
|
|
|
|
-#ifndef HAVE_ON_EXIT_SUPPORT
|
|
|
-#ifndef ATEXIT_MAX
|
|
|
-#define ATEXIT_MAX 32
|
|
|
-#endif
|
|
|
-static int __on_exit_count = 0;
|
|
|
-typedef void (*on_exit_func_t) (int, void *);
|
|
|
-static on_exit_func_t __on_exit_funcs[ATEXIT_MAX];
|
|
|
-static void *__on_exit_args[ATEXIT_MAX];
|
|
|
-static int __exitcode = 0;
|
|
|
-static void __handle_on_exit_funcs(void);
|
|
|
-static int on_exit(on_exit_func_t function, void *arg);
|
|
|
-#define exit(x) (exit)(__exitcode = (x))
|
|
|
-
|
|
|
-static int on_exit(on_exit_func_t function, void *arg)
|
|
|
-{
|
|
|
- if (__on_exit_count == ATEXIT_MAX)
|
|
|
- return -ENOMEM;
|
|
|
- else if (__on_exit_count == 0)
|
|
|
- atexit(__handle_on_exit_funcs);
|
|
|
- __on_exit_funcs[__on_exit_count] = function;
|
|
|
- __on_exit_args[__on_exit_count++] = arg;
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static void __handle_on_exit_funcs(void)
|
|
|
-{
|
|
|
- int i;
|
|
|
- for (i = 0; i < __on_exit_count; i++)
|
|
|
- __on_exit_funcs[i] (__exitcode, __on_exit_args[i]);
|
|
|
-}
|
|
|
-#endif
|
|
|
|
|
|
struct record {
|
|
|
struct perf_tool tool;
|