Commit Graph

94 Commits

Author SHA1 Message Date
Anatol Belski
6a3a2bf18e vim folds and mode lines yet 2017-07-04 17:06:52 +02:00
Anatol Belski
4d64a49fcd export the main thread info 2017-04-15 17:48:40 +02:00
Anatol Belski
c698299550 Interned strings unification for TS/NTS
Hereby, interned strings are supported in thread safe PHP. The patch
implements two types of interned strings

- interning per process, strings are not freed till process end
- interning per request, strings are freed at request end

There is no runtime interning.

With Opcache, all the permanent iterned strings are copied into SHM on
startup, additional copying into SHM might happen on demand.
2017-03-04 10:39:13 +01:00
Kalle Sommer Nielsen
2104bea5d7 Remove Netware support
If this does not break the Unix system somehow, I'll be amazed. This should get most of it out, apologies for any errors this may cause on non-Windows ends which I cannot test atm.
2016-11-12 11:20:01 +01:00
Anatol Belski
fca341699e don't pass zero to malloc() 2015-03-10 09:10:23 +01:00
Stanislav Malyshev
b7a7b1a624 trailing whitespace removal 2015-01-10 15:07:38 -08:00
Ferenc Kovacs
a9e86957c7 fix zts build on mac/clang 2014-12-21 20:01:39 +01:00
Anatol Belski
64b423d6ed removed the extra tsrm pointer passed to ctor/dtor 2014-12-16 08:03:15 +01:00
Anatol Belski
de99a94c38 explicit passing of *tsrm_ls isn't needed anymore 2014-12-12 08:11:14 +01:00
Anatol Belski
8aeffdd74c moved most of the core to use static tsrm ls cache pointer
plus apache2handler, cli and cgi
2014-10-15 16:33:40 +02:00
Anatol Belski
d11734b4b0 reworked the patch, less new stuff but worky
TLS is already used in TSRM, the way exporting the tsrm cache through
a thread local variable is not portable. Additionally, the current
patch suffers from bugs which are hard to find, but prevent it to
be worky with apache. What is done here is mainly uses the idea
from the RFC patch, but

- __thread variable is removed
- offset math and declarations are removed
- extra macros and definitions are removed

What is done merely is

- use an inline function to access the tsrm cache. The function uses
  the portable tsrm_tls_get macro which is cheap
- all the TSRM_* macros are set to placebo. Thus this opens the way
  remove them later

Except that, the logic is old. TSRMLS_FETCH will have to be done once
per thread, then tsrm_get_ls_cache() can be used. Things seeming to be
worky are cli, cli server and apache. I also tried to enable bz2
shared and it has worked out of the box. The change is yet minimal
diffing to the current master bus is a worky start, IMHO. Though will
have to recheck the other previously done SAPIs - embed and cgi.

The offsets can be added to the tsrm_resource_type struct, then
it'll not be needed to declare them in the userspace. Even the
"done" member type can be changed to int16 or smaller, then adding
the offset as int16 will not change the struct size. As well on the
todo might be removing the hashed storage, thread_id != thread_id and
linked list logic in favour of the explicit TLS operations.
2014-09-25 18:48:27 +02:00
Anatol Belski
aa8c424e0f call ctor if it's not done yet 2014-09-24 02:11:05 +02:00
Anatol Belski
58a2b05d7b fix indent 2014-09-23 17:14:41 +02:00
Anatol Belski
4db75dc853 basic windows fix 2014-09-22 20:58:45 +02:00
Anatol Belski
2720743636 vars with __declspec(thread) cannot use __declspec(dllexport) 2014-09-20 22:13:10 +02:00
krakjoe
b3aebda9ea native tls initial patch 2014-09-20 20:22:14 +01:00
Ilia Alshanetsky
939875133a Zend Signal Handling (see RFC: https://wiki.php.net/rfc/zendsignals)
This needs to go into 5.4 as well, but will wait for Pierre to review win32 situation

# Patch by Lucas Nealan, Arnaud Le Blanc, Brian Shire & Ilia Alshanetsky
2011-06-02 21:16:50 +00:00
Felipe Pena
0203cc3d44 - Year++ 2011-01-01 02:17:06 +00:00
Ilia Alshanetsky
3ea4abe92c update copyright 2010-02-16 13:01:50 +00:00
Sebastian Bergmann
08659c2dcd MFH: Bump copyright year, 3 of 3. 2008-12-31 11:15:49 +00:00
Antony Dovgal
a57ce92705 MFH: fix TSRM mutex return value inconsitencies (patch by Scott MacVicar) 2008-02-07 09:06:45 +00:00
Sebastian Bergmann
d1dded8751 MFH: Bump copyright year, 2 of 2. 2007-12-31 07:17:19 +00:00
Sebastian Bergmann
4223aa4d5e MFH: Bump year. 2007-01-01 09:36:18 +00:00
Dmitry Stogov
98bacb0e21 Fixed bug #35988 (Unknown persistent list entry type in module shutdown) 2006-03-14 15:16:07 +00:00
Andi Gutmans
30cb5e36b8 - Update to 2006 2006-01-04 23:55:42 +00:00
Sara Golemon
5fc9d15692 MFH: allocate_new_resource() handles the malloc() for us. Don't leak by mallocing twice. 2005-08-29 22:05:25 +00:00
Anantha Kesari H Y
032d0962c2 Netware pthreads support is good enough. So removing all these fixes of old times.
-- Kamesh
2005-07-16 11:38:40 +00:00
Sara Golemon
c281eb38ae Unterminated paren group in BETHREADS definition of tsrm_tls_set() macro 2005-05-16 22:46:05 +00:00
Wez Furlong
4625889764 consolidate the various tls get/set calls for the different platforms into
a single macro, at Andi's request.
2005-04-28 02:55:14 +00:00
Wez Furlong
6d978a62f1 Add three new TSRM api functions:
TSRM_API void *tsrm_new_interpreter_context(void);
TSRM_API void *tsrm_set_interpreter_context(void *new_ctx);
TSRM_API void tsrm_free_interpreter_context(void *context);

These can be used, with a suitable SAPI, to host multiple interpreters on
the same thread.
2005-04-27 22:19:54 +00:00
Zeev Suraski
18f4a3f9ff Merge 2005-03-20 09:03:40 +00:00
Anantha Kesari H Y
e32ae40fbf NetWare has pthreads implementation 2005-02-21 10:05:07 +00:00
Marcus Boerger
32bdaae133 Apply the fix 2004-07-15 22:17:55 +00:00
Andi Gutmans
c495c54069 - Fix typo although it isn't being built 2004-05-23 16:05:09 +00:00
Marcus Boerger
fbb28b36b7 - Once ts_free_id() will be used, we cannot call ctors for deleted ids
when creating new threads.
2004-05-13 06:53:21 +00:00
Marcus Boerger
88a02ba159 - More work on ts_free_id() but still keep it out 2004-05-12 22:28:28 +00:00
Marcus Boerger
c0be906309 ifdef out the ts_free_id until php 5.1 and until it is complete 2004-05-12 22:17:01 +00:00
Marcus Boerger
8e52e04c30 - Implement ts_free_id() 2004-05-12 10:30:46 +00:00
Stanislav Malyshev
07266a10ab Disabled calling dtors on tsrm_shutdown - calling dtors in tsrm_shutdown makes
modules registering TSRM ids to crash, if they have dtors, since the module
is unloaded before tsrm_shutdown is called. Can be re-enabled after
tsrm_free_id is implemented.
2004-03-30 16:56:01 +00:00
Marcus Boerger
c1e905dfc1 Removed doubled loop from wrongly applied patch 2003-12-14 15:41:50 +00:00
Zeev Suraski
3788ddb383 Fix from Michael Sisolak (destructors weren't always properly called) 2003-12-14 09:36:23 +00:00
Ilia Alshanetsky
5ead9d369e Fixed bug #17414 (pthreads bug work around)
Patch by timo.teras[at]iki.fi
2003-08-05 20:03:54 +00:00
Sebastian Bergmann
60ffd0ea5d Restore HEAD of TSRM to what it was two days ago. 2003-06-25 05:05:06 +00:00
James Cox
76f85107e2 bring head into sync with the php4 branch 2003-06-23 01:27:13 +00:00
Zeev Suraski
e8de102cd6 Fix leaks 2003-01-07 12:11:40 +00:00
Zeev Suraski
efb9fdf0e6 call dtors on shutdown 2003-01-07 10:33:22 +00:00
Anantha Kesari H Y
455257974b NetWare related changes/modifications. 2003-01-02 14:29:00 +00:00
Andi Gutmans
bdc5bb5739 - Fix TSRM_ERROR macro 2002-11-05 17:34:47 +00:00
Derick Rethans
cdc3b6d652 - Whitspace 2002-10-05 11:34:02 +00:00
David Reid
2a0fbded3d Add BeOS thread support to TSRM. This should not impact on any other OS's
but allows us to build PHP with threading support and therefore we can
build as an Apache 2 module.

The locking is currently done using benaphores but this may be reviewed.
2002-10-05 11:26:17 +00:00