IO-функции в kernel-space

150
22 октября 2018, 06:40

Env.: macOS, пишу драйвер, компилятор - clang

Пытаюсь использовать ф-ию write, подключаю хэдер unistd.h - компилятор выдает ошибку - файл не найден. Указываю в настройках проекта дополнительный путь, где искать хэдеры - /usr/include - компилятор выдает бесчисленное количество ошибок самого разного содержания. С чем это связано? Я не могу в kernel-space использовать write? Или я должен использовать какие-то другие ф-ии?

Answer 1

Я не уверен, что это единственный доступный способ, но он рабочий:

vnode_t       vnode = NULLVP;
vfs_context_t ctxt = vfs_context_create(0);
errno_t       errno;
errno = vnode_open(file_name_buf, (O_TRUNC | O_CREAT | O_RDWR), S_IRUSR | S_IWUSR, VNODE_LOOKUP_NOFOLLOW, &vnode, ctxt);
if (!errno) {
    vn_rdwr(UIO_WRITE
        , vnode
        , buffer 
        , buf_inf.bytesused
        , 0
        , UIO_SYSSPACE
        , IO_NOCACHE | IO_NODELOCKED | IO_UNIT
        , vfs_context_ucred(ctxt)
        , (int*)0
        , vfs_context_proc(ctxt));
    vnode_close(vnode, FWASWRITTEN, ctxt);
}

Вместо vfs_context_create(0) можно использовать vfs_context_current().

READ ALSO
Перемещение QGroupBox в пределах одной формы

Перемещение QGroupBox в пределах одной формы

Задача простая но не нашел адекватного решенияУ меня есть QTabWidget и на одной из вкладок будет набор QGroupBox'ов, которые пользователь должен иметь...

169
Как получить имя файла через аргумент в visual basic

Как получить имя файла через аргумент в visual basic

Как написать на VB программу которая будет выводить имя файла через аргумент? Если писать на c++, то будет выглядеть примерно так

221
Ненормальное потребление памяти

Ненормальное потребление памяти

Есть бот для ВКонтакте на c++, запущенный на Raspbian (aka Debian) linuxЕсть также две абсолютно одинаковых платы Raspberry Pi, на которых всё это хостится

221
Зачем пишут #ifndef file_h в начале файла

Зачем пишут #ifndef file_h в начале файла

Для каких ситуаций может быть полезно определение именно таким образом?

165