|
|
|
@@ -140,21 +140,27 @@ extern thread_id _kern_find_thread(const char *name);
|
|
|
|
|
extern status_t _kern_suspend_thread(thread_id thread);
|
|
|
|
|
extern status_t _kern_resume_thread(thread_id thread);
|
|
|
|
|
extern status_t _kern_rename_thread(thread_id thread, const char *newName);
|
|
|
|
|
extern status_t _kern_set_thread_priority(thread_id thread, int32 newPriority);
|
|
|
|
|
extern status_t _kern_set_thread_priority(thread_id thread,
|
|
|
|
|
int32 newPriority);
|
|
|
|
|
extern status_t _kern_kill_thread(thread_id thread);
|
|
|
|
|
extern void _kern_exit_thread(status_t returnValue);
|
|
|
|
|
extern void _kern_thread_yield(void);
|
|
|
|
|
extern status_t _kern_wait_for_thread(thread_id thread, status_t *_returnCode);
|
|
|
|
|
extern status_t _kern_wait_for_thread(thread_id thread,
|
|
|
|
|
status_t *_returnCode);
|
|
|
|
|
extern bool _kern_has_data(thread_id thread);
|
|
|
|
|
extern status_t _kern_send_data(thread_id thread, int32 code, const void *buffer, size_t bufferSize);
|
|
|
|
|
extern int32 _kern_receive_data(thread_id *_sender, void *buffer, size_t bufferSize);
|
|
|
|
|
extern status_t _kern_send_data(thread_id thread, int32 code,
|
|
|
|
|
const void *buffer, size_t bufferSize);
|
|
|
|
|
extern int32 _kern_receive_data(thread_id *_sender, void *buffer,
|
|
|
|
|
size_t bufferSize);
|
|
|
|
|
extern int64 _kern_restore_signal_frame();
|
|
|
|
|
|
|
|
|
|
extern status_t _kern_get_thread_info(thread_id id, thread_info *info);
|
|
|
|
|
extern status_t _kern_get_next_thread_info(team_id team, int32 *cookie, thread_info *info);
|
|
|
|
|
extern status_t _kern_get_next_thread_info(team_id team, int32 *cookie,
|
|
|
|
|
thread_info *info);
|
|
|
|
|
extern status_t _kern_get_team_info(team_id id, team_info *info);
|
|
|
|
|
extern status_t _kern_get_next_team_info(int32 *cookie, team_info *info);
|
|
|
|
|
extern status_t _kern_get_team_usage_info(team_id team, int32 who, team_usage_info *info, size_t size);
|
|
|
|
|
extern status_t _kern_get_team_usage_info(team_id team, int32 who,
|
|
|
|
|
team_usage_info *info, size_t size);
|
|
|
|
|
|
|
|
|
|
extern status_t _kern_block_thread(uint32 flags, bigtime_t timeout);
|
|
|
|
|
extern status_t _kern_unblock_thread(thread_id thread, status_t status);
|
|
|
|
@@ -189,8 +195,10 @@ extern image_id _kern_register_image(image_info *info, size_t size);
|
|
|
|
|
extern status_t _kern_unregister_image(image_id id);
|
|
|
|
|
extern void _kern_image_relocated(image_id id);
|
|
|
|
|
extern void _kern_loading_app_failed(status_t error);
|
|
|
|
|
extern status_t _kern_get_image_info(image_id id, image_info *info, size_t size);
|
|
|
|
|
extern status_t _kern_get_next_image_info(team_id team, int32 *cookie, image_info *info, size_t size);
|
|
|
|
|
extern status_t _kern_get_image_info(image_id id, image_info *info,
|
|
|
|
|
size_t size);
|
|
|
|
|
extern status_t _kern_get_next_image_info(team_id team, int32 *cookie,
|
|
|
|
|
image_info *info, size_t size);
|
|
|
|
|
extern status_t _kern_read_kernel_image_symbols(image_id id,
|
|
|
|
|
struct Elf32_Sym* symbolTable, int32* _symbolCount,
|
|
|
|
|
char* stringTable, size_t* _stringTableSize,
|
|
|
|
@@ -198,19 +206,24 @@ extern status_t _kern_read_kernel_image_symbols(image_id id,
|
|
|
|
|
|
|
|
|
|
// VFS functions
|
|
|
|
|
extern dev_t _kern_mount(const char *path, const char *device,
|
|
|
|
|
const char *fs_name, uint32 flags, const char *args, size_t argsLength);
|
|
|
|
|
const char *fs_name, uint32 flags, const char *args,
|
|
|
|
|
size_t argsLength);
|
|
|
|
|
extern status_t _kern_unmount(const char *path, uint32 flags);
|
|
|
|
|
extern status_t _kern_read_fs_info(dev_t device, struct fs_info *info);
|
|
|
|
|
extern status_t _kern_write_fs_info(dev_t device, const struct fs_info *info, int mask);
|
|
|
|
|
extern status_t _kern_write_fs_info(dev_t device, const struct fs_info *info,
|
|
|
|
|
int mask);
|
|
|
|
|
extern dev_t _kern_next_device(int32 *_cookie);
|
|
|
|
|
extern status_t _kern_sync(void);
|
|
|
|
|
extern status_t _kern_entry_ref_to_path(dev_t device, ino_t inode,
|
|
|
|
|
const char *leaf, char *userPath, size_t pathLength);
|
|
|
|
|
extern status_t _kern_normalize_path(const char* userPath,
|
|
|
|
|
bool traverseLink, char* buffer);
|
|
|
|
|
extern int _kern_open_entry_ref(dev_t device, ino_t inode, const char *name, int openMode, int perms);
|
|
|
|
|
extern int _kern_open(int fd, const char *path, int openMode, int perms);
|
|
|
|
|
extern int _kern_open_dir_entry_ref(dev_t device, ino_t inode, const char *name);
|
|
|
|
|
extern int _kern_open_entry_ref(dev_t device, ino_t inode,
|
|
|
|
|
const char *name, int openMode, int perms);
|
|
|
|
|
extern int _kern_open(int fd, const char *path, int openMode,
|
|
|
|
|
int perms);
|
|
|
|
|
extern int _kern_open_dir_entry_ref(dev_t device, ino_t inode,
|
|
|
|
|
const char *name);
|
|
|
|
|
extern int _kern_open_dir(int fd, const char *path);
|
|
|
|
|
extern int _kern_open_parent_dir(int fd, char *name,
|
|
|
|
|
size_t nameLength);
|
|
|
|
@@ -218,7 +231,8 @@ extern status_t _kern_fcntl(int fd, int op, uint32 argument);
|
|
|
|
|
extern status_t _kern_fsync(int fd);
|
|
|
|
|
extern status_t _kern_flock(int fd, int op);
|
|
|
|
|
extern off_t _kern_seek(int fd, off_t pos, int seekType);
|
|
|
|
|
extern status_t _kern_create_dir_entry_ref(dev_t device, ino_t inode, const char *name, int perms);
|
|
|
|
|
extern status_t _kern_create_dir_entry_ref(dev_t device, ino_t inode,
|
|
|
|
|
const char *name, int perms);
|
|
|
|
|
extern status_t _kern_create_dir(int fd, const char *path, int perms);
|
|
|
|
|
extern status_t _kern_remove_dir(int fd, const char *path);
|
|
|
|
|
extern status_t _kern_read_link(int fd, const char *path, char *buffer,
|
|
|
|
@@ -235,30 +249,39 @@ extern status_t _kern_access(const char *path, int mode);
|
|
|
|
|
extern ssize_t _kern_select(int numfds, struct fd_set *readSet,
|
|
|
|
|
struct fd_set *writeSet, struct fd_set *errorSet,
|
|
|
|
|
bigtime_t timeout, const sigset_t *sigMask);
|
|
|
|
|
extern ssize_t _kern_poll(struct pollfd *fds, int numfds, bigtime_t timeout);
|
|
|
|
|
extern ssize_t _kern_poll(struct pollfd *fds, int numFDs,
|
|
|
|
|
bigtime_t timeout);
|
|
|
|
|
extern int _kern_open_attr_dir(int fd, const char *path);
|
|
|
|
|
extern int _kern_create_attr(int fd, const char *name, uint32 type, int openMode);
|
|
|
|
|
extern int _kern_create_attr(int fd, const char *name, uint32 type,
|
|
|
|
|
int openMode);
|
|
|
|
|
extern int _kern_open_attr(int fd, const char *name, int openMode);
|
|
|
|
|
extern status_t _kern_remove_attr(int fd, const char *name);
|
|
|
|
|
extern status_t _kern_rename_attr(int fromFile, const char *fromName, int toFile, const char *toName);
|
|
|
|
|
extern status_t _kern_rename_attr(int fromFile, const char *fromName,
|
|
|
|
|
int toFile, const char *toName);
|
|
|
|
|
extern int _kern_open_index_dir(dev_t device);
|
|
|
|
|
extern status_t _kern_create_index(dev_t device, const char *name, uint32 type, uint32 flags);
|
|
|
|
|
extern status_t _kern_read_index_stat(dev_t device, const char *name, struct stat *stat);
|
|
|
|
|
extern status_t _kern_create_index(dev_t device, const char *name,
|
|
|
|
|
uint32 type, uint32 flags);
|
|
|
|
|
extern status_t _kern_read_index_stat(dev_t device, const char *name,
|
|
|
|
|
struct stat *stat);
|
|
|
|
|
extern status_t _kern_remove_index(dev_t device, const char *name);
|
|
|
|
|
extern status_t _kern_getcwd(char *buffer, size_t size);
|
|
|
|
|
extern status_t _kern_setcwd(int fd, const char *path);
|
|
|
|
|
extern int _kern_open_query(dev_t device, const char *query, size_t queryLength,
|
|
|
|
|
uint32 flags, port_id port, int32 token);
|
|
|
|
|
extern int _kern_open_query(dev_t device, const char *query,
|
|
|
|
|
size_t queryLength, uint32 flags, port_id port,
|
|
|
|
|
int32 token);
|
|
|
|
|
|
|
|
|
|
// file descriptor functions
|
|
|
|
|
extern ssize_t _kern_read(int fd, off_t pos, void *buffer, size_t bufferSize);
|
|
|
|
|
extern ssize_t _kern_readv(int fd, off_t pos, const struct iovec *vecs, size_t count);
|
|
|
|
|
extern ssize_t _kern_write(int fd, off_t pos, const void *buffer, size_t bufferSize);
|
|
|
|
|
extern ssize_t _kern_read(int fd, off_t pos, void *buffer,
|
|
|
|
|
size_t bufferSize);
|
|
|
|
|
extern ssize_t _kern_readv(int fd, off_t pos, const struct iovec *vecs,
|
|
|
|
|
size_t count);
|
|
|
|
|
extern ssize_t _kern_write(int fd, off_t pos, const void *buffer,
|
|
|
|
|
size_t bufferSize);
|
|
|
|
|
extern ssize_t _kern_writev(int fd, off_t pos, const struct iovec *vecs,
|
|
|
|
|
size_t count);
|
|
|
|
|
extern status_t _kern_ioctl(int fd, ulong cmd, void *data, size_t length);
|
|
|
|
|
extern ssize_t _kern_read_dir(int fd, struct dirent *buffer, size_t bufferSize,
|
|
|
|
|
uint32 maxCount);
|
|
|
|
|
extern ssize_t _kern_read_dir(int fd, struct dirent *buffer,
|
|
|
|
|
size_t bufferSize, uint32 maxCount);
|
|
|
|
|
extern status_t _kern_rewind_dir(int fd);
|
|
|
|
|
extern status_t _kern_read_stat(int fd, const char *path, bool traverseLink,
|
|
|
|
|
struct stat *stat, size_t statSize);
|
|
|
|
@@ -320,34 +343,43 @@ extern status_t _kern_stop_watching(dev_t device, ino_t node, port_id port,
|
|
|
|
|
|
|
|
|
|
// time functions
|
|
|
|
|
extern status_t _kern_set_real_time_clock(uint32 time);
|
|
|
|
|
extern status_t _kern_set_timezone(int32 timezoneOffset, bool daylightSavingTime);
|
|
|
|
|
extern status_t _kern_get_timezone(int32 *_timezoneOffset, bool *_daylightSavingTime);
|
|
|
|
|
extern status_t _kern_set_tzfilename(const char *filename, size_t length, bool isGMT);
|
|
|
|
|
extern status_t _kern_get_tzfilename(char *filename, size_t length, bool *_isGMT);
|
|
|
|
|
extern status_t _kern_set_timezone(int32 timezoneOffset,
|
|
|
|
|
bool daylightSavingTime);
|
|
|
|
|
extern status_t _kern_get_timezone(int32 *_timezoneOffset,
|
|
|
|
|
bool *_daylightSavingTime);
|
|
|
|
|
extern status_t _kern_set_tzfilename(const char *filename, size_t length,
|
|
|
|
|
bool isGMT);
|
|
|
|
|
extern status_t _kern_get_tzfilename(char *filename, size_t length,
|
|
|
|
|
bool *_isGMT);
|
|
|
|
|
|
|
|
|
|
extern bigtime_t _kern_system_time();
|
|
|
|
|
extern status_t _kern_snooze_etc(bigtime_t time, int timebase, int32 flags);
|
|
|
|
|
|
|
|
|
|
// area functions
|
|
|
|
|
extern area_id _kern_create_area(const char *name, void **address, uint32 addressSpec,
|
|
|
|
|
size_t size, uint32 lock, uint32 protection);
|
|
|
|
|
extern area_id _kern_create_area(const char *name, void **address,
|
|
|
|
|
uint32 addressSpec, size_t size, uint32 lock,
|
|
|
|
|
uint32 protection);
|
|
|
|
|
extern status_t _kern_delete_area(area_id area);
|
|
|
|
|
extern area_id _kern_area_for(void *address);
|
|
|
|
|
extern area_id _kern_find_area(const char *name);
|
|
|
|
|
extern status_t _kern_get_area_info(area_id area, area_info *info);
|
|
|
|
|
extern status_t _kern_get_next_area_info(team_id team, int32 *cookie, area_info *info);
|
|
|
|
|
extern status_t _kern_get_next_area_info(team_id team, int32 *cookie,
|
|
|
|
|
area_info *info);
|
|
|
|
|
extern status_t _kern_resize_area(area_id area, size_t newSize);
|
|
|
|
|
extern area_id _kern_transfer_area(area_id area, void **_address, uint32 addressSpec,
|
|
|
|
|
team_id target);
|
|
|
|
|
extern status_t _kern_set_area_protection(area_id area, uint32 newProtection);
|
|
|
|
|
extern area_id _kern_clone_area(const char *name, void **_address, uint32 addressSpec,
|
|
|
|
|
uint32 protection, area_id sourceArea);
|
|
|
|
|
extern status_t _kern_reserve_heap_address_range(addr_t* _address, uint32 addressSpec,
|
|
|
|
|
addr_t size);
|
|
|
|
|
extern area_id _kern_transfer_area(area_id area, void **_address,
|
|
|
|
|
uint32 addressSpec, team_id target);
|
|
|
|
|
extern status_t _kern_set_area_protection(area_id area,
|
|
|
|
|
uint32 newProtection);
|
|
|
|
|
extern area_id _kern_clone_area(const char *name, void **_address,
|
|
|
|
|
uint32 addressSpec, uint32 protection,
|
|
|
|
|
area_id sourceArea);
|
|
|
|
|
extern status_t _kern_reserve_heap_address_range(addr_t* _address,
|
|
|
|
|
uint32 addressSpec, addr_t size);
|
|
|
|
|
|
|
|
|
|
extern area_id _kern_map_file(const char *name, void **address,
|
|
|
|
|
int addressSpec, size_t size, int protection,
|
|
|
|
|
int mapping, int fd, off_t offset);
|
|
|
|
|
int mapping, bool unmapAddressRange, int fd,
|
|
|
|
|
off_t offset);
|
|
|
|
|
extern status_t _kern_unmap_memory(void *address, size_t size);
|
|
|
|
|
extern status_t _kern_set_memory_protection(void *address, size_t size,
|
|
|
|
|
int protection);
|
|
|
|
@@ -361,14 +393,18 @@ extern status_t _kern_close_port(port_id id);
|
|
|
|
|
extern status_t _kern_delete_port(port_id id);
|
|
|
|
|
extern port_id _kern_find_port(const char *port_name);
|
|
|
|
|
extern status_t _kern_get_port_info(port_id id, struct port_info *info);
|
|
|
|
|
extern status_t _kern_get_next_port_info(team_id team, int32 *cookie, struct port_info *info);
|
|
|
|
|
extern ssize_t _kern_port_buffer_size_etc(port_id port, uint32 flags, bigtime_t timeout);
|
|
|
|
|
extern status_t _kern_get_next_port_info(team_id team, int32 *cookie,
|
|
|
|
|
struct port_info *info);
|
|
|
|
|
extern ssize_t _kern_port_buffer_size_etc(port_id port, uint32 flags,
|
|
|
|
|
bigtime_t timeout);
|
|
|
|
|
extern int32 _kern_port_count(port_id port);
|
|
|
|
|
extern ssize_t _kern_read_port_etc(port_id port, int32 *msgCode, void *msgBuffer,
|
|
|
|
|
size_t bufferSize, uint32 flags, bigtime_t timeout);
|
|
|
|
|
extern ssize_t _kern_read_port_etc(port_id port, int32 *msgCode,
|
|
|
|
|
void *msgBuffer, size_t bufferSize, uint32 flags,
|
|
|
|
|
bigtime_t timeout);
|
|
|
|
|
extern status_t _kern_set_port_owner(port_id port, team_id team);
|
|
|
|
|
extern status_t _kern_write_port_etc(port_id port, int32 msgCode, const void *msgBuffer,
|
|
|
|
|
size_t bufferSize, uint32 flags, bigtime_t timeout);
|
|
|
|
|
extern status_t _kern_write_port_etc(port_id port, int32 msgCode,
|
|
|
|
|
const void *msgBuffer, size_t bufferSize, uint32 flags,
|
|
|
|
|
bigtime_t timeout);
|
|
|
|
|
extern status_t _kern_writev_port_etc(port_id id, int32 msgCode,
|
|
|
|
|
const struct iovec *msgVecs, size_t vecCount,
|
|
|
|
|
size_t bufferSize, uint32 flags, bigtime_t timeout);
|
|
|
|
@@ -403,7 +439,8 @@ extern status_t _kern_system_profiler_stop();
|
|
|
|
|
/* atomic_* ops (needed for CPUs that don't support them directly) */
|
|
|
|
|
#ifdef ATOMIC_FUNCS_ARE_SYSCALLS
|
|
|
|
|
extern int32 _kern_atomic_set(vint32 *value, int32 newValue);
|
|
|
|
|
extern int32 _kern_atomic_test_and_set(vint32 *value, int32 newValue, int32 testAgainst);
|
|
|
|
|
extern int32 _kern_atomic_test_and_set(vint32 *value, int32 newValue,
|
|
|
|
|
int32 testAgainst);
|
|
|
|
|
extern int32 _kern_atomic_add(vint32 *value, int32 addValue);
|
|
|
|
|
extern int32 _kern_atomic_and(vint32 *value, int32 andValue);
|
|
|
|
|
extern int32 _kern_atomic_or(vint32 *value, int32 orValue);
|
|
|
|
@@ -412,7 +449,8 @@ extern int32 _kern_atomic_get(vint32 *value);
|
|
|
|
|
|
|
|
|
|
#ifdef ATOMIC64_FUNCS_ARE_SYSCALLS
|
|
|
|
|
extern int64 _kern_atomic_set64(vint64 *value, int64 newValue);
|
|
|
|
|
extern int64 _kern_atomic_test_and_set64(vint64 *value, int64 newValue, int64 testAgainst);
|
|
|
|
|
extern int64 _kern_atomic_test_and_set64(vint64 *value, int64 newValue,
|
|
|
|
|
int64 testAgainst);
|
|
|
|
|
extern int64 _kern_atomic_add64(vint64 *value, int64 addValue);
|
|
|
|
|
extern int64 _kern_atomic_and64(vint64 *value, int64 andValue);
|
|
|
|
|
extern int64 _kern_atomic_or64(vint64 *value, int64 orValue);
|
|
|
|
@@ -438,7 +476,8 @@ extern area_id _kern_register_messaging_service(sem_id lockingSem,
|
|
|
|
|
sem_id counterSem);
|
|
|
|
|
extern status_t _kern_unregister_messaging_service();
|
|
|
|
|
|
|
|
|
|
extern void _kern_clear_caches(void *address, size_t length, uint32 flags);
|
|
|
|
|
extern void _kern_clear_caches(void *address, size_t length,
|
|
|
|
|
uint32 flags);
|
|
|
|
|
extern bool _kern_cpu_enabled(int32 cpu);
|
|
|
|
|
extern status_t _kern_set_cpu_enabled(int32 cpu, bool enabled);
|
|
|
|
|
|
|
|
|
|