34#include "tsrm_win32.h"
57#ifdef COMPILE_DL_SHMOP
61typedef struct php_shmop
75static inline php_shmop *shmop_from_obj(
zend_object *obj)
77 return (php_shmop *)((
char *)(obj) -
XtOffsetOf(php_shmop, std));
80#define Z_SHMOP_P(zv) shmop_from_obj(Z_OBJ_P(zv))
84 php_shmop *intern = zend_object_alloc(
sizeof(php_shmop), class_type);
100 php_shmop *shmop = shmop_from_obj(
object);
110 shmop_ce = register_class_Shmop();
116 shmop_object_handlers.
free_obj = shmop_free_obj;
121 register_shmop_symbols(module_number);
149 if (flags_len != 1) {
157 shmop->shmflg |=
mode;
162 shmop->shmatflg |= SHM_RDONLY;
165 shmop->shmflg |= IPC_CREAT;
169 shmop->shmflg |= (IPC_CREAT | IPC_EXCL);
183 if (shmop->shmflg & IPC_CREAT && shmop->size < 1) {
188 shmop->shmid = shmget(shmop->key, shmop->size, shmop->shmflg);
189 if (shmop->shmid == -1) {
194 if (shmctl(shmop->shmid, IPC_STAT, &shm)) {
205 shmop->addr = shmat(shmop->shmid, 0, shmop->shmatflg);
206 if (shmop->addr == (
char*) -1) {
211 shmop->size = shm.shm_segsz;
234 shmop = Z_SHMOP_P(shmid);
246 startaddr = shmop->addr +
start;
249 return_string = zend_string_init(startaddr, bytes, 0);
276 shmop = Z_SHMOP_P(shmid);
295 shmop = Z_SHMOP_P(shmid);
297 if ((shmop->shmatflg & SHM_RDONLY) == SHM_RDONLY) {
324 shmop = Z_SHMOP_P(shmid);
326 if (shmctl(shmop->shmid, IPC_RMID,
NULL)) {
count(Countable|array $value, int $mode=COUNT_NORMAL)
PHPAPI ZEND_COLD void php_error_docref(const char *docref, int type, const char *format,...)
php_info_print_table_start()
php_info_print_table_row(2, "PDO Driver for Firebird", "enabled")
php_info_print_table_end()
#define PHP_MINIT_FUNCTION
#define PHP_MINFO_FUNCTION
unsigned char key[REFLECTION_KEY_LEN]
shmop_read(Shmop $shmop, int $offset, int $size)
shmop_write(Shmop $shmop, string $data, int $offset)
shmop_open(int $key, string $mode, int $permissions, int $size)
shmop_delete(Shmop $shmop)
shmop_close(Shmop $shmop)
zend_object *(* create_object)(zend_class_entry *class_type)
const zend_object_handlers * default_object_handlers
zend_object_compare_t compare
zend_object_free_obj_t free_obj
zend_object_get_constructor_t get_constructor
zend_object_clone_obj_t clone_obj
ZEND_API ZEND_COLD void zend_throw_error(zend_class_entry *exception_ce, const char *format,...)
ZEND_API zend_result object_init_ex(zval *arg, zend_class_entry *class_type)
ZEND_API zend_result zend_parse_parameters(uint32_t num_args, const char *type_spec,...)
ZEND_API void object_properties_init(zend_object *object, zend_class_entry *class_type)
ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *format,...)
#define ZEND_GET_MODULE(name)
#define RETURN_NEW_STR(s)
union _zend_function zend_function
struct _zend_string zend_string
#define STANDARD_MODULE_HEADER
struct _zend_module_entry zend_module_entry
#define STANDARD_MODULE_PROPERTIES
ZEND_API int zend_objects_not_comparable(zval *o1, zval *o2)
ZEND_API const zend_object_handlers std_object_handlers
ZEND_API void ZEND_FASTCALL zend_object_std_init(zend_object *object, zend_class_entry *ce)
ZEND_API void zend_object_std_dtor(zend_object *object)
#define XtOffsetOf(s_type, field)
struct _zend_class_entry zend_class_entry
struct _zend_object zend_object
struct _zend_object_handlers zend_object_handlers