Сообщение Re[25]: а в Линуксе вообще есть какой-то прогресс? от 18.09.2016 11:48
Изменено 18.09.2016 11:50 netch80
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, netch80, Вы писали:
N>>O_PATH — ни к селу ни к городу.
IID>а man утверждает что к селу и к городу
Цитируя что-то, надо ещё и понимать прочитанное. У тебя с этим большие проблемы — из-за отсутствия всё того же реального опыта.
Возможность fstat() на дескриптор с O_PATH позволяет ответить на вопрос "И де я нахожусь?" — в данном случае "что это блин за дескриптор тут затесался?" Ни для чего больше оно не предназначено, и уж тем более для того, чтобы менять stat() на в разы более дорогую цепочку open(,O_PATH)+fstat()+close().
N>>Сисколлы vfs_stat, vfs_lstat не обнаружены. Ты процитировал внутренние функции ядра.
IID>Эти внутренние функции ядра и есть реализация сисколлов stat и lstat. Они могли бы быть заменены единым k_stat, принимающим флаг.
Они и заменены. fstatat() при dirfd == AT_FDCWD перекрывает их функциональность. То, что ты видишь — legacy для сохранения ядерного API для старых программ. Жёсткое требование Линуса и Ко — ядерный API пользовательских задач не меняется. Поэтому в сисколлах до сих пор сохраняется всякая идиотская древность типа sys_getgroups16, хотя сейчас фиг найдёшь программу, которая скомпилирована во времена 16-битных gid'ов.
Так как у Linux для каждой платформы свой набор сисколлов, не удивлюсь, если для какой-нибудь следующей железяки сделают такую подстановку и отдельные stat, lstat уберут. Хуже от этого вряд ли будет, но лучше — тоже.
IID> Подозреваю что и fstat тоже, открывая предварительно дексриптор с O_PATH.
И снова три сисколла вместо одного только потому, что некоему IID захотелось обобщить? В сад.
N>>Попробуй ещё чего-нибудь нафантазировать.
IID>Попробуй отвечать по-существу.
Так и делаю, в ответ на твои подтасовки. Если бы ты привёл хоть один пример, где можно что-то сделать вообще без похода в ядро, я бы ещё понял. А пока что два примера — в одном ты хочешь вместо одного выполняемого сисколла три(!), в другом свести две точки входа в одну ради грошовой экономии. За такие советы бьют по рыжей морде в любой ОС, даже в Windows.
IID>Ясно. Ответа не было ни тогда, ни сейчас.
Это ответ, содержащий реально значимые аргументы. Просто научись читать.
IID>Здравствуйте, netch80, Вы писали:
N>>O_PATH — ни к селу ни к городу.
IID>а man утверждает что к селу и к городу
Цитируя что-то, надо ещё и понимать прочитанное. У тебя с этим большие проблемы — из-за отсутствия всё того же реального опыта.
Возможность fstat() на дескриптор с O_PATH позволяет ответить на вопрос "И де я нахожусь?" — в данном случае "что это блин за дескриптор тут затесался?" Ни для чего больше оно не предназначено, и уж тем более для того, чтобы менять stat() на в разы более дорогую цепочку open(,O_PATH)+fstat()+close().
N>>Сисколлы vfs_stat, vfs_lstat не обнаружены. Ты процитировал внутренние функции ядра.
IID>Эти внутренние функции ядра и есть реализация сисколлов stat и lstat. Они могли бы быть заменены единым k_stat, принимающим флаг.
Они и заменены. fstatat() при dirfd == AT_FDCWD перекрывает их функциональность. То, что ты видишь — legacy для сохранения ядерного API для старых программ. Жёсткое требование Линуса и Ко — ядерный API пользовательских задач не меняется. Поэтому в сисколлах до сих пор сохраняется всякая идиотская древность типа sys_getgroups16, хотя сейчас фиг найдёшь программу, которая скомпилирована во времена 16-битных gid'ов.
Так как у Linux для каждой платформы свой набор сисколлов, не удивлюсь, если для какой-нибудь следующей железяки сделают такую подстановку и отдельные stat, lstat уберут. Хуже от этого вряд ли будет, но лучше — тоже.
IID> Подозреваю что и fstat тоже, открывая предварительно дексриптор с O_PATH.
И снова три сисколла вместо одного только потому, что некоему IID захотелось обобщить? В сад.
N>>Попробуй ещё чего-нибудь нафантазировать.
IID>Попробуй отвечать по-существу.
Так и делаю, в ответ на твои подтасовки. Если бы ты привёл хоть один пример, где можно что-то сделать вообще без похода в ядро, я бы ещё понял. А пока что два примера — в одном ты хочешь вместо одного выполняемого сисколла три(!), в другом свести две точки входа в одну ради грошовой экономии. За такие советы бьют по рыжей морде в любой ОС, даже в Windows.
IID>Ясно. Ответа не было ни тогда, ни сейчас.
Это ответ, содержащий реально значимые аргументы. Просто научись читать.
Re[25]: а в Линуксе вообще есть какой-то прогресс?
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, netch80, Вы писали:
N>>O_PATH — ни к селу ни к городу.
IID>а man утверждает что к селу и к городу
Цитируя что-то, надо ещё и понимать прочитанное. У тебя с этим большие проблемы — из-за отсутствия всё того же реального опыта.
Возможность fstat() на дескриптор с O_PATH позволяет ответить на вопрос "И де я нахожусь?" — в данном случае "что это блин за дескриптор тут затесался?" Ни для чего больше оно не предназначено, и уж тем более для того, чтобы менять stat() на в разы более дорогую цепочку open(,O_PATH)+fstat()+close().
N>>Сисколлы vfs_stat, vfs_lstat не обнаружены. Ты процитировал внутренние функции ядра.
IID>Эти внутренние функции ядра и есть реализация сисколлов stat и lstat. Они могли бы быть заменены единым k_stat, принимающим флаг.
Они и заменены. fstatat() при dirfd == AT_FDCWD перекрывает их функциональность. То, что ты видишь — legacy для сохранения ядерного API для старых программ. Жёсткое требование Линуса и Ко — ядерный API пользовательских задач не меняется. Поэтому в сисколлах до сих пор сохраняется всякая идиотская древность типа sys_getgroups16, хотя сейчас фиг найдёшь программу, которая скомпилирована во времена 16-битных gid'ов.
Так как у Linux для каждой платформы свой набор сисколлов, не удивлюсь, если для какой-нибудь следующей железяки сделают такую подстановку и отдельные stat, lstat уберут. Хуже от этого вряд ли будет, но лучше — тоже.
IID> Подозреваю что и fstat тоже, открывая предварительно дексриптор с O_PATH.
И снова три сисколла вместо одного только потому, что некоему IID захотелось обобщить? В сад.
N>>Попробуй ещё чего-нибудь нафантазировать.
IID>Попробуй отвечать по-существу.
Так и делаю, в ответ на твои подтасовки. Если бы ты привёл хоть один пример, где можно что-то сделать вообще без похода в ядро, я бы ещё понял. А пока что два примера — в одном ты хочешь вместо одного выполняемого сисколла три(!), в другом свести две точки входа в одну ради грошовой экономии, сломав совместимость. За такие советы бьют по рыжей морде в любой ОС, даже в Windows.
IID>Ясно. Ответа не было ни тогда, ни сейчас.
Это ответ, содержащий реально значимые аргументы. Просто научись читать.
IID>Здравствуйте, netch80, Вы писали:
N>>O_PATH — ни к селу ни к городу.
IID>а man утверждает что к селу и к городу
Цитируя что-то, надо ещё и понимать прочитанное. У тебя с этим большие проблемы — из-за отсутствия всё того же реального опыта.
Возможность fstat() на дескриптор с O_PATH позволяет ответить на вопрос "И де я нахожусь?" — в данном случае "что это блин за дескриптор тут затесался?" Ни для чего больше оно не предназначено, и уж тем более для того, чтобы менять stat() на в разы более дорогую цепочку open(,O_PATH)+fstat()+close().
N>>Сисколлы vfs_stat, vfs_lstat не обнаружены. Ты процитировал внутренние функции ядра.
IID>Эти внутренние функции ядра и есть реализация сисколлов stat и lstat. Они могли бы быть заменены единым k_stat, принимающим флаг.
Они и заменены. fstatat() при dirfd == AT_FDCWD перекрывает их функциональность. То, что ты видишь — legacy для сохранения ядерного API для старых программ. Жёсткое требование Линуса и Ко — ядерный API пользовательских задач не меняется. Поэтому в сисколлах до сих пор сохраняется всякая идиотская древность типа sys_getgroups16, хотя сейчас фиг найдёшь программу, которая скомпилирована во времена 16-битных gid'ов.
Так как у Linux для каждой платформы свой набор сисколлов, не удивлюсь, если для какой-нибудь следующей железяки сделают такую подстановку и отдельные stat, lstat уберут. Хуже от этого вряд ли будет, но лучше — тоже.
IID> Подозреваю что и fstat тоже, открывая предварительно дексриптор с O_PATH.
И снова три сисколла вместо одного только потому, что некоему IID захотелось обобщить? В сад.
N>>Попробуй ещё чего-нибудь нафантазировать.
IID>Попробуй отвечать по-существу.
Так и делаю, в ответ на твои подтасовки. Если бы ты привёл хоть один пример, где можно что-то сделать вообще без похода в ядро, я бы ещё понял. А пока что два примера — в одном ты хочешь вместо одного выполняемого сисколла три(!), в другом свести две точки входа в одну ради грошовой экономии, сломав совместимость. За такие советы бьют по рыжей морде в любой ОС, даже в Windows.
IID>Ясно. Ответа не было ни тогда, ни сейчас.
Это ответ, содержащий реально значимые аргументы. Просто научись читать.