From: Abhijit Menon-Sen Date: Sat, 22 Sep 2001 16:21:05 +0000 (+0000) Subject: More cleanups. (What's PERL_DECL_PROT?) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0776ebf09c58b6dd41e996945495d82168d1a73e;p=p5sagit%2Fp5-mst-13.2.git More cleanups. (What's PERL_DECL_PROT?) p4raw-id: //depot/perl@12137 --- diff --git a/embed.pl b/embed.pl index bbb03c3..0e38c17 100755 --- a/embed.pl +++ b/embed.pl @@ -2188,13 +2188,13 @@ s |void |debprof |OP *o s |SV* |save_scalar_at |SV **sptr #endif -#if defined(USE_ITHREADS) && (defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT)) +#if defined(USE_ITHREADS) || defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT) Adp |void |sharedsv_init -Adp |shared_sv* |sharedsv_new -Adp |shared_sv* |sharedsv_find |SV* sv -Adp |void |sharedsv_lock |shared_sv* ssv -Adp |void |sharedsv_unlock |shared_sv* ssv -p |void |sharedsv_unlock_scope |shared_sv* ssv +Adp |shared_sv* |sharedsv_new +Adp |shared_sv* |sharedsv_find |SV* sv +Adp |void |sharedsv_lock |shared_sv* ssv +Adp |void |sharedsv_unlock |shared_sv* ssv +p |void |sharedsv_unlock_scope |shared_sv* ssv Adp |void |sharedsv_thrcnt_inc |shared_sv* ssv Adp |void |sharedsv_thrcnt_dec |shared_sv* ssv #endif diff --git a/proto.h b/proto.h index 2c8e8c9..2d763a3 100644 --- a/proto.h +++ b/proto.h @@ -1176,7 +1176,7 @@ STATIC void S_debprof(pTHX_ OP *o); STATIC SV* S_save_scalar_at(pTHX_ SV **sptr); #endif -#if defined(USE_ITHREADS) && (defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT)) +#if defined(USE_ITHREADS) || defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT) PERL_CALLCONV void Perl_sharedsv_init(pTHX); PERL_CALLCONV shared_sv* Perl_sharedsv_new(pTHX); PERL_CALLCONV shared_sv* Perl_sharedsv_find(pTHX_ SV* sv); diff --git a/sharedsv.h b/sharedsv.h index bba2210..5a55be6 100644 --- a/sharedsv.h +++ b/sharedsv.h @@ -1,38 +1,28 @@ - #ifdef USE_ITHREADS typedef struct { - SV* sv; /* The actual data */ - perl_mutex mutex; /* Our mutex */ - perl_cond cond; /* Our condition variable */ - perl_cond user_cond; /* For user level conditions */ - IV locks; /* Number of locks held */ - PerlInterpreter* owner; /* who owns the lock */ + SV *sv; /* The actual SV */ + perl_mutex mutex; /* Our mutex */ + perl_cond cond; /* Our condition variable */ + perl_cond user_cond; /* For user-level conditions */ + IV locks; /* Number of locks held */ + PerlInterpreter *owner; /* Who owns the lock? */ } shared_sv; +#define SHAREDSvGET(a) (a->sv) +#define SHAREDSvLOCK(a) Perl_sharedsv_lock(aTHX_ a) +#define SHAREDSvUNLOCK(a) Perl_sharedsv_unlock(aTHX_ a) +#define SHAREDSvEDIT(a) STMT_START { \ + MUTEX_LOCK(&PL_sharedsv_space_mutex); \ + SHAREDSvLOCK((a)); \ + PERL_SET_CONTEXT(PL_sharedsv_space); \ + } STMT_END -void Perl_sharedsv_unlock_scope(pTHX_ shared_sv* ssv); -void Perl_sharedsv_unlock(pTHX_ shared_sv* ssv); -void Perl_sharedsv_lock(pTHX_ shared_sv* ssv); -void Perl_sharedsv_init(pTHX); -shared_sv* Perl_sharedsv_new(pTHX); -shared_sv* Perl_sharedsv_find(pTHX_ SV* sv); -void Perl_sharedsv_thrcnt_inc(pTHX_ shared_sv* ssv); -void Perl_sharedsv_thrcnt_dec(pTHX_ shared_sv* ssv); - - -#define SHAREDSvGET(a) (a->sv) -#define SHAREDSvEDIT(a) { MUTEX_LOCK(&PL_sharedsv_space_mutex);\ -SHAREDSvLOCK((a));\ -PERL_SET_CONTEXT(PL_sharedsv_space);\ -} -#define SHAREDSvRELEASE(a) { PERL_SET_CONTEXT((a)->owner);\ -SHAREDSvUNLOCK((a));\ -MUTEX_UNLOCK(&PL_sharedsv_space_mutex);\ -} -#define SHAREDSvLOCK(a) Perl_sharedsv_lock(aTHX_ a) -#define SHAREDSvUNLOCK(a) Perl_sharedsv_unlock(aTHX_ a) +#define SHAREDSvRELEASE(a) STMT_START { \ + PERL_SET_CONTEXT((a)->owner); \ + SHAREDSvUNLOCK((a)); \ + MUTEX_UNLOCK(&PL_sharedsv_space_mutex); \ + } STMT_END #endif /* USE_ITHREADS */ -