1 /* This file is part of the Thread::Cleanup Perl module.
2 * See http://search.cpan.org/dist/Thread-Cleanup/ */
4 #define PERL_NO_GET_CONTEXT
9 #define __PACKAGE__ "Thread::Cleanup"
10 #define __PACKAGE_LEN__ (sizeof(__PACKAGE__)-1)
12 #define TC_HAS_PERL(R, V, S) (PERL_REVISION > (R) || (PERL_REVISION == (R) && (PERL_VERSION > (V) || (PERL_VERSION == (V) && (PERL_SUBVERSION >= (S))))))
14 STATIC void tc_callback(pTHX_ void *ud) {
23 call_pv(__PACKAGE__ "::_CLEANUP", G_VOID | G_EVAL);
31 STATIC int tc_endav_free(pTHX_ SV *sv, MAGIC *mg) {
32 SAVEDESTRUCTOR_X(tc_callback, NULL);
37 STATIC MGVTBL tc_endav_vtbl = {
54 MODULE = Thread::Cleanup PACKAGE = Thread::Cleanup
63 gv = gv_fetchpv(__PACKAGE__ "::_CLEANUP", 0, SVt_PVCV);
69 if (!av_store(PL_endav, av_len(PL_endav) + 1, (SV *) cv))
71 sv_magicext((SV *) PL_endav, NULL, PERL_MAGIC_ext, &tc_endav_vtbl, NULL, 0);