IPC-SysV
view release on metacpan or search on metacpan
#include "const-c.inc"
MODULE=IPC::SysV PACKAGE=IPC::Msg::stat
PROTOTYPES: ENABLE
void
pack(obj)
SV * obj
PPCODE:
{
#ifdef HAS_MSG
AV *list = (AV*) SvRV(obj);
struct msqid_ds ds;
assert_sv_isa(obj, s_pkg_msg, "pack");
AV_FETCH_IV(ds.msg_perm.uid , list, 0);
AV_FETCH_IV(ds.msg_perm.gid , list, 1);
AV_FETCH_IV(ds.msg_perm.cuid, list, 2);
AV_FETCH_IV(ds.msg_perm.cgid, list, 3);
AV_FETCH_IV(ds.msg_perm.mode, list, 4);
XSRETURN(1);
#else
croak(s_sysv_unimpl, "msg");
#endif
}
void
unpack(obj, ds)
SV * obj
SV * ds
PPCODE:
{
#ifdef HAS_MSG
AV *list = (AV*) SvRV(obj);
STRLEN len;
const struct msqid_ds *data = (struct msqid_ds *) SvPV_const(ds, len);
assert_sv_isa(obj, s_pkg_msg, "unpack");
assert_data_length(s_pkg_msg, len, sizeof(*data));
AV_STORE_IV(data->msg_perm.uid , list, 0);
AV_STORE_IV(data->msg_perm.gid , list, 1);
AV_STORE_IV(data->msg_perm.cuid, list, 2);
}
MODULE=IPC::SysV PACKAGE=IPC::Semaphore::stat
PROTOTYPES: ENABLE
void
pack(obj)
SV * obj
PPCODE:
{
#ifdef HAS_SEM
AV *list = (AV*) SvRV(obj);
struct semid_ds ds;
assert_sv_isa(obj, s_pkg_sem, "pack");
AV_FETCH_IV(ds.sem_perm.uid , list, 0);
AV_FETCH_IV(ds.sem_perm.gid , list, 1);
AV_FETCH_IV(ds.sem_perm.cuid, list, 2);
AV_FETCH_IV(ds.sem_perm.cgid, list, 3);
AV_FETCH_IV(ds.sem_perm.mode, list, 4);
XSRETURN(1);
#else
croak(s_sysv_unimpl, "sem");
#endif
}
void
unpack(obj, ds)
SV * obj
SV * ds
PPCODE:
{
#ifdef HAS_SEM
AV *list = (AV*) SvRV(obj);
STRLEN len;
const struct semid_ds *data = (struct semid_ds *) SvPV_const(ds, len);
assert_sv_isa(obj, s_pkg_sem, "unpack");
assert_data_length(s_pkg_sem, len, sizeof(*data));
AV_STORE_IV(data->sem_perm.uid , list, 0);
AV_STORE_IV(data->sem_perm.gid , list, 1);
AV_STORE_IV(data->sem_perm.cuid, list, 2);
}
MODULE=IPC::SysV PACKAGE=IPC::SharedMem::stat
PROTOTYPES: ENABLE
void
pack(obj)
SV * obj
PPCODE:
{
#ifdef HAS_SHM
AV *list = (AV*) SvRV(obj);
struct shmid_ds ds;
assert_sv_isa(obj, s_pkg_shm, "pack");
AV_FETCH_IV(ds.shm_perm.uid , list, 0);
AV_FETCH_IV(ds.shm_perm.gid , list, 1);
AV_FETCH_IV(ds.shm_perm.cuid, list, 2);
AV_FETCH_IV(ds.shm_perm.cgid, list, 3);
AV_FETCH_IV(ds.shm_perm.mode, list, 4);
XSRETURN(1);
#else
croak(s_sysv_unimpl, "shm");
#endif
}
void
unpack(obj, ds)
SV * obj
SV * ds
PPCODE:
{
#ifdef HAS_SHM
AV *list = (AV*) SvRV(obj);
STRLEN len;
const struct shmid_ds *data = (struct shmid_ds *) SvPV_const(ds, len);
assert_sv_isa(obj, s_pkg_shm, "unpack");
assert_data_length(s_pkg_shm, len, sizeof(*data));
AV_STORE_IV(data->shm_perm.uid , list, 0);
AV_STORE_IV(data->shm_perm.gid , list, 1);
AV_STORE_IV(data->shm_perm.cuid, list, 2);
const-xs.inc view on Meta::CPAN
dTARGET;
#endif
STRLEN len;
int type;
IV iv = 0; /* avoid uninit var warning */
/* NV nv; Uncomment this if you need to return NVs */
/* const char *pv; Uncomment this if you need to return PVs */
INPUT:
SV * sv;
const char * s = SvPV(sv, len);
PPCODE:
/* Change this to _constant(aTHX_ s, len, &iv, &nv);
if you need to return both NVs and IVs */
type = _constant(aTHX_ s, len, &iv);
/* Return 1 or 2 items. First is error message, or undef if no error.
Second, if present, is found value */
switch (type) {
case PERL_constant_NOTFOUND:
sv =
sv_2mortal(newSVpvf("%s is not a valid IPC::SysV macro", s));
PUSHs(sv);
( run in 0.913 second using v1.01-cache-2.11-cpan-5511b514fd6 )