Объяснение аргументов для kthread_create () - PullRequest
0 голосов
/ 21 марта 2020

Я сейчас читаю Linux Разработка ядра Роберт Лав. Читая о потоках, я натолкнулся на функцию kthread_create (), которая принимает несколько аргументов и соответственно создает поток ядра.

struct task_struct *kthread_create(int (*threadfn)(void *data),
  void *data,
  const char namefmt[],
  ...)

Насколько я знаю, первый аргумент - это указатель на функцию, второй - является аргументом для threadfn (), namefmt - это имя процесса. Может кто-нибудь объяснить, что это за переменные аргументы в конце?

1 Ответ

0 голосов
/ 06 апреля 2020

аргументы kthread_create были объяснены в исходном коде ядра. kthreade_create определение в исходном коде ядра

Как вы можете видеть, namefmt является строкой формата printf-style. Что означает

1. namefmt can be a string literal like "my-kernel-thread" and in that
case    the variable arguments will not be needed. In this case your 
kthread will be named my-kernel-thread

2. namefmt can be a format specifier like "%s-%d" and in that case
variable    arguments can be arguments according to this format
specifier. Like for    this example they can be "my-kernel-thread",
10. In this case your kthread will be named my-kernel-thread-10
...