Linux-Sys-CPU-Affinity
view release on metacpan or search on metacpan
Affinity.xs view on Meta::CPAN
CODE:
if (SvOK(sv))
av = _extract_and_validate_av(sv);
init_set(cpuset, av);
XSRETURN_EMPTY;
IV cpu_isset (cpuset, cpu)
Linux_Sys_CPU_Affinity *cpuset
UV cpu
PPCODE:
int res = CPU_ISSET_S((uint32_t) cpu, cpuset->size, cpuset->set);
mXPUSHu( res );
XSRETURN(1);
void cpu_set (cpuset, cpu)
Linux_Sys_CPU_Affinity *cpuset
UV cpu
PPCODE:
CPU_SET_S((uint32_t) cpu, cpuset->size, cpuset->set);
XSRETURN_EMPTY;
void cpu_clr (cpuset, cpu)
Linux_Sys_CPU_Affinity *cpuset
UV cpu
PPCODE:
CPU_CLR_S((uint32_t) cpu, cpuset->size, cpuset->set);
XSRETURN_EMPTY;
UV cpu_count(cpuset)
Linux_Sys_CPU_Affinity *cpuset
PPCODE:
int cpu_count = CPU_COUNT_S(cpuset->size, cpuset->set);
mXPUSHu( cpu_count ); // PUSHs(sv_2mortal(newSVuv(cpu_count)));
XSRETURN(1);
IV cpu_equal (cpusetA, cpusetB)
Linux_Sys_CPU_Affinity *cpusetA
Linux_Sys_CPU_Affinity *cpusetB
PPCODE:
int res = 0;
if (cpusetA->size == cpusetB->size)
res = CPU_EQUAL_S(cpusetA->size, cpusetA->set, cpusetB->set);
mXPUSHu( res );
XSRETURN(1);
AV* get_cpus(cpuset)
Linux_Sys_CPU_Affinity *cpuset
CODE:
Affinity.xs view on Meta::CPAN
}
RETVAL = get_cpus_from_cpuset(new_cpuset);
safefree(new_cpuset);
OUTPUT:
RETVAL
IV set_affinity(cpuset, pid)
Linux_Sys_CPU_Affinity *cpuset
UV pid
PPCODE:
int res = sched_setaffinity((pid_t) pid, cpuset->size, cpuset->set);
if (res == -1) {
SV *error = get_sched_error_text(errno, 0);
croak((char *) SvPV_nolen(error));
}
mXPUSHi( res );
XSRETURN(1);
void DESTROY (cpuset)
PPCODE:
Linux_Sys_CPU_Affinity *self = (Linux_Sys_CPU_Affinity *) SvUV(SvRV(ST(0)));
if (PL_dirty)
return;
CPU_FREE(self->set);
safefree(self);
XSRETURN_EMPTY;
IV get_nprocs ()
PPCODE:
int nprocs = get_available_nprocs();
mXPUSHi( nprocs );
XSRETURN(1);
( run in 1.826 second using v1.01-cache-2.11-cpan-5511b514fd6 )