// gcc -fPIC -shared sysconf.c -ldl  -o sysconf.so
#define _GNU_SOURCE 1
#include <dlfcn.h>
#include <sched.h>
#include <unistd.h>

static long int (*real_sysconf)(int name);

long int sysconf(int name)
{
	if (name == _SC_NPROCESSORS_ONLN) { /* xxx 1024 cpu limit */
		cpu_set_t set;
		if (sched_getaffinity(0, sizeof(cpu_set_t), &set) >= 0)
			return CPU_COUNT(&set);
	}

	if (!real_sysconf) 
		real_sysconf = dlsym(RTLD_NEXT, "sysconf");
	return real_sysconf(name);
}

