Книга: Разработка ядра Linux
Использование идентификатора UID в качестве условия
Использование идентификатора UID в качестве условия
Если разрабатываемый код связан с контекстом процесса, то иногда появляется возможность выполнить альтернативную реализацию не "ломая" существующий код. Это важно, если необходимо переписать важный системный вызов и при этом необходима полностью функционирующая система, на которой этот вызов нужно отладить. Например, допустим, что нужно переписать алгоритм работы системного вызова fork()
, который бы использовал некоторые новые возможности, которые уже существуют в ядре. Если сразу не получится все сделать так как надо, то будет очень тяжело отлаживать ядро, так как неработающий системный вызов fork()
скорее всего приведет к неработоспособности системы. Но как и всегда, есть надежда.
Часто безопасным будет сохранить старый алгоритм, а новую реализацию выполнить в другом месте. Этого можно достичь используя идентификатор пользователя (UID) в качестве условия того, какой алгоритм использовать.
if (current->uid != 7777) {
/* старый алгоритм ... */
} else {
/* новый алгоритм ... */
}
Все пользователи, кроме того, у которого идентификатор UID равен 7777 будут использовать старый алгоритм. Для тестирования нового алгоритма можно создать нового пользователя с идентификатором 7777. Это позволяет более просто оттестировать критические участки кода, связанные с выполнением процессов.
- Восстановление с использованием инструмента gbak
- Типы страниц и их использование
- Использование констант
- Реальный (RID) и эффективный (EUID) идентификаторы пользователя
- Использование переменной окружения ISC_PATH
- Использование сервера Yaffil внутри процесса
- Использование CAST() с типами дата
- 9.4. Права доступа к squid
- Использование типов содержимого и столбцов
- 11.2. Технология принятия решения в условиях чрезвычайной ситуации
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- Использование кнопки Автосумма