mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
vfs: define all implementations as esp_vfs_, create aliases
This change allows (in the future) to test VFS on host, without having it conflict with the host C library. On host, all aliases would be disabled.
This commit is contained in:
parent
a3c0bcb0a0
commit
cadab2cbcf
@ -631,35 +631,7 @@ int esp_vfs_rename(struct _reent *r, const char *src, const char *dst)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Create aliases for newlib syscalls
|
||||
|
||||
These functions are also available in ROM as stubs which use the syscall table, but linking them
|
||||
directly here saves an additional function call when a software function is linked to one, and
|
||||
makes linking with -stdlib easier.
|
||||
*/
|
||||
int _open_r(struct _reent *r, const char * path, int flags, int mode)
|
||||
__attribute__((alias("esp_vfs_open")));
|
||||
ssize_t _write_r(struct _reent *r, int fd, const void * data, size_t size)
|
||||
__attribute__((alias("esp_vfs_write")));
|
||||
off_t _lseek_r(struct _reent *r, int fd, off_t size, int mode)
|
||||
__attribute__((alias("esp_vfs_lseek")));
|
||||
ssize_t _read_r(struct _reent *r, int fd, void * dst, size_t size)
|
||||
__attribute__((alias("esp_vfs_read")));
|
||||
int _close_r(struct _reent *r, int fd)
|
||||
__attribute__((alias("esp_vfs_close")));
|
||||
int _fstat_r(struct _reent *r, int fd, struct stat * st)
|
||||
__attribute__((alias("esp_vfs_fstat")));
|
||||
int _stat_r(struct _reent *r, const char * path, struct stat * st)
|
||||
__attribute__((alias("esp_vfs_stat")));
|
||||
int _link_r(struct _reent *r, const char* n1, const char* n2)
|
||||
__attribute__((alias("esp_vfs_link")));
|
||||
int _unlink_r(struct _reent *r, const char *path)
|
||||
__attribute__((alias("esp_vfs_unlink")));
|
||||
int _rename_r(struct _reent *r, const char *src, const char *dst)
|
||||
__attribute__((alias("esp_vfs_rename")));
|
||||
|
||||
|
||||
DIR* opendir(const char* name)
|
||||
DIR* esp_vfs_opendir(const char* name)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_path(name);
|
||||
struct _reent* r = __getreent();
|
||||
@ -676,7 +648,7 @@ DIR* opendir(const char* name)
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct dirent* readdir(DIR* pdir)
|
||||
struct dirent* esp_vfs_readdir(DIR* pdir)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx);
|
||||
struct _reent* r = __getreent();
|
||||
@ -689,7 +661,7 @@ struct dirent* readdir(DIR* pdir)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent)
|
||||
int esp_vfs_readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx);
|
||||
struct _reent* r = __getreent();
|
||||
@ -702,7 +674,7 @@ int readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent)
|
||||
return ret;
|
||||
}
|
||||
|
||||
long telldir(DIR* pdir)
|
||||
long esp_vfs_telldir(DIR* pdir)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx);
|
||||
struct _reent* r = __getreent();
|
||||
@ -715,7 +687,7 @@ long telldir(DIR* pdir)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void seekdir(DIR* pdir, long loc)
|
||||
void esp_vfs_seekdir(DIR* pdir, long loc)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx);
|
||||
struct _reent* r = __getreent();
|
||||
@ -726,12 +698,12 @@ void seekdir(DIR* pdir, long loc)
|
||||
CHECK_AND_CALLV(r, vfs, seekdir, pdir, loc);
|
||||
}
|
||||
|
||||
void rewinddir(DIR* pdir)
|
||||
void esp_vfs_rewinddir(DIR* pdir)
|
||||
{
|
||||
seekdir(pdir, 0);
|
||||
}
|
||||
|
||||
int closedir(DIR* pdir)
|
||||
int esp_vfs_closedir(DIR* pdir)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_index(pdir->dd_vfs_idx);
|
||||
struct _reent* r = __getreent();
|
||||
@ -744,7 +716,7 @@ int closedir(DIR* pdir)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mkdir(const char* name, mode_t mode)
|
||||
int esp_vfs_mkdir(const char* name, mode_t mode)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_path(name);
|
||||
struct _reent* r = __getreent();
|
||||
@ -758,7 +730,7 @@ int mkdir(const char* name, mode_t mode)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int rmdir(const char* name)
|
||||
int esp_vfs_rmdir(const char* name)
|
||||
{
|
||||
const vfs_entry_t* vfs = get_vfs_for_path(name);
|
||||
struct _reent* r = __getreent();
|
||||
@ -772,7 +744,7 @@ int rmdir(const char* name)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int access(const char *path, int amode)
|
||||
int esp_vfs_access(const char *path, int amode)
|
||||
{
|
||||
int ret;
|
||||
const vfs_entry_t* vfs = get_vfs_for_path(path);
|
||||
@ -786,7 +758,7 @@ int access(const char *path, int amode)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int truncate(const char *path, off_t length)
|
||||
int esp_vfs_truncate(const char *path, off_t length)
|
||||
{
|
||||
int ret;
|
||||
const vfs_entry_t* vfs = get_vfs_for_path(path);
|
||||
@ -1198,9 +1170,76 @@ int tcsendbreak(int fd, int duration)
|
||||
#endif // CONFIG_VFS_SUPPORT_TERMIOS
|
||||
|
||||
|
||||
/* Create aliases for newlib syscalls
|
||||
|
||||
These functions are also available in ROM as stubs which use the syscall table, but linking them
|
||||
directly here saves an additional function call when a software function is linked to one, and
|
||||
makes linking with -stdlib easier.
|
||||
*/
|
||||
#ifdef CONFIG_VFS_SUPPORT_IO
|
||||
int _open_r(struct _reent *r, const char * path, int flags, int mode)
|
||||
__attribute__((alias("esp_vfs_open")));
|
||||
int _close_r(struct _reent *r, int fd)
|
||||
__attribute__((alias("esp_vfs_close")));
|
||||
ssize_t _read_r(struct _reent *r, int fd, void * dst, size_t size)
|
||||
__attribute__((alias("esp_vfs_read")));
|
||||
ssize_t _write_r(struct _reent *r, int fd, const void * data, size_t size)
|
||||
__attribute__((alias("esp_vfs_write")));
|
||||
ssize_t pread(int fd, void *dst, size_t size, off_t offset)
|
||||
__attribute__((alias("esp_vfs_pread")));
|
||||
ssize_t pwrite(int fd, const void *src, size_t size, off_t offset)
|
||||
__attribute__((alias("esp_vfs_pwrite")));
|
||||
off_t _lseek_r(struct _reent *r, int fd, off_t size, int mode)
|
||||
__attribute__((alias("esp_vfs_lseek")));
|
||||
int _fcntl_r(struct _reent *r, int fd, int cmd, int arg)
|
||||
__attribute__((alias("esp_vfs_fcntl_r")));
|
||||
int _fstat_r(struct _reent *r, int fd, struct stat * st)
|
||||
__attribute__((alias("esp_vfs_fstat")));
|
||||
int fsync(int fd)
|
||||
__attribute__((alias("esp_vfs_fsync")));
|
||||
int ioctl(int fd, int cmd, ...)
|
||||
__attribute__((alias("esp_vfs_ioctl")));
|
||||
#endif // CONFIG_VFS_SUPPORT_IO
|
||||
|
||||
#ifdef CONFIG_VFS_SUPPORT_SELECT
|
||||
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, struct timeval *timeout)
|
||||
__attribute__((alias("esp_vfs_select")));
|
||||
#endif // CONFIG_VFS_SUPPORT_SELECT
|
||||
|
||||
#ifdef CONFIG_VFS_SUPPORT_DIR
|
||||
int _stat_r(struct _reent *r, const char * path, struct stat * st)
|
||||
__attribute__((alias("esp_vfs_stat")));
|
||||
int _link_r(struct _reent *r, const char* n1, const char* n2)
|
||||
__attribute__((alias("esp_vfs_link")));
|
||||
int _unlink_r(struct _reent *r, const char *path)
|
||||
__attribute__((alias("esp_vfs_unlink")));
|
||||
int _rename_r(struct _reent *r, const char *src, const char *dst)
|
||||
__attribute__((alias("esp_vfs_rename")));
|
||||
int truncate(const char *path, off_t length)
|
||||
__attribute__((alias("esp_vfs_truncate")));
|
||||
int access(const char *path, int amode)
|
||||
__attribute__((alias("esp_vfs_access")));
|
||||
int utime(const char *path, const struct utimbuf *times)
|
||||
__attribute__((alias("esp_vfs_utime")));
|
||||
int rmdir(const char* name)
|
||||
__attribute__((alias("esp_vfs_rmdir")));
|
||||
int mkdir(const char* name, mode_t mode)
|
||||
__attribute__((alias("esp_vfs_mkdir")));
|
||||
DIR* opendir(const char* name)
|
||||
__attribute__((alias("esp_vfs_opendir")));
|
||||
int closedir(DIR* pdir)
|
||||
__attribute__((alias("esp_vfs_closedir")));
|
||||
int readdir_r(DIR* pdir, struct dirent* entry, struct dirent** out_dirent)
|
||||
__attribute__((alias("esp_vfs_readdir_r")));
|
||||
struct dirent* readdir(DIR* pdir)
|
||||
__attribute__((alias("esp_vfs_readdir")));
|
||||
long telldir(DIR* pdir)
|
||||
__attribute__((alias("esp_vfs_telldir")));
|
||||
void seekdir(DIR* pdir, long loc)
|
||||
__attribute__((alias("esp_vfs_seekdir")));
|
||||
void rewinddir(DIR* pdir)
|
||||
__attribute__((alias("esp_vfs_rewinddir")));
|
||||
#endif // CONFIG_VFS_SUPPORT_DIR
|
||||
|
||||
void vfs_include_syscalls_impl(void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user