sys/vfs: Exclude stdio file numbers from auto allocation
Fixes #8309 (https://github.com/RIOT-OS/RIOT/issues/8309)
This commit is contained in:
parent
88e79fb825
commit
be14d2eace
@ -21,6 +21,7 @@
|
|||||||
#include <sys/stat.h> /* for struct stat */
|
#include <sys/stat.h> /* for struct stat */
|
||||||
#include <sys/statvfs.h> /* for struct statvfs */
|
#include <sys/statvfs.h> /* for struct statvfs */
|
||||||
#include <fcntl.h> /* for O_ACCMODE, ..., fcntl */
|
#include <fcntl.h> /* for O_ACCMODE, ..., fcntl */
|
||||||
|
#include <unistd.h> /* for STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO */
|
||||||
|
|
||||||
#include "vfs.h"
|
#include "vfs.h"
|
||||||
#include "mutex.h"
|
#include "mutex.h"
|
||||||
@ -867,6 +868,13 @@ static inline int _allocate_fd(int fd)
|
|||||||
{
|
{
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
for (fd = 0; fd < VFS_MAX_OPEN_FILES; ++fd) {
|
for (fd = 0; fd < VFS_MAX_OPEN_FILES; ++fd) {
|
||||||
|
if ((fd == STDIN_FILENO) || (fd == STDOUT_FILENO) || (fd == STDERR_FILENO)) {
|
||||||
|
/* Do not auto-allocate the stdio file descriptor numbers to
|
||||||
|
* avoid conflicts between normal file system users and stdio
|
||||||
|
* drivers such as uart_stdio, rtt_stdio which need to be able
|
||||||
|
* to bind to these specific file descriptor numbers. */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (_vfs_open_files[fd].pid == KERNEL_PID_UNDEF) {
|
if (_vfs_open_files[fd].pid == KERNEL_PID_UNDEF) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user