Интересно было бы увидеть список таких функций.
Я слышал, что есть различные обертки над сисколами, которые выглядят как сисколы, но являются специфичными для glibc.
Интересует сборка приложения с musl, поэтому нужно понять с чем могут возникнуть проблемы.
Спасибо, но список точно не исчерпывающий.
Например, нашел вот это:
On Linux, the underlying system calls were renamed in kernel 2.6: pread() became pread64(), and pwrite() became pwrite64(). The system call numbers remained the same. The glibc pread() and pwrite() wrapper functions transparently deal with the change.
Марат Нагаев, не, конечно, если ты начнёшь ковырять как интерфейс предоставляемый libc зависит от определённых при компиляции макросов, ты накопаешь дофига интересного. Тут главное вовремя остановиться.
the underlying system calls were renamed in kernel 2.6: pread() became pread64(), and pwrite() became pwrite64().
Но к интерфейсу libc это изменение не имеет никакого отношения же?
Марат Нагаев, ты, похоже, не понимаешь, что тут написано. Тут написано, что хотя имена системных вызовов изменились, glibc по-прежнему предоставляет функции pread и pwrite, с той же функциональностью, что и раньше.
вот именно, glibc предоставляет.
А условный musl видимо нет.
Марат Нагаев, рукалицо ): Они обе предоставляют то, что определено стандартами: стандартом языка C, POSIX, SUS, и многими другими. Это их интерфейс с пользователями. И glibc и musl обе предоставляют pread и pwrite, потому что они определены стандартом POSIX.
Интерфейс с ядром у libc с другой стороны, от пользователей он скрыт, в этом смысл libc -- скрывать интерфейс с ядром. Когда ты собираешь libc ты делаешь это используя заголовочные файлы ядра. Не любая комбинация версии libc и версии ядра соберётся. И не любая комбинация будет использовать один и тот же системный вызов для реализации функций libc.
если ты ознакомишься с текстом по ссылке, то увидишь там словосочетание "Large File Summit", гугление по которому приведёт тебя к ответу на этот вопрос.