Search
Write a publication
Pull to refresh

Comments 9

Ну во-первых:

https://www.kernel.org/doc/html/latest/process/adding-syscalls.html

Вам не кажется, что оригинал статьи просто плохая калька официальной документации под соусом конкретного дистриба ?

А во-вторых:

https://www.ukuug.org/events/linux2007/2007/papers/Bergmann.pdf

А в-третьих оригинал не открывается:

Oops! That page can’t be found.

Спасибо за классные ссылки!

На самом деле, в модификации системных вызовов сложно придумать что-то новое, конечно же человек разбирался в статье с системными вызовами и решил это описать. Ну и понятное дело, когда повторяешь шаги, идёшь по документации и также их описываешь. Так что отвечая на вопрос: не кажется, потому что это отдельный путь отдельного человека.
Плюс, тут приведён красивый и изящный пример с весами.

Ссылку поправил.

Тем не менее, отметать «мол это есть в документации», так надо ещё знать что это нужно в документации искать. То что очевидно для специалиста, совершенно неочевидно для начинающего. И люди, кто изучают линукс подобное находят очень полезным.

Про красивый и изящный не уверен. Кажется мне, с синхронизацией тут беда совсем. Если, пока вы идете по списку потомков процесса, текущего вашего потомка случайно удалят в другом потоке/процессе, то у вас будет UB, а UB в ядре - это плохо.

Со ссылкой на оригинал через графу "Автор оригинала" какая-то проблема. Если что, она в рабочем виде есть в конце статьи.

Простите за нубство, а зачем это?

Вес например, как потом использовать?

Ну, его можно рекурсивно получить, к примеру

nice умеет модифицировать системные вызовы ядра? Тут разговор о том, как это делать и приведён синтетический пример.

В коде sys_get_total_weight нет никакой синхронизации списка задач. Обход списка детей процесса должен быть обрамлён вызовами read_lock(&tasklist_lock) / read_unlock(&tasklist_lock).

Sign up to leave a comment.