1/* 2 * Copyright 2004-2017, Haiku Inc. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _KERNEL_SYSCALLS_H 6#define _KERNEL_SYSCALLS_H 7 8 9#include <OS.h> 10#include <image.h> 11 12 13#ifdef __cplusplus 14extern "C" { 15#endif 16 17 18/* Since libroot_build is also used on Haiku and linked against the real 19 * libroot which also has the syscall functions, these must be shadowed. */ 20#define _kern_entry_ref_to_path _kernbuild_entry_ref_to_path 21#define _kern_open_entry_ref _kernbuild_open_entry_ref 22#define _kern_open _kernbuild_open 23#define _kern_open_dir_entry_ref _kernbuild_open_dir_entry_ref 24#define _kern_open_dir _kernbuild_open_dir 25#define _kern_open_parent_dir _kernbuild_open_parent_dir 26#define _kern_fsync _kernbuild_fsync 27#define _kern_seek _kernbuild_seek 28#define _kern_create_dir_entry_ref _kernbuild_create_dir_entry_ref 29#define _kern_create_dir _kernbuild_create_dir 30#define _kern_read_link _kernbuild_read_link 31#define _kern_create_symlink _kernbuild_create_symlink 32#define _kern_unlink _kernbuild_unlink 33#define _kern_rename _kernbuild_rename 34#define _kern_open_attr_dir _kernbuild_open_attr_dir 35#define _kern_remove_attr _kernbuild_remove_attr 36#define _kern_rename_attr _kernbuild_rename_attr 37#define _kern_read _kernbuild_read 38#define _kern_readv _kernbuild_readv 39#define _kern_write _kernbuild_write 40#define _kern_writev _kernbuild_writev 41#define _kern_read_dir _kernbuild_read_dir 42#define _kern_rewind_dir _kernbuild_rewind_dir 43#define _kern_read_stat _kernbuild_read_stat 44#define _kern_write_stat _kernbuild_write_stat 45#define _kern_close _kernbuild_close 46#define _kern_dup _kernbuild_dup 47#define _kern_lock_node _kernbuild_lock_node 48#define _kern_unlock_node _kernbuild_unlock_node 49 50 51struct stat; 52struct dirent; 53 54extern status_t _kern_entry_ref_to_path(dev_t device, ino_t inode, 55 const char *leaf, char *userPath, size_t pathLength); 56extern int _kern_open_entry_ref(dev_t device, ino_t inode, 57 const char *name, int openMode, int perms); 58extern int _kern_open(int fd, const char *path, int openMode, 59 int perms); 60extern int _kern_open_dir_entry_ref(dev_t device, ino_t inode, 61 const char *name); 62extern int _kern_open_dir(int fd, const char *path); 63extern int _kern_open_parent_dir(int fd, char *name, 64 size_t nameLength); 65extern status_t _kern_fsync(int fd); 66extern off_t _kern_seek(int fd, off_t pos, int seekType); 67extern status_t _kern_create_dir_entry_ref(dev_t device, ino_t inode, 68 const char *name, int perms); 69extern status_t _kern_create_dir(int fd, const char *path, int perms); 70extern status_t _kern_read_link(int fd, const char *path, char *buffer, 71 size_t *_bufferSize); 72extern status_t _kern_create_symlink(int fd, const char *path, 73 const char *toPath, int mode); 74extern status_t _kern_unlink(int fd, const char *path); 75extern status_t _kern_rename(int oldDir, const char *oldpath, int newDir, 76 const char *newpath); 77extern int _kern_open_attr_dir(int fd, const char *path); 78extern status_t _kern_remove_attr(int fd, const char *name); 79extern status_t _kern_rename_attr(int fromFile, const char *fromName, 80 int toFile, const char *toName); 81 82// file descriptor functions 83extern ssize_t _kern_read(int fd, off_t pos, void *buffer, 84 size_t bufferSize); 85extern ssize_t _kern_readv(int fd, off_t pos, const struct iovec *vecs, 86 size_t count); 87extern ssize_t _kern_write(int fd, off_t pos, const void *buffer, 88 size_t bufferSize); 89extern ssize_t _kern_writev(int fd, off_t pos, const struct iovec *vecs, 90 size_t count); 91extern ssize_t _kern_read_dir(int fd, struct dirent *buffer, 92 size_t bufferSize, uint32 maxCount); 93extern status_t _kern_rewind_dir(int fd); 94extern status_t _kern_read_stat(int fd, const char *path, 95 bool traverseLink, struct stat *stat, size_t statSize); 96extern status_t _kern_write_stat(int fd, const char *path, 97 bool traverseLink, const struct stat *stat, 98 size_t statSize, int statMask); 99extern status_t _kern_close(int fd); 100extern int _kern_dup(int fd); 101extern status_t _kern_lock_node(int fd); 102extern status_t _kern_unlock_node(int fd); 103 104#ifdef __cplusplus 105} 106#endif 107 108#endif /* _KERNEL_SYSCALLS_H */ 109