The return data in PHP is "$data" which is an array with 4 elements,
does it match to "zmsg" inside of c function
"socket_recvmsg"(/home/work/php/php/ext/sockets/sendrecvmsg.c:214)?

Here zmsg is struct with:

(gdb) ptype zmsg
type = struct _zval_struct {
    zend_value value;
    union {
        struct {...} v;
        uint32_t type_info;
    } u1;
    union {
        uint32_t next;
        uint32_t cache_slot;
        uint32_t lineno;
        uint32_t num_args;
        uint32_t fe_pos;
        uint32_t fe_iter_idx;
        uint32_t access_flags;
        uint32_t property_guard;
        uint32_t extra;
    } u2;
} *

How do these two variables match between php and C?

Thanks,

Sam

Sam Ding/Toronto/IBM wrote on 01/26/2018 09:36:00 AM:

> From: Sam Ding/Toronto/IBM
> To: Kalle Sommer Nielsen <ka...@php.net>
> Cc: PHP internals <internals@lists.php.net>, kalle....@gmail.com
> Date: 01/26/2018 09:36 AM
> Subject: Re: [PHP-DEV] return values of socket_recvmsg
>
> Thank Kalle,
>
> I knew the implementaion of socket_recvmsg(), but want to know the
> return data structure.
> The test on Big_endian (s390x) got a little different return result
> than on x86_64, try to dig out
> where the problem is.
>
> Thanks,
>
> Sam
>
>
> kalle....@gmail.com wrote on 01/26/2018 01:58:23 AM:
>
> > From: Kalle Sommer Nielsen <ka...@php.net>
> > To: Sam Ding <samd...@ca.ibm.com>
> > Cc: PHP internals <internals@lists.php.net>
> > Date: 01/26/2018 01:58 AM
> > Subject: Re: [PHP-DEV] return values of socket_recvmsg
> > Sent by: kalle....@gmail.com
> >
> > Hi Sam
> >
> > 2018-01-25 23:11 GMT+01:00 Sam Ding <samd...@ca.ibm.com>:
> > >
> > > The test case  ext/sockets/tests/socket_recvmsg.php  has following
output
> > > on x86_64:
> > >
> > > =======
> > > ...
> > > 1 Array
> > > 2 (
> > > 3    [name] => Array
> > > 4        (
> > > 5            [family] => 10
> > > 6            [addr] => ::1
> > > 7            [port] => 7001
> > > 8            [flowinfo] => 0
> > > 9            [scope_id] => 0
> > > 10        )
> > > 11
> > > 12    [control] => Array
> > > 13       (
> > > 14            [0] => Array
> > > 15               (
> > > 16                    [level] => 41
> > > 17                    [type] => 50
> > > 18                    [data] => Array
> > > 19                       (
> > > 20                            [addr] => ::1
> > > 21                            [ifindex] => 1
> > > 22                        )
> > > 23                )
> > > 24        )
> > > ...
> > > =======
> > > This is output  by c
> > > function:"socket_recvmsg"(/home/work/php/php/ext/sockets/
> sendrecvmsg.c:214),
> >
> > You can find the implementation of socket_recvmsg() in the ext/sockets
> > directory here:
> > https://urldefense.proofpoint.com/v2/url?
> >
>
u=http-3A__git.php.net_-3Fp-3Dphp-2Dsrc.git-3Ba-3Dblob-3Bf-3Dext_sockets_sendrecvmsg.c-3Bh-3D7b9c4e8ad357b73b514dc5feb8dc8d9ca215126b-3Bhb-3DHEAD-23l210&d=DwIBaQ&c=jf_iaSHvJObTbx-

> > siA1ZOg&r=CBZ1IFMUPf-s4Wt-
> >
>
elABGKFWisr3DNfFfWYNaKkXXUE&m=f8KTE9WyceLmQxKXG77FBkDIVqCnJ54BBnXEQuSQCo4&s=GOFChuk86IBBBORDL3I50gHrzmF4kTmYkq1qCeMufBQ&e=

> >
> >
> >
> > --
> > regards,
> >
> > Kalle Sommer Nielsen
> > ka...@php.net
> >

Reply via email to