Какому процессу возвращен результат из ядра?

Какому процессу возвращен результат из ядра?

Когда процесс требует действий, требующих режима ядра, он использует системный вызов. Итак, как результаты возвращаются процессу?

решение1

ПРИМЕЧАНИЕ:ВСЯ НИЖЕПРИВЕДЕННАЯ ИНФОРМАЦИЯ ВЗЯТА С УКАЗАННОГО САЙТА


Отэтотссылку, я нашел следующую информацию.

Асистемный вызовэто интерфейс между приложением пользовательского пространства и службой, которую предоставляет ядро. Поскольку служба предоставляется в ядре, прямой вызов не может быть выполнен; вместо этого необходимо использовать процесс пересечения границы пользовательского пространства/ядра.

Использование системного вызова

Давайте рассмотрим, что необходимо для их использования из приложения пользовательского пространства. Существует два способа использования новых системных вызовов ядра. Первый — это удобный метод (не то, что вы, вероятно, захотите делать в производственном коде), а второй — традиционный метод, требующий немного больше работы. С помощью первого метода вы вызываете новые функции, идентифицируемые по их индексу через функцию syscall. С помощью функции syscall вы можете вызвать системный вызов, указав его индекс вызова и набор аргументов. Например, короткое приложение, показанное ниже, вызывает ваш, sys_getjiffiesиспользуя его индекс.

#include <linux/unistd.h>
#include <sys/syscall.h>

#define __NR_getjiffies     320

int main()
{
  long jiffies;

  jiffies = syscall( __NR_getjiffies );

  printf( "Current jiffies is %lx\n", jiffies );

  return 0;
}

Как вы можете видеть, функция syscall включает в качестве своего первого аргумента индекс таблицы системных вызовов для использования. Если бы были какие-либо аргументы для передачи, они были бы предоставлены после индекса вызова. Большинство системных вызовов включают символическую константу SYS_ для указания их сопоставления с _НРиндексы. Например, вы вызываете индекс __NR_getpid с помощью системного вызова как:

syscall( SYS_getpid )

Функция syscall зависит от архитектуры, но использует механизм передачи управления ядру. Аргумент основан на отображении _NR индексирует SYSсимволы, предоставленные /usr/include/bits/syscall.h(определяются при сборке libc). Никогда не ссылайтесь на этот файл напрямую; вместо этого используйте /usr/include/sys/syscall.h.

Связанный контент