#pragma lib
[m6w6/ext-psi] / src / data.c
index 5d7be991a1a8ebde885f99277f2374cb3602e05c..2898ff1e332ee8732dfcc26bf3bdba08eafbd21d 100644 (file)
  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *******************************************************************************/
 
-#include "php_psi_stdinc.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
 #include "php_psi.h"
 #include "data.h"
 
 #include "php_globals.h"
+#include "zend_types.h"
 
 #include <dlfcn.h>
 #include <ctype.h>
 
+#if PSI_THREADED_PARSER
+# include <pthread.h>
+
+static pthread_mutex_t psi_string_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+zend_string *psi_string_init_interned(const char *buf, size_t len, int p)
+{
+       zend_string *str;
+
+       pthread_mutex_lock(&psi_string_mutex);
+       str = zend_string_init_interned(buf, len, p);
+       pthread_mutex_unlock(&psi_string_mutex);
+
+       return str;
+}
+
+zend_string *psi_new_interned_string(zend_string *str)
+{
+       zend_string *new_str;
+
+       pthread_mutex_lock(&psi_string_mutex);
+       new_str = zend_new_interned_string(str);
+       pthread_mutex_unlock(&psi_string_mutex);
+
+       return new_str;
+}
+
+#endif
+
 static void psi_data_ctor_internal(struct psi_data *data,
                psi_error_cb error, unsigned flags)
 {