In our previous episode, Michalis Kamburelis said: [ Charset ISO-8859-1 unsupported, converting... ] > Florian Klaempfl wrote: > > Mattias Gaertner schrieb: > >> I need a default value of the number of maximum threads. > >> Is there already some RTL function that can be used for that? > >> > >> For example if the program runs on a 2 x quad core it would be nice to > >> get 8. > >> Hyperthreading multipliers should be applied. > > > > No, but having some functions returning information about the CPUs would > > be nice. > > Blender (http://www.blender.org/) source code has function to do that > (they needed this to set the default number of threads for renderer). So > you could try converting to Pascal the code of "BLI_system_thread_count" > function from: > > https://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/blenlib/intern/threads.c > > Doesn't seem that complicated on 1st look. It's basically appropriate > GetSystemInfo call on Windows, sysctl on Mac OS, and sysconf (from Libc) > call on most Unixes.
Sysconf is not standarized yet. Unit libc is linux/x86 only. On freebsd, the sysctl modeled works, but note the typecast. (probably a K&R void* <-> char* problem) uses ctypes,sysctl; var mib : array[0..1] of cint; len:cint; t :cint; begin mib[0] := CTL_HW; mib[1] := HW_NCPU; len := sizeof(t); fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0); writeln(t); // prints 2 on our dual CPU (Athlon MPs) end. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal