создать vdso в linux

find. -type f -name cpu.csv -exec sh -c '
   for f
   do
      [ -f ${f%/*}/http.csv ] && { mv "$f" "${f%.???}_http.csv"; :; } \
                      || \
      [ -f  ${f%/*}/ftp.csv ] &&   mv "$f" "${f%.???}_ftp.csv"
   done
' sh {} +

Мы настраиваем команду find, которая рекурсивно ищет filesиз текущего каталога и далее и имеет имя cpu.csv, собирает и отправляет имена, собранные в группу, команде sh. Внутри shмы устанавливаем цикл for, который будет перебирать аргументы командной строки до shи искать наличие http.csv, и в этом случае cpu.csv должен быть переименован в cpu _http.csv. Аналогично для другого случая.

1
20.11.2018, 15:55
1 ответ

Не уверен, что есть обновленный туториал в том же стиле, но изменения ограничены:

Последнее означает, что вам нужно объявить переменную только один раз, в arch/x86/include/asm/vvar.h, с фиксированным смещением, с помощью макроса DECLARE_VVAR. Для его определения используйте макрос DEFINE_VVAR; для доступа к нему используйте макрос VVAR. Связанный коммит выше содержит ряд примеров (всех существующих применений общих переменных ).

Вы не можете воссоздать поведение произвольного системного вызова в vDSO, по крайней мере, без обращения к ядру в режиме ядра. vDSO действительно полезен только для вызовов, которые можно обрабатывать в пользовательском пространстве; таких не много.

1
27.01.2020, 23:42

Теги

Похожие вопросы