> You see the problem. My C++ code expected the calling convention that pushed arguments on the stack,<p>that would be very weird on Linux. The x86_64 linux ABI mandates that the first arguments go on registers afaik (I'm assuming x86_64 here since the post mentions linux distros which are overwhelmingly x64). What compiler would default to a pure stack-based calling convention ? Certainly not GCC or clang, no ?<p>> and the kernel expected my code to pass arguments in the registers.<p>so, how is that a problem with C++ and not the compiler defaults ?<p>> I found the real gold mine of C++ kernel module development knowledge in OSDev.org. They have an entire article on C++ issues. That includes avoiding templates<p>bullshit it is then. <a href="https://www.youtube.com/watch?v=A_saS93Clgk" rel="nofollow">https://www.youtube.com/watch?v=A_saS93Clgk</a><p>if templates are good (sometimes better even) on AVR microcontrollers with memory in kilobytes, there's no reason to not use them in a kernel meant to run on large embedded.<p>Also what's that rant about strings for ? In the end there is zero substance to this article, only very strange rants.