Оптимизация обработки возврата kmalloc - PullRequest
0 голосов
/ 26 апреля 2018

Поэтому мне было интересно, почему при проверке возвращаемого значения kmalloc мы не используем «вероятные» подсказки, например:

void *ptr = kmalloc(size, GFP_KERNEL) if (unlikely(!ptr)) return err;

Конечно, я предполагаю, что kmalloc не очень часто выходит из строя. Мне трудно вспомнить последний раз, когда это не удалось. Исходя из этого, не будет ли это полезной рекомендацией для компилятора?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Сначала отметим, что kmalloc - это просто макрос, который может расширяться до различных вызовов функций в зависимости от аргументов. Функции, в которые он расширяется, помечены __attribute__((__malloc__)), что позволяет компилятору принимать поведение, подобное malloc. Я не знаю, какие оптимизации включены этой практикой, но ожидание того, что функция не сбоит, скорее всего, используется в своих интересах.

0 голосов
/ 26 апреля 2018

Вероятно, это не помешает, но если вы не используете свои malloc в узком цикле, это, вероятно, окажет незначительное влияние на вашу среду выполнения по сравнению со стоимостью самого malloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...