php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_modules.h
Go to the documentation of this file.
1/*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
5 | Copyright (c) Zend Technologies Ltd. (http://www.zend.com) |
6 +----------------------------------------------------------------------+
7 | This source file is subject to version 2.00 of the Zend license, |
8 | that is bundled with this package in the file LICENSE, and is |
9 | available through the world-wide-web at the following url: |
10 | http://www.zend.com/license/2_00.txt. |
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
14 +----------------------------------------------------------------------+
15 | Authors: Andi Gutmans <andi@php.net> |
16 | Zeev Suraski <zeev@php.net> |
17 +----------------------------------------------------------------------+
18*/
19
20#ifndef MODULES_H
21#define MODULES_H
22
23#include "zend.h"
24#include "zend_compile.h"
25#include "zend_build.h"
26
27#define INIT_FUNC_ARGS int type, int module_number
28#define INIT_FUNC_ARGS_PASSTHRU type, module_number
29#define SHUTDOWN_FUNC_ARGS int type, int module_number
30#define SHUTDOWN_FUNC_ARGS_PASSTHRU type, module_number
31#define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module
32#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
33
34#define ZEND_MODULE_API_NO 20240924
35#ifdef ZTS
36#define USING_ZTS 1
37#else
38#define USING_ZTS 0
39#endif
40
41#define STANDARD_MODULE_HEADER_EX sizeof(zend_module_entry), ZEND_MODULE_API_NO, ZEND_DEBUG, USING_ZTS
42#define STANDARD_MODULE_HEADER \
43 STANDARD_MODULE_HEADER_EX, NULL, NULL
44#define ZE2_STANDARD_MODULE_HEADER \
45 STANDARD_MODULE_HEADER_EX, ini_entries, NULL
46
47#define ZEND_MODULE_BUILD_ID "API" ZEND_TOSTR(ZEND_MODULE_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
48
49#define STANDARD_MODULE_PROPERTIES_EX 0, 0, NULL, 0, ZEND_MODULE_BUILD_ID
50
51#define NO_MODULE_GLOBALS 0, NULL, NULL, NULL
52
53#ifdef ZTS
54# define ZEND_MODULE_GLOBALS(module_name) sizeof(zend_##module_name##_globals), &module_name##_globals_id
55#else
56# define ZEND_MODULE_GLOBALS(module_name) sizeof(zend_##module_name##_globals), &module_name##_globals
57#endif
58
59#define STANDARD_MODULE_PROPERTIES \
60 NO_MODULE_GLOBALS, NULL, STANDARD_MODULE_PROPERTIES_EX
61
62#define NO_VERSION_YET NULL
63
64#define MODULE_PERSISTENT 1
65#define MODULE_TEMPORARY 2
66
67struct _zend_ini_entry;
70
101
102#define MODULE_DEP_REQUIRED 1
103#define MODULE_DEP_CONFLICTS 2
104#define MODULE_DEP_OPTIONAL 3
105
106#define ZEND_MOD_REQUIRED_EX(name, rel, ver) { name, rel, ver, MODULE_DEP_REQUIRED },
107#define ZEND_MOD_CONFLICTS_EX(name, rel, ver) { name, rel, ver, MODULE_DEP_CONFLICTS },
108#define ZEND_MOD_OPTIONAL_EX(name, rel, ver) { name, rel, ver, MODULE_DEP_OPTIONAL },
109
110#define ZEND_MOD_REQUIRED(name) ZEND_MOD_REQUIRED_EX(name, NULL, NULL)
111#define ZEND_MOD_CONFLICTS(name) ZEND_MOD_CONFLICTS_EX(name, NULL, NULL)
112#define ZEND_MOD_OPTIONAL(name) ZEND_MOD_OPTIONAL_EX(name, NULL, NULL)
113
114#define ZEND_MOD_END { NULL, NULL, NULL, 0 }
115
117 const char *name; /* module name */
118 const char *rel; /* version relationship: NULL (exists), lt|le|eq|ge|gt (to given version) */
119 const char *version; /* version */
120 unsigned char type; /* dependency type */
121};
122
125
128void module_registry_unload(const zend_module_entry *module);
130
131#endif
Definition zend_API.h:35
Definition zend_ini.h:47
unsigned char type
const char * name
const char * rel
const char * version
void(* globals_dtor)(void *global)
unsigned int zend_api
size_t globals_size
zend_result(* module_shutdown_func)(SHUTDOWN_FUNC_ARGS)
unsigned char type
void(* globals_ctor)(void *global)
zend_result(* module_startup_func)(INIT_FUNC_ARGS)
const struct _zend_module_dep * deps
const struct _zend_ini_entry * ini_entry
const char * name
zend_result(* request_shutdown_func)(SHUTDOWN_FUNC_ARGS)
unsigned short size
void(* info_func)(ZEND_MODULE_INFO_FUNC_ARGS)
unsigned char zend_debug
int module_started
unsigned char zts
const char * version
void * globals_ptr
int module_number
const char * build_id
void * handle
const struct _zend_function_entry * functions
zend_result(* request_startup_func)(INIT_FUNC_ARGS)
zend_result(* post_deactivate_func)(void)
ZEND_API HashTable module_registry
Definition zend_API.c:41
void module_registry_unload(const zend_module_entry *module)
Definition zend_API.c:3360
void module_destructor(zend_module_entry *module)
Definition zend_API.c:3303
#define ZEND_API
ZEND_API void(ZEND_FASTCALL *zend_touch_vm_stack_data)(void *vm_stack_data)
#define ZEND_MODULE_INFO_FUNC_ARGS
int module_registry_request_startup(zend_module_entry *module)
#define INIT_FUNC_ARGS
#define SHUTDOWN_FUNC_ARGS
struct _zend_module_dep zend_module_dep
struct _zend_module_entry zend_module_entry
#define END_EXTERN_C()
#define BEGIN_EXTERN_C()
struct _zend_array HashTable
Definition zend_types.h:386
ZEND_RESULT_CODE zend_result
Definition zend_types.h:64