2015-12-05 3 views
0

Что я пытаюсь сделать, так это то, что я хочу создать общую память в пространстве пользователя, после чего я отправляю имя этой разделяемой памяти & пользовательский системный вызов, затем этот системный вызов открывает эту общую память &. используя shm_open & mmap. возможно ли между пространством пользователя & пространства ядра?сопоставление пространства пользователя с памятью ядра с использованием shm_open & mmap

Моя проблема заключается в том, что

Всякий раз, когда я пытаюсь make для нового пользовательского ядра я получил следующие ошибки

  • неявное объявление shm_open & ММАП
  • PROT_READ, PROT_WRITE и т.д. ...

Ниже перечислены заголовочные файлы

  • unistd.hstdlibsys/typessys/statsys/shmsys/mmanfcntl & другие заголовки.

В gcc я бы вызвал эту команду gcc example.c -lrt & все работает отлично.

ответ

0

Согласно manual page, вам необходимо:

#include <sys/mman.h> 
#include <sys/stat.h>  /* For mode constants */ 
#include <fcntl.h>   /* For O_* constants */ 

в файле. В частности, <sys/stat.h> содержит недостающие константы. Возможно, вам не хватает .h.

Если это не помогает, я предлагаю вам опубликовать минимальный пример, иллюстрирующий проблему.

0

Всякий раз, когда я пытаюсь make для нового пользовательского ядра я получил следующие ошибки

  • неявное объявление shm_open & ттар

Библиотечные функции как shm_open и mmap не должны использоваться от ядра код.
Возможно, вы захотите взглянуть на реализацию shm_open, но обратите внимание, что там, например, используется библиотечная функция open, для которой применяется вышеизложенное; в вашем коде ядра вы бы использовали e. г. do_sys_open.

Смежные вопросы