ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Coro-Multicore/perlmulticore.h
(Generate patch)

Comparing Coro-Multicore/perlmulticore.h (file contents):
Revision 1.14 by root, Mon Aug 13 10:39:46 2018 UTC vs.
Revision 1.15 by root, Tue Mar 5 12:10:31 2019 UTC

25 25
26 perlinterp_release (); 26 perlinterp_release ();
27 do_the_C_thing (); 27 do_the_C_thing ();
28 perlinterp_acquire (); 28 perlinterp_acquire ();
29 29
30 // optional, in BOOT section:
31
32 perlmulticore_support ();
33
30=head1 DESCRIPTION 34=head1 DESCRIPTION
31 35
32This documentation is the abridged version of the full documention at 36This documentation is the abridged version of the full documention at
33L<http://perlmulticore.schmorp.de/>. It's recommended to go there instead 37L<http://perlmulticore.schmorp.de/>. It's recommended to go there instead
34of reading this document. 38of reading this document.
118 122
119This could be added to perl's C<CPPFLAGS> when configuring perl on 123This could be added to perl's C<CPPFLAGS> when configuring perl on
120platforms that do not support threading at all for example. 124platforms that do not support threading at all for example.
121 125
122 126
127=head1 ADVERTISING MULTICORE API SUPPORT
128
129To help users find out whether a particular build of your module is, in
130fact, multicore enabled, you can invoke the C<perlmulticore_support>
131macro in your C<BOOT:> section, e.g.:
132
133
134 MODULE = My::Mod PACKAGE = My::Mod::Pkg
135
136 BOOT:
137 perlmulticore_support ();
138
139What this does is set the C<$My::Mod::PERLMULTICORE_SUPPORT> variable to
140the major API version * 1000 + minor version, for example, version C<1002>
141introduced this feature.
142
143For this to work, the C<cv> parameter passed to C<BOOT:> must still be
144in scope. To ensure this, either invoke the macro early in your C<BOOT:>
145section, or don't declare a local variable called C<cv>, either of which
146should be easy to do.
147
148Note that this is I<optional>, so you don't have to do that.
149
150
123=head1 AUTHOR 151=head1 AUTHOR
124 152
125 Marc A. Lehmann <perlmulticore@schmorp.de> 153 Marc A. Lehmann <perlmulticore@schmorp.de>
126 http://perlmulticore.schmorp.de/ 154 http://perlmulticore.schmorp.de/
127 155
134 162
135=cut 163=cut
136 164
137*/ 165*/
138 166
167/* version history
168 * 1.1 (1001) 2015-07-03: initial release.
169 * 1.2 (1002) 2019-03-03: introduce optional perlmulticore_support macro.
170 */
139#define PERL_MULTICORE_MAJOR 1 /* bumped on incompatible changes */ 171#define PERL_MULTICORE_MAJOR 1 /* bumped on incompatible changes */
140#define PERL_MULTICORE_MINOR 1 /* bumped on every change */ 172#define PERL_MULTICORE_MINOR 2 /* bumped on every change */
141 173
142#if PERL_MULTICORE_DISABLE 174#if PERL_MULTICORE_DISABLE
143 175
144#define perlinterp_release() do { } while (0) 176#define perlinterp_release() do { } while (0)
145#define perlinterp_acquire() do { } while (0) 177#define perlinterp_acquire() do { } while (0)
178#define perlmulticore_support() do { } while (0)
146 179
147#else 180#else
148 181
149START_EXTERN_C 182START_EXTERN_C
150 183
206 239
207 /* call the real (or dummy) implementation now */ 240 /* call the real (or dummy) implementation now */
208 perlinterp_release (); 241 perlinterp_release ();
209} 242}
210 243
244#define perlmulticore_support() \
245 sv_setiv (get_sv ( \
246 form ("%s::PERLMULTICORE_SUPPORT", HvNAME (GvSTASH (CvGV (cv)))), \
247 GV_ADD | GV_ADDMULTI), \
248 PERL_MULTICORE_MAJOR * 1000 + PERL_MULTICORE_MINOR); \
249
211END_EXTERN_C 250END_EXTERN_C
212 251
213#endif 252#endif
214 253
215#endif 254#endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines