LINUX.ORG.RU

В ядро принесли RAII

 ,


0

2

Теперь, мальчики и девочки, в ядре можно писать вот такое вот:

scoped_guard(raw_spinlock_irqsave, &foo->lock) {
  [...]
}

и вот такое:

struct device *dev __free(put_device) = kzalloc(sizeof(*dev), GFP_KERNEL);

И никаких больше протекших ресурсов!

Ссылка на merge: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04f2933d375e3f90d4435b7b518d3065afd1fa25



Последнее исправление: cumvillain (всего исправлений: 1)

static inline class_##_name##t class##_name##_constructor(_type *l)

Любая большая программа на си содержит в себе кривую и ухудшенную версию ООП из c++. Почему бы им просто не перейти на кресты и не страдать ерундой?

ox55ff ★★★★★
()
Ответ на: комментарий от alex1101

Линус писал:

In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C.

Оставим огрехи в английском, в конце концов, и так всё понятно. Но можно же отключить RTTI/исключения, а RAII останется на месте. И вот, в 2023г. прилетает патч с костылями к сишке, которые похожи на RTTI…

seiken ★★★★★
()
Последнее исправление: seiken (всего исправлений: 1)

И никаких больше протекших ресурсов!

Ну вообще в драйверах устройств и раньше уже были счётчики ссылок и всякие devm_ функции для автоматического освобождения.

Но более общий способ, а не завязанный только на устройства, конечно полезен.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от ya-betmen

Учитывая, что исходно в сишкие нифига нет, чтобы на ней писать нужно её немного обвесить. Можно это обвес и костылями назвать.

Как это ничего нет? В сишке есть UB.

cumvillain
() автор топика
Ответ на: комментарий от cumvillain

Вариант люнекса поверх микроядра L4. Прикинь, можно запустить 10 люнексов в юзерспейсе на одной системе.

Кроме авторов кто этим пользуется?

Ага. Сходу, чтобы под тот же seL4 дрова не писать. Запускаешь seL4, внутри пачку лялексов, каждый только с одним драйвером и интерфейсом наружу, и всё ок. Если лялекс протечёт, то всё ограничится тащемта только этим экземпляром. Офигенно? Офигенно!

hateyoufeel ★★★★★
()
Ответ на: комментарий от cumvillain

Учитывая, что исходно в сишкие нифига нет, чтобы на ней писать нужно её немного обвесить. Можно это обвес и костылями назвать.

Как это ничего нет? В сишке есть UB.

Не. Изначально в сишке и его не было. Его только в ANSI C добавили, вроде как, т.е. спустя почти 20 лет.

hateyoufeel ★★★★★
()