oneapi-src / oneTBB

oneAPI Threading Building Blocks (oneTBB)
https://oneapi-src.github.io/oneTBB/
Apache License 2.0
5.45k stars 992 forks source link

OpenBSD and NetBSD doesn't have the cpuset_* feature #1414

Open rilysh opened 2 weeks ago

rilysh commented 2 weeks ago

Hi!

I was looking at the https://github.com/oneapi-src/oneTBB/blob/master/src/tbb/misc_ex.cpp file, and I noticed that a few several functions uses cpuset_*affinity() functions, but they're only available in FreeBSD. Neither OpenBSD or NetBSD seem to have these, and there seem to be no libc API to address this on OpenBSD. (NetBSD apparently have pthread_*affinity_*() and cpuset, https://man.netbsd.org/affinity.3 but I haven't dig further to this yet).

  1. https://man.openbsd.org/cpuset_getaffinity (empty)
  2. https://man.netbsd.org/cpuset_getaffinity (empty)

I've also noticed a few syscalls, but starting from OpenBSD 7.5 direct syscalls aren't permitted. The syscall wrapper is also removed from the libc and kernel. (https://marc.info/?l=openbsd-tech&m=169841790407370&w=2)

I just found oneTBB right now, so I'm not sure how useful misc_ex file is. Moreover I haven't compiled it to these specified target systems.

pavelkumbrasev commented 1 week ago

Hi @rilysh, misc_ex still in use and provides some platform specific functionality. I cannot comment on fullness of OpenBSD support in this specific part of functionality because BSDs are community supported platforms. If you can test it on your side and provide a contribution with the improvement (if needed) we would be happy to help with it.