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()
Комментариев нет:
Отправить комментарий