GTop

 view release on metacpan or  search on metacpan

GTop.xs  view on Meta::CPAN

void
_possess(ref)
    SV *ref

    PREINIT:
    GTop self = (GTop)SvIV((SV*)SvRV(ref));

    CODE:
#ifdef EXAMPLE_CLONE_DEBUG
    Perl_warn(aTHX_ "(self=0x%lx)->possess was : 0x%lx\n", ST(0),
              (unsigned long)self);
#endif
    /* possess the guts of the original refect without changing its shell */
    sv_setiv((SV*)SvRV(ref), (IV)my_gtop_new(aTHX_ self->host, self->port));
#ifdef EXAMPLE_CLONE_DEBUG
    Perl_warn(aTHX_ "(self=0x%lx)->possess got : 0x%lx\n", ST(0),
              (GTop)SvIV((SV*)SvRV(ref)));
#endif

void
_destroy(self)
    GTop self

    CODE:
#if 0 && defined(USE_ITHREADS)
    Perl_warn(aTHX_ "perl=0x%lx: (self=0x%lx)->DESTROY\n",
              (unsigned long)my_perl, (unsigned long)self);
#endif
    if (self->do_close) {
	glibtop_close();
	glibtop_global_server->flags &= ~_GLIBTOP_INIT_STATE_OPEN;
    }
    glibtop_global_server->method = self->old_method;

    if (self->host) {
        my_free(self->host);
        my_free(self->port);
    }
    my_free(self);

SV *
size_string(size)
    size_t size

    CODE:
    RETVAL = size_string(aTHX_ size);

    OUTPUT:
    RETVAL
    
void
mountlist(gtop, all_fs)
    GTop gtop
    int all_fs

    PREINIT:
    GTop__Mountlist	RETVAL;
    GTop__Mountentry	entry;
    SV *svl, *sve;

    PPCODE:
    RETVAL = (glibtop_mountlist *)safemalloc(sizeof(*RETVAL));
    trace_malloc(RETVAL);
    entry = glibtop_get_mountlist(RETVAL, all_fs);

    svl = sv_newmortal();
    sv_setref_pv(svl, "GTop::Mountlist", (void*)RETVAL);
    XPUSHs(svl);

    if (GIMME_V == G_ARRAY) {
	sve = sv_newmortal();
	sv_setref_pv(sve, "GTop::Mountentry", (void*)entry);
	XPUSHs(sve);
    }
    else {
	glibtop_free(entry);
    }

void
proclist(gtop, which=0, arg=0)
    GTop gtop
    int which
    int arg

    PREINIT:
    GTop__Proclist	RETVAL;
    unsigned *ptr;
    SV *svl;
    AV *av;

    PPCODE:
    RETVAL = (glibtop_proclist *)safemalloc(sizeof(*RETVAL));
    trace_malloc(RETVAL);
    ptr = glibtop_get_proclist(RETVAL, which, arg);

    svl = sv_newmortal();
    sv_setref_pv(svl, "GTop::Proclist", (void*)RETVAL);
    XPUSHs(svl);

    if (GIMME_V == G_ARRAY) {
	int i;
	av = newAV();
	av_extend(av, RETVAL->number);
	for (i=0; i < RETVAL->number; i++) {
	    av_push(av, newSViv(ptr[i]));
	}
	XPUSHs(sv_2mortal(newRV_noinc((SV*)av)));
    }
    glibtop_free(ptr);

void
proc_args(gtop, pid, arg=0)
    GTop gtop
    pid_t pid
    int arg

    PREINIT:
    GTop__ProcArgs	RETVAL;
    char *pargs;
    SV *svl;

    PPCODE:
    RETVAL = (glibtop_proc_args *)safemalloc(sizeof(*RETVAL));
    trace_malloc(RETVAL);
    pargs = glibtop_get_proc_args(RETVAL, pid, arg);

    svl = sv_newmortal();
    sv_setref_pv(svl, "GTop::ProcArgs", (void*)RETVAL);
    XPUSHs(svl);

    if (GIMME_V == G_ARRAY) {
	int len, total=0;
	char *ptr = pargs;
	AV *av = newAV();

	while (ptr && (len = strlen(ptr))) {
	    av_push(av, newSVpv(ptr,len));
	    total += (len+1);
	    if (total >= RETVAL->size) {
		break;
	    }
	    ptr += (len+1);
	}

	XPUSHs(sv_2mortal(newRV_noinc((SV*)av)));
    }

    glibtop_free(pargs);

void
proc_map(gtop, pid)
    GTop gtop
    pid_t pid

    PREINIT:
    GTop__ProcMap	RETVAL;
    GTop__MapEntry	entry;
    SV *svl, *sve;

    PPCODE:
    RETVAL = (glibtop_proc_map *)safemalloc(sizeof(*RETVAL));
    trace_malloc(RETVAL);
    entry = glibtop_get_proc_map(RETVAL, pid);

    svl = sv_newmortal();
    sv_setref_pv(svl, "GTop::ProcMap", (void*)RETVAL);
    XPUSHs(svl);

    if (GIMME_V == G_ARRAY) {
	sve = sv_newmortal();
	sv_setref_pv(sve, "GTop::MapEntry", (void*)entry);
	XPUSHs(sve);
    }
    else {
	glibtop_free(entry);
    }

MODULE = GTop   PACKAGE = GTop::Mountentry   PREFIX = Mountlist_

void
DESTROY(entries)
    GTop::Mountentry entries

    CODE:
    glibtop_free(entries);

#define Mountlist_devname(entries, idx) entries[idx].devname
#define Mountlist_type(entries, idx) entries[idx].type
#define Mountlist_mountdir(entries, idx) entries[idx].mountdir
#define Mountlist_dev(entries, idx) entries[idx].dev

char *
Mountlist_devname(entries, idx=0)
    GTop::Mountentry entries
    int idx

char *
Mountlist_type(entries, idx=0)
    GTop::Mountentry entries
    int idx

char *
Mountlist_mountdir(entries, idx=0)
    GTop::Mountentry entries
    int idx

u_int64_t
Mountlist_dev(entries, idx=0)
    GTop::Mountentry entries
    int idx

MODULE = GTop   PACKAGE = GTop::MapEntry   PREFIX = MapEntry_

void
DESTROY(entries)
    GTop::MapEntry entries

    CODE:
    glibtop_free(entries);



( run in 0.570 second using v1.01-cache-2.11-cpan-5511b514fd6 )