Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

State dependency on Linux explicitly in README file. #1

Open
mmueller41 opened this issue Aug 2, 2022 · 0 comments
Open

State dependency on Linux explicitly in README file. #1

mmueller41 opened this issue Aug 2, 2022 · 0 comments

Comments

@mmueller41
Copy link

MxTasking heavily depends on Linux-specific functions, libraries and behaviour but Linux is not even mentioned in the README.md. This unnecessarily confuses users of other operating systems who want to use MxTasking and instead of being told that they need Linux, are bombarded with compiler errors. The only vague hint to the dependency on Linux is, the stated dependency on libnuma.

Noting that MxTasking is written for Linux would also better indicate, that this library cannot be easily ported to other platforms, not even to those who adhere to the POSIX-standard, such as the *BSDs and macOS.

For example, the per-processor heap implementation assumes behaviour that is specific to libnuma only, and is prohibited by gcc's libc implementation and considered undefined behaviour by the standard. In particular, numa_free() used in the destructor of class ProcessorHeap accepts various pointers, especially those who were not returned by libnuma's alloc functions, which crashes the application when free() is used instead. This specific behaviour is actively exploited in the implementation of ProcessorHeap and is not portable.

Another example is the use of sched_getcpu() in mx::system::topology which is a Linux-specific function and not part of the POSIX-API.

So, please consider updating the README.md to include Linux as mandatory dependency or make MxTasking POSIX-compliant, i.e. remove the Linux dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant