Линус Торвалдс обедини значителна промяна в кода в ядрото на Linux 7.3-rc2, преобразувайки повече извиквания на функцията `kmalloc()` към по-новата фамилия функции `kmalloc_obj()`. Това широкообхватно усилие, ръководено от разработчика на Linux Кийс Кук, има за цел да подобри разпределението на паметта в ядрото.
Преобразуването, извършено с помощта на скрипт, задвижван от Coccinelle, засяга стотици файлове и над 600 реда код. То отстранява предишни непълни преходи към `kmalloc_obj()` и разширява неговото използване след въвеждането му в Linux 7.0. Функциите `kmalloc_obj()` предлагат няколко предимства пред `kmalloc()`, включително елиминиране на необходимостта от `sizeof()` и името на типа, позволявайки вътрешна интроспекция на разпределените типове и проправяйки пътя за бъдещи подобрения като укрепване и избор, съобразен с подравняването.
Според съобщение за коммит, представящо функциите `kmalloc_obj()` по-рано тази година, промяната заменя общи идиоми за разпределение. Например, `ptr = kmalloc(sizeof(*ptr), gfp);` става `ptr = kmalloc_obj(*ptr, gfp);`. Основното предимство е премахването на необходимостта от `sizeof()` и името на типа, като същевременно се налагат типове присвояване – функциите връщат указател към типа на първия аргумент. Името на типа все още може да се използва за косвени присвоявания. Освен това, новите функции позволяват променливите да бъдат декларирани с помощта на `__auto_type`, като например `__auto_type ptr = kmalloc_obj(struct foo, gfp);`.
Прочетете оригиналното отразяване
💬 Коментари
📜 Правила за коментари