Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

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

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

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


Ответ

Я не уверен, что это единственный доступный способ, но он рабочий:
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()

Комментариев нет:

Отправить комментарий