Hi Anatol.

I'll take a look on Tuesday or Wednesday.

Thanks. Dmitry.

On Sat, Sep 27, 2014 at 12:59 AM, Anatol Belski <anatol....@belski.net>
wrote:

> Hi Dmitry,
>
> On Mon, September 22, 2014 08:43, Dmitry Stogov wrote:
> > Hi Anatol,
> >
> >
> > I didn't completely get your ideas, but if tsrm_ls_cache can't be
> > exported on Windows directly, can we have a copy of tsrm_ls_cache in each
> > DLL/EXE
> > and initialize it once?
> >
> > Thanks. Dmitry.
> >
> Joe and me was working on this and there is a worky version now. Generally
> it suffers from some issues already present in master, but in all things
> together it's a worky crossplatform approach. Please look up the
> native-tls branch.
>
> For the current variant I used the idea from the original RFC, but removed
> exporting the TSRM cache through a __thread variable as it's not portable.
> I've also removed the offset logic from the RFC patch, as that brought
> additional hard to find bugs especially into the current unstable version.
> I don't think it's necessary to copy the arbitrary globals structs in
> every ext, further more i think it's not easy possible without some big
> overhead. However even with the current native-tls branch I'm able to run
> wordpress, symfony, ab -c 8 -n 2048 pass also with multiple calls. Still,
> some Apache bugs are already reported against master, I also repro some
> others, mostly arbitrary shutdown crashes in Apache (so TS version). So as
> they're in master, they're for sure in native-tls.
>
> PHP happens to always have used TLS, however the pointer was passed
> directly to the functions. In TSRM.c, that's tsrm_tls_get/tsrm_tls_set.
> Now, a function wrapper is used to fetch the TLS cache directly in the
> TSRMG macro. This makes the whole slowlier, but allows to get rid of the
> TSRMLS_* macros. The big question is to optimize the function call to
> speedup the whole. Maybe one can speedup it saving a tsrm ls cache pointer
> locally per extension or code area. ATM we're checking the functional
> part, then one can proceed further with removing the TSRMLS_* macros. Any
> speedup or improvement thoughts are welcome.
>
> Possible directions of the further work after known bugs are fixed (in
> master or in native-tls), some are mutually exclusive
>
> - reimplement the offset logic instead of arrays for the globals structs
> - share the tsrm cache pointer globally to some scope, like extension or
> sapi
> - remove the linked lists logic and use TLS explicitly
> - improve locking
>
> Thanks
>
> Anatol
>
>

Reply via email to